日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ora-01092: oracle 实例终止.强制断开连接,undo表空间故障特殊恢复(二)------ORA-01092: ORACLE 实例终止。强制断开连接...

發布時間:2023/12/10 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ora-01092: oracle 实例终止.强制断开连接,undo表空间故障特殊恢复(二)------ORA-01092: ORACLE 实例终止。强制断开连接... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文出處:http://blog.csdn.net/wyzxg/archive/2010/09/10/5874726.aspx

undo表空間故障特殊恢復(二)------ORA-01092: ORACLE 實例終止。強制斷開連接

這個測試的是instance recover(單實例里就是crash recovery)的恢復需要故障undo里的數據,

一般的情況instance recover使用聯機日志文件的,當發生多版本更新的故障,也可需要回滾段數據的。

測試表

SQL> select count(1) from tabtest;

COUNT(1)

----------

17732

SQL> insert into tabtest select * from tabtest where rownum<2001;

已創建2000行。

SQL> insert into tabtest select * from tabtest where rownum<2001;

已創建2000行。

模擬斷電故障,讓回滾段的數據沒來得回滾,使回滾段在數據庫關閉時,保留未commit的事務

SQL> shutdown abort

ORACLE 例程已經關閉。

SQL> quit

從 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷

只有退出sqlplus環境,才能更改回滾段數據文件,刪除回滾數據文件,模擬回滾段丟失

C:\Documents and Settings\Administrator>sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.4.0 - Production on 星期四 9月 9 22:23:50 2010

Copyright (c) 1982, 2007, Oracle.??All Rights Reserved.

已連接到空閑例程。

SQL> startup

ORACLE 例程已經啟動。

Total System Global Area??574619648 bytes

Fixed Size? ?? ?? ?? ?? ?? ?1297944 bytes

Variable Size? ?? ?? ?? ? 234881512 bytes

Database Buffers? ?? ?? ? 331350016 bytes

Redo Buffers? ?? ?? ?? ?? ? 7090176 bytes

數據庫裝載完畢。

ORA-01157: 無法標識/鎖定數據文件 2 - 請參閱 DBWR 跟蹤文件

ORA-01110: 數據文件 2: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS13.DBF'

錯誤出現了,因為我已經刪除文件“E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS13.DBF”

SQL> shutdown abort;

ORACLE 例程已經關閉。

這里startup force是模擬instance recover時需要回滾段里的數據情況,為什么能模擬出來,我也不清楚,我是經過多次測試發現的,哪位高人知道原因,請指點????

SQL> startup force;

ORACLE 例程已經啟動。

Total System Global Area??574619648 bytes

Fixed Size? ?? ?? ?? ?? ?? ?1297944 bytes

Variable Size? ?? ?? ?? ? 234881512 bytes

Database Buffers? ?? ?? ? 331350016 bytes

Redo Buffers? ?? ?? ?? ?? ? 7090176 bytes

數據庫裝載完畢。

ORA-01157: 無法標識/鎖定數據文件 2 - 請參閱 DBWR 跟蹤文件

ORA-01110: 數據文件 2: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS13.DBF'

SQL> alter database datafile 2 offline drop;

數據庫已更改。

SQL> alter database open;

alter database open

*

第 1 行出現錯誤:

ORA-01092: ORACLE 實例終止。強制斷開連接

這里instance recover需要回滾段里數據,但是回滾段丟失,所以實例出現異常直接關閉

SQL> startup

ORA-24324: 未初始化服務句柄

ORA-01041: 內部錯誤, hostdef 擴展名不存在

SQL> quit

從 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷

C:\Documents and Settings\Administrator>sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.4.0 - Production on 星期四 9月 9 22:27:05 2010

Copyright (c) 1982, 2007, Oracle.??All Rights Reserved.

已連接到空閑例程。

SQL> startup

ORACLE 例程已經啟動。

Total System Global Area??574619648 bytes

Fixed Size? ?? ?? ?? ?? ?? ?1297944 bytes

Variable Size? ?? ?? ?? ? 234881512 bytes

Database Buffers? ?? ?? ? 331350016 bytes

Redo Buffers? ?? ?? ?? ?? ? 7090176 bytes

數據庫裝載完畢。

ORA-01092: ORACLE 實例終止。強制斷開連接

SQL>

在看看alertlog文件,錯誤信息如下:

。。。。

Errors in file e:\oracle\product\10.2.0\admin\test\bdump\test_smon_1828.trc:

