【转载】NBU异机恢复oracle

 

通过NBU将Oracle恢复到异机上... 2

1.1       备份任务检查: 2

1.2       数据库空间检查... 2

1.3       恢复服务器(testdb)软件安装:... 3

1.4    NBU 配置更改:... 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 + 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

 

posted @ 2019-07-19 19:22  Hear7  阅读(510)  评论(0编辑  收藏  举报