透過修改控制檔案scn推進資料庫scn

longmanma發表於2021-09-09

在遇到ora-600[2662],scn不一致(又沒有日誌)的時候,我們首先想到的就是去推進資料庫的scn,讓資料庫能夠open起來,搶救其中的資料,但是由於各種亂用的情況,

scn的pach出來後(11.2.0.4,12.0.1.0預設就遮蔽),遮蔽了以前大部分傳統的推進scn的方法(adjust_scn,

_minimum_giga_scn),現在能夠推進scn的有oradebug,bbed,修改控制檔案.本文就列舉透過ue修改控制檔案scn來推進資料庫scn的方法.

資料庫當前scn

idle> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#

------------------

271743118

idle> shutdown abort

ORACLE 例程已經關閉。

分析控制檔案中scn

這裡我們可以看到加粗部分為資料庫scn

SQL>select to_number('10327a59','xxxxxxxxx') from dual;

TO_NUMBER('10327A59','XXXXXXXXX')

---------------------------------

271743577

這裡的scn值和在資料庫中查詢的值有小差別,因為查詢時間點和我完全關閉資料庫有個時間差,而這個時間差有scn變化.細紅框部分為控制檔案對塊的驗證資訊

修改控制檔案scn和驗證資訊

驗證資訊修改為全部0,scn資訊你可以根據你的需求去修改,這裡把資料庫的scn修改為57253932971026,按照資料庫的原理,啟動後的scn應該稍微大於該scn值.

SQL>select to_number('341278563412','xxxxxxxxxxxxxxxxx') from dual;

TO_NUMBER('341278563412','XXXXXXXXXXXXXXXXX')

---------------------------------------------

57253932971026

啟動資料庫

idle> startup mount

例程已經啟動。

Total System Global Area 400846848 bytes

Fixed Size 2440024 bytes

Variable Size 289408168 bytes

Database Buffers 100663296 bytes

Redo Buffers 8335360 bytes

資料庫裝載完畢。

idle> recover database;

完成介質恢復。

idle> alter database open;

資料庫已更改。

idle> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#

------------------

57253932991028

資料庫啟動後查詢scn為57253932991028(資料庫當前scn)果然微大於57253932971026(修改控制檔案scn),證明我們透過修改控制檔案scn,實現scn推近完全OK.不實驗風險較大,請勿在生產環境上測試,負載後果自負



圖片描述




作者:思莊學習中心
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2730/viewspace-2821088/,如需轉載,請註明出處,否則將追究法律責任。

相關文章