(2)下列vb代码自动建立联机备份的批处理文件及相应的脚本文件。set adotmp = objconnect。execute("select tablespace_name from sys。dba_data_files") '得到数据库中的表空间名dim lnum1 as longdim lnum2 as longlnum = freefileopen 自动备份批处理文件路径 for binary as lnumlnum1 = freefileopen "onlinebegin。
sql" for binary as lnum2 onlinebegin。sql为设置表空间进入热备份模式的脚本文件文件名lnum2 = freefileopen "onlineend。sql" for binary as lnum2 onlinebegin。
sql为结束表空间热备份模式的脚本文件文件名strtmp = " connect 账户名/密码" & chr(13) & chr
(10)put lnum1, , strtmpstrtmp = "shutdown immediate" & chr(13) & chr
(10)put lnum1, , strtmpstrtmp = "startup pfile=初始化文件的存放位置exclusive mount; " & chr(13) & chr
(10)put lnum1, , strtmpstrtmp = "alter database archivelog; " & chr(13) & chr
(10)put lnum1, , strtmpstrtmp = "alter database open; " & chr(13) & chr
(10)put lnum1, , strtmpstrtmp = " connect 账户名/密码" & chr(13) & chr
(10)put lnum2, , strtmpstrtmp = oracle服务管理器路径 & " @" & " onlinebegin。
sql " & chr(13) & chr
(10) 在服务管理器中执行脚本文件onlinebegin。sqlput lnum, , strtmp do while not adotmp。eofset adotmp1 = objconnect。
execute("select file_name from sys。dba_data_files where tablespace_name='" & adotmp。fields(0) & "'") 得到当前表空间所对应的所有数据文件名,通过循环即可得到所有表空间所对应数据文件名,若只备份指定的表空间,可指定表空间名从而得到其对应的物理数据文件strtmp = "alter tablespace " & adotmp。
fields(0) & " begin backup;" & chr(13) & chr
(10) 将表空间置于热备份模式put lnum1, , strtmpstrtmp = oracle的ocopy。exe工具全路径 " & adotmp1。
fields(0) & " " & 备份文件存放路径 & chr(13) & chr
(10)put lnum, , strtmpstrtmp = "alter tablespace " & adotmp。fields(0) & " end backup;" & chr(13) & chr
(10) 表空间恢复正常模式put lnum2, , strtmpadotmp。
movenextloopstrtmp = oracle服务管理器路径 & " @" & " onlineend。sql" & chr(13) & chr
(10) 在服务管理器中执行脚本文件onlineend。sqlput lnum, , strtmpstrtmp = "exit" & chr(13) & chr
(10) 退出服务管理器put lnum1, , strtmpstrtmp = "alter system switch logfile;" & chr(13) & chr
(10) 强制日志转换,使oracle创建一个归档日志文件put lnum2, , strtmpstrtmp = "exit" & chr(13) & chr
(10) put lnum2, , strtmpcloseset adotmp = nothingset adotmp1 = nothing
运行得到的自动批处理文件,即可自动进行数据库的联机备份。
(3)在从备份中恢复数据文件后,执行下列脚本将数据库的恢复程序。
connect账户名/密码shutdown abortstartup mount pfile=初始化文件的存放位置; 装载数据库set autorecovery on; 打开自动恢复recover database;alter database open; 打开数据库
结束语
提高数据库灾难后恢复的可靠性正越来越多地受到人们的关注,本文根据个人在实际项目开发过程中的经验及恢复时的灵活性对oracle数据库的备份及恢复进行了探讨,并提出了典型的备份策略,用户可以根据自己的实际情况及数据库结构在此基础上灵活应用。
全部