登录Oracle时出现错误:“ORA-03113:通信通道的文件结尾”
错误排查方法
Oracle出现错误,查看trace日志寻找问题根源:D:oraclediag dbmsorclorcl race
打开trace目录下的alert_orcl.log:
************************************************************************ ARC3: Error 19809 Creating archive log file to 'D:ORACLE_11G INSTALLERFLASH_RECOVERY_AREAORCLARCHIVELOG2019_05_29O1_MF_1_122_%U_.ARC' Errors in file D:ORACLEdiag dbmsorclorcl raceorcl_arc1_18628.trc: ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 3221225472 字节) 已使用 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.
从日志中可以看到:“ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 3221225472 字节) 已使用 100.00%, 尚有 0 字节可用。”
这个问题是由于db_recovery_file_dest_size(归档日志)的空间不足导致的。
解决办法
1,修改归档日志空间的大小
SQL> startup mount -- 装载数据库 SQL> conn / as sysdba --dba身份连接 SQL> select * from v$recovery_file_dest; --查看归档日志 SQL> alter system set db_recovery_file_dest_size=4G; --设置归档日志大小 SQL> alter database open; --打开数据库
需要注意的是:Oracle数据库一共有以下几个状态
shutdown immediate;
-- shutdown:关闭状态,Oracle例程关闭。
startup nomount;
-- nomount(STARTED):Oracle例程启动,读取参数文件打开实例(分配内存、启动进程)。
alter database mount;
-- mount(MOUNTED):读取控制文件。
alter database open;
-- open(OPEN):打开数据文件和日志文件。
查看当前状态:select status from v$instance;
2,删除归档日志
使用rman(Recovery Manger)工具
rman target / --进入rman
RMAN> crosscheck archivelog all; --检查控制文件和实际物理文件的差别。
RMAN> delete noprompt archivelog until time "sysdate-3"; --删除3天前的归档日志
至此问题解决,数据库可以正常使用。