Redo Log File มีอยู่ 3 สถานะคือ
1) Current คือตัวที่ระบบฐานข้อมูลกำลังเขียนอยู่
2) Active คือตัวที่ระบบฯ ยังต้องใช้ในการทำ Instance Recovery อยู่ และ
3) Inactive คือสถานะที่ไม่ได้ใช้งานใด ๆ แล้ว
กรณีที่ Redo Log File เสีย หากตัว (หรือกลุ่ม) ที่เสียมีสถานะเป็น Inactive จะจัดการง่ายกว่ากรณีที่เป็น Current หรือ Active โดยมีขั้นตอนในการกู้ Redo Log File ดังนี้
1) เช็คดูว่า Redo Log File ตัวที่เสียนั้นมีสถานะเป็น Inactive
2) ถ้าใช่ เคลียร์ข้อมูลใน Redo Log File นั้น
3) Open database
4) แบ็คอัพฐานข้อมูลทั้งหมด (Whole Database Backup)
ในบทความนี้เราเน้นที่การแก้ปัญหา Redo Log File เสียเมื่อโหมดในการเก็บล็อกของระบบฐานข้อมูลเป็นแบบ No Archive (ไม่มีการ Archive Redo Log มาเก็บไว้)
เมื่อ Redo Log File เสีย เราจะพบ Error Message คล้าย ๆ กับตัวอย่างข้างล่างนี้
------------------------------------------------------------
D:\> set oracle_sid=orcl2
D:\> sqlplus / as sysdba
SQL> startup
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1247876 bytes
Variable Size 83887484 bytes
Database Buffers 75497472 bytes
Redo Buffers 7139328 bytes
Database mounted.
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1:
'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO03.LOG'
------------------------------------------------------------
จากตัวอย่างเรารู้ว่า Redo Log File ตัวที่มีปัญหาคือ Onlinelog 3 ซึ่งมีพาธอยู่ที่ D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO03.LOG
เมื่อทราบว่าปัญหาเกิดจาก Redo Log File เราจะเริ่มแก้ปัญหาด้วยวิธีการที่กล่าวมา
1) เราจะเช็คดูว่า Database อยู่ในโหมด No Archive และสถานะของ Onlinelog 3 เป็น Inactive
------------------------------------------------------------
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 6
Current log sequence 9
SQL> select group#,thread#,status from v$log;
GROUP# THREAD# STATUS
---------- ---------- ----------------
1 1 CURRENT
3 1 INACTIVE
2 1 INACTIVE
------------------------------------------------------------
2) จากผลการตรวจสอบพบว่าระบบฐานข้อมูลอยู่ในโหมด No Archive และไฟล์ที่เสีย (3) มีสถานะเป็น Inactive เราจะเคลียร์ล็อกที่อยู่ใน Redo Log File 3
------------------------------------------------------------
SQL> alter database clear logfile group 3;
Database altered.
------------------------------------------------------------
3) จากนั้นจึงเปิดระบบฐานข้อมูล
------------------------------------------------------------
SQL> alter database open;
Database altered.
------------------------------------------------------------
4) ระบบจะกลับมาเปิดใช้งานได้อีกครั้ง ข้อควรจำก็คือจะต้องทำการ Shutdown Immediate, Startup Mount และทำการแบ็คอัพทั้งฐานข้อมูล (Whole Database Backup) เก็บไว้ทันที
บทความที่เกี่ยวเนื่องกัน
1. การกู้ข้อมูลกรณี Control File เสีย
Showing posts with label recover. Show all posts
Showing posts with label recover. Show all posts
Saturday, August 15, 2009
Sunday, May 24, 2009
การกู้ข้อมูลกรณี Control File เสีย
Updated: 5/4/2009
การกู้ข้อมูลกรณีที่เกิดเหตุต่อไปนี้:
ระบบฐานข้อมูลเป็นแบบ Noarchivelog, Control files เสียหายทั้งหมด ไม่ว่าจะมีการแก้ไขโครงสร้างทางกายภาพของระบบฐานข้อมูล (เช่นเพิ่มสมาชิกของ redo log)หลังจากการแบ็คอัพครั้งสุดท้าย (ไม่ว่าจะเป็นแบบ Whole หรือ Incremental)หรือไม่ คุณจะต้องมีแบ็คอัพเก็บไว้ โดยจะต้องมีการแบ็คอัพ Control file ไว้ด้วยทุกครั้ง
วิธีการแก้ไขโดยสังเขป
1) Open database in nomount mode เพื่อให้ Database ปล่อย Control File เราจึงจะกู้ Control ที่แบ็คอัพไว้มาทับได้
2) Recover control file คือการกู้ Control File ที่ได้แบ็คอัพไว้ล่าสุด
3) Mount the database เมื่อกู้ Control File ได้แล้วเราจะให้ Database Mount กับ Control File อีกครั้ง
4) Recover the database คือขั้นตอนการกู้คืนฐานข้อมูลกลับมาตามโครงสร้างของฐานข้อมูลที่ปรากฎใน Control File ที่กู้มา
5) Open the database with resetlogs เราต้อง Open Database โดยให้ Reset Log เนื่องจากเราได้ Recover Database (โดยใช้ Redo Log) แล้ว เราไม่มีความจำเป็นจะต้องใช้ Redo Log อีกต่อไป (และไม่ควรจะใช้ด้วย) เราจึง Reset Log ทั้งหมด
ถ้าคุณมีการเปลี่ยนแปลงโครงสร้างทางกายภาพของระบบฐานข้อมูลหลังจากการ Backup ครั้งล่าสุด คุณอาจจะสูญเสียการเปลี่ยนแปลงเหล่านั้น
1) Open database in nomount mode
C:\Documents and Settings\FB00012Chalermpon>rman
Recovery Manager: Release 10.2.0.1.0 - Production on Fri May 23 15:51:41 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
RMAN> connect target
connected to target database: orcl2 (not mounted)
2) Recover control file
RMAN> restore controlfile from autobackup;
Starting restore at 23-MAY-08
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=157 devtype=DISK
recovery area destination: D:\oracle\product\10.2.0/flash_recovery_area
database name (or database unique name) used for search: ORCL2
channel ORA_DISK_1: autobackup found in the recovery area
channel ORA_DISK_1: autobackup found: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AR
EA\ORCL2\AUTOBACKUP\2008_05_23\O1_MF_S_655486779_43F0S6O1_.BKP
channel ORA_DISK_1: control file restore from autobackup complete
output filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\CONTROL01.CTL
output filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\CONTROL02.CTL
output filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\CONTROL03.CTL
Finished restore at 23-MAY-08
3) Mount the database
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
4) Recover the database
RMAN> recover database;
Starting recover at 23-MAY-08
Starting implicit crosscheck backup at 23-MAY-08
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=156 devtype=DISK
Finished implicit crosscheck backup at 23-MAY-08
Starting implicit crosscheck copy at 23-MAY-08
using channel ORA_DISK_1
Crosschecked 4 objects
Finished implicit crosscheck copy at 23-MAY-08
searching for all files in the recovery area
cataloging files...
cataloging done
List of Cataloged Files
=======================
File Name: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL2\AUTOBACKUP\2008_05
_23\O1_MF_S_655486779_43F0S6O1_.BKP
using channel ORA_DISK_1
starting media recovery
archive log thread 1 sequence 7 is already on disk as file D:\ORACLE\PRODUCT\10.
2.0\ORADATA\ORCL2\REDO02.LOG
archive log filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO02.LOG thread=1
sequence=7
media recovery complete, elapsed time: 00:00:03
Finished recover at 23-MAY-08
5) Open the database with resetlogs
RMAN> alter database open resetlogs;
database opened
เมื่อ Open database ได้แล้ว shutdown database แบบ immediate
แล้ว Open database อีกครั้งด้วยโหมด Mountและให้ทำการ Full Backup ทันที
บทความที่เกี่ยวเนื่องกัน
1. การกู้ข้อมูลกรณี Redo Log File ที่ไม่ได้ Active อยู่เสีย
การกู้ข้อมูลกรณีที่เกิดเหตุต่อไปนี้:
ระบบฐานข้อมูลเป็นแบบ Noarchivelog, Control files เสียหายทั้งหมด ไม่ว่าจะมีการแก้ไขโครงสร้างทางกายภาพของระบบฐานข้อมูล (เช่นเพิ่มสมาชิกของ redo log)หลังจากการแบ็คอัพครั้งสุดท้าย (ไม่ว่าจะเป็นแบบ Whole หรือ Incremental)หรือไม่ คุณจะต้องมีแบ็คอัพเก็บไว้ โดยจะต้องมีการแบ็คอัพ Control file ไว้ด้วยทุกครั้ง
วิธีการแก้ไขโดยสังเขป
1) Open database in nomount mode เพื่อให้ Database ปล่อย Control File เราจึงจะกู้ Control ที่แบ็คอัพไว้มาทับได้
2) Recover control file คือการกู้ Control File ที่ได้แบ็คอัพไว้ล่าสุด
3) Mount the database เมื่อกู้ Control File ได้แล้วเราจะให้ Database Mount กับ Control File อีกครั้ง
4) Recover the database คือขั้นตอนการกู้คืนฐานข้อมูลกลับมาตามโครงสร้างของฐานข้อมูลที่ปรากฎใน Control File ที่กู้มา
5) Open the database with resetlogs เราต้อง Open Database โดยให้ Reset Log เนื่องจากเราได้ Recover Database (โดยใช้ Redo Log) แล้ว เราไม่มีความจำเป็นจะต้องใช้ Redo Log อีกต่อไป (และไม่ควรจะใช้ด้วย) เราจึง Reset Log ทั้งหมด
ถ้าคุณมีการเปลี่ยนแปลงโครงสร้างทางกายภาพของระบบฐานข้อมูลหลังจากการ Backup ครั้งล่าสุด คุณอาจจะสูญเสียการเปลี่ยนแปลงเหล่านั้น
1) Open database in nomount mode
C:\Documents and Settings\FB00012Chalermpon>rman
Recovery Manager: Release 10.2.0.1.0 - Production on Fri May 23 15:51:41 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
RMAN> connect target
connected to target database: orcl2 (not mounted)
2) Recover control file
RMAN> restore controlfile from autobackup;
Starting restore at 23-MAY-08
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=157 devtype=DISK
recovery area destination: D:\oracle\product\10.2.0/flash_recovery_area
database name (or database unique name) used for search: ORCL2
channel ORA_DISK_1: autobackup found in the recovery area
channel ORA_DISK_1: autobackup found: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AR
EA\ORCL2\AUTOBACKUP\2008_05_23\O1_MF_S_655486779_43F0S6O1_.BKP
channel ORA_DISK_1: control file restore from autobackup complete
output filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\CONTROL01.CTL
output filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\CONTROL02.CTL
output filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\CONTROL03.CTL
Finished restore at 23-MAY-08
3) Mount the database
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
4) Recover the database
RMAN> recover database;
Starting recover at 23-MAY-08
Starting implicit crosscheck backup at 23-MAY-08
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=156 devtype=DISK
Finished implicit crosscheck backup at 23-MAY-08
Starting implicit crosscheck copy at 23-MAY-08
using channel ORA_DISK_1
Crosschecked 4 objects
Finished implicit crosscheck copy at 23-MAY-08
searching for all files in the recovery area
cataloging files...
cataloging done
List of Cataloged Files
=======================
File Name: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL2\AUTOBACKUP\2008_05
_23\O1_MF_S_655486779_43F0S6O1_.BKP
using channel ORA_DISK_1
starting media recovery
archive log thread 1 sequence 7 is already on disk as file D:\ORACLE\PRODUCT\10.
2.0\ORADATA\ORCL2\REDO02.LOG
archive log filename=D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL2\REDO02.LOG thread=1
sequence=7
media recovery complete, elapsed time: 00:00:03
Finished recover at 23-MAY-08
5) Open the database with resetlogs
RMAN> alter database open resetlogs;
database opened
เมื่อ Open database ได้แล้ว shutdown database แบบ immediate
แล้ว Open database อีกครั้งด้วยโหมด Mountและให้ทำการ Full Backup ทันที
บทความที่เกี่ยวเนื่องกัน
1. การกู้ข้อมูลกรณี Redo Log File ที่ไม่ได้ Active อยู่เสีย
ป้ายกำกับ:
control file,
no archive log,
recover
Subscribe to:
Posts (Atom)