ORA-00604: error occurred at recursive SQL level 1

ORA-00376: file 2 cannot be read at this time

ORA-01110: data file 2: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS13.DBF'

Thu Sep 09 22:27:17 2010

Errors in file e:\oracle\product\10.2.0\admin\test\udump\test_ora_3844.trc:

ORA-00604: 遞歸 SQL 級別 1 出現錯誤

ORA-00376: 此時無法讀取文件 2

ORA-01110: 數據文件 2: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\TEST\UNDOTBS13.DBF'

Error 604 happened during db open, shutting down database

USER: terminating instance due to error 604

Thu Sep 09 22:27:17 2010

Errors in file e:\oracle\product\10.2.0\admin\test\bdump\test_pmon_5952.trc:

ORA-00604: error occurred at recursive SQL level

Thu Sep 09 22:27:18 2010

Errors in file e:\oracle\product\10.2.0\admin\test\bdump\test_reco_3988.trc:

ORA-00604: error occurred at recursive SQL level

Thu Sep 09 22:27:18 2010

Errors in file e:\oracle\product\10.2.0\admin\test\bdump\test_ckpt_5320.trc:

ORA-00604: error occurred at recursive SQL level

Thu Sep 09 22:27:18 2010

Errors in file e:\oracle\product\10.2.0\admin\test\bdump\test_lgwr_1312.trc:

ORA-00604: error occurred at recursive SQL level

Thu Sep 09 22:27:18 2010

Errors in file e:\oracle\product\10.2.0\admin\test\bdump\test_mman_4972.trc:

ORA-00604: error occurred at recursive SQL level

Thu Sep 09 22:27:18 2010

Errors in file e:\oracle\product\10.2.0\admin\test\bdump\test_dbw0_4060.trc:

ORA-00604: error occurred at recursive SQL level

Thu Sep 09 22:27:18 2010

Errors in file e:\oracle\product\10.2.0\admin\test\bdump\test_psp0_1276.trc:

ORA-00604: error occurred at recursive SQL level

Instance terminated by USER, pid = 3844

ORA-1092 signalled during: ALTER DATABASE OPEN...

。。。。。

根據錯誤信息知道回滾段數據故障會丟失,如果有備份的話,直接recover datafile 很簡單就可以恢復,這里假設沒有備份,

那該如何處理呢?現在因為回滾段數據文件的故障,導致數據庫無法打開,那我們想辦法讓數據庫的檢查繞過或修復回滾段數

據文件,數據庫open時,所有的數據文件都要online,如果不能online,那就要恢復或者直接把數據文件drop掉。我們這里沒有

備份不能恢復,那就drop掉故障的數據文件,然后讓數據可以打開,然后在重新創建新的回滾段表空間,讓數據庫使用新的回滾段

表空間,最后在把有故障的回滾段表空間刪除。這是解決問題的基本思路。操作步驟如下:

修改參數文件 ,添加隱含參數

我這里只用了“_corrupted_rollback_segments”

在文本參數文件inittest.ora的最后追加如下一條記錄

*._corrupted_rollback_segments=( _SYSSMU12$,_SYSSMU13$,_SYSSMU14$,_SYSSMU15$,_SYSSMU16$,_SYSSMU17$,_SYSSMU18$,_SYSSMU19$,_SYSSMU20$,_SYSSMU11$)

SQL> quit

從 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷

C:\Documents and Settings\Administrator>sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.4.0 - Production on 星期四 9月 9 22:32:43 2010

Copyright (c) 1982, 2007, Oracle.??All Rights Reserved.

已連接到空閑例程。

SQL> startup??pfile='E:\oracle\product\10.2.0\db_1\database\inittest.ora'

ORACLE 例程已經啟動。

Total System Global Area??574619648 bytes

Fixed Size? ?? ?? ?? ?? ?? ?1297944 bytes

Variable Size? ?? ?? ?? ? 234881512 bytes

Database Buffers? ?? ?? ? 331350016 bytes

Redo Buffers? ?? ?? ?? ?? ? 7090176 bytes

數據庫裝載完畢。

數據庫已經打開。

現在數據庫已經打開, 剩下就簡單多了,創建新的回滾段表空間,刪除故障回滾段表空間

SQL>

SQL> show parameter undo

NAME? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?TYPE? ?? ???VALUE

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

undo_management? ?? ?? ?? ?? ?? ?? ? string? ?? ?AUTO

undo_retention? ?? ?? ?? ?? ?? ?? ???integer? ???900

