【故障现象】:
1.Oracle数据库启动,执行startup命令后,显示数据库装载完毕。
2.出现ORA-03113错误。
ORA-03113: 通信通道的文件结尾
进程 ID: 24348
SQL> startup;
ORACLE 例程已经启动。
Total System Global Area 1954234368 bytes
Fixed Size 2214576 bytes
Variable Size 536872272 bytes
Database Buffers 1409286144 bytes
Redo Buffers 5861376 bytes
数据库装载完毕。
ORA-03113: 通信通道的文件结尾
进程 ID: 24348
会话 ID: 129 序列号: 3
【故障分析】:
$ cd /u01/app/diag/rdbms/haitian/HAITIAN/trace
$ more HAITIAN_ora_24348.trc
出现:ORA-19815: 警告:
db_recovery_file_dest_size 字节 (共 4070572032 字节) 已使用 100.00%, 尚有 0 字节可用。
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 47391744 字节磁盘空间 (从 4070572032 限制中)
说明
db_recovery_file_dest_size也叫归档日志空间不足。
【故障解决】:
步骤1:
1.设置归档日志空间
$ sqlplus / as sysdba
SQL> shutdown abort
SQL> startup mount
SQL> select * from v$recovery_file_dest;查看归档日志大小
SQL> show parameter
db_recovery_file_dest_size 查询归档日志
SQL> alter system set
db_recovery_file_dest_size=10G; 扩大闪回区空间大小,由4G扩大到10G。
SQL> alter database open;
步骤2:
2.删除归档日志
$ sqlplus / as sysdba
SQL> startup mount
$ rman target / 进入rman工具窗口
RMAN> crosscheck archivelog all; 把无效的expired的archivelog标出来。
RMAN> delete noprompt archivelog until time "sysdate -3"; 删除3天前的归档日志。
或者
RMAN> delete expired archivelog all;
SQL> alter database open;
【故障总结】
1.可以使用$ oerr ora 03113 命令初步排查Oracle故障。
2.可以根据trace日志分析Oracle 故障。
3.可以通过删除超期日志的方式回收空间。