ORA-00257: 归档程序错误。在释放之前仅限于内部连接
今天发现oracle数据库连不上,报错:ORA-00257: 归档程序错误。在释放之前仅限于内部连接
马上联想到可能是空间满了,一看磁盘目录,果然。
解决方法如下:
1:查看归档日志目录。
登陆账号后执行命令: show parameter log_archive_dest;
结果如:
NAME TYPE VALUE
---------------------------- ------
log_archive_dest string
log_archive_dest_1 string location=E:\archive_log
【手工处理方法】
1)将E:\archive_log下的相关ARCHIVELOG日志文件移到别的文件系统下(保留最近一段时间的ARCHIVELOG日志即可,其他的可移走,可用系统命令mv移走)。然后打包、压缩,备份到介质上,此时可将这些移出的文件删除。注意:别在原来的目录打包了,否则空间占满了就有些麻烦了。
2)以oracle用户登录,执行rman target /。如有多个实例此时执行rman target 用户名/密码@实例名,如:rman target user1/passwd1@orcl 进入rman 如下图:
3)在rman中执行
RMAN>list archivelog all; /*列出所有的归档日志文件
RMAN>crosscheck archivelog all; /*与物理归档日志文件保持同步,之前移走了一部分文件,因此执行此命令后会在E:\archive_log目录下找不到的归档日志标记为expired
RMAN>list expired archivelog all; /*列出所有expired(过期)的归档日志文件,此时你就可看到移走的归档日志文件均被标记为expired
RMAN>delete expired archivelog all; /*在oracle中删除所有过期的expired文件
RMAN>list archivelog all; /*再列出所有的归档日志文件,就可发现移走的日志文件被删掉了
RMAN>exit /*退出
【自动配置方法】
1、配置RMAN自动管理ARCHIVELOG。也可在RMAN中将数据备份到磁带上,然后将过期的ARCHIVELOG删除;
具体操作待详查
附录:
sqlplus sys/DHHZDHHZ@ORCL AS sysdba 1、开启归档
a. 关闭数据库shutdown immediate b. startup mount
c. alter database archivelog ; d. alter database opne ; 2、禁止归档
a. 关闭数据库shutdown immediate b. startup mount
c. alter database noarchivelog ; d. alter database open ;
3、归档信息可以通过如下语句查看 SQL> archive log list
Database log mode Archive Mode Automatic archival Enabled
Archive destination E:\oracle\ora92\database\archive Oldest online log sequence 131 Next log sequence to archive 133 Current log sequence 133