LoveUnix » ORACLE等数据库 » oracle10g恢复表空间数据文件的测试
让LU留住您的每

一天 让LU博客留住您的每一天
2005-12-12 19:20 maping
oracle10g恢复表空间数据文件的测试

LEGATO Networker下oracle的恢复测试<1>

很难得找这样的机会与环境测试数据库oracle的恢复。
LEGATO Networker 7.2 for AIX
LEGATO Networker Module for Oracle 4.2
ORACLE 10g for AIX
具体过程与朋友们共享一下。
数据文件恢复
    数据文件的恢复分为离线和在线两种,数据库在线时,如果某表空间的数据文件发生损坏,可以进行在线的表空间恢复,该任务不会影响数据库其他表空间的正常运行。
当系统表空间的数据文件损坏,导致数据库不能正常运行,因此需离线恢复系统表空间的数据文件。
前提是有最近的完整的全库备份与archive log的备份。
测试步骤如下:
1.某应用表空间数据文件恢复
        破坏某应用表空间数据文件
$ dd  if=/dev/rCONTROLFILE1 of=/dev/rtd_jf1.jf bs=20k
        对数据文件的操作
SQL> alter system check datafiles;
SQL> select file#,status,error from v$datafile_header
如果发现错误,则该数据库文件已经被损坏。
        恢复该表空间下的数据文件
SQL> alter database datafile ‘/dev/rtd_jf1.jf offline;
恢复脚步/oracle/rmanscript/re_tab文件内容如下:
connect target sys/oracle@testdb;
connect rcvcat rman/rman@rman;
run {
ALLOCATE channel t1 type 'SBT_TAPE'
parms 'ENV=(NSR_SERVER= backupserver,NSR_DATA_VOLUME_POOL=oratest)';
ALLOCATE channel t2 type 'SBT_TAPE'
parms 'ENV=(NSR_SERVER=backupserver,NSR_DATA_VOLUME_POOL=oratest)';
ALLOCATE channel t3 type 'SBT_TAPE'
restore datafile ‘/dev/rtd_if1.jf;
recover datafile ‘/dev/rtd_jf1.jf’;
release channel t1;
release channel t2;
}
SQL>select file#,status,error from v$datafile_header
在使用上命令查看恢复情况,如果所有的数据文件状态都为“online”,即表明本恢复成功。
示例:
RMAN> @re_tab

RMAN> connect target *
connected to target database: TESTDB (DBID=2359337191)

RMAN> connect rcvcat *
connected to recovery catalog database

RMAN> run{
2> ALLOCATE channel t1 type 'SBT_TAPE'
3> Parms 'ENV=(NSR_SERVER=backupserver,
4> NSR_CLIENT=host_test,NSR_DATA_VOLUME_POOL=oracletest)';
5> ALLOCATE channel t2 type 'SBT_TAPE'
6> Parms 'ENV=(NSR_SERVER=backupserver,
7> NSR_CLIENT=host_test,NSR_DATA_VOLUME_POOL=oracletest)';
8> ALLOCATE channel t3 type 'SBT_TAPE'
9> Parms 'ENV=(NSR_SERVER=backupserver,
10> NSR_CLIENT=host_test,NSR_DATA_VOLUME_POOL=oracletest)';
11> ALLOCATE channel t4 type 'SBT_TAPE'
12> Parms 'ENV=(NSR_SERVER=backupserver,
13> NSR_CLIENT=host_test,NSR_DATA_VOLUME_POOL=oracletest)';
14> restore datafile '/dev/rtd_jf1.jf';
15> recover datafile '/dev/rtd_jf1.jf';
16> release channel t1;
17> release channel t2;
18> release channel t3;
19> release channel t4;
20> }
allocated channel: t1
channel t1: sid=131 devtype=SBT_TAPE
channel t1: NMO v4.2.0.0

allocated channel: t2
channel t2: sid=129 devtype=SBT_TAPE
channel t2: NMO v4.2.0.0

