/ 中存储网

通过NBU进行Oracle异机恢复的实验操作步骤

2015-12-16 09:03:12 来源:中存储网

本文描述的是使用VERITAS的NBU备份软件,将备份的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 + 2G

1.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.Restrictions

2. 在testdb上,在 $ORACLE_HOME/bp.conf 中设置 SERVER=fzjc。

3. 在testdb上,设置环境变量

ORACLE_SID = STGD; export ORACLE_SID

NB_ORA_CLIENT = YXDB_A_MEDIA; export NB_ORA_CLIENT

1.5 数据库恢复初始

1. 拷贝YXDB_A_MEDIA上的$ORACLE_HOME/dbs/initSTGD.ora到testdb服务器上$ORACLE_HOME/dbs/initSTGD.ora

2.修改$ORACLE_HOME/dbs/initSTGD.ora :

(1) control_files = ("/data/oradata/STGD/control01.ctl ")

(2) log_archive_dest="/arch"

(3) sort_area_size=20000000

3. 创建相关目录:

(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=oracle

1.6 确定数据文件路径:

由于原服务器YXDB_A_MEDIA上,所有数据文件都使用裸设备,而在testdb上则使用数据文件(*.dbf),因此需要确定数据文件与裸设备的对应关系;

在testdb上,以oracle用户登陆,以sysdba登陆oracle:

SQL>start mount;

SQL>echo on;

SQL>spool /tmp/dbfile.txt

SQL>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 database

run {

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,所以恢复完毕后,要重新创建它们。如:

$sqlplus /nolog

sql>conn /as sysdba

sql>alter tablespace temp

add tempfile ‘/data/oradata/STGD/temp01.dbf’ size 128m;

1.7.2 创建listener.ora和tnsnames.ora文件

为了能让此数据库接受远程访问,则需配置listener。

可以copy一个其他数据库服务器上的

$ORACLE_HOME/network/admin/listener.ora和tnsnames.ora文件到

orarcv的$ORACLE_HOME/network/admin/下,并编辑它们,把里面内容更改一下,如LISTENER改为LISTENER1,port=1521改为1526等等。

然后启动listner:

$lsnrctl start listener1