升級不正確導致ORA-27468錯誤 及閃回區滿(ORA-16014)
Oracle 10.2.0.5環境警示日誌出現ORA-27468錯誤。
查看預警日誌:
Errors in file /u01/app/oracle/admin/crab/bdump/crab_j001_23669.trc:
ORA-12012: 自動執行作業 5329 出錯
ORA-27468: "SYS.PURGE_LOG" 被另一進程鎖定
Fri Jun 27 23:14:22 CST 2014
Errors in file /u01/app/oracle/admin/crab/bdump/crab_j000_23667.trc:
ORA-12012: 自動執行作業 42568 出錯
ORA-27468: "EXFSYS.RLM$SCHDNEGACTION" 被另一進程鎖定
Fri Jun 27 23:14:22 CST 2014
Errors in file /u01/app/oracle/admin/crab/bdump/crab_j002_23671.trc:
ORA-12012: 自動執行作業 8886 出錯
ORA-27468: "SYS.GATHER_STATS_JOB" 被另一進程鎖定
Fri Jun 27 23:14:22 CST 2014
Errors in file /u01/app/oracle/admin/crab/bdump/crab_j001_23669.trc:
ORA-12012: 自動執行作業 42567 出錯
ORA-27468: "EXFSYS.RLM$EVTCLEANUP" 被另一進程鎖定
Fri Jun 27 23:14:22 CST 2014
Errors in file /u01/app/oracle/admin/crab/bdump/crab_j000_23667.trc:
ORA-12012: 自動執行作業 8887 出錯
ORA-27468: "SYS.AUTO_SPACE_ADVISOR_JOB" 被另一進程鎖定
[oracle@RedHat4 bdump]$ tail -20 /u01/app/oracle/admin/crab/bdump/alert_crab.log
Fri Jun 27 23:14:22 CST 2014
Errors in file /u01/app/oracle/admin/crab/bdump/crab_j001_23669.trc:
ORA-12012: 自動執行作業 5329 出錯
ORA-27468: "SYS.PURGE_LOG" 被另一進程鎖定
Fri Jun 27 23:14:22 CST 2014
Errors in file /u01/app/oracle/admin/crab/bdump/crab_j000_23667.trc:
ORA-12012: 自動執行作業 42568 出錯
ORA-27468: "EXFSYS.RLM$SCHDNEGACTION" 被另一進程鎖定
Fri Jun 27 23:14:22 CST 2014
Errors in file /u01/app/oracle/admin/crab/bdump/crab_j002_23671.trc:
ORA-12012: 自動執行作業 8886 出錯
ORA-27468: "SYS.GATHER_STATS_JOB" 被另一進程鎖定
Fri Jun 27 23:14:22 CST 2014
Errors in file /u01/app/oracle/admin/crab/bdump/crab_j001_23669.trc:
ORA-12012: 自動執行作業 42567 出錯
ORA-27468: "EXFSYS.RLM$EVTCLEANUP" 被另一進程鎖定
Fri Jun 27 23:14:22 CST 2014
Errors in file /u01/app/oracle/admin/crab/bdump/crab_j000_23667.trc:
ORA-12012: 自動執行作業 8887 出錯
ORA-27468: "SYS.AUTO_SPACE_ADVISOR_JOB" 被另一進程鎖定
導致這個錯誤的原因在於升級時沒有執行catupgrd.sql,而是執行了建庫的部分指令碼如catalog.sql和catproc.sql,這導致只有CATALOG視圖和系統的PACKAGE以及TYPE的版本更新到10.2.0.5,而其他資料庫中組件的版本並沒有升級,仍然是10.2.0.1。
在MOS文檔ORA-12012 ORA-27468: "SYS.PURGE_LOG" is Locked by Another Process [ID 751884.1]中介紹了這個錯誤,這個問題可能發生在10.2.0.2到10.2.0.5之間,解決問題的方法很簡單,在閑時執行catupgrd.sql,完成升級組件的後續操作既可。
在執行catupgrd.sql期間還遇到Oracle閃回區滿(ORA-16014)
Sat Jun 28 16:30:31 CST 2014
ORA-16038: 日誌 3 sequence# 52 無法歸檔
ORA-19809: 超出了恢複檔案數的限制
ORA-00312: 聯機日誌 3 線程 1: '/u01/app/oracle/oradata/crab/redo03.log'
Sat Jun 28 16:30:31 CST 2014
Errors in file /u01/app/oracle/admin/crab/bdump/crab_arc1_1250.trc:
ORA-16038: 日誌 3 sequence# 52 無法歸檔
ORA-19809: 超出了恢複檔案數的限制
ORA-00312: 聯機日誌 3 線程 1: '/u01/app/oracle/oradata/crab/redo03.log'
Sat Jun 28 16:31:31 CST 2014
ARCH: Archival stopped, error occurred. Will continue retrying
Sat Jun 28 16:31:31 CST 2014
ORACLE Instance crab - Archival Error
Sat Jun 28 16:31:31 CST 2014
ORA-16014: 日誌 3 sequence# 52 未歸檔, 沒有可用的目的地
--查看歸檔模式
SQL> archive log list;
--歸檔空間使用率
SQL>select * from v$flash_recovery_area_usage;
--閃回區所佔用的空間
SQL>select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
解決辦法:
-- 擴大閃回區空間
SQL>alter system set db_recovery_file_dest_size=3g scope=both;
System altered.
以下命令需要在RMAN下:
rman target/
--刪除備份
crosscheck backupset;
delete noprompt expired backupset;
delete obsolete;
delete noprompt expired backup;
delete noprompt expired copy;
--清掉歸檔
--清掉到期的歸檔
crosscheck archivelog all;
delete noprompt expired archivelog all;
--要還不夠,強制移除掉指定天數前的歸檔
delete noprompt archivelog all completed before 'sysdate-7';
在CentOS 6.4下安裝Oracle 11gR2(x64)
Oracle 11gR2 在VMWare虛擬機器中安裝步驟
Debian 下 安裝 Oracle 11g XE R2