1. <var id="fe6gj"></var>

    <rp id="fe6gj"><nav id="fe6gj"></nav></rp>

    <noframes id="fe6gj"><cite id="fe6gj"></cite>

    <ins id="fe6gj"><button id="fe6gj"><p id="fe6gj"></p></button></ins>
    1. <tt id="fe6gj"><i id="fe6gj"><sub id="fe6gj"></sub></i></tt>
        始創于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊有禮 登錄
        • 掛牌上市企業
        • 60秒人工響應
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補償
        您的位置: 網站首頁 > 幫助中心>文章內容

        Java 調用bat執行的備份Oracle數據庫 類

        發布時間:  2012/8/22 17:03:22

            flag="good";
           } catch (FileNotFoundException e) {
            flag="error";
            e.printStackTrace();
           }  
           return flag;
          }
         
          /**
           * 獲取數據泵數據存儲路徑
           * @return
           */
          private static String getDumpPath()
          {
          //select OS_PATH from sys.dir$ where  OS_PATH like '%\dpdump\'
           String dumpPath=null;
           Connection conn=null;
           try {
           conn=DBConn.getConnection("***");//該方法自己寫
           dumpPath = (String)DBUtil.getResultFieldValue(conn, "select OS_PATH from sys.dir$ where  OS_PATH like '%\\dpdump\\'");
           } catch (SQLException e) {
           Logger.error(e);
          }finally{
           try
           {
            conn.close();
           } catch (SQLException e)
           {
            Logger.error(e);
           }
          }
           return dumpPath;
          }
         
          /**
           * 配置數據泵的參數
           * @param map
           * @return
           */
          private static String productionExpdpPar(Map<String, Object> map)
          {
              String  proj_id = StringUtil.formatDbColumn(map.get("PROJ_ID"));
           //獲取模板 文件
           File Afile=new File(StringUtil.formatDbColumn(map.get("Paths"))+"\\processBat\\dp\\BuckupParfile.par");
           //生成空白的bat臨時文件
           File Bfile=new File(StringUtil.formatDbColumn(map.get("Paths"))+"\\BuckupParfile.par");
           try {
            //申明讀取緩沖器  //設置讀取緩沖器 文件指向
            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(Afile)));

            //設定寫數據緩沖器   文件指向
            PrintWriter pw= new PrintWriter(new OutputStreamWriter(new FileOutputStream(Bfile)),true);
            
            try {
             while(br.ready())//判斷是否還有可讀信息
             {
              //讀取一行數據
              String str=br.readLine().toString();
              str=str.replace("%proj_id%", proj_id);
              pw.println(str);  
             }
             br.close();
             pw.close();
            } catch (IOException e) {
             e.printStackTrace();
            }
           } catch (FileNotFoundException e) {
           e.printStackTrace();
           }
           return "";
          }
         
          /**
           * 生成導入配置bat文件
           * @param map
           * @return
           */
          private static String productionImpBat(Map<String, Object> map)
          {
              //獲取   rar 備份 文件的名字
           String FilePath=StringUtil.formatDbColumn(map.get("FilePath"));
           String FileName = FilePath.substring(FilePath.lastIndexOf('\\')+1);
              
              //生成 導入前清理 sql 文件 
              productionClearSql(map);
             
              Map<String,String> ConnInfoMap =getConnInfo();
          
          
          
           //設置一個標志
           String flag="";
           //創建個緩存 數據集
           List<String> tmpBat=new ArrayList<String>();
           //獲取模板 文件
           File Afile=new File(StringUtil.formatDbColumn(map.get("Paths"))+"\\processBat\\dp\\impdpDB.bat");
           //生成空白的bat臨時文件
           File Bfile=new File(StringUtil.formatDbColumn(map.get("Paths"))+"\\temp.bat");
           //申明讀取緩沖器
           BufferedReader br=null;
           try {
            //設置讀取緩沖器 文件指向
            br = new BufferedReader(new InputStreamReader(new FileInputStream(Afile)));
           } catch (FileNotFoundException e1) {
            e1.printStackTrace();
           }
          
           try {
            try {
             while(br.ready())//判斷是否還有可讀信息
             {
              //讀取一行數據
              String str=br.readLine().toString();
              //設置數據庫的實例
              if(str.startsWith("set sid")){
               str="set sid="+ConnInfoMap.get("sid");
              }
              //設置數據登錄名
              else if(str.startsWith("set user")){
               str="set user="+ConnInfoMap.get("user");
              }
              //設置數據登密碼
              else if(str.startsWith("set pwd")){
               str="set pwd="+ConnInfoMap.get("pwd");
              }
              //設置備份文件 路徑
              else if(str.startsWith("set FilePath")){
               str="set FilePath="+FilePath;
              }
              //dump路徑
              else if(str.startsWith("set Dumpfile")){
               str="set Dumpfile="+getDumpPath();
              }
              //文件名
              else if(str.startsWith("set FileName")){
               str="set FileName="+FileName;
              }
              tmpBat.add(str);
             }
             //關閉緩沖器
             br.close();
            } catch (IOException e) {
             try {
              br.close();
             } catch (IOException e1) {
              e1.printStackTrace();
             }
             e.printStackTrace();
            }
           
            //設定寫數據緩沖器   文件指向
            PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(Bfile)),true);
            for(String str : tmpBat)
            {
             //按行寫入
             pw.println(str);  
            }
            pw.println("ECHO watting …………………………");
            pw.println("sqlplus %user%/%pwd%@%sid%  @UpdateParentId.sql ");
            pw.println("del /q UpdateParentId.sql");
            pw.println("del /q impClearing.sql");
            pw.println("del /q temp.bat");
            //關閉緩沖器
            pw.close(); 
            flag="good";
           } catch (FileNotFoundException e) {
            flag="error";
            e.printStackTrace();
           }  
          
           return flag;
          }

          /**
           * 生成導入前sql清理文件
           * @param map
           * @return
           */
          private static String productionClearSql(Map<String, Object> map)
          {
            //獲取項目id
            //StringUtil.formatDbColumn(map.get("PROJ_ID"))  這個是即將導入  項目的   新的父id
              String proj_id =getProjId(map);
           //創建個緩存 數據集
           List<String> tmpBat=new ArrayList<String>();
           //獲取模板 文件
           File Afile=new File(StringUtil.formatDbColumn(map.get("Paths"))+"\\processBat\\dp\\impClearing.sql");
           //生成空白的bat臨時文件
           File Bfile=new File(StringUtil.formatDbColumn(map.get("Paths"))+"\\impClearing.sql");
           //申明讀取緩沖器
           BufferedReader br=null;
           try {
            //設置讀取緩沖器 文件指向
            br = new BufferedReader(new InputStreamReader(new FileInputStream(Afile)));
           } catch (FileNotFoundException e1) {
            e1.printStackTrace();
           }
           try {
            try {
             while(br.ready())//判斷是否還有可讀信息
             {
              //讀取一行數據
              String str=br.readLine().toString();
              //設置備份文件名  %proj_id%
              str = str.replace("%proj_id%", proj_id);
              tmpBat.add(str);
             }
             //關閉緩沖器
             br.close();
            } catch (IOException e) {
             try {
              br.close();
             } catch (IOException e1) {
              e1.printStackTrace();
             }
             e.printStackTrace();
            }
           
            //設定寫數據緩沖器   文件指向
            PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(Bfile)),true);
            for(String str : tmpBat)
            {
             //按行寫入
             pw.println(str);  
            }
            pw.println("exit");  
            //關閉緩沖器
            pw.close(); 
           } catch (FileNotFoundException e) {
            e.printStackTrace();
           }  
          
           return "";
          }

         
          /**
           * 生成導入   項目的id  和   更新語句
           * @param map
           * @return
           */
          private static String getProjId(Map<String, Object> map)
          {
           String FilePath=StringUtil.formatDbColumn(map.get("FilePath"));
           FilePath = FilePath.substring(FilePath.lastIndexOf("-")+1, FilePath.lastIndexOf('.'));
          
           File UpParentId=new File(StringUtil.formatDbColumn(map.get("Paths"))+"\\UpdateParentId.sql");
           PrintWriter pw;
          try {
           pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(UpParentId)),true);
           pw.println("update cm_proj t  set t.parent_proj_id='"+StringUtil.formatDbColumn(map.get("PROJ_ID"))+"',t.parent_path=('"
             +getProjPath(StringUtil.formatDbColumn(map.get("PROJ_ID")))+"'||';'||'"+FilePath+"') where t.proj_id='"+FilePath+"';"); 
           pw.println("commit;");
           pw.println("exit");
           //關閉緩沖器
           pw.close();
          } catch (FileNotFoundException e) {
           e.printStackTrace();
          }
           return FilePath;
          }
         
          /**
           * 獲取父級路徑
           * @param map
           * @return
           */
          private static String getProjPath(String proj_id)
          {
           String projPath=null;
           Connection conn=null;
           try {
           conn=DBConn.getConnection("***");//該方法自己寫
           projPath = (String)DBUtil.getResultFieldValue(conn, "select  parent_path  from cm_proj  where proj_id ='"+proj_id+"'");
           conn.close();
          } catch (SQLException e) {
           Logger.error(e);
          }finally{
           try
           {
            conn.close();
           } catch (SQLException e)
           {
            Logger.error(e);
           }
          }
           return projPath;
          }

        }


        本文出自:億恩科技【www.endtimedelusion.com】

        服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

      1. 您可能在找
      2. 億恩北京公司:
      3. 經營性ICP/ISP證:京B2-20150015
      4. 億恩鄭州公司:
      5. 經營性ICP/ISP/IDC證:豫B1.B2-20060070
      6. 億恩南昌公司:
      7. 經營性ICP/ISP證:贛B2-20080012
      8. 服務器/云主機 24小時售后服務電話:0371-60135900
      9. 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
      10. 專注服務器托管17年
        掃掃關注-微信公眾號
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
          0
         
         
         
         

        0371-60135900
        7*24小時客服服務熱線

         
         
        av不卡不卡在线观看_最近2018年中文字幕_亚洲欧美一区二区三区_一级A爱做片免费观看国产_日韩在线中文天天更新_伊人中文无码在线