Xử lý sự cố

ORA-38760: This database instance failed to .. – Phần 2

This Database Instance Failed To Turn On Flashback Database

Ở bài trước, tôi đã nêu ra một tình huống gặp lỗi ORA-38760: This Database Instance Failed To Turn On Flashback Database. Mời bạn xem lại bài viết này tại link

Trong bài viết này, tôi tiếp tục xử lý một tình huống khác cũng bắt gặp lỗi như trên

1. Tình huống gây lỗi ORA-38760

Trong trường hợp bạn sử dụng ‘Guarantee Restore Point’ , tiến trình RVWR vẫn sẽ cố gắng để ghi vào flashback logs, kể cả khi bạn đang disable chế độ flashback ở mức database. Và chắc chắn rồi, nó sẽ không tìm thấy flashback log đâu và bắn ra lỗi

ORA-38760: This Database Instance Failed To Turn On Flashback Database

Đoạn log bắn ra tại alert log khi bạn cố gắng open database

Completed: alter database flashback off ; 
.....

Thu May 16 05:19:05 2013
Shutting down instance: further logons disabled
Thu May 16 05:19:05 2013
Stopping background process CJQ0
......

Shutting down instance (immediate)
........
Thu May 16 05:24:49 2013
Starting ORACLE instance (normal)
.......
Thu May 16 05:25:04 2013
Allocated 15937344 bytes in shared pool for flashback generation buffer
Starting background process RVWR
RVWR started with pid=33, OS id=19851
Thu May 16 05:25:05 2013
Errors in file /oracle_maint/admin/OASLIVE2/udump/oaslive2_ora_19796.trc:
ORA-38701: Flashback database log 25184 seq 14006 thread 1: "+FRA/oaslive/flashback/log_25184.25633.809806337"
ORA-17503: ksfdopn:2 Failed to open file +FRA/oaslive/flashback/log_25184.25633.809806337
ORA-15012: ASM file '+FRA/oaslive/flashback/log_25184.25633.809806337' does not exist <<<< Still looking for deleted flashback log
Thu May 16 05:25:05 2013
Database mounted in Shared Mode (CLUSTER_DATABASE=TRUE)
Completed: ALTER DATABASE MOUNT
Thu May 16 05:25:05 2013
ALTER DATABASE OPEN
ORA-38760 signalled during: ALTER DATABASE OPEN...

2. Phương án xử lý lỗi ORA-38760

Với trường hợp này chúng ta phải kiểm tra xem Flashback có được bật hay không, nếu flashback đã tắt thì sẽ có kết quả ‘RESTORE POINT ONLY’, còn không dùng RESTORE POINT ONLY sẽ có kết quả là ‘NO’

SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
RESTORE POINT ONLY

FLASHBACK_ON sẽ có thể có các option sau

  • YES : hiện tại đang bật cơ chế flashback
  • NO : hiện tại đang tắt cơ chết flashback
  • RESTORE POINT ONLY : Flashback vẫn đang được bật nhưng chỉ được dùng để duy trì guaranteed restore points

-> Vì vậy nguyên nhân của vấn đề này là có một ‘Guaranteed Restore Point’ đang được duy trì trên Database, database vẫn duy trì cơ chế flashback để phục vụ riêng cho ‘Guaranteed Restore Point’ này

‘Guaranteed Restore Point’ vẫn đang được khai báo trong controlfile. Chúng ta sẽ phải tìm ra ‘Guaranteed Restore Point’ hiện tại trên database và xóa đi để có thể bật được database

Dưới đây là 3 cách để phát hiện có ‘Guaranteed Restore Point’ trên hệ thống

a. Check tên trong v$restore_point

SQL> select * from v$restore_point;
select * from v$restore_point
*
ERROR at line 1:
ORA-38701: Flashback database log 2 seq 2 thread 1: "+FRA/oaslive/flashback/log_2.2286.801367563"
ORA-17503: ksfdopn:2 Failed to open file +FRA/oaslive/flashback/log_2.2286.801367563
ORA-15012: ASM file '+FRA/oaslive/flashback/log_2.2286.801367563' does not exist

–> Case trên chúng ta không thấy được tên của ‘Guaranteed Restore Point’ trong hệ thống nên sẽ làm 2 cách còn lại. Cách này các bạn hoàn toàn có thể làm được song song với 2 phương án dưới

b. Kiểm tra tên Guaranteed Restore Point trong alert log

Tên của ‘Guaranteed Restore Point’ tồn tại trong hệ thống có thể được lưu trữ trong alert logs, tuy nhiên với cách này, chúng ta cần alert logs tại thời điểm khởi tạo ‘Guaranteed Restore Point’ vẫn còn nguyên.

c. Dump control file để có thể tìm được tên ‘Guaranteed Restore Point’

SQL> oradebug setmypid
SQL> alter session set events 'immediate trace name controlf level 9';
SQL> oradebug tracefile_name

Từ tracefile của controlfile dump chúng ta sẽ có kết quả

***************************************************************************
RESTORE POINT RECORDS
***************************************************************************
(size = 212, compat size = 212, section max = 2048, section in-use = 1,
last-recid= 1, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 240, numrecs = 2048)
RESTORE POINT #1:
restore point name: STANDBY_FLASHBACK_TESTING guarantee flag: 1  --> Đây là tên của restore point

incarnation: 2next record 0  
restore point scn: 0x0000.fbff3d87 12/07/2012 02:16:32

Bây giờ chúng ta đã có tên của Guaranteed Restore Point:

SQL> Drop restore point STANDBY_FLASHBACK_TESTING;

SQL> alter database open;

Database Altered

Chú ý : Lỗi này cũng có thể xảy ra khi đầy phân vùng FRA và các flashback logs không thể tạo mới được. Kiểm tra $flash_recovery_area_usage và/hoặc V$recovery_file_dest để
có thể theo dõi được tình hình dung lượng còn trống phân vùng FRA

Để dễ hiểu hơn, mời bạn đọc lại phần 1 của bài viết tại link.

Xong rồi đó, chúc các bạn thành công. 😀 :-D

Tặng bạn Voucher giảm giá 60% dịch vụ kiểm tra sức khỏe cơ sở dữ liệu toàn diện, dịch vụ Database Health Check giúp CSDL của bạn luôn khỏe mạnh!
Chi tiết xem tại đây!

Leave a Reply

avatar
  Subscribe  
Notify of