在网上搜了一下。网上已经有了比较全面的一种方案了,所以自己又可以懒了!呵呵!
它的脚本包括三个文件
1.exp.txt(数据库参数设置文件)
userid=ZCDP/ZCDP@ORCL_192.168.0.250
owner=ZCDP
INDEXES=y
grants=y
rows=y
constraints=y
compress=N
相信了解exp语法的朋友不会感到为难吧!
2.Oracle_bakup.bat(处理文件)
del /q ../old_backup/*.*
copy ../backup/*.* ../old_backup
del /q ../backup/*.*
Oracle_bakup.vbs
3.Oracle_bakup.vbs()
Option Explicit
On Error Resume Next
Dim fname, cmd
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
fname = Date
cmd = "exp log=../backup/" & "fas_" & fname & ".log file=../backup/" & "fas_" & fname & ".dmp parfile=exp.txt" WshShell.run cmd
Set WshShell = Nothing
'WScript.Echo cmd
对于VBScript了解的人也不会看不懂吧!呵呵!其实我也不熟悉,大概就是在这个文件里面定义cmd语法,里面有个文件名称路径的定义。我们可以不必关心里面的log文件,但是为了数据的准确性,最好还是加上,可以通过log我们就掌握数据是否有问题了。 运行oracle_bakup.bat备份数据库。可以将该文件加入到windows的任务中实现自动备份的功能。OK? 如果java实现数据库的定义的话请看下面一段代码:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.sclh.hibernate.dao.DepartmentDAO;
public class BakOracleDB ... {
private static final Log log = LogFactory.getLog(DepartmentDAO.class);
public BakOracleDB() ...{
}
public static void execommand(String command) ...{
try ...{
if (command != null && !"".equals(command)) ...{
Runtime.getRuntime().exec(command);
}
}
catch (Exception ex) ...{
log.error("Exception : com.sclh.common.BakOracleDB/execommand() " +
ex.getMessage());
}
}
public static boolean getBakOracleDB(String url)...{
boolean returnValue = false;
String urlLog = "";
String urlDmp = "";
if(url.indexOf(".")== -1)...{
urlDmp = url + GetTime.getSystemTime().toString() + ".dmp";
urlLog = url + GetTime.getSystemTime().toString() + ".log";
}else...{
urlDmp = url;
urlLog = urlDmp.substring(0,urlDmp.indexOf(".")) + ".log";
}
try...{
String command = "exp ZCDP/ZCDP@ORCL_192.168.0.250 file="+urlDmp+" log=" + urlLog + " owner=ZCDP";
BakOracleDB.execommand(command);
returnValue = true;
}catch(Exception ex)...{
log.error("Exception : com.sclh.common.BakOracleDB/getBakOracleDB() " +
ex.getMessage());
}
return returnValue;
}
public static void main(String[] args)...{
BakOracleDB bdb = new BakOracleDB();
bdb.getBakOracleDB("C:/fas_2007-01-02.dmp");
bdb.getBakOracleDB("C:/fas_");
}
}