1.最近在做一个基于j2ee的web项目,这个项目web服务器和数据库都部署在linux服务器上,其中我要实现数据库的备份和恢复功能,实际上就是java调用expdp/impdp,这个想想其实应该蛮简单的,runtime.getruntime.exec(),大概就是这个么回事,但是实际在使用中,发现
InputStream istr1 = process.getInputStream();
BufferedReader br1 = new BufferedReader(new InputStreamReader(istr1));
String str1;
while ((str1=br1.readLine()) != null)
{ System.out.println(str1 + "\n");
}
会发生阻塞,实际上如果不加这个得到输入流反倒是可以运行成功,后来经过网上搜索,发现oracle设计的比较怪,他不是采用inputstream输出信息,而是errorstream输出信息,所以会造成inputsteam的阻塞,解决也很简单
InputStream istr = process.getErrorStream();
BufferedReader br = new BufferedReader(new InputStreamReader(istr));
String str;
while ((str=br.readLine()) != null)
{ System.out.println(str + "\n");
if(str.indexOf("错误")!=-1){
process.destroy();
System.out.println("backup failure");
return 0;
}
}
process.waitFor();
}
实际上的目的就只是为了检测oracle的备份是否执行完毕。
2.第二个技术问题,如果你直接采用exec(expdp)在windows下是没有问题的。但是在linux下会抛出异常,cannot run program,所以要采用比较麻烦点的方法,实质上expdp,impdp在linux下都是sh文件,
所以如下:
String EXPStr="expdp ?/?@? directory=dump_dir dumpfile=? CONTENT=ALL logfile=exp.log ";
EXPStr=EXPStr.replaceFirst("\\?", user);
EXPStr=EXPStr.replaceFirst("\\?", pass);
EXPStr=EXPStr.replaceFirst("\\?", DBname);
EXPStr=EXPStr.replaceFirst("\\?", getDBDumpName(DBname));
process = Runtime.getRuntime().exec(new String[] { "sh", "-c", EXPStr});
实质就是new String[] { "sh", "-c", EXPStr});,
3.另外如果你配置的文件良好,就是oracle配置的路径什么很好,那么应该就可以直接运行了,我们这边oracle赔的一团糟,所以我额外还要运行
process = Runtime.getRuntime().exec(
new String[] { "sh", "-c", "source /etc/profile"});
这个etc/profile里面实际上包括了所有的oracle export,这样
分享到:
相关推荐
同时,确保Linux环境中的用户有执行Oracle备份操作所需的权限。 接下来,创建一个备份脚本,该脚本会执行实际的数据库备份。Oracle提供了多种备份方式,如物理备份(使用RMAN,即Recovery Manager)和逻辑备份...
这个脚本应该包含执行Oracle备份的命令,例如使用`expdp`(数据泵导出)工具。下面是一个简单的示例: ```bash #!/bin/bash # 定义当前日期作为备份文件名 Filename=$(date +%y%m%d) # Oracle用户名和密码(注意...
### Linux 下 Oracle 11g 数据库冷备份与异机还原详解 #### 实验背景及目的 在进行系统维护或升级之前,为了保障数据的安全性和业务连续性,通常需要对现有生产环境中的数据库进行备份。当涉及到Oracle 11g数据库的...
Oracle 备份脚本(Linux) 这篇文章将详细介绍 Oracle 备份脚本在 Linux 系统中的实现,包括备份脚本的编写、备份目录的设置、备份日志的记录、磁盘空间的检查、远程服务器的备份等多个方面。 备份脚本的编写 备份...
Linux下Oracle备份与恢复是一个关键的数据库管理任务,涉及到在Linux操作系统环境下对Oracle数据库进行备份以及在必要时进行数据恢复的过程。备份是为了防止数据丢失或损坏,而恢复则是当数据库发生故障时能够将数据...
本文将详细介绍如何编写和执行Linux下的Oracle备份脚本,包括全备、增量备份以及对应的CRONTAB定时任务设置。 首先,Oracle备份主要依赖于RMAN(Recovery Manager)工具,它提供了多种备份类型和策略。在提供的脚本...
linux下自动备份并删除过期文件,同时文件备份到指定异地服务器中
Oracle数据库备份脚本文件在Linux平台下的实现 在 Linux 操作系统中,Oracle 数据库的备份是至关重要的一步骤,以确保数据的安全和完整性。为实现 Oracle 数据库的备份,我们可以使用脚本文件来自动化备份过程。在...
Linux 下 Oracle 11g 数据库冷备份异机还原是指在 Linux 操作系统下,对 Oracle 11g 数据库进行冷备份,并将备份的数据文件还原到另外一台主机上,以便在源主机上进行数据库升级或维护时,能够快速恢复数据库服务。...
Linux 下 Oracle 的数据定时自动备份 Linux 下 Oracle 的数据定时自动备份是系统管理员每天都在做着同一样的工作。为避免数据丢失,需要进行数据备份。本文将结合实践经验谈一谈 UNIX 环境下 Oracle 数据库的自动...
本文详细介绍了一个适用于Linux环境下的Oracle数据库自动备份脚本,包括了环境配置、备份执行、旧备份清理及定时任务设置等多个方面。通过对该脚本的学习和实践,不仅可以提高数据库管理员的工作效率,还能有效提升...
### Linux下Oracle自动备份到远程 #### 背景与目的 在企业级应用环境中,数据的安全性至关重要。为了防止因硬件故障、软件错误或人为失误导致的数据丢失,定期进行数据库备份是必不可少的操作之一。Oracle数据库...
Linux下实现Oracle数据库自动备份的脚本
### Linux环境下Oracle数据库备份 #### 1. 备份用户数据 手动备份Oracle数据库的一个基本步骤是备份用户数据。下面是一系列详细的步骤: - **步骤1**:使用Linux系统下的数据库管理员账号连接到Linux终端。 - **...
在Linux环境下,Oracle数据库的管理是一项关键...总之,这个Linux下的Oracle备份Shell脚本提供了一种有效、便捷的数据库保护方法。通过理解和定制脚本,我们可以构建适合自己环境的数据库备份系统,确保数据安全无虞。
在Linux环境下,对Oracle数据库进行备份是数据库管理中的重要任务,确保数据安全和灾难恢复的能力。本文主要讨论如何在Linux系统下使用Oracle的exp工具来备份数据库到本地,并结合使用shell脚本和crontab实现自动化...
在linux操作系统下,使oracle实现定时备份,避免数据丢失
### Linux下Oracle 12c的安全卸载 在企业级应用环境中,Oracle数据库因其稳定性、安全性及高效性而被广泛采用。然而,在某些情况下,可能需要卸载Oracle 12c来解决安装过程中出现的问题或者进行版本升级。本文将...
在Linux环境下安装Oracle数据库10g是一项复杂但必要的任务,对于数据库管理员(DBA)和想要学习如何在Linux平台上安装和配置Oracle数据库的IT专业人员来说,这是一项基础技能。以下是在Linux上安装Oracle 10g的详细...
Oracle 10g在Linux环境下进行定时备份是数据库管理中的重要任务,确保...为了更深入地了解Oracle备份和恢复,可以参考官方文档或相关的技术博客,如提到的http://hi.baidu.com/tonycaii,获取更多实用技巧和解决方案。