allocated channel: t3
channel t3: sid=128 devtype=SBT_TAPE
channel t3: NMO v4.2.0.0

allocated channel: t4
channel t4: sid=130 devtype=SBT_TAPE
channel t4: NMO v4.2.0.0

Starting restore at 05-DEC-05

channel t1: starting datafile backupset restore
channel t1: specifying datafile(s) to restore from backup set
restoring datafile 00005 to /dev/rtd_jf1.jf
channel t1: reading from backup piece JF1FULL_TESTDB_2fh5i1ds
channel t1: restored backup piece 1
piece handle=JF1FULL_TESTDB_2fh5i1ds tag=TAG20051205T160515
channel t1: restore complete, elapsed time: 00:06:26
Finished restore at 05-DEC-05

Starting recover at 05-DEC-05

starting media recovery
media recovery complete, elapsed time: 00:00:02

Finished recover at 05-DEC-05

released channel: t1

released channel: t2

released channel: t3

released channel: t4

RMAN> **end-of-file**

RMAN> exit
[host_test][/oracle/rmanscripts]$sqlplus '/as sysdba'

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Dec 5 16:36:20 2005

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> alter database datafile '/dev/rtd_jf1.jf' online;

Database altered.

SQL> select file#,status,error from v$datafile_header;

     FILE# STATUS
---------- -------
ERROR
-----------------------------------------------------------------
         1 ONLINE


         2 ONLINE


         3 ONLINE



     FILE# STATUS
---------- -------
ERROR
-----------------------------------------------------------------
         4 ONLINE


         5 ONLINE


         6 ONLINE



     FILE# STATUS
---------- -------
ERROR
-----------------------------------------------------------------
         7 ONLINE


         8 ONLINE


         9 ONLINE



9 rows selected.


2.系统表空间数据文件恢复
离线恢复系统表空间的数据文件步骤如下:
        破坏系统表空间数据文件
$ dd  if=/dev/rCONTROLFILE1 of=/dev/rSYSTEM bs=20k
        对该数据文件进行操作
SQL> alter system check datafiles;
SQL> select file#,status,error from v$datafile_header
如果发现错误,则该数据库文件已经被损坏。
        恢复该表空间
         $ sqlplus “/as sysdba”
一般恢复一个用户数据文件,不需要重新启动数据库,以下命令是恢复系统表空间的情况所需要的关键步骤:
SQL> shutdown abort
SQL> startup mount
恢复脚步/nsr/script/re_tab01文件内容如下:
connect target sys/oracle@testdb;
connect rcvcat rman/rman@rman;
run {
ALLOCATE channel t1 type 'SBT_TAPE'
parms 'ENV=(NSR_SERVER= backupserver,NSR_DATA_VOLUME_POOL=oratest)';
ALLOCATE channel t2 type 'SBT_TAPE'
parms 'ENV=(NSR_SERVER=backupserver,NSR_DATA_VOLUME_POOL=oratest)';
ALLOCATE channel t3 type 'SBT_TAPE'
restore datafile ‘/dev/rSYSTEM’;
release channel t1;
release channel t2;
}
物理恢复完毕后,执行如下命令:
$ sqlplus “/as sysdba”
SQL> recover datafile ‘/dev/rSYSTEM’;
SQL> media recovery completed.
SQL> alter database open;
至此,数据库已经可以正常工作。
示例:
RMAN> @re_tab01

RMAN> connect target *
connected to target database: TESTDB (DBID=2359337191, not open)

RMAN> connect rcvcat *
connected to recovery catalog database

