oracle自动备份

建议一: 
利用任务计划、批处理文件和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
原文地址:https://www.cnblogs.com/sumsen/p/2525434.html