میخواهیم مثال سادهای از چگونگی به کارگیری ویژگی بازیابی بلاکهای خراب با RMAN را ارائه دهیم. اگر دیتابیسی تمام وقت 24/7 دارید و نمیتوانید آن را خاموش کنید میتوان از بازیابی بلاک برای رفع خرابی بلاکهای دیسک استفاده کنید. این ویژگی همچنین راهی سریع برای چک کردن بودن یا نبودن بلاکهای خراب در دیتابیس را فراهم میکنه. یادتون باشه بکآپهای گرفته شده با RMAN صحت کارکردن دیتابیس را تایید نمیکنن.
خب پس rman را در حالت nocatalog یا catalog-mode اجرا کنید و به دیتابیس از طریق rman وصل شوید.
اگه لازمه از یه بکآپ قدیمی که کنترل فایل اون در repository اطلاعات RMAN شناخته سده نیست بازیابی رو انجام بدید، ممکنه لازم باشه از از catalog-mode استفاده کنید.
در سیستمعامل دستور زیر را اجرا کنید:
$ rman target / nocatalog
or
$ rman target sys/<sys_password> nocatalog
دستور تایید اعتبار که شامل “check logical” است را اجرا کنید.
مثال زیر نشان میدهد که چگونه همه دیتافایلها تایید میشوند:
Complete database check
RMAN>run {
allocate channel d1 type disk;
backup check logical validate database;
release channel d1;
}
Specific Datafile check
RMAN>run {
allocate channel d1 type disk;
backup check logical validate datafile 1;
release channel d1;
}
SQL> select * from V$DATABASE_BLOCK_CORRUPTION;
خب در اوراکل 9i و بالاتر شما میتونید از این view برای مشخص کردن نوع خرابی پیدا شده توسط rman استفاده کنید:
V$DATABASE_BLOCK_CORRUPTION
یادتون باشه همانند اوراکل نسخه 8i خرابیهای پیدا شده به رابط کاربری RMAN گزارش نمیشوند.
همچنین به یاد داشته باشید که با هر بار اجرا شدن تاییده بکآپ در RMAN، خرابی گزارش شده در V$DATABASE_BLOCK_CORRUPTION پاک میشود. اگه خرابی جدیدی پیدا بشه این VIEW با جزییات خرابی جدید آپدیت میشه. تا زمانی که تاییدیه بکآپ RMAN دیگری یا بکآپگیری جدیدی با RMAN اجرا نشده در این مدت خرابی یک بلاک تا آن لحظه تشخیص داده نمیشود پس سطرهای این VIEW پاک نمیشوند.
در مقاله دیگری به بررسی همه آبجکتهای متاثر در خرابی که توسط RMAN گزارش شدهاند و در V$DATABASE_BLOCK_CORRUPTION موجود هستند میپردازیم
از ترمینال سیستمعامل دستورات زیر رو اجرا کنید:
$ rman target / nocatalog
or
$ rman target sys/<sys_password> nocatalog
RMAN>run {
allocate channel d1 type disk;
blockrecover corruption list;
release channel d1;
}
همچنین شما میتونید از Data Recovery Advisor (DRA) استفاده کنید:
RMAN> validate check logical database;
Starting validate at 20SEP13
using channel ORA_DISK_1
channel ORA_DISK_1: starting validation of datafile
channel ORA_DISK_1: specifying datafile(s) for validation
input datafile file number=00002 name=/u01/V112_oradata/sysaux01.dbf
input datafile file number=00001 name=/u01/V112_oradata/system01.dbf
input datafile file number=00003 name=/u01/V112_oradata/undotbs01.dbf
input datafile file number=00004 name=/u01/V112_oradata/users01.dbf
channel ORA_DISK_1: validation complete, elapsed time: 00:01:35
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
1 OK 0 74562 98560 2634075
File Name: /u01/V112_oradata/system01.dbf
Block Type Blocks Failing Blocks Processed
........
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
4 FAILED 0 1 22882 2633107
File Name: /u01/V112_oradata/users01.dbf
Block Type Blocks Failing Blocks Processed
Data 0 685
Index 0 0
Other 1 22194
validate found one or more corrupt blocks
RMAN> list failure;
List of Database Failures
=========================
FailureID Priority Status Time Detected Summary
441 HIGH OPEN 20SEP13 Datafile 4: '/u01/V112_oradata/users01.dbf' contains
one or more corrupt blocks
RMAN> advise failure;
List of Database Failures
=========================
FailureID Priority Status Time Detected Summary
441 HIGH OPEN 20SEP13 Datafile 4: '/u01/V112_oradata/users01.dbf' contains
one or more corrupt blocks
analyzing automatic repair options; this may take some time
using channel ORA_DISK_1
analyzing automatic repair options complete
Mandatory Manual Actions
========================
no manual actions available
Optional Manual Actions
=======================
no manual actions available
Automated Repair Options
========================
Option Repair Description
1 Perform block media recovery of block 520 in file 4
Strategy: The repair includes complete media recovery with no data loss
Repair script: /u02/app/oracle/diag/rdbms/v112/V112/hm/reco_4024241654.hm
RMAN> repair failure preview;
Strategy: The repair includes complete media recovery with no data loss
Repair script: /u02/app/oracle/diag/rdbms/v112/V112/hm/reco_4024241654.hm
contents of repair script:
# block media recovery
recover datafile 4 block 520;
RMAN> repair failure noprompt;
Strategy: The repair includes complete media recovery with no data loss
Repair script: /u02/app/oracle/diag/rdbms/v112/V112/hm/reco_4024241654.hm
contents of repair script:
# block media recovery
recover datafile 4 block 520;
executing repair script
Starting recover at 20SEP13
using channel ORA_DISK_1
channel ORA_DISK_1: restoring block(s)
channel ORA_DISK_1: specifying block(s) to restore from backup set
restoring blocks of datafile 00004
channel ORA_DISK_1: reading from backup piece
/u01/temp/flash_areas/V112/V112/backupset/2013_09_20/o1_mf_nnndf_TAG20130920T092224_93rm0khr_.bkp
channel ORA_DISK_1: piece
handle=/u01/temp/flash_areas/V112/V112/backupset/2013_09_20/o1_mf_nnndf_TAG20130920T092224_93rm0khr_.bkp
tag=TAG20130920T092224
channel ORA_DISK_1: restored block(s) from backup piece 1
channel ORA_DISK_1: block restore complete, elapsed time: 00:00:01
starting media recovery
archived log for thread 1 with sequence 187 is already on disk as file
/u01/temp/flash_areas/V112/V112/archivelog/2013_09_20/o1_mf_1_187_93rmnqwg_.arc
archived log for thread 1 with sequence 188 is already on disk as file
/u01/temp/flash_areas/V112/V112/archivelog/2013_09_20/o1_mf_1_188_93rmq47g_.arc
archived log for thread 1 with sequence 189 is already on disk as file
/u01/temp/flash_areas/V112/V112/archivelog/2013_09_20/o1_mf_1_189_93rn7994_.arc
archived log for thread 1 with sequence 190 is already on disk as file
/u01/temp/flash_areas/V112/V112/archivelog/2013_09_20/o1_mf_1_190_93rnymmf_.arc
media recovery complete, elapsed time: 00:00:03
Finished recover at 20SEP13
repair failure complete