当前位置: > 数据库 > Oracle >

应用服务器上在线备份Oracle数据库代码

时间:2017-02-14 23:20来源:linux.it.net.cn 作者:IT

 
  1. import java.io.BufferedReader;  
  2. import java.io.IOException;  
  3. import java.io.InputStream;  
  4. import java.io.InputStreamReader;  
  5.    
  6. class StreamGobbler extends Thread {  
  7.     InputStream is;  
  8.     String type;  
  9.    
  10.     StreamGobbler(InputStream is, String type) {  
  11.         this.is = is;  
  12.         this.type = type;  
  13.     }  
  14.    
  15.     public void run() {  
  16.         try  {  
  17.             InputStreamReader isr = new InputStreamReader(is);  
  18.             BufferedReader br = new BufferedReader(isr);  
  19.             String line=null;  
  20.             while ( (line = br.readLine()) != null)  
  21.                 System.out.println(type + ">" + line);  
  22.         } catch (IOException ioe) {  
  23.             ioe.printStackTrace();  
  24.         }  
  25.     }  
  26. }  
  27.    
  28. public class Test {  
  29.     public static void main(String args[]) {  
  30.         args = new String[1];  
  31.         args[0]="exp zcgl/zcgl@db190 file=d:/test.dmp";  
  32.                   
  33.         if (args.length < 1) {  
  34.             System.out.println("USAGE: java GoodWindowsExec <cmd>");  
  35.             System.exit(1);  
  36.         }  
  37.    
  38.         try {  
  39.             String osName = System.getProperty("os.name" );  
  40.             System.out.println(osName);  
  41.             String[] cmd = new String[3];  
  42.    
  43.             if( osName.equals( "Windows NT" ) ) {  
  44.                 cmd[0] = "cmd.exe" ;  
  45.                 cmd[1] = "/C" ;  
  46.                 cmd[2] = args[0];  
  47.             } else if( osName.equals( "Windows XP" ) ) {  
  48.                 cmd[0] = "cmd.exe" ;  
  49.                 cmd[1] = "/C" ;  
  50.                 cmd[2] = args[0];  
  51.             } else if( osName.equals( "Windows 95" ) ) {  
  52.                 cmd[0] = "command.com" ;  
  53.                 cmd[1] = "/C" ;  
  54.                 cmd[2] = args[0];  
  55.             } else if( osName.equals( "Windows Vista" ) ) {  
  56.                 cmd[0] = "cmd.exe" ;  
  57.                 cmd[1] = "/C" ;  
  58.                 cmd[2] = args[0];  
  59.             }  
  60.    
  61.             Runtime rt = Runtime.getRuntime();  
  62.             System.out.println("Execing " + cmd[0] + " " + cmd[1]  
  63.                                + " " + cmd[2]);  
  64.             Process proc = rt.exec(cmd);  
  65.             // any error message?  
  66.             StreamGobbler errorGobbler = new  
  67.                 StreamGobbler(proc.getErrorStream(), "");  
  68.    
  69.             // any output?  
  70.             StreamGobbler outputGobbler = new  
  71.                 StreamGobbler(proc.getInputStream(), "");  
  72.    
  73.             // kick them off  
  74.             errorGobbler.start();  
  75.             outputGobbler.start();  
  76.    
  77.             // any error???  
  78.             int exitVal = proc.waitFor();  
  79.             System.out.println("ExitValue: " + exitVal);  
  80.         } catch (Throwable t) {  
  81.             t.printStackTrace();  
  82.         }  
  83.     }  
  84. }  

 

做在线备份时,输出做一个修改,动态把输出内容传到浏览器页面上去。




(责任编辑:IT)
------分隔线----------------------------