背景:多个用户同时做测试数据,有时候突然Oracle系统就崩溃了,然后报一个
ORA-00257: archiver error. Connect internal only, until freed
的错误,之后怎么连接都连接不上。
之前也见过这种问题,想起可能是归档日志满了,%oracle_home%10.1.0flash_recovery_area下面看了一下,大概有5个G的日志。
想应该是归档日志太大了,当时又是了几下,还是登录不上数据库。
看了些网上的资料,有用的较少。
本次的实验如下:
1)我把数据库的“tnsname”文件的共享模式改成专有模式。
2)重新启动了一下监听和服务
3)再次用sys用户登录
这次奇迹般的登录进去了。
sqlplus sys/password@oracle as sysdba。 sys是用户名,oracle是数据库名字
后面的就是清除归档文件了。
关掉cmd窗口,重新打开后用rman target sys/password@ims 命令进入RMAN命令行后执行
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all; 就可以删除所有过期的日志文档并释放空间
或者删除指定时间之前的archivelog:
DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';(指定删除7天前的归档日志)
然后再做测试数据,问题就没有了。
PS:有人说直接删除物理日志文档释放空间不行,实验证明直接删除物理日志文档释放空间也没问题。