Oracle 数据库归档日志满或归档空间满处理方案
金蝶云社区-杨银芳_KD508
杨银芳_KD508
2人赞赏了该文章 3,476次浏览 未经作者许可,禁止转载编辑于2020年04月12日 16:47:43
summary-icon摘要由AI智能服务提供

本文概述了Oracle数据库归档日志满或归档空间满的处理方案。包括如何查看归档占用的空间大小及路径,通过SQL和RMAN命令删除归档日志的步骤,特别介绍了在删除前备份归档日志的方法。此外,还提出了数据库归档管理建议,包括物理RMAN备份的重要性,关闭归档模式的操作方法,并强调了不进行物理备份直接开启归档可能带来的风险。

Oracle 数据库归档日志满或归档空间满处理方案

现象:
数据库登录报archived error归档相关的错误,说明数据库归档错误,一般是归档空间满导致。

如何查归档占用的空间大小及归档日志所在的路径:
在 SQL>下执行 archive log list; 可以看到归档数据库归档文件所在路径,如果用的是
USE_DB_RECOVERY_FILE_DEST 归档目的的,
通过 SQL>show parameter recovery_file 可以看到归档路径及归档空间设置最大大小,如果用
的是其它归档路径,则到操作系统归档路径下查归档占用大小及总空间大小。

删除归档日志处理步骤:
1.数据库启动 MOUNT 状态
$sqlplus / as sysdba
sql>shutdown immeiate --如果卡住,则试 shutdown abort
sqL>startup mount --数据库启动 MOUNT 状态
SQL>exit
2.进入 RMAN,清掉 7 天前的归档日志
$rman target /
rman>crosscheck archivelog all;
rman>delete noprompt expired archivelog all;
rman>delete archivelog until time 'sysdate-7';
3.数据库启到 OPEN 状态
$sqlplus / as sysdba
sql>alter database open
如果想把删除的归档先做备份,然后再进行删除,则用以下这种方法,不过清理时间可能会较长,如与所示:

单独备份归档日志,并进行清理的脚本:
rman>backup archivelog all format '/backup/dbL0arc_%d_%s_%p_%c.arc' tag 'dbL0' filesperset 10
delete all input; --/backup/这个目录要改为现场以前归档文件备份存放的目录名称
建议用单独的归档目录存 Oracle 数据库的归档,设置方法见
https://vip.kingdee.com/article/43437547444568084


附录:
如果数据库没有做物理 RMAN 备份,不建议开启数据库归档(易导致归档空间满数据库宕机,应用不可用。只要中间有些归档文件删了,就不能进行有效的通过归档文件进行数据库还原);建议客户的 DBA 进行物理 RMAN 备份部署,或找第三方厂家(如 Oracle、金蝶等公司、数据库代理商)购买相关的专项服务处理。
Oracle 数据库关闭归档方法:
1.以 SYS 用户登录数据库到 SQL>下,其中 C:\:为 Windows 操作系统,#:为非 Windows 操作
系统
C:\>或#下执行:sqlplus / as sysdba
2.数据库进入到 mount 状态
sql>startup mount
3.关闭归档
sql>alter database noarchivelog;
4.打开数据库
sql>alter database open;