亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行ora-01110錯誤的異常恢復

發布時間:2021-12-30 11:09:04 來源:億速云 閱讀:982 作者:柒染 欄目:云計算

如何進行ora-01110錯誤的異常恢復,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

某日,生產數據庫服務器異常宕機,在重啟服務器開啟數據庫時報如下錯誤:

SQL> startup                                                          

ORACLE instance started.                                   

Total System Global Area 1.6911E+10 bytes                            

Fixed Size                    2113696 bytes                          

Variable Size              8472498016 bytes                          

Database Buffers           8422162432 bytes                          

Redo Buffers                 14659584 bytes                          

Database mounted.                                                     

ORA-01113: file 1 needs media recovery                               

ORA-01110: data file 1: '/oracle/PRD/data1/system_1/system.data1'


有一種解決方法是這樣的
SQL> RECOVER DATAFILE  '/oracle/PRD/data1/system_1/system.data1'
恢復受損的文件.
SQL> recover tablespace system;//不一定需要,提示不要求恢復的時候,可以直接打開數據庫。
恢復系統表空間.
SQL> RECOVER DATABASE;
恢復數據庫.
SQL> ALTER DATABASE OPEN;
Database altered.

做這類操作時,不一定能成功。所以請一定先備份當前狀態下所有數據文件、控制文件和日志文件,先做到保護現場,然后再做其他嘗試。

經過冷備后,嘗試這種方法不行。咨詢Dbsnake后,嘗試異常恢復強行打開數據庫。
#su - oracle
$vi  /oracle/PRD/data1/init.ora 修改初始化參數
*._allow_resetlogs_corruption=FALSE
修改為*._allow_resetlogs_corruption=TRUE(#正常啟庫后修改為原值FALSE)
(這個參數允許在數據不一致的情況下打開)
*.undo_management='AUTO'
修改為*.undo_management='MANUAL'(#正常啟庫后修改為原值AUTO)
(這個參數是讓UNDO表空間由自動管理變手動管理)
增加此句
*._corrupted_rollback_segments=(_SYSSMU12$)(#正常啟庫后去掉此句)
(屏蔽出錯的事務回滾段,根據ALERT提示ORA-01555: snapshot too old: rollback segment number 12 with name "_SYSSMU12$" too small)
然后保存參數文件,重新打開庫,發現還是不行。檢查ALERT日志發現SCN號不一致, 下一步推進SCN值。
查看估算SCN值
SQL> select dbms_flashback.get_system_change_number()/(1024*1024*1024) from dual; 

     DBMS_FLASHBACK.GET_SYSTEM_CHAN  

           ——————————  

              3.185796233  

估值為3.18NG,推進的SCN值要比這個值大,所以設置值為4

$vi  /oracle/PRD/data1/init.ora 增加此句  
*._minimum_giga_scn=4

再然后嘗試打開庫  
SQL> startup mount pfile='/oracle/PRD/data1/init.ora';  
ORACLE instance started.

SQL> recover database until cancel;

SQL> alter database open resetlogs;  
Database altered.  
數據庫成功打開。

去掉隱含參數,恢復初始參數。  
最后

SQL> create spfile from pfile='/oracle/PRD/data1/init.ora';

File created.

SQL> startup

ORACLE instance started.

然后及時用EXP全庫導出以保護數據,做DBV的數據校驗看是否有物理壞塊.
 

以上方法僅限特殊情況下的應用,請慎重參考。

附SCN知識點:

1、Oracle的SCN在每秒16384次commit的情況下可以維持534年,每秒16384次commit是Oracle早先認為的任何系統的極限commit強度;

2、Oracle里SCN的起點是1988年1月1日;

3、_minimum_giga_scn=n的含義是把SCN往前推進到nG,但請注意,只有在SCN小于nG的時候才會用到這個隱含參數,反之則Oracle會置這個隱含參數于不顧。

SCN原理:在安全關閉數據庫的過程中,系統會執行一個檢查點動作,這時所有數據文件的終止scn都會設置成數據文件頭中的那個啟動scn的值。在數據庫重新啟動的時候,Oracle將文件頭中的那個啟動scn與數據庫文件檢查點scn進行比較,如果這兩個值相互匹配,oracle接下來還要比較數據文件頭中的啟動scn和控制文件中數據文件的終止scn。如果這兩個值也一致,就意味著所有數據塊多已經提交,所有數據庫的修改都沒有在關閉數據庫的過程中丟失,因此這次啟動數據庫的過程也不需要任何恢復操作,此時數據庫就可以打開了。當所有的數據庫都打開之后,存儲在控制文件中的數據文件終止scn的值再次被更改為null,這表示數據文件已經打開并能夠正常使用了。

但在異常當機的情況下,由于最后一次檢查點未進行或進行中間被中止,因而在控制文件,就存在部分的數據文件stop SCN為最大值,在數據庫重新啟動后,會檢查控制文件中對應每個數據文件的stop SCN,如果stop SCN不等于控制文件中對應每個數據文件的checkpoint SCN,就會使用日志文件redo從checkpoint SCN開頭到stop SCN為止的全部數據庫操作.當數據庫發現SCN不一致,應該是redo log文件中的SCN>=數據文件中的SCN.在定位到底是使用哪一個redo log文件時,就用到了日志文件頭中的low scn,next scn,也就是說要使用的redo log 的low scn ,next scn必須包含數據文件重做所須的change vector.  在確定了哪個數據文件須redo,oracle會比較change vector中的SCN和數據文件數據塊中的SCN,如果change vector的SCN小于數據塊的scn,則跳過此change vector,否則redo。

看完上述內容,你們掌握如何進行ora-01110錯誤的異常恢復的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

九龙城区| 广元市| 利川市| 穆棱市| 九台市| 南皮县| 桂阳县| 扶沟县| 资阳市| 乾安县| 毕节市| 吴桥县| 九龙城区| 化德县| 樟树市| 镇康县| 麦盖提县| 扎赉特旗| 乡宁县| 昆山市| 霍山县| 寿宁县| 桦甸市| 湖州市| 霸州市| 松潘县| 洛宁县| 兴化市| 台南县| 蓬莱市| 巩留县| 新郑市| 晋中市| 万盛区| 玉屏| 清新县| 阿荣旗| 益阳市| 盘山县| 凤台县| 九寨沟县|