try {
//获取备份路径
SystemSetting ss=App.getSystemSetting("datebase_bak")
String bakpath=ss.getSettingValue()
//判断路径是否存在,不存在创建
java.io.File ff=new java.io.File(bakpath)
if(!ff.exists()&&!ff.isDirectory()){
ff.mkdir()
}
//备份 *** 作开始
String baksql=""//备份语句
String dburl=App.getConfigValue("db.url")
String dataBaseName=""//数据库名称
//oracle中数据库名放在最后
String[] newDBurlStrings=dburl.split(":")
dataBaseName=newDBurlStrings[newDBurlStrings.length-1].toUpperCase()
Calendar now = Calendar.getInstance()
//备份文件名称(数据库名+年月日)
String baknameString=dataBaseName+now.get(Calendar.YEAR)+now.get(Calendar.MONTH)+now.get(Calendar.DAY_OF_MONTH)+".dmp"
//如果已存在当天的备份先删除之前的备份
java.io.File bakfile=new java.io.File(bakpath+baknameString)
if(bakfile.exists()){
bakfile.delete()
}
String username=App.getConfigValue("db.username")
String password=App.getConfigValue("db.password")
baksql="exp "+username+"/"+password+"@"+dataBaseName+" file="+bakpath+baknameString+" full=y"
//oracle无法用sql语句进行备份只能通过cmd命令备份
Runtime rt = Runtime.getRuntime()
Process p = rt.exec(baksql)
//p.destroy()
} catch (Exception e) {
logger.debug("数据库备份出现异常:"+e.getMessage())
return NONE
}
大致是这样,其他的你修改下就可以了
在使用IDEA进行Java开发时,如果需要导入DMP文件,可以通过以下步骤进行:1. 在项目中创建一个名为“lib”的文件夹,用于存放DMP文件。
2. 将DMP文件复制到“lib”文件夹下。
3. 在IDEA中打开项目,并右键单击项目名称,选择“Open Module Settings”。
4. 在“Project Structure”窗口中,选择“Modules”,然后单击“Dependencies”选项卡。
5. 单击“+”按钮,选择“JARs or directories”选项,然后选择“lib”文件夹中的DMP文件。
6. 单击“OK”按钮保存更改。
通过以上步骤,就可以成功将DMP文件导入到IDEA项目中,并且可以在代码中成功使用相关的功能
方法1,imp是oracle提供的系统命令,在cmd下可以调用,故可以通过java.lang.Runtime包里的exec来实现。具体你去看看手册。这个方法的前提条件是必须服务器在cmd下能执行imp命令,如果是linux的服务器,也只要能执行同样调用。
方法2,通过sql语句实现。
就是自己实现备份,恢复。不使用oracle内部的命令。
原理就是检索出所有的对象,然后写入文件,这里要注意分批导出与分批导入(也就是多个文件),不然数据量大了,速速就很慢。
导出数据,存储过程,触发器,视图,权限等。这个就看你的需求了。。
然后在分析文件实现导入。。
3,自己编写系统程序,实现导入功能,仍然通过Runtime.exec来调用。
4,因为imp是系统命令,你用stmt来调用是不对的,这个stmt只能执行sql语句,是oracle来分析的,所以会报错不是有效的sql语句。
你换runtime.exec来执行,我想应该会成功的。。。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)