Oracle 在window下自动备份

来源:互联网 发布:windows 没有ssh目录 编辑:程序博客网 时间:2024/04/28 18:46

1、确定你的计算机上装有oracle的客户端,如果没有,请安装oracle客户端
2、确定有你的oracle服务里有你要需要备份的数据库的服务名。

3、制作一个批处理文件(oracleBackup.bat),具体方法:打开“记事本”,保存为oracleBackup.bat,
  此时保存的文件类型选择为“所有文件”。我的保存目录为:d:/oracleBackup.bat。oracle客户端安装
  在d:/oracle目录下。
4、右键点击此文件(oracleBackup.bat),选择“编辑”,进入编辑状态:

 

     D:
del /q /业务数据备份/gymz/backup/day3
copy /业务数据备份/gzdb/backup/day2/*.*  /业务数据备份/gymz/backup/day3
del /q /业务数据备份/gymz/backup/day2
copy /业务数据备份/gymz/backup/day1/*.*  /业务数据备份/gymz/backup/day2
del /q /业务数据备份/gymz/backup/day1                    
copy /业务数据备份/gymz/backup/day0/*.*  /业务数据备份/gymz/backup/day1
del /q /业务数据备份/gymz/backup/day0
exp gymz/gymz@myoracle log=gymz_exp%DATE:~4,10%.log file=/业务数据备份/gymz/backup/day0/gymz_backup%DATE:~4,10%.dmp owner=gymz

  
  a、cd oracle/ora92/bin        //进入exp命令的目录下面。
  b、exp gymz/gymz@myoracle file=d:/%DATE:~4,10%.dmp log=d:/%DATE:~4,10%.log
          //%DATE:~4,10%代表取系统日期(windows系统doc命令),例如:2005-12-01。用日期来
   作为备份的数据文件名和日志名,用来保证文件名不重复。以上备份文件我保存在d:下面,保存
   目录自己设置。
  c、保存文件。
5、在windows计划任务(开始-程序-附件-系统工具-任务计划)中添加任务计划,选择“任务计
  划”时,点击“浏览”,选择自己的计划(即oracleBackup.bat文件),确定就行了。以下设置根据自
  需要设置就行了。

   新建方式(二):在cmd 中运行新建计划  at 12:47 /every:W D:/业务数据备份/gymz/backup/backup.cmd (在每个星期三的12:   47定时执行)
              取消已经安排的计划  命令:at 1 /Delete (1为指派给已计划命令的标识编号)

 

 

 

 

 

 

 

 

 

 

 

Oracle数据库定时自动备份批处理代码(Windows)

    这是最近写的一个Oracle数据库自动备份的批处理,经过测试正常运行,记录如下。包括两部分,逻辑备份和冷备份,如有不完整之处,还往看到本文的高手指导!

注:这些内容是本人经过一番学习和多次测试调试后的结果,如果想转载,请以连接的形式,谢谢合作!

第一部分,逻辑备份

  • 下面是:AutoBackup_Logic.bat --逻辑备份的主文件,直接在计划任务中调用就可以了。

 

@echo off

rem

rem 需要配置的参数说明:

rem BAT_HOME:即本批处理所在的目录;

rem DUMP_DIR:即要备份到的数据文件目录,存在与数据字典表:dba_directories 中。

rem

set BAT_HOME=E:/BAT

set DUMP_DIR=E:/Temp/DBBackup

set BKFILE=%Date:~0,4%%Date:~5,2%%Date:~8,2%

set HHMMSS=%time:~0,2%%time:~3,2%%time:~6,2%

call %BAT_HOME%/LogicBackup.bat %DUMP_DIR% >%BAT_HOME%/LogicBackup_%BKFILE%%HHMMSS%.log

echo Completed!

  • 下面是:LogicBackup.bat

 

@echo off

rem call LogicBackup.bat %DUMP_DIR%

rem ==========================================================================================

rem     本批处理实现支持expdp数据泵的Oracle数据库版本的数据库逻辑备份,流程为:导出数据到

rem dump_dir 数据库目录下,然后把dmp文件以rar格式放入当天备份日期命名的目录下,便于以后按

rem 照日期恢复。

rem

rem 需要配置的参数说明:

rem BAT_HOME:即本批处理所在的目录;

rem BKDIR:是调用本批处理时传进来的参数 dump_dir,即要备份到的数据文件目录。

rem

rem Author: Sanlavo

rem Time: 2007-06-07

rem ==========================================================================================

rem

echo 备份开始...

echo 当前的时间是: %DATE% %time%

set BAT_HOME=E:/BAT

set BKDIR=%1

set BKFILE=%Date:~0,4%%Date:~5,2%%Date:~8,2%

set HHMMSS=%time:~0,2%%time:~3,2%%time:~6,2%

expdp system/sys parfile=%BAT_HOME%/ScriptsLib/parfiletest.sql

if not exist %BKDIR%/%BKFILE%_LOGIC (

md %BKDIR%/%BKFILE%_LOGIC

) else (

echo 目录 %BKDIR%/%BKFILE%_LOGIC 已经存在

)

echo 开始压缩文件...

rar a %BKDIR%/%BKFILE%_LOGIC/%BKFILE%%HHMMSS%_LOGIC_FULL.rar %BKDIR%/*.dmp

echo 压缩文件 %BKFILE%%HHMMSS%_LOGIC_FULL.rar 完成

echo 开始移动文件...

move %BKDIR%/*.dmp %BKDIR%/%BKFILE%_LOGIC/

move %BKDIR%/*.log %BKDIR%/%BKFILE%_LOGIC/

echo 移动文件完成

echo 开始删除dmp文件...

del /f /s /q %BKDIR%/%BKFILE%_LOGIC/*.dmp

echo 删除dmp文件完成

net send %userdomain% "数据库逻辑备份已于:%DATE% %time% 完成!"

echo .

echo 备份已于:%DATE% %time% 完成!

echo .

rem 移动批处理的日志文件到备份目录下面

xcopy %BAT_HOME%/LogicBackup_%BKFILE%*.log %BKDIR%/%BKFILE%_LOGIC/

echo Successfully Completed!

  • 下面是expdp的parfile参数的文件(parfiletest.sql)内容:

 

directory=dump_dir

dumpfile=DBBackup_Logic_%U.dmp

logfile=DBBackup_Logic.log

filesize=80M

full=y

job_name=EXP_DB_FULL

到此,逻辑备份批处理完成,可以用命令来定时执行,例如:

c:/>at 06:06 /every:S E:/BAT/AutoBackup_Logic.bat

这样,逻辑备份将会在每周星期六凌晨六点六分执行。

第二部分,冷备份:

  • 下面是:AutoBackup.bat --主文件

 

@echo off

set BAT_HOME=E:/BAT

set DUMP_DIR=E:/Temp/DBBackup

call ColdBackup.bat orcl %DUMP_DIR% >%BAT_HOME%/ColdBackup_%DATE:~0,10%.log

pause

  • 下面是备份流程文件:ColdBackup.bat

 

@echo off

rem E:/BAT>ColdBackup.bat orcl E:/Temp/DBBackup

rem

rem==============================================

rem 要备份的文件列表有:参数文件、控制文件、数据文件、重做日志文件

rem

rem 参数文件有:

rem %ORACLE_HOME%/database/spfile<sid>.ora

rem %ORACLE_HOME%/database/PWD<sid>.ora

rem %ORACLE_HOME%/database/pfile<sid>.ora

rem

rem 控制文件:可以通过查询数据字典视图v$control 确认控制文件的位置和清单

rem select status,name from v$controlfile;

rem

rem 数据文件:可以通过查询数据字典视图 dba_data_files 确定数据文件的位置和清单

rem select status,file_name from dba_data_files;

rem

rem 重做日志文件:查询数据字典v$logfile可以确认联机重做日志文件的位置和清单

rem select group#,status,member from v$logfile;

rem Author: Sanlavo

rem Time: 11:35 2007-5-31

rem==============================================

rem

rem 请在这里配置好本批处理程序所放的路径BAT_HOME以及ORACLE_HOME:

set ORACLE_HOME=D:/oracle/product/10.2.0/db_1

set BAT_HOME=E:/BAT

set BKFILE=%Date:~0,4%%Date:~5,2%%Date:~8,2%

set HHMMSS=%time:~0,2%%time:~3,2%%time:~6,2%

rem 数据库脱机

call %BAT_HOME%/ShutdownDB.bat %1

rem %1 为数据库<SID> %2为备份文件路径

rem 创建备份目录

if exist %2/%BKFILE%_DBBackup (

echo %2/%BKFILE%_DBBackup 已经存在

) else (

mkdir %2/%BKFILE%_DBBackup

echo %2/%BKFILE%_DBBackup 已经创建

)

rem copy备份文件到备份目录中

rem call xcopyfiles.bat %1 %2

rem begin ==============================================

echo 数据库 %1 冷备份开始...

rem 备份 dbs 目录下参数文件

xcopy %ORACLE_HOME%/dbs/*.* %2/%BKFILE%_DBBackup/dbs /S /I /C /Y /F

rem 备份 %ORACLE_HOME%/database 目录下参数文件

xcopy %ORACLE_HOME%/database/*.* %2/%BKFILE%_DBBackup/database /S /I /C /Y /EXCLUDE:ScriptsLib/databaseExclude.lst /F

rem 备份数据库控制文件、数据文件、重做日志文件

rem 创建数据库<SID>命名的文件夹,存放相关文件

if not exist %2/%BKFILE%_DBBackup/%1 (

md %2/%BKFILE%_DBBackup/%1

)

rem 从filepath.txt中读取文件路径信息并copy到目标路径

for /f %%i in (%BAT_HOME%/ScriptsLib/filepath.txt)  do (

xcopy %%i %2/%BKFILE%_DBBackup/%1 /S /I /C /Y /F

)

echo 数据库 %1 冷备份完成!

rem end ==============================================

echo 启动数据库

rem 上面的操作过程中以及修改了环境路径,所以掉不到该批处理文件

%BAT_HOME:~0,2%

cd %BAT_HOME%

call %BAT_HOME%/StartupDB.bat %1

:Operation

:End

rem if exist *.dmp (

rem move *.dmp %BKFILE%_DBBackup & goto End1

rem echo Move dump file successfull

rem )else (

rem echo 不存在数据库备份文件 & goto End1

rem )

rem End

rem :: 把日期目录下的文件移动到当前目录

rem :: move %BKFILE%_DBBackup/*.bat

rem :End1

rem echo *

rem echo Operation Successfully

rem echo *

pause

  • 上文中的:databaseExclude.lst 内容如下:

 

.log

.exe

即,排除日志文件和exe文件,其他的全部备份。

  • 上文中的:filepath.txt

 

内容是经过数据字典查询后得到的比如控制文件、数据文件、日志文件等的路径列表,例如:

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/CONTROL01.CTL

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/CONTROL02.CTL

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/CONTROL03.CTL

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/USERS01.DBF

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSAUX01.DBF

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/UNDOTBS01.DBF

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/SYSTEM01.DBF

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/EXAMPLE01.DBF

D:/SDEDB.DBF

E:/SDEDB/SDE_DATA01.DBF

E:/SDEDB/SDE_INDEX01.DBF

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/WJ01.DBF

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO01.LOG

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO02.LOG

D:/ORACLE/PRODUCT/10.2.0/ORADATA/ORCL/REDO03.LOG

...

在冷备份中涉及到数据库的关闭和启动,这里不在罗索了。关于冷备份的执行,也可以模仿逻辑备份部分,在计划任务中调用。

(完)