开启数据库时能启动到mount状态,到open时报03113错误,归档日志太多了,导致空间不足,增加归档日志空间即可。

解决方案:

进入该路径,查看alert_oracle.log,可见文件记录错误如下:
####################错误信息以及建议解决的方法##########################################################

Errors in file /u01/app/oracle/diag/rdbms/orcl11g/orcl11g/trace/alert_orcl11g.log:         -------定位错误然后具体查看trc文件

ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 4102029312 字节) 已使用 100.00%, 尚有 0 字节可用。

************************************************************************

You have following choices to free up space from recovery area:

1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,

   then consider changing RMAN ARCHIVELOG DELETION POLICY.

2. Back up files to tertiary device such as tape using RMAN

   BACKUP RECOVERY AREA command.

3. Add disk space and increase db_recovery_file_dest_size parameter to

   reflect the new space.

4. Delete unnecessary files using RMAN DELETE command. If an operating

   system command was used to delete files, then use RMAN CROSSCHECK and

   DELETE EXPIRED commands.


sys@ORCL> show parameter db_recovery_file_dest;   -------查看
select * from v$flash_recovery_area_usage;          ---------------查看闪回恢复区的使用率

----------------------
通过命令窗口:

--------设置归档日志空间的大小


01.sqlplus / as sysdba 
02.shutdown abort     ----关闭进程 
03.startup mount       ---- 装载数据库 
04.select * from v$recovery_file_dest; ---查询归档日志 
05.alter system set db_recovery_file_dest_size=10737418240; --设置归档日志空间为10G 
06.Exit ---到这里空间大小已经设置完成 


--------------------------

--------删除归档日志

 


[sql] view plaincopy
01.rmantarget /   -----进入rman工具窗口 
02.RMAN>crosscheckarchivelog all;  --运行这个命令可以把无效的expired的archivelog标出来。 
03.RMAN>deletenoprompt archivelog until time "sysdate -3";  -- -即删除3天前的归档日志 
04.  

 

 

到这里就彻底ok了。接下来重新打开数据库:正常使用。

 

在删除归档文件中有一点要注意,通过命令窗口显示显示归档文件都在E:\app\kang\flash_recovery_area\oracle\ARCHIVELOG  下,但是我们不能手工在操作系统中直接把这些文件删除掉,这是因为在controlfile中记录着每一个archivelog的相关信息,当我们在OS中删除这些文件后,我们的controlfile中仍然记录着这些archivelog的信息,因此在Oracle的OEM管理器中还会存在这些日志。因为当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,也就是oracle并不知道这些文件已经不存在了。所以还是要通过命令窗口去执行删除这些文件的命令。