RMAN> run{
2> ALLOCATE channel t1 type 'SBT_TAPE'
3> Parms 'ENV=(NSR_SERVER=backupserver,
4> NSR_CLIENT=host_test,NSR_DATA_VOLUME_POOL=oracletest)';
5> ALLOCATE channel t2 type 'SBT_TAPE'
6> Parms 'ENV=(NSR_SERVER=backupserver,
7> NSR_CLIENT=host_test,NSR_DATA_VOLUME_POOL=oracletest)';
8> ALLOCATE channel t3 type 'SBT_TAPE'
9> Parms 'ENV=(NSR_SERVER=backupserver,
10> NSR_CLIENT=host_test,NSR_DATA_VOLUME_POOL=oracletest)';
11> ALLOCATE channel t4 type 'SBT_TAPE'
12> Parms 'ENV=(NSR_SERVER=backupserver,
13> NSR_CLIENT=host_test,NSR_DATA_VOLUME_POOL=oracletest)';
14> restore datafile '/dev/rsystem02.ora';
15> recover datafile '/dev/rsystem02.ora';
16> release channel t1;
17> release channel t2;
18> release channel t3;
19> release channel t4;
20> }
allocated channel: t1
channel t1: sid=150 devtype=SBT_TAPE
channel t1: NMO v4.2.0.0

allocated channel: t2
channel t2: sid=149 devtype=SBT_TAPE
channel t2: NMO v4.2.0.0

allocated channel: t3
channel t3: sid=148 devtype=SBT_TAPE
channel t3: NMO v4.2.0.0

allocated channel: t4
channel t4: sid=147 devtype=SBT_TAPE
channel t4: NMO v4.2.0.0

Starting restore at 05-DEC-05

channel t1: starting datafile backupset restore
channel t1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /dev/rsystem02.ora
channel t1: reading from backup piece JF1FULL_TESTDB_2gh5i1dt
channel t1: restored backup piece 1
piece handle=JF1FULL_TESTDB_2gh5i1dt tag=TAG20051205T160515
channel t1: restore complete, elapsed time: 00:01:56
Finished restore at 05-DEC-05

Starting recover at 05-DEC-05

starting media recovery
media recovery complete, elapsed time: 00:00:02

Finished recover at 05-DEC-05

released channel: t1

released channel: t2

released channel: t3

released channel: t4

RMAN> **end-of-file**

RMAN> exit
[host_test][/oracle/rmanscripts]$sqlplus '/as sysdba'

SQL*Plus: Release 10.2.0.1.0 - Production on Mon Dec 5 16:56:22 2005

Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options

SQL> alter database open
  2  ;

Database altered.

SQL> alter system check datafiles;

System altered.

SQL> select file#,status,error from v$datafile_header;

     FILE# STATUS
---------- -------
ERROR
-----------------------------------------------------------------
         1 ONLINE


         2 ONLINE


         3 ONLINE



     FILE# STATUS
---------- -------
ERROR
-----------------------------------------------------------------
         4 ONLINE


         5 ONLINE


         6 ONLINE



     FILE# STATUS
---------- -------
ERROR
-----------------------------------------------------------------
         7 ONLINE


         8 ONLINE


         9 ONLINE



9 rows selected.
是初学,请大家多多批评。

2005-12-13 09:05 charly
不错,UP一下,
如果能把基本信息,入平台,环境准备等都写的清楚一些就更加好了。

还有,你用的是不是免费的Legato,看你大部分工作都用Rman做了么?

2005-12-13 10:28 xc_hgm
[size=2][align=center][b][b]哥们,写的好!!!
兄弟我顶,顶,顶.....[/b][/b][/align][/size]

2005-12-13 22:13 maping
1.检查源数据库的状态,并记录数据库的备份信息。确保源数据库运行状态正常。检查备份系统的运行状态,确保备份系统运行正常。

2.要在源数据库的Client中的 “remote access”中加入“目标数据库的Client的name”

3.如果是异地恢复,需要对Oracle数据库,如果裸设备文件名发生变化,则需要做一链接,即保持裸设备与原来名称一致。具体在后面的文档中会介绍legato networker 数据库oracle的异地恢复。

2005-12-14 22:17 charly
建议把legato的准备工作也写一下。

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.