TSM Oracle 11gR2数据库异机完全恢复手册
说明:该手册是公司TSM灾备恢复手册的一部分。目前使用TSM备份的公司已经不多了,而且会使用TSM的部分都不会Oracle,会Oracle的人也不一定就会TSM。而我是两者都不会的人,只是不断的参考别人的帮助,然后一步一步验证出来的,所以说还是很有参考价值。另外,也可以作为Oracle RMAN恢复的参考,TSM在里面的作用就是开启一个恢复通道而已。当然,里面也有考虑不全的地方,如果有疑问,可以发邮件到zhangjun_cumt@163.com一起讨论。
1. Oracle数据库恢复
1.1.
准备
注意事项:
➢ 备份时一定要备份控制文件、数据库和归档日志;
➢ 恢复前必须知道源数据库的详细版本号;
➢ 恢复前必须知道源数据库的数据库名称、数据库ID号(即DBID);
➢ 恢复前必须知道源数据库的控制文件、数据文件、归档日志文件保存的目录路径;
➢ 恢复前必须知道源数据备份的控制文件的备份名称;
➢ 恢复前备份源数据库的TSM配置:NODE名称,DSM.OPT配置文件,TDOP.OPT配置文件(请参考TSM备份架构文档)。
2.1.1. 源服务器数据库查询
1) 登录源服务器数据库,使用查询语句查询源数据库的数据库版本。查询语句如下:
SQL>select * from v$version; 得到的结果如下图所示:
2) 使用查询语句查询源数据库的数据库名称及DBID。如下:
SQL>select name,dbid from v$database;
得到的结果如下图:
3) 使用查询语句查询源数据库的数据文件存放路径。如下:
SQL>select t1.name,t2.name from v$tablespace t1,v$datafile t2 where t1.ts#=t2.ts#; 得到的结果如下图:
4) 使用查询语句查询SPFILE和PFILE文件位置:
SQL>SELECT NAME, VALUE, DISPLAY_VALUE FROM V$PARAMETER WHERE NAME ='spfile'; 得到下图:
5) 使用查询语句查询控制文件路径,如下:
SQL> select name from v$controlfile; 得到下图:
6) 使用查询语句查询归档日志文件路径,如下:
SQL>select destination from v$archive_dest where destination is not null; 得到下图:
7) 使用查询语句查询fast_recover_area的目录路径,如下:
SQL>show parameter revocery;
或者:
SQL>select name from v$recovery_file_dest;
得到下图:
2.1.2. 源数据库备份
TSM备份请参考TSM备份架构文档。需要注意的是备份时一定要备份控制文件、数据库和归档日志。备份的RMAN脚本参考如下:
run { allocate channel t1 type 'sbt_tape' parms 'ENV=(TDPO_OPTFILE=C:\\Program Files\\Tivoli\\TSM\\AgentOBA\dpo.opt)'; backup current controlfile; backup spfile; backup incremental level=0 cumulative database plus archivelog delete all input; delete obsolete; release channel t1; } 另外,也可以参考RMAN配置,设置为备份时自动备份控制文件。
2.1.3. TSM备份查询
查询源数据库备份的控制文件名称。登陆到TSM Server上,先查询节点使用的是哪个备份存储池,这里假设备份节点名称为SFH-TEST-ORACLE。步骤如下:
1) 首先查询节点属于哪个域,命令如下:
TSMGROUP_SERVER1> query node sfh-test-oracle
结果如下图所示:
2) 由上面得到,该节点属于策略域TEST2016,查询该策略域下面的存储池,命令如下:
TSMGROUP_SERVER1> query copygroup test2016 f=d
得到的结果如下图所示,可以看到Copy Destination为VTL_TEST_POOL。以上结果也可以查询TSM备份架构文档,可以快速查询到该内容。
3) 查询存储池VTL_TEST_POOL下面的磁带信息,命令如下:
TSMGROUP_SERVER1> query vol stgpool=vtl_test_pool
得到的结果如下图:
4) 根据上面的结果查询磁带上的内容,命令如下:
TSMGROUP_SERVER1> query content v00056l3 node=sfh-test-oracle TSMGROUP_SERVER1> query content v00058l3 node=sfh-test-oracle
得到的结果如下(由于内容很长,限于篇幅,就省略了中间一部分):
从上面可以看出,磁带V00058L3上没有存放节点SFH-TEST-ORACLE的任何内容。而磁带V00056L3上存放有节点SFH-TEST-ORACLE的备份数据。
最终的结果:我们要找的控制文件名称(非常重要,后面恢复要使用)为:c-31813702-20160712-04
2.1.4. 在目标服务器安装数据库
1) 在目标服务器上安装数据库软件,安装过程省略。注意下面几点:
➢ 仅需安装数据库软件,不需要安装任何实例;
➢ 数据库版本一定要和源数据库版本一致;
➢ 安装目录可以任意(经过验证也可以恢复),但建议还是尽量保持一致。
2) 在目标服务器上安装配置TSM Client和TSM for Oracle,安装和配置过程省略。注意以下几点:
➢ 安装软件的版本和源服务器尽量保持一致;
➢ NODE名称一定设置和源服务器一致;
➢ 和源数据库连接的TSM Server保持一致;
➢ 其余配置尽量采用和源服务器一致的配置。
1.2. 恢复
1.2.1. 注意事项
➢ 恢复时需设置目标数据库的数据库名称和数据库的DBID和源数据库保持一致;
➢ 恢复时必须先在目标数据库服务器上建立完整的数据库控制文件、数据文件、归档
日志文件的目录路径,并和源数据库保持一致;
➢ 恢复时不能有和源服务器数据库同名称的数据库实例存在;
➢ 恢复时的登陆账号必须是属于sysdba组;
➢ 恢复时请保证TSM Client的节点名称和源服务器一致,连接的TSM Server和源服务器一致;
➢ 恢复完成后要做一些数据库配置工作后才能正常的远程连接,比如修改数据库的打开配置、监听配置和sys密码文件重构等。
1.2.2. 恢复脚本:
1) 批处理文件restore.bat内容:
set ORACLE_SID=sfhcsbom oradim -new -sid sfhcsbom rman target / cmdfile=\"C:\dp\\restore.rman\" log=\"C:\dp\\restore.log\" 注:
① sfhcsbom是源数据库的实例名称,即2.1.1.中第2)项的内容;
② 新建数据库实例,名称为源数据库的实例名称;
③ C:\dp\\restore.rman是RMAN恢复脚本,C:\dp\\restore.log是恢复日志。
2) RMAN运行脚本restore.rman内容:
run { set dbid 31813702 startup nomount; allocate channel t1 type 'sbt_tape' parms 'ENV=(TDPO_OPTFILE=C:\\Program Files\\Tivoli\\TSM\\AgentOBA\dpo.opt)'; restore spfile from 'c-31813702-20160712-04'; startup force nomount; restore controlfile from 'c-31813702-20160712-04'; alter database mount;
restore database; recover database; alter database open resetlogs; release channel t1; } 注:
① run { } ,RMAN脚本的固定格式;
② dbid 31813702,设置目标数据库的DBID,和源数据库一致,见2.1.1.中的第2)项;
③ 启动数据库实例,但不加载数据库;
④ 分配恢复的数据传输通道,恢复的数据将使用该通道传输,sbt_tape表明通道的目的地址是磁带库;
⑤ 通道建立的参数,TSM for Oracle的配置文件;
⑥ 恢复数据库参数文件SPFILE,其中'c-31813702-20160712-04'就是从2.1.3.的第4)得到的;
⑦ 强制重新启动数据库实例,将自动使用恢复的参数文件启动数据库实例;
⑧ 恢复控制文件,这里同样要用到'c-31813702-20160712-04';
⑨ 加载数据库;
⑩ 恢复数据库;
⑪ 打开数据库;
⑫ 释放通道。
1.2.3. 恢复操作
1) 注意:由于数据库恢复需要使用sysdba权限的账号,而此时的数据库并没有实例,所以无法使用sys来登录。这时就需要使用系统账号来进行恢复,需要把系统账号加入到Oracle的dba组中来获取数据库sysdba的权限。
2) 检查工作:检查控制文件、数据文件目录是否建立完整(参数文件不用考虑),是否和源服务器保持一致,如下所示,对比2.1.1.中的第5)和第3)项:
检查数据库版本,对比2.1.1中的第1)项:
目标数据库中不存在源数据库同名的实例:
3) 恢复工作:以管理员身份运行cmd,切换至恢复脚本所在的目录,执行恢复脚本,如下所示:
恢复完成后的日志文件:
restore.log
1.3. 设置工作
1.3.1. 数据库打开设置
此时数据库实例已经启动,但是不能查询,如下图:
打开数据库失败:
使用RESETLOGS打开数据库成功:
查询成功:
1.3.2. 数据库账号sys密码文件重构
以管理员身份运行cmd,切换至oracle_home目录下的database子目录,运行如下命令:
orapwd file=pwdsfhcsbom.ora password=oracle entries=10 force=y 注:file=pwdsfhcsbom.ora中sfhcsbom为数据库名称;
password=oracle中oracle为密码。
得到如下图所示:
1.3.3. 监听配置
使用Net Configuration Assistant设置监听:
1.3.4. 数据库网络配置
使用Oracle Net Manager配置数据库连接:
修改监听服务的主机为IP地址,保留原来的域名地址也可以,但要确保域名可以被正
确的解析:
增加数据库服务:
增加恢复的数据库名称,Oracle主目录和实例名称:
保存配置:
然后重启监听服务:
1.3.5. 系统服务配置
在目标服务器上将数据库服务设置为自动启动:
验证
源数据库的所有表的行数总和:
1.4.
目标数据库重启正常,及目标数据库的所有表的行数总和,和源数据库的一致。
目标数据库的远程连接:
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务