JSP中如何备份Oracle?很急,在线等。

new021 2005-07-25 12:41:20
环境:Windows 2000, Oracle9.1 Weblogic
我调用以下脚本备份数据,为什么不能备份?
生成了 bac.dmp文件,但是速度很慢,好像一直卡死了,只有2k,我在DOS模式下,执行:
exp testgs/testgs@testgs.168.208.28 file=e:\\test\\c.dmp owner=testgs
生成的文件是42K。
问题在哪里?请高手指点,谢谢!

<%@ page contentType="text/html;charset=gb2312" errorPage="error.jsp"%>

<%@ page import="java.sql.*"%>
<%@ page import="java.io.*"%>
<%@ page import="java.text.*"%>

<script language="JavaScript">
<%
String strCmd = "exp testgs/testgs@testgs.168.208.28 file=e:\\test\\abc.dmp owner=testgs";
Process p = Runtime.getRuntime().exec(strCmd);
try {
BufferedReader bufferedReader = new BufferedReader(new
InputStreamReader(p.getInputStream()));
String ls_1;
while ( (ls_1 = bufferedReader.readLine()) != null) {
System.out.println(ls_1);
}
p.waitFor();
}
catch (InterruptedException ex1) {
System.out.println(ex1.getMessage());
}
%>
window.alert("备份成功");
</script>
...全文
310 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hite2008 2005-09-16
  • 打赏
  • 举报
回复
这莫号的贴,怎没人跟了啊?
iihero_ 2005-07-30
  • 打赏
  • 举报
回复
不是不能采用多线程。而是因为你在单个线程里调用exec。
如果想采用非阻塞调用 ,那么,你可以创建另一个线程,让它来对数据库进行备份。这样就不会说exp命令阻塞了
new021 2005-07-30
  • 打赏
  • 举报
回复
谢谢楼上各位。
我找了一下资料,也询问了几个做Java/Oracle朋友的朋友,他们说都是采用自动备份的方式,也就是定时备份,目前我给客户那边也是用自动备份的方式做的。
当时发这个帖子,主要是因为需求里面:客户要求手动备份/恢复数据库,业务员不太懂技术,客户说要怎么做,他全部答应了,而且写在合同中了。我是在他们签了合同后,才接手这个项目的。

我把问题情况再说明一下:
假定 backup.bat文件是一个备份批处理。
Process p = Runtime.getRuntime().exec("cmd.exe /c backup.bat"); // 此处省略backup.bat的路径
那么出现这样情况:
exp命令阻塞,cpu占有率为0,当我停止Weblogic的时候,exp命令开始执行,并且备份成功。
现在怀疑是不是exp命令不能再Java中采用多线程的方式调用。
daydayupliq 2005-07-28
  • 打赏
  • 举报
回复
exp help=y
LOG 屏幕输出的日志文件

在备份过程中 添加一个日志记录一下备份的过程~
giant216 2005-07-28
  • 打赏
  • 举报
回复
支持楼上
liuyi8903 2005-07-28
  • 打赏
  • 举报
回复
你写成bat文件来调还方便些的.

要不然如果你的exp里面的选项有变化的话你还得改程序.
new021 2005-07-28
  • 打赏
  • 举报
回复
up
daydayupliq 2005-07-28
  • 打赏
  • 举报
回复
ORACLE的自动备份
windows下:
exp/imp:

C:\>echo %date:~4,4%
2005

C:\>echo %date:~9,2%
01

C:\>echo %date:~12,2%
25


写脚本:
exp scott/liq file=e:\scott%date:~4,4%%date:~9,2%%date:~12,2%.dmp

log=e:\scott%date:~4,4%%date:~9,2%%date:~12,2%.log
制定计划任务自动执行即可~

实际备份:
e:
cd backup
del *.dmp
exp user/**@yourdb file='e:\backup\asscostr%date:~4,4%%date:~9,2%%date:~12,2%.dmp'
exit;


e:
cd backup
copy *.dmp h:
exit;


new021 2005-07-28
  • 打赏
  • 举报
回复
上面直接用了备份命令,只是为了方便查看。
我用执行bat文件的办法,
(line 1)exp easygs/easygs@nbpts file=D:\bea\user_projects\domains\guoshui\applications\guoshui.war\data\20050728.dmp owner=easygs
(line 2)copy D:\bea\user_projects\domains\guoshui\applications\guoshui.war\data\bot.htm D:\bea\user_projects\domains\guoshui\applications\guoshui.war\data\bot222.htm
这样执行就是差不多 exp 命令停住了,CPU利用率是0,而且没有copy第二个文件
如果屏蔽掉第一行,那就很快执行完成,copy了文件。

有同事说是这样的情况:
直接在DOS模式下执行bat文件,用户是系统登陆的用户,有exp的操作权限
如果通过B/S执行bat文件,用户是另一个身份,较低级别的用户。
各位如何看待这个问题?
mittee 2005-07-27
  • 打赏
  • 举报
回复
哎,oralce竟然这样用
new021 2005-07-26
  • 打赏
  • 举报
回复
UP
没有人知道吗?请高人帮帮忙啊,指点一下。
qfsb_p 2005-07-25
  • 打赏
  • 举报
回复
是不是用jsp调用外部的windows下的cmd就可以了,不需要用Process了吧
new021 2005-07-25
  • 打赏
  • 举报
回复
如果不用Process,那么就不知道备份是否结束。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