我定时导出oracle数据库到dmp文件(用java实现),每次运行程序当第二次导出数据库时就卡死
我是完全导出数据库,Runtimert=Runtime.getRuntime();Filefile=newFile(filePath);file.createNewFil...
我是完全导出数据库,
Runtime rt = Runtime.getRuntime();
File file = new File(filePath);
file.createNewFile();
String exp = "exp " + databasename + "/" + databasepw + "@" + netname + " file=" + filepath;
System.out.println(exp);
rt.exec(exp) 展开
Runtime rt = Runtime.getRuntime();
File file = new File(filePath);
file.createNewFile();
String exp = "exp " + databasename + "/" + databasepw + "@" + netname + " file=" + filepath;
System.out.println(exp);
rt.exec(exp) 展开
3个回答
展开全部
不要在java中createNewFile,exp 命令指定文件名就可以了,文件名相同则覆盖。
原因:java里createNewFile后,该文件被java线程占用,导致exp命令无法覆盖dmp文件 ,所以会卡在那里
原因:java里createNewFile后,该文件被java线程占用,导致exp命令无法覆盖dmp文件 ,所以会卡在那里
追问
之前如果不是完全导出数据库的话,一切正常,每次定时执行的过程都是先删除磁盘上的dmp文件,再创建,再写入,但是后来改成完全导出后就不好用了
追答
1 检查文件是否真的被删了,如果有线程正在使用,文件是删不掉滴
2 定时时间间隔太短,第一次还没有完成就进入下一次了?
3 可以每次用不同的文件名导出,加上时间戳,这样数据也可以恢复到任意备份点
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不确认 你是导出完毕了吗?
追问
恩肯定是导出完毕的,这个我已经验证了,但是不知道为什么第二次执行时,重新创建dmp文件也执行了,开始可以看到文件有内容写入,但是只写入2kb文件的大小就不在变化,之后定时功能也不好用了,估计是程序死在rt.exec(exp)里了,只是不知道怎么解决
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询