前言

当Oracle 归档日志满了后,将无法正常登入oracle,需要删除一部分归档日志才能正常登入ORACLE。
最近同事在工作中遇到一个问题,他那边的一套Oracle 11g数据库使用RMAN没办法删除旧的归档,导致磁盘使用率很高。
oracle@ps251n2s:[/opt/oracle/archive/db] ls -ltr |more total 3059881082 -rw-r----- 1 oracle oinstall 725320704 May 20 2016 1_1_91233774.dbf -rw-rw---- 1 oracle oinstall 1756937216 Jun 7 2016 1_2_91233774.dbf -rw-rw---- 1 oracle oinstall 1756731392 Jun 21 2016 1_3_91233774.dbf -rw-rw---- 1 oracle oinstall 1758001152 Jul 3 2016 1_4_91233774.dbf -rw-rw---- 1 oracle oinstall 1756729344 Jul 15 2016 1_5_91233774.dbf -rw-rw---- 1 oracle oinstall 1765750784 Jul 26 22:00 1_6_91233774.dbf -rw-rw---- 1 oracle oinstall 1760346112 Aug 6 14:04 1_7_91233774.dbf ......
使用RMAN list archivelog all;查看日志也没有显示旧归档日志的记录
RMAN> list archivelog all; using target database control file instead of recovery catalog List of Archived Log Copies for database with db_unique_name DBS ===================================================================== Key Thrd Seq S Low Time ------- ---- ------- - --------- 1206 1 1206 A 14-JAN-17 Name: /opt/oracle/archive/db/1_1206_91233774.dbf 1207 1 1207 A 14-JAN-17 Name: /opt/oracle/archive/db/1_1207_91233774.dbf 1208 1 1208 A 14-JAN-17 Name: /opt/oracle/archive/db/1_1208_91233774.dbf ......
使用crosscheck检查也没有查到旧归档日志记录
RMAN> crosscheck archivelog all; using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=16 device type=DISK validation succeeded for archived log archived log file name=/opt/oracle/archive/db/1_1206_91233774.dbf RECID=1206 STAMP=933244655 validation succeeded for archived log archived log file name=/opt/oracle/archive/db/1_1207_91233774.dbf RECID=1207 STAMP=933249510 validation succeeded for archived log archived log file name=/opt/oracle/archive/db/1_1208_91233774.dbf RECID=1208 STAMP=933254500 validation succeeded for archived log archived log file name=/opt/oracle/archive/db/1_1209_91233774.dbf RECID=1209 STAMP=933259445 validation succeeded for archived log
查看v$archived_log视图也没有旧归档日志记录
解决过程
于是在网上找到一篇文章,大体意思是MAN删除归档日志的依据是controlfile中记录的归档日志,而不是你磁盘上实际存在的归档日志,如果你的归档日志已经不在controlfile中就无法被RMAN识别到,也就无法被删除。而致于归档信息何时在控制文件中被覆盖,这由一个参数control_file_record_keep_time来控制。
查看数据库中的参数是默认的7天
SYS@db> show parameter CONTROL_FILE_RECORD_KEEP_TIME NAME TYPE VALUE ------------------------------------ -------------------------------- ------------------------------ control_file_record_keep_time integer 7
难道是在控制文件中归档日志的记录条数只能保留7天的么?于是到MOS去找相关文档找到一篇Why Are Controlfile Entries For Archived Logs Not Overwritten After CONTROL_FILE_RECORD_KEEP_TIME? (文档 ID 1056085.1),文档介绍CONTROL_FILE_RECORD_KEEP_TIME参数并不是强制在控制文件中保留多少天的归档日志条目,而是由V$CONTROLFILE_RECORD_SECTION视图中的ARCHIVED LOG条目去控制的,当RECORDS_TOTAL=RECORDS_USED时旧的归档日志就会被覆盖掉。
于是查数据库中的V$CONTROLFILE_RECORD_SECTION视图,看到ARCHIVED LOG行的records_total=224意味着控制文件中只能保留224条归档日志文件信息。
SYS@dbs> select * from v$controlfile_record_section where type='ARCHIVED LOG'; TYPE RECORD_SIZE RECORDS_TOTAL RECORDS_USED FIRST_INDEX LAST_INDEX LAST_RECID ---------------------------- ----------- ------------- ------------ ----------- ---------- ---------- ARCHIVED LOG 584 224 224 88 87 1235
查询v$archived_log视图,总数为224条
SYS@dbs> select count(*) from v$archived_log; COUNT(*) ---------- 224
这时应该可以推断出由于控制文件中只能保留224条归档日志数据,所以以前的归档信息已经被控制文件刷出,RMAN无法识别到这些归档文件,所以就无法删除这些归档日志。
那么现在如果使用RMAN删除这些旧的归档日志呢?我想到使用catalog start with 命令重新注册这些文件到控制文件中
RMAN> catalog start with '/opt/oracle/archive/db'; ...... File Name: /opt/oracle/archive/db/1_1005_91233774.dbf File Name: /opt/oracle/archive/db/1_1006_91233774.dbf File Name: /opt/oracle/archive/db/1_1007_91233774.dbf Do you really want to catalog the above files (enter YES or NO)? yes cataloging files... cataloging done ...... RMAN> list archivelog all; ..... 1236 1 301 A 22-OCT-16 Name: /opt/oracle/archive/db/1_301_91233774.dbf 1237 1 302 A 22-OCT-16 Name: /opt/oracle/archive/db/1_302_91233774.dbf ......
旧的归档日志文件已经注册到控制文件中了,再使用RMAN进行删除就可以了
delete archivelog until logseq 1007;
再次查询v$controlfile_record_section视图,records_total也被“撑”大了
SYS@db> select * from v$controlfile_record_section where type='ARCHIVED LOG'; TYPE RECORD_SIZE RECORDS_TOTAL RECORDS_USED FIRST_INDEX LAST_INDEX LAST_RECID ---------------------------- ----------- ------------- ------------ ----------- ---------- ---------- ARCHIVED LOG 584 896 742 807 652 1800
至此问题结束。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# oracle
# rman
# 归档日志
# 删除归档
# rman删除归档日志
# Oracle数据库如何删除归档日志文件
# Oracle删除归档日志及添加定时任务
# 解决Oracle数据库归档日志占满磁盘空间问题
# Oracle查询最近几天每小时归档日志产生数量的脚本写法
# Oracle归档日志写满(ora-00257)了怎么办
# win平台oracle rman备份和删除dg备库归档日志脚本
# oracle的归档模式 ORACLE数据库归档日志常用命令
# Linux下Oracle归档日志自动清理脚本代码(sh)
# oracle 如何关闭打开归档日志
# Oracle归档日志文件(查看、配置、删除)
# 登入
# 文档
# 数据库中
# 就会
# 是在
# 也就
# 也没
# 是由
# 没办法
# 去找
# 大了
# 中了
# 满了
# 一个问题
# 这篇文章
# 才能正常
# 谢谢大家
# 中就
# 无法正常
# 在工作中
相关文章:
如何自定义建站之星网站的导航菜单样式?
制作证书网站有哪些,全国城建培训中心证书查询官网?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
如何在IIS管理器中快速创建并配置网站?
建站之星logo尺寸如何设置最合适?
详解jQuery停止动画——stop()方法的使用
如何高效搭建专业期货交易平台网站?
专业网站建设制作报价,网页设计制作要考什么证?
已有域名和空间,如何快速搭建网站?
南平网站制作公司,2025年南平市事业单位报名时间?
如何快速上传自定义模板至建站之星?
如何在Golang中使用replace替换模块_指定本地或远程路径
昆明网站制作哪家好,昆明公租房申请网上登录入口?
建站主机是否等同于虚拟主机?
在线制作视频网站免费,都有哪些好的动漫网站?
建站之星如何一键生成手机站?
西安专业网站制作公司有哪些,陕西省建行官方网站?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
开源网站制作软件,开源网站什么意思?
制作表格网站有哪些,线上表格怎么弄?
实例解析angularjs的filter过滤器
html制作网站的步骤有哪些,iapp如何添加网页?
如何快速生成凡客建站的专业级图册?
网站代码制作软件有哪些,如何生成自己网站的代码?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
岳西云建站教程与模板下载_一站式快速建站系统操作指南
建站之星如何配置系统实现高效建站?
网站按钮制作软件,如何实现网页中按钮的自动点击?
定制建站模板如何实现SEO优化与智能系统配置?18字教程
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
如何在云服务器上快速搭建个人网站?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
建站之星安装失败:服务器环境不兼容?
建站之星如何优化SEO以实现高效排名?
青岛网站建设如何选择本地服务器?
学校免费自助建站系统:智能生成+拖拽设计+多端适配
动图在线制作网站有哪些,滑动动图图集怎么做?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
c++ stringstream用法详解_c++字符串与数字转换利器
网站制作壁纸教程视频,电脑壁纸网站?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
宝塔新建站点为何无法访问?如何排查?
宝塔建站无法访问?如何排查配置与端口问题?
招贴海报怎么做,什么是海报招贴?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
*请认真填写需求信息,我们会在24小时内与您取得联系。