文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Netbackup+oracle db 异机恢复案例

Netbackup+oracle db 异机恢复案例

时间:2010-10-15  来源:djb1008

本文主要就使用netbackup服务器上的rman的备份集,在异机进行数据库恢复进行详细的操作说明.

  1. 环境描述

1.1 源数据库信息

Hostname: sstydb

Oracle_sid:sstydb

Oracle_version:10.2.0.4.0

DBID: 3469129877

Os:Linux 2.6.18-128.el5 #1 SMP Wed Dec 17 11:41:38 EST 2008 x86_64 x86_64 x86_64 GNU/Linux

安装了netbackup client 和netbackup for oracle db,并在netbackup服务器上定义了策略(并激活)和client

数据库在netbackup服务器进行了全库和归档日志的备份

rman备份集没有使用catalog数据库进行记录(nocatalog方式)

netbackup服务器上设置允许异机恢复.


1.2 目标库信息

Hostname:ttjkdb

Oracle_sid:sstydb

Oracle_version:10.2.0.4.0

安装了oracle数据库环境,没有创建数据库实例

通过了sbttest,可以访问netbackup的带库,rman可以访问netbackup服务器的介质

2. 主要工作内容和目标

在目标服务器(ttjkdb)上,使用rman工具和netbackup服务器上源库的rman备份集,进行数据库的不完整恢复(无法获得在线运行源库的redo文件),即在目标服务器上测试源库的灾难性恢复

3. 异机恢复的主要操作步骤

3.1目标机上进行数据库实例环境的准备工作

3.1.1编辑/home/oracle/.bash_profile文件设置ORACLE_SID参数

$more /home/oracle/.bash_profile

…...

ORACLE_SID=sstydb:export ORACLE_SID

…...

3.1.2 编辑$ORACLE_HOME/dbs/init<SID>.ora文件,设置实例参数

$more $ORACLE_HOME/dbs/initsstydb.ora

*.compatible='10.2.0.3.0'

*.core_dump_dest='/oracle/admin/sstydb/cdump'

*.db_block_size=8192

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='sstydb'

*.db_recovery_file_dest='/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=2147483648

*.job_queue_processes=10

*.log_archive_dest_1='LOCATION=/oradata/archivelog/'

*.open_cursors=300

*.pga_aggregate_target=384827392

*.processes=500

*.remote_login_passwordfile='EXCLUSIVE'

*.sessions=555

*.sga_target=1154482176

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/oracle/admin/sstydb/udump'

注意:

3.1.3 准备数据库数据目录和dump文件目录

本例中,目标数据库与源数据库的数据文件的目录和文件名称完全相同

ttjkdb$mkdir /oradata/sstydb

ttjkdb$cd /oracle/admin

ttjkdb$mkdir sstydb

ttjkdb$cd sstydb

ttjkdb$mkdir adump bdump cdump udump

3.1.4 启动数据库实例到nomount状态

Ttjkdb$export ORACLE_SID=sstydb

ttjkdb$sqlplus / as sysdba

SQL>startup nomount;

ORACLE instance started.

Total System Global Area 1157627904 bytes

Fixed Size 2083432 bytes

Variable Size 301991320 bytes

Database Buffers 838860800 bytes

Redo Buffers 14692352 bytes

SQL> exit

数据库实例启动到nomount状态,为后面的控制文件的恢复做好了准备

3.2 目标库服务器上恢复控制文件,启动数据库到mount状态

3.2.1 控制文件恢复的场景与约束

本例我们属于第一种情况:No catalog,target started in NOMOUNT state,所以只有3个途径进行恢复(见上表的第2行的第3,4,5列)因为目标库与源库的数据文件的目录完全相同,controlfile也就恢复到init<sid>.ora设置的目录,所以3,4列可以合并为3列,即:RESTORE CONTROLFILE FROM AUTOBACKUP;

第2行第5列,因为不可以使用tag,所以可以缩写为:RESTORE CONTROLFILE FROM 'media_handle';

这样本例就可以使用两个方式进行controlfile恢复工作

A. RESTORE CONTROLFILE FROM AUTOBACKUP;

B. RESTORE CONTROLFILE FROM 'media_handle'

3.2.2 controlfile的恢复

先检查一下源库的controlfile的备份情况

sstydb$rman target /

Rman>list backup of controlfile;

…...

BS Key Type LV Size Device Type Elapsed Time Completion Time

------- ---- -- ---------- ----------- ------------ ---------------

1109 Full 7.00M SBT_TAPE 00:00:57 15-OCT-10

Handle: cntrl_1118_1_732458070 Media: G:sstydb_1287117303_C1_F1