undo_tablespace? ?? ?? ?? ?? ?? ?? ? string? ?? ?UNDOTBS1

SQL> create undo tablespace undotbs4 datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\

TEST\UNDOTBS41.DBF' size 50m ;

表空間已創建。

SQL> show parameter undo

NAME? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?TYPE? ?? ???VALUE

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

undo_management? ?? ?? ?? ?? ?? ?? ? string? ?? ?AUTO

undo_retention? ?? ?? ?? ?? ?? ?? ???integer? ???900

undo_tablespace? ?? ?? ?? ?? ?? ?? ? string? ?? ?UNDOTBS1

SQL> alter system set undo_tablespace='undotbs4' scope=spfile;

alter system set undo_tablespace='undotbs4' scope=spfile

*

第 1 行出現錯誤:

ORA-32001: 已請求寫入 SPFILE, 但是在啟動時未指定 SPFILE

SQL> alter system set undo_tablespace='undotbs4';

系統已更改。

SQL>

SQL> shutdown immediate

數據庫已經關閉。

已經卸載數據庫。

ORACLE 例程已經關閉。

SQL> startup??pfile='E:\oracle\product\10.2.0\db_1\database\inittest.ora'

ORACLE 例程已經啟動。

Total System Global Area??574619648 bytes

Fixed Size? ?? ?? ?? ?? ?? ?1297944 bytes

Variable Size? ?? ?? ?? ? 234881512 bytes

Database Buffers? ?? ?? ? 331350016 bytes

Redo Buffers? ?? ?? ?? ?? ? 7090176 bytes

數據庫裝載完畢。

數據庫已經打開。

檢查當前使用回滾段情況

SQL> select segment_name,status,tablespace_name from dba_rollback_segs;

SEGMENT_NAME? ?? ?? ?? ?? ?? ? STATUS? ?? ?? ???TABLESPACE_NAME

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

SYSTEM? ?? ?? ?? ?? ?? ?? ?? ? ONLINE? ?? ?? ???SYSTEM

_SYSSMU1$? ?? ?? ?? ?? ?? ?? ? NEEDS RECOVERY? ?UNDOTBS1

_SYSSMU2$? ?? ?? ?? ?? ?? ?? ? NEEDS RECOVERY? ?UNDOTBS1

_SYSSMU3$? ?? ?? ?? ?? ?? ?? ? NEEDS RECOVERY? ?UNDOTBS1

_SYSSMU4$? ?? ?? ?? ?? ?? ?? ? NEEDS RECOVERY? ?UNDOTBS1

_SYSSMU5$? ?? ?? ?? ?? ?? ?? ? NEEDS RECOVERY? ?UNDOTBS1

_SYSSMU6$? ?? ?? ?? ?? ?? ?? ? NEEDS RECOVERY? ?UNDOTBS1

_SYSSMU7$? ?? ?? ?? ?? ?? ?? ? NEEDS RECOVERY? ?UNDOTBS1

_SYSSMU8$? ?? ?? ?? ?? ?? ?? ? NEEDS RECOVERY? ?UNDOTBS1

_SYSSMU9$? ?? ?? ?? ?? ?? ?? ? NEEDS RECOVERY? ?UNDOTBS1

_SYSSMU10$? ?? ?? ?? ?? ?? ?? ?NEEDS RECOVERY? ?UNDOTBS1

SEGMENT_NAME? ?? ?? ?? ?? ?? ? STATUS? ?? ?? ???TABLESPACE_NAME

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

_SYSSMU11$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU12$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU13$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU14$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU15$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU16$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU17$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU18$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU19$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU20$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

已選擇21行。

SQL> select * from v$recover_file;

FILE# ONLINE??ONLINE_

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

ERROR? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? CHANGE#

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

TIME

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

2 OFFLINE OFFLINE

FILE NOT FOUND? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? 0

8 OFFLINE OFFLINE

16898701

07-9月 -10

FILE# ONLINE??ONLINE_

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

ERROR? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? CHANGE#

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

TIME

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

SQL> show parameter undo

NAME? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?TYPE? ?? ???VALUE

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

undo_management? ?? ?? ?? ?? ?? ?? ? string? ?? ?AUTO

undo_retention? ?? ?? ?? ?? ?? ?? ???integer? ???900

undo_tablespace? ?? ?? ?? ?? ?? ?? ? string? ?? ?UNDOTBS4

SQL> drop tablespace undotbs4 including contents and datafiles;

drop tablespace undotbs4 including contents and datafiles

