資料庫恢復從ora-01152錯誤開始一路問題解決過程
做一個資料庫的恢復,客戶指定恢復7月1日的,檢視了集中備份裡的剛好最早的備份是7月1日,而後一次備份是7月18日。
照常恢復控制檔案,然後restore database,recover database;
期間沒有相應的檔案系統,建了檔案系統,後來空間不夠叫sa增加了空間。
restore database結束,進行recover database 提示
RMAN-06025 no backup of log thread 1 seq 40438 lowscn 5480793347 found to restore
alter database open resetlogs 提示
ora-01152: file 1 was not restored from a sufficiently old backup
這是無論怎麼起都提示以上錯誤,其實解決很簡單
這是可以將 40438日誌取下來做recover,但很不巧該日誌丟失了;
於是想到了修改隱含引數 _allow_resetlogs_corruption,跳過一致性檢測。
於是:
alter system set "_allow_resetlogs_corruption"=true scope=spfile;
alter database open resetlogs;
(PS:這期間因redo日誌路徑的問題出現錯誤,於是進行清除redo,然後重建) )
alter database open;
資料庫直接關閉,alert 日誌提示以下內容:
資料庫啟動時 執行 select ctime, mtime, stime from obj$ where obj# = :1 導致快照太舊;因而在bootstrap程式失敗,於是透過了oradebug 推進scn的方法來解決;
以下部落格有相應實驗過程:
資料庫open報錯ora-01555-snapshot-too-old.html
oradebug 過程:
oradebug addr length value value是推進後的scn;
這裡簡單解釋一下,4 為長度,0x146BFECD3是16進位制,我在原來的v$datafile_header.checkpoint_change#的基礎之上
加上上1000000得到該值。
其實執行alter database open;
資料庫報錯,alert 日誌如下:
ora-600 [2252], [60627],錯誤應該是由於推進了scn導致時間不對導致,此時可以重啟資料庫。
於是我再重啟資料庫,alert 日誌報了以下內容
此時報ORA-39700資料庫需以upgrade 啟動。於是已upgrade 做了升級。
shutdown immediate
SQL> startup
ORACLE instance started.
Total System Global Area 1224736768 bytes
Fixed Size 2096032 bytes
Variable Size 335545440 bytes
Database Buffers 872415232 bytes
Redo Buffers 14680064 bytes
Database mounted.
Database opened.
將 _allow_resetlogs_corruption改為false。
alter system set "_allow_resetlogs_corruption"=false scope=spfile;
shutdown immediate
SQL> startup
照常恢復控制檔案,然後restore database,recover database;
期間沒有相應的檔案系統,建了檔案系統,後來空間不夠叫sa增加了空間。
點選(此處)摺疊或開啟
- #mkdir /oradata
- #mklv -t jfs2 -y lv_oradata datavg 1022G
- #crfs -v jfs2 -d lv_oradata -A yes -m
- #mount /oradata
- #df -g
restore database結束,進行recover database 提示
RMAN-06025 no backup of log thread 1 seq 40438 lowscn 5480793347 found to restore
alter database open resetlogs 提示
ora-01152: file 1 was not restored from a sufficiently old backup
這是無論怎麼起都提示以上錯誤,其實解決很簡單
這是可以將 40438日誌取下來做recover,但很不巧該日誌丟失了;
於是想到了修改隱含引數 _allow_resetlogs_corruption,跳過一致性檢測。
於是:
alter system set "_allow_resetlogs_corruption"=true scope=spfile;
alter database open resetlogs;
(PS:這期間因redo日誌路徑的問題出現錯誤,於是進行清除redo,然後重建) )
alter database open;
資料庫直接關閉,alert 日誌提示以下內容:
- Wed Aug 19 09:12:50 BEIST 2015
- ORA-01555 caused by SQL statement below (SQL ID: 4krwuz0ctqxdt, SCN: 0x0001.46b0aa96):
- Wed Aug 19 09:12:50 BEIST 2015
- select ctime, mtime, stime from obj$ where obj# = :1
- Wed Aug 19 09:12:50 BEIST 2015
- Errors in file /opt/app/oracle/products/10205/rdbms/log/gessdb_ora_13959238.trc:
- ORA-00704: bootstrap process failure
- ORA-00704: bootstrap process failure
- ORA-00604: error occurred at recursive SQL level 1
- ORA-01555: snapshot too old: rollback segment number 6 with name "_SYSSMU6$" too small
- Error 704 happened during db open, shutting down database
- USER: terminating instance due to error 704
- Instance terminated by USER, pid = 13959238
- ORA-1092 signalled during: ALTER DATABASE OPEN..
以下部落格有相應實驗過程:
資料庫open報錯ora-01555-snapshot-too-old.html
oradebug 過程:
-
SQL> oradebug setmypid
-
Statement processed.
-
SQL>
-
SQL> oradebug dumpvar sga kcsgscn_kcslff
-
ORA-00079: variable kcsgscn_kcslf not found
-
SQL> oradebug 0x700000010012650 4 0x146BFECD3
-
ORA-00070: command 0x700000010012650 is not valid
-
SQL> oradebug dumpvar sga kcsgscn_
-
kcslf kcsgscn_ [700000010012650, 700000010012680) = 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 07000000 ...
-
SQL> oradebug poke 0x700000010012650 4 0x146BFECD3
-
BEFORE: [700000010012650, 700000010012654) = 00000000
-
AFTER: [700000010012650, 700000010012654) = 46BFECD3
-
SQL>
- SQL>
這裡簡單解釋一下,4 為長度,0x146BFECD3是16進位制,我在原來的v$datafile_header.checkpoint_change#的基礎之上
加上上1000000得到該值。
其實執行alter database open;
資料庫報錯,alert 日誌如下:
ora-600 [2252], [60627],錯誤應該是由於推進了scn導致時間不對導致,此時可以重啟資料庫。
- ARC1 started with pid=21, OS id=9437196
- Wed Aug 19 09:55:54 BEIST 2015
- Errors in file /opt/app/oracle/products/10205/rdbms/log/gessdb_lgwr_12583110.trc:
- ORA-00600: internal error code, arguments: [2252], [60627], [1], [], [], [], [], []
- Wed Aug 19 09:55:55 BEIST 2015
- Errors in file /opt/app/oracle/products/10205/rdbms/log/gessdb_lgwr_12583110.trc:
- ORA-00600: internal error code, arguments: [2252], [60627], [1], [], [], [], [], []
- Wed Aug 19 09:55:55 BEIST 2015
- LGWR: terminating instance due to error 470
- Instance terminated by LGWR, pid = 125831
-
Wed Aug 19 09:59:18 BEIST 2015
-
Errors in file /opt/app/oracle/products/10205/rdbms/log/gessdb_ora_12582916.trc:
-
ORA-00704: bootstrap process failure
-
ORA-39700: database must be opened with UPGRADE option
-
Wed Aug 19 09:59:18 BEIST 2015
-
Error 704 happened during db open, shutting down database
-
USER: terminating instance due to error 704
-
Instance terminated by USER, pid = 12582916
- ORA-1092 signalled during: alter database open...
-
shutdown immediate
-
startup upgrade
-
-
@?/rdbms/admin/catupgrd.sql
-
@?/rdbms/admin/catalog.sql
-
@?/rdbms/admin/catproc.sql
- @?/rdbms/admin/utlrp.sql
shutdown immediate
SQL> startup
ORACLE instance started.
Total System Global Area 1224736768 bytes
Fixed Size 2096032 bytes
Variable Size 335545440 bytes
Database Buffers 872415232 bytes
Redo Buffers 14680064 bytes
Database mounted.
Database opened.
將 _allow_resetlogs_corruption改為false。
alter system set "_allow_resetlogs_corruption"=false scope=spfile;
shutdown immediate
SQL> startup
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29863023/viewspace-1776522/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 異機恢復後ORA-01152錯誤解決
- 恢復MySQL資料庫建立儲存過程是遇到錯誤MySql資料庫儲存過程
- 資料庫恢復過程資料庫
- sql server資料庫附加錯誤的解決過程SQLServer資料庫
- 【資料庫資料恢復】透過恢復NDF檔案修復資料庫的資料恢復過程資料庫資料恢復
- DUL恢復資料庫過程資料庫
- 【資料庫資料恢復】透過資料頁恢復Sql Server資料庫資料的過程資料庫資料恢復SQLServer
- 解決儲存過程擷取錯誤的問題儲存過程
- 聚焦資料庫安全 昂楷科技從解決最迫切問題開始資料庫
- 徹底解決rman恢復碰到ora-01152錯
- 資料庫恢復後開啟時遇到 ORA-01152資料庫
- 資料庫資料恢復—附加資料庫錯誤823的SQL Server資料恢復案例資料庫資料恢復SQLServer
- 資料庫效能問題解決過程1例子資料庫
- 【資料庫資料恢復】Sql Server資料庫檔案丟失的資料恢復過程資料庫資料恢復SQLServer
- 解決Oracle資料庫日誌檔案丟失恢復問題Oracle資料庫
- 資料庫的一次資料恢復過程資料庫資料恢復
- 一次Oracle資料庫恢復過程Oracle資料庫
- Backup And Recovery User's Guide-從RMAN開始-使用資料恢復指導診斷和修復錯誤GUIIDE資料恢復
- 解決mac上Navicat新建資料庫3680錯誤問題跽勒Mac資料庫
- 資料庫資料恢復-oracle資料庫報錯無法開啟的如何恢復資料?資料庫資料恢復Oracle
- 【資料庫資料恢復】磁碟空間不足導致sql server錯誤的資料恢復資料庫資料恢復SQLServer
- low cache rba,on disk rba資料庫恢復過程資料庫
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- 儲存崩潰資料恢復過程;資料恢復案例資料恢復
- 恢復資料庫引數錯誤無法啟動資料庫
- oracle 816 imp恢復資料遇到問題及解決Oracle
- 【oracle資料庫資料恢復】誤操作導致的資料庫誤刪除的資料恢復案例Oracle資料庫資料恢復
- 解決遷移資料庫錯誤,索引長度過長資料庫索引
- 歸檔模式下資料庫全恢復的過程模式資料庫
- 一次客戶資料庫恢復的過程資料庫
- 不完全恢復,操作過程,我的備份資料庫出現此類問題。資料庫
- SQL Server資料庫出現邏輯錯誤的資料恢復SQLServer資料庫資料恢復
- 【備份恢復】從備份恢復資料庫資料庫
- Sybase ASE資料庫恢復,Sybase資料恢復,資料誤刪除恢復工具READSYBDEVICE資料庫資料恢復dev
- 《學習Oracle從這裡開始》之解決錯誤篇Oracle
- SQL Server資料庫恢復常見問題SQLServer資料庫