
造成这个问题的原因有很多,我这里是因为归档日志满了,这个可以通过日子文件看出来,下面是日志中的一部分,日志比较明白:
************************************************************************
Errors in file f:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_3588.trc:
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 42303488 字节磁盘空间 (从 21474836480 限制中)
ARCH: Error 19809 Creating archive log file to 'F:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2015_01_12\O1_MF_1_60000_%U_.ARC'
Errors in file f:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_3588.trc:
ORA-16038: 日志 3 sequence# 60000 无法归档
ORA-19809: 超出了恢复文件数的限制
ORA-00312: 联机日志 3 线程 1: 'F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG'
USER (ospid: 3588): terminating the instance due to error 16038
Instance terminated by USER, pid = 3588
道理我说不上来,我就把我的执行语句写出来,做个记录:
这个时候的oracle已经无法登陆,怎么处理呢?
1.先打开命令控制台
2.输入sqlplus /nolog
3.输入connect / as sysdba
4.输入startup force,这里如果不能报错,先用shutdown imediate,再用startup mount,这个时候会显示:ORACLE例程已经启动。
5.输入archive log list;
6.输入select * from v$recovery_file_dest;
SQL> startup mount ORACLE 例程已经启动。 Total System Global Area 6847938560 bytes Fixed Size 2188768 bytes Variable Size 3154119200 bytes Database Buffers 3674210304 bytes Redo Buffers 17420288 bytes 数据库装载完毕。 SQL> archive log list; 数据库日志模式 存档模式 自动存档 启用 存档终点 USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列 60000 下一个存档日志序列 60000 当前日志序列 60002 SQL> select * from v$recovery_file_dest; NAME ----------------------------------------------------------------- SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES ----------- ---------- ----------------- --------------- F:\app\Administrator\flash_recovery_area 2.1475E+10 2.1469E+10 0 541
这样就能看到,我的归档日志已经没有可用空间了,20G空间已经用完。
如何删除归档日志(参考:http://www.cnblogs.com/rootq/archive/2009/09/21/1571476.html):
1.打开cmd,输入rman target /@orcl
2.输入DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-3';
说明
SYSDATA-3,表明当前的系统时间3天前,before关键字表示在7天前的归档日志,
也可以删除过期的归档日志,如下
crosscheck archivelog all;
delete expired archivelog all;
3.回车后会提示你是否要删除,输入yes就可以了
4.最后重启oracle服务就可以用了