*

第 1 行出現錯誤:

ORA-30013: 還原表空間 'UNDOTBS4' 當前正在使用中

SQL>

SQL> shutdown immediate;

數據庫已經關閉。

已經卸載數據庫。

ORACLE 例程已經關閉。

再用修改文本參數文件,添加隱含參數

在文本參數文件inittest.ora的最后追加如下一條記錄

*._corrupted_rollback_segments=( _SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$,_SYSSMU1$)

啟動數據庫

SQL> startup??pfile='E:\oracle\product\10.2.0\db_1\database\inittest.ora'

ORACLE 例程已經啟動。

Total System Global Area??574619648 bytes

Fixed Size? ?? ?? ?? ?? ?? ?1297944 bytes

Variable Size? ?? ?? ?? ? 234881512 bytes

Database Buffers? ?? ?? ? 331350016 bytes

Redo Buffers? ?? ?? ?? ?? ? 7090176 bytes

數據庫裝載完畢。

數據庫已經打開。

SQL> drop tablespace undotbs1 including contents and datafiles;

表空間已刪除。

SQL> select segment_name,status,tablespace_name from dba_rollback_segs;

SEGMENT_NAME? ?? ?? ?? ?? ?? ? STATUS? ?? ?? ???TABLESPACE_NAME

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

SYSTEM? ?? ?? ?? ?? ?? ?? ?? ? ONLINE? ?? ?? ???SYSTEM

_SYSSMU11$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU12$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU13$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU14$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU15$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU16$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU17$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU18$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU19$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU20$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

已選擇11行。

SQL> shutdown immediate;

數據庫已經關閉。

已經卸載數據庫。

ORACLE 例程已經關閉。

SQL> startup??pfile='E:\oracle\product\10.2.0\db_1\database\inittest.ora'

ORACLE 例程已經啟動。

Total System Global Area??574619648 bytes

Fixed Size? ?? ?? ?? ?? ?? ?1297944 bytes

Variable Size? ?? ?? ?? ? 234881512 bytes

Database Buffers? ?? ?? ? 331350016 bytes

Redo Buffers? ?? ?? ?? ?? ? 7090176 bytes

數據庫裝載完畢。

數據庫已經打開。

查看如下都正常了吧

SQL> select segment_name,status,tablespace_name from dba_rollback_segs;

SEGMENT_NAME? ?? ?? ?? ?? ?? ? STATUS? ?? ?? ???TABLESPACE_NAME

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

SYSTEM? ?? ?? ?? ?? ?? ?? ?? ? ONLINE? ?? ?? ???SYSTEM

_SYSSMU11$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU12$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU13$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU14$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU15$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU16$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU17$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU18$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU19$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

_SYSSMU20$? ?? ?? ?? ?? ?? ?? ?ONLINE? ?? ?? ???UNDOTBS4

已選擇11行。

SQL> select count(1) from tabtest;

COUNT(1)

----------

21732

SQL> create spfile from pfile;

文件已創建。

SQL> create spfile from pfile;

文件已創建。

SQL> shutdown immediate;

數據庫已經關閉。

已經卸載數據庫。

ORACLE 例程已經關閉。

SQL> startup

ORACLE 例程已經啟動。

Total System Global Area??574619648 bytes

Fixed Size? ?? ?? ?? ?? ?? ?1297944 bytes

Variable Size? ?? ?? ?? ? 234881512 bytes

Database Buffers? ?? ?? ? 331350016 bytes

Redo Buffers? ?? ?? ?? ?? ? 7090176 bytes

數據庫裝載完畢。

數據庫已經打開。

SQL>

已經恢復ok

說明:

其實在恢復數據庫后的善后工作很重要,不要留尾巴。做事要認真些,完美些,不要留下遺憾。細節很重要

善后處理:

0. 檢查數據庫、實例的狀態(v$instance,v$database),確認是否還有其他文件恢復(v$recover_file)

1. 檢查是否有無效的對象定義

2. 檢查是否有失效的索引

3. 查看應用腳本是否正常

4。檢查系統是否有死鎖

5. 檢查系統的各資源是否正常

6. 查看系統log、alertlog、tracelog等文件

----end-----

[本帖最后由 wyzxg 于 2010-9-10 00:49 編輯]

總結

以上是生活随笔為你收集整理的ora-01092: oracle 实例终止.强制断开连接,undo表空间故障特殊恢复(二)------ORA-01092: ORACLE 实例终止。强制断开连接...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。