通过NBU将Oracle恢复到异机上 (2)1.1备份任务检查: (2)1.2数据库空间检查 (2)1.3恢复服务器(testdb)软件安装: (3)1.4NBU 配置更改: (3)1.5数据库恢复初始 (3)1.6确定数据文件路径: (4)1.7实现数据库恢复: (5)1.7.1重新创建temporary tablespace (6)1.7.2创建listener.ora和tnsnames.ora文件 (6)通过NBU将Oracle恢复到异机上本文描述的是使用VERITAS的备份软件,将备份的Oracle数据库数据,恢复到另一台服务器上。
整个恢复过程的时间,与备份数据库的数据量大小相关、与恢复前的准备工作相关,包括如下几个过程:这里设定:NBU master Server: fzjc原服务器为:YXDB_A_MEDIA恢复主机为:testdb任务设定如下:通过NBU master server fzjc,将备份的YXDB_A_MEDIA上的Oracle,恢复到到testdb上。
1.1 备份任务检查:1.首先YXDB_A_MEDIA 的Oracle在NBU上备份成功。
打开fzjc 上NBU Console,查看YXDB_A_MEDIA相关Oracle 备份的策略和定时备份任务情况,确定Oracle备份任务执行成功无误。
2.确认备份Master Server能够操作磁带库,能够备份数据到磁带上。
1.2 数据库空间检查1.为了将数据数据恢复到其他服务器上,必须确定原数据库整个数据库占用磁盘空间大小:在YXDB_A_MEDIA上以系统管理员身份登录:A = select sum(bytes)/1024/1024 "Total redo size in MB" from v$logfile;B = select sum(bytes)/1024/1024 "Total DB file size in MB" from v$datafile;C > 归档日志目录(/arch)空间大小(该空间应尽可能大)2. 确定testdb上的可用磁盘空间:(1)NBU 软件安装需要>500M(2)Oracle 软件安装需要>1000M可用空间> A + B + C + 2G1.3 恢复服务器(testdb)软件安装:1. 在testdb上创建oracle用户、dba组,该用户的uid、gid必须与YXDB_A_MEDIA上的oracle用户相同。
2.安装与YXDB_A_MEDIA上同版本的Oracle软件(9.2.05),不创建instance,确认$ORACLE_HOME。
3.安装NBU Client 端,在fzjc上建立测试策略,能够备份该客户端上的文件系统数据。
4.安装NBU Oracle Agent,以oracle 用户登陆,执行:/usr/openv/netbackup/bin/oracle_link。
1.4 NBU 配置更改:1. 在NBU master服务器fzjc上创建文件install_path/netbackup/db/altnames/No.Restrictions2. 在testdb上,在$ORACLE_HOME/bp.conf 中设置SERVER=fzjc。
3. 在testdb上,设置环境变量ORACLE_SID = STGD; export ORACLE_SIDNB_ORA_CLIENT = YXDB_A_MEDIA; export NB_ORA_CLIENT1.5 数据库恢复初始1. 拷贝YXDB_A_MEDIA上的$ORACLE_HOME/dbs/initSTGD.ora到testdb服务器上$ORACLE_HOME/dbs/initSTGD.ora2.修改$ORACLE_HOME/dbs/initSTGD.ora :(1) control_files = ("/data/oradata/STGD/control01.ctl ")(2) log_archive_dest="/arch"(3) sort_area_size=200000003. 创建相关目录:(1) 设置$ORACLE_BASE=/data/oradata(2) 创建$ORACLE_BASE/STGD/bdump、$ORACLE_BASE/STGD/cdump、$ORACLE_BASE/STGD/udump、/arch目录4.创建testdb上的数据库启动control file:(1) 以sysdb登陆YXDB_A_MEDIA上的oracle(STGD):SQL>alter database backup controlefile to ‘/tmp/control01.ctl’;(2) 拷贝该文件(control01.ctl)到testdb服务器上的$ORACLE_BASE/STGD/control01.ctl ;5. 设置oracle数据库口令文件:在testdb上以oracle用户登陆,$orapwd file=$ORACLE_HOME/dbs/orapwSTGD password=oracle1.6 确定数据文件路径:由于原服务器YXDB_A_MEDIA上,所有数据文件都使用裸设备,而在testdb 上则使用数据文件(*.dbf),因此需要确定数据文件与裸设备的对应关系;在testdb上,以oracle用户登陆,以sysdba登陆oracle:SQL>start mount;SQL>echo on;SQL>spool /tmp/dbfile.txtSQL>select file#,name from v$datafile;SQL>quit;1.7 实现数据库恢复:在testdb上,以oracle用户登陆:$rman nocatalog target / cmdfile restore.rcv msglog restore.log其中restore.rcv 参见下文,该文件中的“set newname for datafile 1 to '/data/oradata/STGD/system01.dbf';”等修改于1.6中的dbfile.txt。
附一:restore.rcv脚本:#### This file to used rman to restore databaserun {allocate channel ch00 type 'sbt_tape'parms="ENV=(NB_ORA_SERV=fzjc,NB_ORA_CLIENT=YXDB_A_MEDIA)";allocate channel ch01 type 'sbt_tape'parms="ENV=(NB_ORA_SERV=fzjc,NB_ORA_CLIENT=YXDB_A_MEDIA)";SEND 'NB_ORA_SERV=fzjc,NB_ORA_CLIENT=YXDB_A_MEDIA';set newname for datafile 1 to '/data/oradata/STGD/system01.dbf';set newname for datafile 2 to '/data/oradata/STGD/undotbs01.dbf';set newname for datafile 3 to '/data/oradata/STGD/indx01.dbf';set newname for datafile 4 to '/data/oradata/STGD/user01.dbf';set newname for datafile 5 to '/data/oradata/STGD/tools01.dbf';set newname for datafile 6 to '/data/oradata/STGD/yd_data01.dbf';set newname for datafile 7 to '/data/oradata/STGD/yd_lrob01.dbf';set newname for datafile 8 to '/data/oradata/STGD/yd_hstr01.dbf';set newname for datafile 9 to '/data/oradata/STGD/undotbs02.dbf';set newname for datafile 10 to '/data/oradata/STGD/yd_data02.dbf';set newname for datafile 11 to '/data/oradata/STGD/drsys01.dbf';set newname for datafile 12 to '/data/oradata/STGD/xdb01.dbf';set newname for datafile 13 to '/data/oradata/STGD/yd_data07.dbf';set newname for datafile 14 to '/data/oradata/STGD/yd_hstr09.dbf';set newname for datafile 15 to '/data/oradata/STGD/yd_hstr10.dbf';set newname for datafile 16 to '/data/oradata/STGD/yd_data08.dbf';set newname for datafile 17 to '/data/oradata/STGD/yd_hstr02.dbf';set newname for datafile 18 to '/data/oradata/STGD/yd_data03.dbf';set newname for datafile 19 to '/data/oradata/STGD/undotbs03.dbf';set newname for datafile 20 to '/data/oradata/STGD/yd_data04.dbf';set newname for datafile 21 to '/data/oradata/STGD/yd_hstr03.dbf';set newname for datafile 22 to '/data/oradata/STGD/yd_data05.dbf';set newname for datafile 23 to '/data/oradata/STGD/yd_hstr04.dbf';set newname for datafile 24 to '/data/oradata/STGD/yd_data06.dbf';set newname for datafile 25 to '/data/oradata/STGD/apm.dbf';set newname for datafile 26 to '/data/oradata/STGD/indx02.dbf';set newname for datafile 27 to '/data/oradata/STGD/yd_hstr05.dbf';set newname for datafile 28 to '/data/oradata/STGD/yd_hstr06.dbf';set newname for datafile 29 to '/data/oradata/STGD/yd_hstr07.dbf';set newname for datafile 30 to '/data/oradata/STGD/yd_hstr08.dbf';set until time "to_date('02/13/06 06:00:00','MM/DD/YY HH24:MI:SS')";restore database;switch datafile all;recover database;sql 'alter database open resetlogs';}1.7.1重新创建temporary tablespace由于rman备份的时候并不备temporary tablespaces,所以恢复完毕后,要重新创建它们。