升级不正确导致ORA-27468错误 及闪回区满(ORA-16014)

2014-11-24 17:11:39 · 作者: · 浏览: 0

查看预警日志:


导致这个错误的原因在于升级时没有执行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';