用JAVA代码备份ORACLE数据库

oracle数据库备份与恢复程序实现

在我们开发过程中总是时不时的要对数据库进行备份,以防出现万一情况数据丢失,一般都是在开始--->运行---->cmd;再输入导出数据库语句,恢复数据备份也相似的操作。如:

 

导出备份:exp redtourjgs/redtourjgs@oracle_192.168.2.89 file=d:\databasebuss\tourbuss\tourbuss.dmp log=d:\databasebuss\tourbuss\exp31.log owner=redtourjgs

 

导入备份:imp redtourjgs/redtourjgs@oracle_192.168.2.89 file=d:\databasebuss\tourbuss\tourbuss.dmp log=d:\databasebuss\tourbuss\imp30.log fromuser=redtourjgs

 

.对于我们程序员开发人员来说这也不是一件难事,对于客户来说操作起来就难了些,其实也可以做成用户比较方便的操作,其实原理是一样的,执行的语句也是一样的,只是显示的方式不一样而以;只要输入要备份的数据库名和密码等点击按钮就可以操作。今天研究了一下这种操作,主要的思路为:

 

1,建立一个JSP

 

要备份的数据库名:

 

数据库密码:

 

网络名:数据库的网络名,如(oracle_192.168.2.32)

 

备份名称:不用输入文件名后缀(默认为“.dmp”)。如有同名文件,将覆盖.默认备份在工程部署目录下DataBackUp文件夹。具体的代码如下:

 

<DIV id=contentborder cellpadding="0">

 

   <html:form action="/ipproot/databackup/databackup">

    <br>

    <center>

     <table border="0" width="95%" bordercolor="#FFFFFF" cellspacing="0" cellpadding="0">

     

      <tr>

       <td width="100%">

        <table border="1" cellspacing="0" width="100%" bordercolordark="#FFFFFF" bordercolorlight="#000000" bordercolor="#333300" cellpadding="2">

         <tr>

          <td width="30%" align="right" class="titleTD" height="25">

           要备份的数据库名:

          </td>

          <td width="70%">

           <html:text property="databasename" />

          </td>

         </tr>

         <tr>

          <td width="30%" align="right" class="titleTD" height="25">

           数据库密码:

          </td>

          <td width="70%">

           <html:text property="databasepw" />

          </td>

         </tr>

         <tr>

          <td width="30%" align="right" class="titleTD" height="25">

           网络名:

          </td>

          <td width="70%">

           <html:text property="netname" />

           数据库的网络名,如(oracle_192.168.2.32)

          </td>

         </tr>

         <tr>

          <td width="30%" align="right" class="titleTD" height="25">

           备份名称:

          </td>

          <td width="70%">

           <html:text property="backupname" />

           不用输入文件名后缀(默认为“.dmp”)。如有同名文件,将覆盖.默认备份在工程部署目录下DataBackUp文件夹。

          </td>

         </tr>

        </table>

       </td>

      </tr>

      <tr>

       <td width="100%" align="center">

        <div style="position:absolute;width:322;height:14;border:0 #707888 solid;overflow:hidden">

         <div style="position:absolute;top:-1;left:0" id="pimg">

         </div>

        </div>

       </td>

      </tr>

     </table>

 

    </center>

 

   </html:form>

  </DIV>

 

2,备份恢复数据库业务:

 

// 备份数据库

 

 public void dataBackup(String databasename, String databasepw,

   String netname, String filepath, String filename)

   throws IOException {

  Runtime rt = Runtime.getRuntime();

  Process processexp = null;

  checkCreatDir(filepath);

  String exp = "exp " + databasename + "/" + databasepw + "@" + netname

    + " file=" + filepath + "/" + filename + ".dmp";

  int success = 0;

  try {

   processexp = rt.exec(exp);

  } catch (IOException e) {

   success = -1;

   e.printStackTrace();

  }

 

 }

 

// 恢复数据库

 public void dataResume(String databasename,String databasepw,String netname,String fromuser,String filename)

   throws IOException {

 

  Runtime rt = Runtime.getRuntime();

  Process processimp = null;

  // if(checkDir("f:/"+filename)){

  String imp = "imp " + databasename + "/" + databasepw + "@" + netname

    +" fromuser="+fromuser

    +" touser="+fromuser

    +" file="

       + filename + ".dmp";

  int success = 0;

  try {

   processimp = rt.exec(imp);

  } catch (IOException e) {

   success = -1;

 

   e.printStackTrace();

  }

  // }

 }

 // 创建文件夹

 

 public void checkCreatDir(String dirPath) { // 目录是否存在
  File file = new File(dirPath);
  if (!file.exists()) {
   file.mkdirs();
  }
 }
3,写备份数据库Action调用:

public ActionForward onSubmit(ActionMapping mapping, Object bean,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  DataBackupForm backupForm = (DataBackupForm) getForm(); 
  //获得工程部署文件路径
  //String path =request.getRealPath("/")+"DataBackUp";
  String path=getServletContext().getRealPath("/");
  String databasename=backupForm.getDatabasename();
  String databasepw =backupForm.getDatabasepw();
  String netname = backupForm.getNetname();
  String filename = backupForm.getBackupname();
  
  String filepath = path+"\\"+filename;
  
  TippInfoRestore TippInfoRestore = (TippInfoRestore) bean;
  TippInfoRestore.setFilename(filepath);
  //设置日期
  TippInfoRestore.setBackupdate(new Date());
  //调用备份数据库帮助类实现对数据库的备份??????

  DataBackupHelp dbh = new DataBackupHelp();
  try{
   dbh.dataBackup(databasename,databasepw,netname,path,filename);
  }catch(Exception e){
   e.printStackTrace();
   return mapping.findForward("failure");
  }
  //将信息保存在request中

  request.setAttribute("path",filepath);
  //在数据库中添加纪录

  dataBackupService.addBackup(TippInfoRestore);
  return mapping.findForward("success");

以上说的是主要一种思路,具体的没有完善。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值