Control File Included: Ckp SCN: 13520941 Ckp time: 15-OCT-10

BS Key Type LV Size Device Type Elapsed Time Completion Time

------- ---- -- ---------- ----------- ------------ ---------------

1110 Full 7.00M SBT_TAPE 00:01:09 15-OCT-10

Handle: c-3469129477-20101015-02 Media: G:sstydb_1287117380_C1_F1

Control File Included: Ckp SCN: 13520988 Ckp time: 15-OCT-10

查询源库的DBID

Sstydb$sqlplus / as sysdba

SQL>select dbid from v$database;

DBID

--------

3469129877

A.使用FROM AUTOBACKUP 方式进行controlfile恢复

Ttjkdb$rman target /

Rman>set DBID=3469129877

Rman>run{

allocate channel d1 type 'sbt_tape' parms="ENV=(NB_ORA_CLIENT=sstydb)";

send 'NB_ORA_SERV=netbackup';

restore controlfile from 'c-3469129477-20101015-02';

Release channel d1;}

released channel: ORA_DISK_1

allocated channel: d1

channel d1: sid=541 devtype=SBT_TAPE

channel d1: Veritas NetBackup for Oracle - Release 6.5 (2007072323)

sent command to channel: d1

Starting restore at 15-OCT-10

channel d1: restoring control file

channel d1: restore complete, elapsed time: 00:00:48

output filename=/oradata/sstydb/control01.ctl

output filename=/oradata/sstydb/control02.ctl

output filename=/oradata/sstydb/control03.ctl

Finished restore at 15-OCT-10

released channel: d1

Sstydb$rman target /

Rman>show all;

RMAN configuration parameters are:

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE 'TAPE' TO '%F';

…...

如果源库没有设置autobackup,可以通过的命令进行设置

Rman>CONFIGURE CONTROLFILE AUTOBACKUP ON;

B. 使用FROM 'media_handle' 方式进行controlfile恢复

Ttjkdb$rman target /

Rman>set DBID=3469129877

Rman>run{

allocate channel d1 type 'sbt_tape' parms="ENV=(NB_ORA_CLIENT=sstydb)";

send 'NB_ORA_SERV=netbackup';

restore controlfile from autobackup;

Release channel d1;}

3.2.3 启动目标数据库实例到mount状态

Ttjkdb$sqlplus / as sysdba

SQL>alter database mount;

将数据库启动到mount状态后,就可以进行数据库的restore和recovery了。

3.3 目标数据库实例恢复,以resetlogs方式打开数据库实例

3.3.1 目标数据库实例恢复

Ttjkdb$rman target /

Rman>set DBID=3469129877

Rman>run{

allocate channel d1 type 'sbt_tape' parms="ENV=(NB_ORA_CLIENT=tydb)";

send 'NB_ORA_SERV=netbackup';

Restore database;

Recover database;

Release channel d1;}

allocated channel: d1

channel d1: sid=541 devtype=SBT_TAPE

…...

channel d1: Veritas NetBackup for Oracle - Release 6.5 (2007072323)

sent command to channel: d1

channel d1: starting datafile backupset restore

channel d1: specifying datafile(s) to restore from backup set

restoring datafile 00001 to /oradata/gcwz_web/system01.dbf

restoring datafile 00002 to /oradata/gcwz_web/undotbs01.dbf

…...

channel d1: reading from backup piece bk_1094_1_732284984

channel d1: restored backup piece 1

piece handle=bk_1094_1_732284984 tag=HOT_DB_BK_LEVEL0

channel d1: restore complete, elapsed time: 00:01:26

Finished restore at 15-OCT-10

Starting recover at 15-OCT-10

starting media recovery

channel d1: starting archive log restore to default destination

……

piece handle=2clqc5eg_1_1 tag=TAG20101013T180048

channel d1: restore complete, elapsed time: 00:00:56

archive log filename=/oradata/archivelog/1_665_690800133.dbf thread=1 sequence=665

archive log filename=/oradata/archivelog/1_666_690800133.dbf thread=1 sequence=666

unable to find archive log

archive log thread=1 sequence=1

released channel: d1

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of recover command at 10/15/2010 17:45:30

RMAN-06054: media recovery requesting unknown log: thread 1 seq 1 lowscn 13414913

这里有rman的报错,这个错误因为rman在向下应用日志的时候,找不到下一个日志序列=到达尾部(永远会存在),我们可以忽略这个错误。

3.3.2 以resetlogs方式打开数据库实例

Ttjkdb$sqlplus / as sysdba

SQL> alter database open resetlogs;

Database altered.

SQL> select open_mode,name from v$database;

OPEN_MODE NAME

---------- ---------

READ WRITE SSTYDB

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载