建议一:
利用任务计划、批处理文件和ORACLE的EXP导出功能,可以根据日期自动生成ORACLE备份文件,大大方便了ORACLE数据备份。:
1,批处理文件backup.bat\.
exp system/manager file=d:\backup\oracle\oracle%date:~0,10%.dmp owner=system log=d:\backup\oracle\oracle%date:~0,10%.log
将生成oracle2006-01-09.dmp文件
exp system/manager file=d:\backup\oracle\oracle%date:~11,3%.dmp owner=system log=d:\backup\oracle\oracle%date:~11,3%.log
将生成oracle星期一.dmp文件,则每周循环保留一个备份文件,共7个备份文件循环
2,添加一个任务计划
利用任务计划向导,根据备份策略设置自动执行任务的时间频率(例如每天零时),执行d:\oracle\backup.bat
3、以后每天将在目录中生成形如“oracle2005-08-31.dmp和oracle2005-08-31.log”的备份和日志文件。
说明:
1、%date%的值在不同的系统、语言版本下可能是不一样的,控制面板里面区域选项的设定也会改变%date%的值。请先在命令行中测试 echo %date% 的返回值。%date:~4,10% 是返回日期函数,~后的第一个参数是要截取的起始位置(从0开始),第二个参数是要截取的长度,如没有则是截取到最后,参数可酌情修改。
2、如需要准确的时间做为文件名,请用%time%函数,参数同上。
建议二:
@echo off
set filename=e:\data_bak\%date:~8,2%日
exp userid=user/pass@esdata file=%filename%.dmp owner=user INDEXES=y grants=y constraints=y compress=y log=%filename%.log
rar a %filename%.rar %filename%.*
del %filename%.dmp
del %filename%.log
例:
set filename=e:\databack\%date:~8,2%日
exp ccense/ccense@sd file=%filename%.dmp
rar a %filename%.rar %filename%.dmp
del %filename%.dmp
放计划任务里面定时执行,
文件名以日期的day部分来命名
备份后调用rar进行压缩
这样可以保存一个月的历史数据
注意:需要把program files/winrar目录下的rar.exe拷贝到系统system32目录下
如果是以星期命名,则需要将set filename=e:\data_bak\%date:~8,2%日修改为
set filename=e:\data_bak\%date:~0,3%
建议三:
以下为ORACLE 自动备份批处理文件内容,请配合任务计划实现
@ECHO OFF
SET BACKPATH=d:\
ECHO 准备备份数据库
REM 7天一个循环
IF EXIST %BACKPATH%\ONE GOTO ONE
IF EXIST %BACKPATH%\TWO GOTO TWO
IF EXIST %BACKPATH%\THREE GOTO THREE
IF EXIST %BACKPATH%\FOUR GOTO FOUR
IF EXIST %BACKPATH%\FIVE GOTO FIVE
IF EXIST %BACKPATH%\SIX GOTO SIX
IF EXIST %BACKPATH%\SEVEN GOTO SEVEN
ECHO E > %BACKPATH%\ONE
:ONE
SET BACKPATH_FULL=%BACKPATH%\ONE
REN %BACKPATH%\ONE TWO
GOTO BACK
:TWO
SET BACKPATH_FULL=%BACKPATH%\TWO
REN %BACKPATH%\TWO THREE
GOTO BACK
:THREE
SET BACKPATH_FULL=%BACKPATH%\THREE
REN %BACKPATH%\THREE FOUR
GOTO BACK
:FOUR
SET BACKPATH_FULL=%BACKPATH%\FOUR
REN %BACKPATH%\FOUR FIVE
GOTO BACK
:FIVE
SET BACKPATH_FULL=%BACKPATH%\FIVE
REN %BACKPATH%\FIVE SIX
GOTO BACK
:SIX
SET BACKPATH_FULL=%BACKPATH%\SIX
REN %BACKPATH%\SIX SEVEN
GOTO BACK
:SEVEN
SET BACKPATH_FULL=%BACKPATH%\SEVEN
REN %BACKPATH%\SEVEN ONE
GOTO BACK
:BACKEXP ccense/ccense FILE=%BACKPATH_FULL%.DMP
RAR a %BACKPATH_FULL%.rar %BACKPATH_FULL%.DMP
del %BACKPATH_FULL%.DMP
SET BACKPATH=
SET BACKPATH_FULL=
注意:需要把program files/winrar目录下的rar.exe拷贝到系统system32目录下
EXIT建议四:
RMAN TARGET=RMAN/RMAN@ORCL < C:\RMAN.TXT
建议五:
在文本里编辑cmd命令。然后保存成bat文件。在windows中定义任务计划,就
可以自动执行了。
例:
编辑文本文件
del c:\exp\*.dmp
exp userid=cw/cw@db file='c:\exp\*.dmp' tables=(student)
保存成bat文件
建议六:
写个简单的批处理文件备份恢复:
备份:
@echo off 不显示命令行
echo 开始备份表..... 打印信息
D: DOS切换到D: 盘
cd oracle\ora92\bin 切换到cd oracle\ora92\bin目录
exp 用户名/密码@数据库 file=d:\config_bak.dmp tables=(table1,table2) 备份表一表二到d:\config_bak.dmp
echo 备份完毕!
恢复:
@echo off
echo 开始恢复表.....
D:
cd oracle\ora92\bin
imp 用户名/密码@数据库 file=d:\config_bak.dmp tables=(table1,table2) ignore=y
sqlplus /nolog @oraStartup.sql>>oraStartup.log 调用sql文件
pause 执行完sql文件以后暂停,看信息
echo 恢复完毕!
编写oraStartup.sql
conn 用户名/密码@数据库 as sysdba
select * from table1;
quit;
执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,
DOS中可以执行时由于 在oracle 8i 中 安装目录\ora81\BIN被设置为全局路径,
该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。
oracle用java编写,我想SQLPLUS.EXE、EXP.EXE、IMP.EXE这俩个文件是被包装后的类文件。
SQLPLUS.EXE调用EXP.EXE、IMP.EXE他们所包裹的类,完成导入导出功能。
下面介绍的是导入导出的实例,向导入导出看实例基本上就可以完成,因为导入导出很简单。
数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
exp system/manager@TEST file=d:\daochu.dmp full=y
2 将数据库中system用户与sys用户的表导出
exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
3 将数据库中的表table1 、table2导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
不过在上面命令后面 加上 compress=y 就可以了
数据的导入
1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
imp system/manager@TEST file=d:\daochu.dmp
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上 ignore=y 就可以了。
附jsce oracle auto backup from ufida nanking
cd D:\ncback
del xmv59.dmp
rename xmv58.dmp xmv59.dmp
rename xmv57.dmp xmv58.dmp
rename xmv56.dmp xmv57.dmp
rename xmv55.dmp xmv56.dmp
rename xmv54.dmp xmv55.dmp
rename xmv53.dmp xmv54.dmp
rename xmv52.dmp xmv53.dmp
rename xmv51.dmp xmv52.dmp
rename xmv5.dmp xmv51.dmp
exp xmv502/nc52 file=D:\ncback\xmv5.dmp log=D:\ncback\xmv5.log owner=xmv502
cd F:\ncback\iufo del iufo9.dmp rename iufo8.dmp iufo9.dmp rename iufo7.dmp iufo8.dmp rename iufo6.dmp iufo7.dmp rename iufo5.dmp iufo6.dmp rename iufo4.dmp iufo5.dmp rename iufo3.dmp iufo4.dmp rename iufo2.dmp iufo3.dmp rename iufo1.dmp iufo2.dmp rename iufo.dmp iufo1.dmp cd F:\ncback\ncv5 del ncv59.dmp rename ncv58.dmp ncv59.dmp rename ncv57.dmp ncv58.dmp rename ncv56.dmp ncv57.dmp rename ncv55.dmp ncv56.dmp rename ncv54.dmp ncv55.dmp rename ncv53.dmp ncv54.dmp rename ncv52.dmp ncv53.dmp rename ncv51.dmp ncv52.dmp rename ncv5.dmp ncv51.dmp cd F:\ncback\ncv5 del xmv59.dmp rename xmv58.dmp xmv59.dmp rename xmv57.dmp xmv58.dmp rename xmv56.dmp xmv57.dmp rename xmv55.dmp xmv56.dmp rename xmv54.dmp xmv55.dmp rename xmv53.dmp xmv54.dmp rename xmv52.dmp xmv53.dmp rename xmv51.dmp xmv52.dmp rename xmv5.dmp xmv51.dmp exp ncv5/1@jsce_127.0.0.1 file=f:\ncback\ncv5\ncv5.dmp log=f:\ncback\ncv5\ncv5.log owner=ncv5 exp xmv502/1@jsce_127.0.0.1 file=f:\ncback\ncv5\xmv5.dmp log=f:\ncback\ncv5\xmv5.log owner=xmv502 exp iufo/jsce001@jsce_127.0.0.1 file=f:\ncback\iufo\iufo.dmp log=f:\ncback\iufo\iufo.log owner=iufo