Oracle数据库归档日志满了后的处理方法
IT行业,开发、测试在日常工作中可能会碰到Oracle数据库归档日志满了导致
Oracle连接(ORA-00257)报错的问题,本次通过图文形式详细描述如何处理该问题!
工具/原料
-
装有Oracle数据库的电脑
方法/步骤
可以通过加日志空间,或者删除日志的方式来处理,也可以2个方法都用上。
第一种:加日志空间
1、先cmd命令连接到数据库:有多个数据库需要指定连接的实例SID
最高权限连接到指定tbh实例:sqlplus /@tbh as sysdba
2、连接到实例后,确定下是否是我们所需要处理的数据库实例:
查看当前连接的数据库的sid:select instance_name from v$instance;
3、确认是后,先关闭例程,再启动例程(相当于初始化环境,排除干扰)shutdown abort;startup mount
4、查看下归档日志空间情况:select * from v$recovery_file_dest;
5、增加归档日志空间大小: alter system set db_recovery_file_dest_size=20G scope=both;(这里增加20G,可以自行调整)
6、启动数据库:alter database open;
第二种方式:删除归档日志
1) 先命令连接到数据库:有多个数据库需要指定连接的实例SID
最高权限连接到指定实例:sqlplus /@tbh as sysdba
2) 连接到实例后,确定下是否是我们所需要处理的数据库实例:
查看当前连接的数据库的sid:select instance_name from v$instance;(如果此处报错,可以跳过,先关闭例程,在开启后再查看)
3) 确认是后,先关闭例程,再启动例程(相当于初始化环境,排除干扰):shutdown abort;startup mount
4) 查看下归档日志空间情况:select * from v$recovery_file_dest;
5)重新开一个cmd,指定实例:SET ORACLE_SID = tbh
6)在进入rman,rman target 用户名/口令@例程(注意:以下命令均在rman下执行)
7) 输入list archivelog all; -- 显示所有的日志及日志地址
8) 输入crosscheck archivelog all; --运行这个命令可以把无效的expired的archivelog标出来
9) 输入delete expired archivelog all; ---删除所有的无效日志
10) 或者输入delete noprompt archivelog until time "sysdate -3"; -- -即删 除3天前的归档日志 11) 启动数据库:alter database open;