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:oracleora92databasearchive Oldest online log sequence 131 Next log sequence to archive 133 Current log sequence 133

原文地址:https://www.cnblogs.com/lj821022/p/4973667.html