[oracle]undo表空間出錯,導致資料庫例項無法開啟
今天老師幫某客戶解決了資料庫例項無法開啟的情況,出現此故障是由於undo表空間損壞所致。
老師問我們,如何解決此問題,本人隨口一答,新建undo表空間,然後把undo_tablespace引數指向新的表空間即可。後來才反應過來,資料庫在未open的情況下,是無法新建表空間操作的,頓時覺得很囧。
廢話不說了,下面演示針對undo表空間出錯的情況下,如何開啟資料庫例項。
解決思路:將UNDO_MANAGEMENT修改為manul,下次啟動資料庫時,則系統使用的是system表空間的回滾段(rollback segment)。
1、 模擬undo表空間出錯的情況,將該表空間名字修改為一個錯誤的名字。則下次啟動使用spfile時,會因為無法找到該表空間而報錯。
SQL> alter system set undo_tablespace=undotbs11 scope=spfile;
System altered.
2、重啟資料庫例項,果然出現了錯誤(老師所述的錯誤是由於undo表空間出現了壞塊,不過解決這種問題的辦法都是相同的):
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 121636432 bytes
Database Buffers 159383552 bytes
Redo Buffers 2973696 bytes
Database mounted.
ORA-01092: ORACLE instance terminated. Disconnection forced
3、這種情況下,由於資料庫無法變成open狀態,因此是無法開啟spfile的,我們只能通過pfile來開啟資料庫。
3.1、新建pfile
SQL> create pfile from spfile;
File created.
3.2、編輯pfile,我們將undo_management的值由AUTO修改為manual。
[oracle@localhost dbs]$ cd $ORACLE_HOME/dbs
[oracle@localhost dbs]$ vi initorcl.ora
*.undo_management='AUTO' à *.undo_management='manual'
4、下面,我們採用pfile來啟動資料庫:
SQL> shutdown immediate
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory
SQL> startup pfile=/opt/ora10g/product/10.2.0/db_1/dbs/initorcl.ora
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 121636432 bytes
Database Buffers 159383552 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL>
5、現在資料庫例項開啟了,我們再建立spfile,讓資料庫下次啟動時,自動讀取spfile。
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string
SQL> create spfile from pfile;
File created.
SQL> startup force
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 121636432 bytes
Database Buffers 159383552 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL> show parameter spfile
NAME TYPE VALUE
-------------- --------------------- --------------------------------------------------------------
spfile string /opt/ora10g/product/10.2.0/db_1/dbs/spfileorcl.ora
6、現在我們再將相應的引數修改回去,系統表空間的資源是有限的,我們最好不要使用回滾段。
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string MANUAL
undo_retention integer 900
undo_tablespace string UNDOTBS11
SQL> alter system set undo_management=auto scope=spfile;
System altered.
SQL> alter system set undo_tablespace=UNDOTBS1 scope=spfile;
System altered.
SQL> startup force
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 125830736 bytes
Database Buffers 155189248 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
至此,undo表空間損壞,導致資料庫例項無法開啟的問題的基本解決思路已經展示完成。有興趣的讀者,還可以自行再建立新的undo表空間,並且將undo_tablespace的引數值修改為此表空間名。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14600958/viewspace-672267/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 記一次ORA-01102導致資料庫例項無法啟動案例資料庫
- Oracle undo 表空間資料檔案丟失強制啟動資料庫(沒有未提交的事務)Oracle資料庫
- ORACLE線上切換undo表空間Oracle
- eclipse: workspace出錯導致無法啟用的解決Eclipse
- 【案例】Oracle報錯ORA-01194 ORA-01110 由於資料庫SCN不一致導致無法啟動Oracle資料庫
- 資料庫資料恢復-oracle資料庫報錯無法開啟的如何恢復資料?資料庫資料恢復Oracle
- Oracle切換undo表空間操作步驟Oracle
- ORACLE DSG資料同步軟體程式導致資料庫無法正常關閉Oracle資料庫
- ASM空間爆滿導致資料庫掛起ASM資料庫
- undo表空間容量
- oracle資料庫與oracle例項Oracle資料庫
- oracle中undo表空間丟失處理方法Oracle
- 【資料庫資料恢復】磁碟空間不足導致sql server錯誤的資料恢復資料庫資料恢復SQLServer
- 清理oracle資料庫空間Oracle資料庫
- innodb_undo_tablespaces導致Mysql啟動報錯MySql
- 【資料庫資料恢復】Oracle ASM例項無法掛載的資料恢復案例資料庫資料恢復OracleASM
- Innodb:Undo 表空間巨大
- 更改undo表空間大小
- Oracle案例11——Oracle表空間資料庫檔案收縮Oracle資料庫
- 【Oracle】表空間誤刪除導致startup啟動時提示ORA-01110和ORA-01157錯誤Oracle
- oracle 12c 資料庫例項監聽無法註冊問題一例Oracle資料庫
- UNDO表空間空間回收及切換
- PostgreSQL:表空間-->資料庫-->表SQL資料庫
- Oracle SYSAUX 表空間使用率100% 導致的DB 故障OracleUX
- 【UNDO】Oracle undo表空間使用率過高,因為一個查詢Oracle
- MySQL InnoDB Undo表空間配置MySql
- Oracle 19c 線上縮減 UNDO 表空間 容量Oracle
- 應用使用JNDI,資料庫無法連線,導致的程序無法啟動問題處理資料庫
- MySQL 磁碟空間滿導致表空間相關資料檔案損壞故障處理MySql
- Oracle sysman.mgmt_jobs導致資料庫自動重啟Oracle資料庫
- 2.5.5 使用自動Undo管理: 建立 Undo 表空間
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- oracle資料庫建立資料庫例項-九五小龐Oracle資料庫
- 磁碟IO故障導致的SQLServer資料庫無法寫入SQLServer資料庫
- Oracle資料庫分割槽表SPLIT操作導致歸檔瘋漲Oracle資料庫
- OracleDatabase——資料庫表空間dmp匯出與匯入OracleDatabase資料庫
- Oracle日常問題-資料庫無法啟動(案例二)Oracle資料庫
- Oracle日常問題處理-資料庫無法啟動Oracle資料庫
- Oracle 12.2應用PSU後資料庫無法啟動Oracle資料庫