go to http://oracle.in.th

Thursday, June 17, 2010

การ recovery PFILE และ SPFILE

บทความนี้ ผมขอเอาใจ DBA ทุกท่านโดยเฉพาะเลย สมมุติว่าถ้า DBA เผลอทำ parameter file หาย และ shutdown instance ไปแล้วด้วย, แถมยังไม่เคยมีการ backup ไว้ก่อนเลย, DBA สามารถแก้ไขอย่างไรได้บ้าง ? โดยปกติแล้ว ถ้าเกิดเราทำ file ใด ๆ ในเครื่องคอมหาย การจะกู้คืนกลับมาเราจะใช้การ recovery, ฉะนั้น เรามาดู วิธีการ recovery PFILE และ SPFILE ที่ไม่ได้มีการ backup ไว้กันเลยดีกว่า

ผมได้ทดสอบทำดู เลยจะขอแจงแจงรายละเอียดเป็นขั้นตอนต่อไปนี้ครับ

1. ทำการ shutdown instance และลบไฟล์ทั้ง 2 file นะครับ คือ PFILE และ SPFILE โดย
PFILE จะอยู่ที่ Path /oracle/admin/orcl/pfile
SPFILE จะอยู่ที่ Path /oracle/db11201/dbs

2. ไปเปิด alert log เพื่อดู parameter โดย alert log จะอยู่ที่ Path
/oracle/diag/rdbms/orcl/orcl/trace
โดยมีชื่อไฟล์ว่า alert_orcl.log

3. ทำการ copy ในส่วนนี้ของไฟล์ alert log มานะครับ
processes                = 150
  memory_target            = 812M
  control_files            = "/oracle/oradata/orcl/control01.ctl"
  control_files            = "/oracle/flash_recovery_area/orcl/control02.ctl"
  db_block_size            = 8192
  compatible               = "11.2.0.0.0"
  db_recovery_file_dest    = "/oracle/flash_recovery_area"
  db_recovery_file_dest_size= 3852M
  undo_tablespace          = "UNDOTBS1"
  remote_login_passwordfile= "EXCLUSIVE"
  db_domain                = "co.th"
  dispatchers              = "(PROTOCOL=TCP) (SERVICE=orclXDB)"
  audit_file_dest          = "/oracle/admin/orcl/adump"
  audit_trail              = "DB"
  db_name                  = "orcl"
  open_cursors             = 300
  diagnostic_dest          = "/oracle"
4. ทำการสร้าง PFILE ชื่อ initorcl.ora ไว้ที่ Path /oracle/db11201/dbs โดยนำ content ของ alert log ที่ copy มาใส่ลงไปในไฟล์

5. เข้า sqlplus ด้วย user sys และทำการ start instance
$ sqlplus /nolog
sql> conn / as sysdba
sql> startup

6. ทำการสร้าง SPFILE จาก PFILE ไปไว้ที่ Path /oracle/db11201/dbs ด้วยคำสั่งต่อไปนี้
sql> create spfile='spfileorcl.ora'
       from pfile='/oracle/db11201/dbs/initorcl.ora';
7. เราจะได้ spfile ที่ชื่อ spfileorcl.ora มานะครับ

8. ทดสอบ startup instance อีกครั้ง พบว่าสามารถ start ได้ครับ
SQL> startup
ORACLE instance started.

Total System Global Area  849530880 bytes
Fixed Size                  1339824 bytes
Variable Size             499125840 bytes
Database Buffers          343932928 bytes
Redo Buffers                5132288 bytes
Database mounted.
Database opened.
SQL> 

เท่านี้เราก็สามารถนำ PFILE และ SPFILE กลับมาได้เหมือนเดิมแล้วครับ :)

Credit by Ice
ข้อเขียนนี้ช่วยฉัน:  

No comments:

Post a Comment