描述:因爲是初學oralce 特意製作出故障進行恢復的,生產環境也可以借鑑,也算是爲了自己的學習做複習,本實驗都是親自實驗過的。
環境:
服務器:CentOS release 4.4 (Final)
數據庫:Database 10g Release 10.2.0.1.0
實驗目的: 解決ORA_600[2662]和ORA_600[4194]
錯誤產生:
刪除所有控制文件和日誌文件
rm -rf /u01/app/oracle/oradata/orcl/control01.ctl
rm -rf /u01/app/oracle/oradata/orcl/control02.ctl
rm -rf /u01/app/oracle/oradata/orcl/redo01.log
rm -rf /u01/app/oracle/oradata/orcl/redo02.log
rm -rf /u01/app/oracle/oradata/orcl/redo03.log
rm -rf /u01/app/oracle/oradata/orcl/redo04.log
模擬斷電
shutdown abort
啓動時出現報錯,查看警報日誌顯示ORA_600[2662]
vim /u01/app/oracle/admin/orcl/bdump/alert_orcl.log
解決辦法:
1 啓動到nomount狀態
startup nomount
2 修改隱藏參數(這個隱藏參數的功能大致知道是忽略一些錯誤,但是具體原理的我也不清楚)
alter system set "_allow_error_simulation"=true scope=spfile;
3 創建控制文件(根據實際情況填寫)
create controlfile reuse database orcl resetlogs
datafile
'/u01/app/oracle/oradata/orcl/system01.dbf',
'/u01/app/oracle/oradata/orcl/sysaux01.dbf',
'/u01/app/oracle/oradata/orcl/users01.dbf',
'/u01/app/oracle/oradata/orcl/example01.dbf',
'/u01/app/oracle/oradata/orcl/undotbs01.dbf'
logfile
group 1 '/u01/app/oracle/oradata/orcl/redo01.log' size 50m,
group 2 '/u01/app/oracle/oradata/orcl/redo02.log' size 50m,
group 3 '/u01/app/oracle/oradata/orcl/redo03.log' size 50m;
4 查看當前數據文件的scn號
select checkpoint_change# from v$datafile;
5 修改level級別(level 級別的原理不是很明白)
超過10億 用 2
6 查看是否可以進行open resetlogs 如果結果爲NOT ALLOWED 退出sql 然後創新創建控制文件,設置level級別,反覆執行
select open_resetlogs from v$database;
7 執行 resetlogs
alter database open resetlogs;
8 如果resetlogs報錯
exit
startup force nomount;
alter session set events '10015 trace name adjust_scn level 1';
alter database open resetlogs;
到這裏就可以把數據庫open起來了。實在不好意思,上面的操作是晚上做實驗到1點了,忘了做記錄了,所以輸出內容沒有寫,以後會寫的更好,更詳細。
但是我庫open了以後新的問題又來了,當我隨便創建了一個表時,實例自己就蹦掉了,查看警報日誌發現ORA_600[4194]
查看警報日誌
vim /u01/app/oracle/admin/orcl/bdump/alert_orcl.log
Completed: alter database open
Tue Feb 25 00:16:57 2014
Errors in file /u01/app/oracle/admin/orcl/bdump/orcl_j000_15099.trc:
ORA-00600: internal error code, arguments: [4194], [58], [55], [], [], [], [], []
Tue Feb 25 00:16:57 2014
DEBUG: Replaying xcb 0x43a07dc4, pmd 0x43b99958 for failed op 8
Doing block recovery for file 2 block 437
Block recovery from logseq 4, block 67 to scn 2147544346
Tue Feb 25 00:16:57 2014
Recovery of Online Redo Log: Thread 1 Group 3 Seq 4 Reading mem 0
Mem# 0 errs 0: /u01/app/oracle/oradata/orcl/redo03.log
Block recovery completed at rba 4.79.16, scn 0.2147544348
Tue Feb 25 00:16:58 2014
Errors in file /u01/app/oracle/admin/orcl/bdump/orcl_j000_15099.trc:
ORA-00600: internal error code, arguments: [4194], [58], [55], [], [], [], [], []
ORA-00600: internal error code, arguments: [4194], [58], [55], [], [], [], [], []
Tue Feb 25 00:17:00 2014
Errors in file /u01/app/oracle/admin/orcl/bdump/orcl_j000_15099.trc:
ORA-00600: internal error code, arguments: [4194], [58], [55], [], [], [], [], []
ORA-00600: internal error code, arguments: [4194], [58], [55], [], [], [
2號文件爲undo 表空間,需要重建undo
elect * from dba_data_files where file_id=2;
解決ORA_600[4194]錯誤辦法:
9 設置undo表空間的管理方式爲:手工,缺省undotbs 爲空,實際上市使用了 system 回滾段。
SQL> alter system set undo_management = manual scope=spfile;
System altered.
SQL> alter system set undo_tablespace='' scope=spfile;
System altered.
SQL> startup force
ORACLE instance started.
Total System Global Area 583008256 bytes
Fixed Size 2022504 bytes
Variable Size 184550296 bytes
Database Buffers 394264576 bytes
Redo Buffers 2170880 bytes
Database mounted.
Database opened.
10 創建新的undo表空間:
SQL> create undo tablespace undotbs2
2 datafile '/oracle/oradata/lixora/undotbs2.dbf' size 100M;
Tablespace created.
11 設置undo管理方式爲 ’自動‘:
SQL> alter system set undo_management =auto scope=spfile;
System altered.
12 設置undotbs 爲新建的undotbs2:
SQL> alter system set undo_tablespace = undotbs2 scope=spfile;
System altered.
13 刪除原來損壞的undo表空間,然後在重新啓動。
SQL> drop tablespace undotbs02 including contents and datafiles;
Tablespace dropped.
SQL> startup force;
ORACLE instance started.
Total System Global Area 583008256 bytes
Fixed Size 2022504 bytes
Variable Size 234881944 bytes
Database Buffers 343932928 bytes
Redo Buffers 2170880 bytes
Database mounted.
Database opened.
本人疑惑:
1 修改隱藏參數 alter system set "_allow_error_simulation"=true scope=spfile; 其原理?
2 修改level級別 alter session set events '10015 trace name adjust_scn level 1'; 其原理?
最後我有一個疑惑是,刪除了日誌文件和控制文件 爲什麼undo會損壞呢? 和undo有什麼關係,雖然我做成功了,但是目前還是沒有搞明白,希望大家賜教一下。
到這裏就可以完全修復了,在文章裏有一些我不明白的地方,我確實現在不知道,希望知道的可以解答一下互相學習,大神們不要見笑,以後會更好的。
解決ORA_600[2662]和[4194]錯誤辦法
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Oracle Database 監控:zabbix(一)
AMGYM
2019-02-24 13:05:14
Oracle Database 監控(check_oracle_health)
AMGYM
2019-02-24 13:05:14
Oracle11g 基於linux 6.3下安裝
love壁虎
2019-02-24 12:55:06
Oracle導入導出數據的幾種方式
linzhongyilisha
2019-02-24 12:43:05
bat記錄遠程桌面連接登錄信息
jason1982
2019-02-24 12:57:09
sql語法、關係建模
死瘦宅
2019-02-24 22:35:22
MySQL 事務、函數、觸發器、數據庫備份、權限管理
死瘦宅
2019-02-24 22:35:12
MongoDB索引優化詳解
geekpy
2019-02-24 14:20:06
Sql server中一些Select檢索高級用法
wbzjacky
2019-02-24 13:12:37
如何釋放已刪除的InnoDB磁盤空間
lvrenX
2019-02-24 13:04:33
將frm,myi,myd文件打包成sql文件
jason1982
2019-02-24 12:57:22
某熊的技術之路指北 ☯
王下邀月熊_Chevalier
2019-02-23 16:23:03
安裝SQL數據庫之一些常見故障
179390988
2019-02-23 14:05:54
安裝SQL數據庫之補丁安裝常見問題
179390988
2019-02-23 14:05:54