Oracle错误——ORA-03113:通信通道的文件结尾
我的Oracle数据库是去年11月份安装的,然后安装好之后配置了一下,那个时候是正常的,没有什么问题,但是后来我就一直没有用自己本地的Oracle,使用的PL/SQL一直连的是同事的机子,然后今天突然想在自己的机子上做些测试,PL/SQL居然一直连不上,提示了下面这个错误。
提示ORA-03113:通信通道的文件结尾
进程 ID :0
会话 ID:0 序列号:0
之后就是一系列的度娘谷歌论坛等等折腾,折腾了良久,终究是给解决了。
解决方法:
第一步:
sqlplus / as sysdba
shutdown abort
startup mount
SQL> show parameter background_dump_dest;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest string E:\app\Administrator\diag\rdbms\crm\crm\trace
我们可以看到上面的这个路径,E:\app\Administrator\diag\rdbms\crm\crm\trace
这个目录的作用:
它指定在 Oracle 操作过程中为后台进程 (LGWR,DBW n 等等) 写入跟踪文件的路径名(目录或磁盘)。它还定义记录着重要事件和消息的数据库预警文件的位置。
我们进入该路径(E:\app\Administrator\diag\rdbms\crm\crm\trace),找到alert_oracle.log,使用记事本打开之后(注意:如果该日志文件比较大的话 系统有可能会卡住,无响应,需要稍等一会儿)可见文件记录错误如下:
从这里我们发现了问题的根源:“
ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 4102029312 字节) 已使用100.00%, 尚有 0 字节可用。” 是db_recovery_file_dest_size也叫归档日志空间不足导致的,既然找到问题的根源,那解决起来也就容易了。
解决途径
空间小,那摆在我们面前办法就是,一个是将空间设置大点,另一个就是将多余的文件删除掉即可,那么我们就将这两个办法都使用一下。
第二步:
——–通过命令窗口:设置归档日志空间的大小
SQL> select * from v$recovery_file_dest;
SQL> alter system set db_recovery_file_dest_size=10737418240 ---这里是改为10G。
SQL> alter database open
SQL> exit
第三步:
——–删除归档日志
C:\Users\Administrator>rman target /
进入rman工具窗口
C:\Users\Administrator>rman target /
RMAN>crosscheck archivelog all; -- 运行这个命令可以把无效的expired的archivelog标出来。
RMAN>delete expired archivelog all; -- 直接全部删除过期的归档日志。
RMAN>delete noprompt archivelog until time "sysdate -3"; -- 也可以直接用一个指定的日期来删除。
到这里就彻底ok了。接下来重新打开数据库:正常使用。
注意:
在删除归档文件中有一点要注意,通过命令窗口显示显示归档文件都在E:\app\Administrator\flash_recovery_area\CRM\ARCHIVELOG 下,但是我们不能手工在操作系统中直接把这些文件删除掉,这是因为在controlfile中记录着每一个archivelog的相关信息,当我们在OS中删除这些文件后,我们的controlfile中仍然记录着这些archivelog的信息,因此在Oracle的OEM管理器中还会存在这些日志。因为当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,也就是oracle并不知道这些文件已经不存在了。所以还是要通过命令窗口去执行删除这些文件的命令。
备注:
归档日志其实是为了方便我们在恢复数据库时使用的,但是有时候这些归档日志有时确实会给我们带来一点点的小麻烦,所以这些归档日志还是需要我们去注意的。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。