为完全数据库恢复做准备
虽然RMAN简化了大多数的数据库还原和恢复任务,那你也必须基于丢失的数据文件和恢复目标规划数据库还原和恢复的策略。
识别还原和恢复的数据库文件
这个技术用于根据丢失的文件类型确定哪个文件需要还原和恢复。
识别丢失的控制文件
数据库的控制文件丢失通常是显而易见的。当多路化的任何控制文件不可访问时,数据库都会立即关闭。
如果在CONTROL_FILES初始化参数指定的每个位置上没有有效的控制文件,则在你试图启动数据库时,数据库会报错。
如果你从备份还原了控制文件,然后必须执行整个数据库的介质恢复并使用OPEN RESETLOGS选项打开它,
即使没有数据文件必须被还原。
识别需要介质恢复的数据文件。
何时和如何恢复依赖于数据库的状态和它的数据文件的位置。
(1)使用RMAN识别数据文件
确定哪个数据文件丢失了的最简单的技术就是执行VALIDATE DATABASE命令,它会尝试读取所有指定的数据文件。
RMAN> VALIDATE DATABASE;
Starting validate at 20-OCT-06 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=90 device type=DISK could not read file header for datafile 7 error reason 4 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of backup command at 10/20/2007 13:05:43 RMAN-06056: could not access datafile 7 --结果表明数据文件7不可访问,然后执行下面的命令获取表空间的名称和数据文件7的名称 RMAN> REPORT SCHEMA;
Report of database schema for database with db_unique_name RDBMS
List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ------- ------------------------ 1 450 SYSTEM *** +DATAFILE/tbs_01.f 2 86 SYSAUX *** +DATAFILE/tbs_ax1.f 3 15 UD1 *** +DATAFILE/tbs_undo1.f 4 2 SYSTEM *** +DATAFILE/tbs_02.f 5 2 TBS_1 *** +DATAFILE/tbs_11.f 6 2 TBS_1 *** +DATAFILE/tbs_12.f 7 2 TBS_2 *** +DATAFILE/tbs_21.f
List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- -------------------- 1 40 TEMP 32767 +DATAFILE/tbs_tmp1.f |
(2)使用SQL识别数据文件
虽然VALIDATE DATABASE是确定数据文件是否不可访问的很好的技术,但也可以使用SQL查询来获得更详细的信息。
练习:确定数据文件是否需要恢复
--练习:确定数据文件是否需要介质恢复 --1. 启动SQL*Plus并使用管理员权限连接到目标数据库 --2. 执行查询,确定数据库的状态.如果返回OPEN,则数据库是打开的,否则有些数据文件需要介质恢复。 SELECT STATUS FROM V$INSTANCE; --3. 查询v$DATAFILE_HEADER确定数据文件的状态,该查询返回的每一行会表明数据是需要介质恢复,或者是有需要还原的错误. -- RECOVER列会表明文件是否需要介质恢复; ERROR列表明在读取和验证数据文件头时是否有错误
-- a.如果ERROR列不为NULL,则数据库文件头部不能被读取和验证.检查引起这个错误的临时的硬件或操作系统的问题。 -- 如果没有这样的问题,则必须还原这个文件或切换到其它的拷贝。 -- b.如果ERROR列为NULL并且RECOVER列为yes,则该文件需要介质恢复(也可以需要从备份还原)
-- 注意:因为V$DATAFILE_HEADER只读取每个数据文件的头部,并不检测数据文件需要被还原的所有问题。 -- 例这个视图并不能断定数据文件是否包含损坏的数据块。 SELECT FILE#, STATUS, ERROR, RECOVER, TABLESPACE_NAME, NAME FROM V$DATAFILE_HEADER WHERE RECOVER = 'YES' OR (RECOVER IS NULL AND ERROR IS NOT NULL);
--4. (可选)查询V$RECOVER_FILE通过数据文件的编号来列出需要恢复的数据文件,带有状态和错误信息。 --注意:对于从备份还原的控制文件,或是在影响数据文件介质失败之后重新创建的控制文件,不能使用V$RECOVER_FILE. -- 被还原的或重新创建的控制文件不包括更新V$RECOVER_FILE实际需要的信息。 SELECT FILE#, ERROR, ONLINE_STATUS, CHANGE#, TIME FROM V$RECOVER_FILE;
-- 为了获取数据文件和表空间的名称,也可以通过文件号对V$DATAFILE和V$TABLESPACE视图进行连接操作。 -- ERROR列会标识出每个需要恢复的文件的问题。 SELECT r.FILE# AS df#, d.NAME AS df_name, t.NAME AS tbsp_name, d.STATUS, r.ERROR, r.CHANGE#, r.TIME FROM V$RECOVER_FILE r, V$DATAFILE d, V$TABLESPACE t WHERE t.TS# = d.TS# AND d.FILE# = r.FILE#; |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1090340/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17013648/viewspace-1090340/