前面我们讲述了如何进行数据库异机恢复和备份的校验,上节最后,我也提到过如果做数据库异机恢复测试备份的有效性和完整实验,有没有什么简单便捷的方法?答案肯定是有嘀。
下面,提供一下本人的方法,小伙伴们如有什么好的建议,还请多多指教。
注意:加粗斜体参数,这是要小伙伴们根据自己数据库的情况修改的。
第1步:我们需要根据源数据库的PFILE文件使用批处理脚本创建文件目录。将以下代码另存为 create_paper_file.bat
md D:\oracle\product\10.2.0\admin
md D:\oracle\product\10.2.0\flash_recovery_area
md D:\oracle\product\10.2.0\oradata
md D:\oracle\product\10.2.0\admin\SID
md D:\oracle\product\10.2.0\admin\SID\adump
md D:\oracle\product\10.2.0\admin\SID\bdump
md D:\oracle\product\10.2.0\admin\SID\udump
md D:\oracle\product\10.2.0\admin\SID\cdump
md D:\oracle\product\10.2.0\admin\SID\dpdump
md D:\oracle\product\10.2.0\oradata\SID
第2步:利用批处理脚本创建实例,并调用RMAN备份恢复数据。
将以下代码另存为resore.bat
oradim -new -sidSID
set oracle_sid=SID
rman target/ msglog E:\r_%date:~0,10%.log cmdfile=E:\restore.rman
将以代码另存为restore.rman
SET DBID13********7;
run{
STARTUP NOMOUNT;
RESTORE SPFILE TO PFILE "D:\oracle\product\10.2.0\db_1\database\initSID.ora" FROM
"E:\rmdatabase\C-13******7-20180601-00";
STARTUP FORCE NOMOUNT PFILE='D:\oracle\product\10.2.0\db_1\database\initSID.ora';
RESTORE CONTROLFILE FROM "E:\rmdatabase\C-13******7-20180601-00";
ALTER DATABASE MOUNT;
allocate channel t1 type disk;
allocate channel t2 type disk;
allocate channel t3 type disk;
RESTORE DATABASE;
RECOVER DATABASE;
release channel t1;
release channel t2;
release channel t3;
}
第3步:打开数据,将以下代码另存为open.bat
set oracle_sid=SID
rman target/ msglog E:\o_%date:~0,10%.log cmdfile=E:\open.rman
将以下代码另存为open.rman
ALTER DATABASE OPEN RESETLOGS;
第4步:创建密码文件,将以下代码另存为create_password.bat
ORAPWD FILE=D:\oracle\product\10.2.0\db_1\database\pwdSID.ora password=123456entries=20
最后,注入注册表信息,修改字符集,并设置数据库自动启动。将以下代码另存为edit_nls_lang.reg
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb10g_home1]
"NLS_LANG"="AMERICAN_AMERICA.US7ASCII"
"ORA_sid_AUTOSTART"=hex(2):54,00,52,00,55,00,45,00,00,00
至此,我们的半自动化批处理脚本恢复数据库就这样了,最后,我们需要手动去配置一下监听。
当然,小伙伴们也可将上面多个处理整合成一个批处理,这个就留给小伙伴们自己动手操作了
领取专属 10元无门槛券
私享最新 技术干货