我定时导出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)
展开
 我来答
啊_科
2012-11-01 · TA获得超过268个赞
知道小有建树答主
回答量:284
采纳率:0%
帮助的人:128万
展开全部
File file = new File(filePath); file.createNewFile(); ---这两句可以省略
命令前面加上 cmd /c start
例如 String exp ="cmd /c start exp username/password@netname file=xxxxx.dbf" ;
wanyd937
2012-11-01 · TA获得超过234个赞
知道小有建树答主
回答量:71
采纳率:0%
帮助的人:84.9万
展开全部
不要在java中createNewFile,exp 命令指定文件名就可以了,文件名相同则覆盖。
原因:java里createNewFile后,该文件被java线程占用,导致exp命令无法覆盖dmp文件 ,所以会卡在那里
追问
之前如果不是完全导出数据库的话,一切正常,每次定时执行的过程都是先删除磁盘上的dmp文件,再创建,再写入,但是后来改成完全导出后就不好用了
追答
1 检查文件是否真的被删了,如果有线程正在使用,文件是删不掉滴
2 定时时间间隔太短,第一次还没有完成就进入下一次了?
3 可以每次用不同的文件名导出,加上时间戳,这样数据也可以恢复到任意备份点
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0319a0e
2012-11-01 · TA获得超过2.2万个赞
知道小有建树答主
回答量:2080
采纳率:85%
帮助的人:1157万
展开全部
不确认 你是导出完毕了吗?
追问
恩肯定是导出完毕的,这个我已经验证了,但是不知道为什么第二次执行时,重新创建dmp文件也执行了,开始可以看到文件有内容写入,但是只写入2kb文件的大小就不在变化,之后定时功能也不好用了,估计是程序死在rt.exec(exp)里了,只是不知道怎么解决
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式