11g主库归档自动删除的小问题分析

最近在无疑中查看一个数据库的日志的时候,发现里面有这么一段内容。

Sat Feb 06 10:07:25 2016
Deleted Oracle managed file +ARCH/testdb2/archivelog/2016_01_13/thread_1_seq_4566.261.901038877
Archived Log entry 9262 added for thread 1 sequence 4678 ID 0x26b3e123 dest 1:
Sat Feb 06 14:04:52 2016
Thread 1 advanced to log sequence 4680 (LGWR switch)
  Current log# 1 seq# 4680 mem# 0:
+DATA/testdb2/onlinelog/group_1.261.815382013
Sat Feb 06 14:04:52 2016
LNS: Standby redo logfile selected for thread 1 sequence 4680 for destination
LOG_ARCHIVE_DEST_2
Sat Feb 06 14:04:52 2016
Deleted Oracle managed file
+ARCH/testdb2/archivelog/2016_01_13/thread_1_seq_4567.258.901058415
Archived Log entry 9264 added for thread 1 sequence 4679 ID 0x26b3e123 dest 1:

这段日志的亮点就在于"Deleted Oracle managed file"
这是一个11gR2的主库,使用了ASM作为数据存储。如果看到这段自动删除归档的内容,很可能和一个特性联系起来,那就是闪回区的自动删除归档的阀值 80%,在11g ADG中会有这样的而一个特性,闪回区使用率达到80%以上的时候,会帮助清理一些过期的归档日志文件。同时出现这个问题和另外一个参数有关,那就是闪回 区的大小设置,如果太小了,使用率马上就会达到80%,所以这个参数db_recovery_file_dest_size也值得关注。
目前的参数配置为:

SQL> show parameter reco

NAME                                 TYPE        VALUE

------------------------------------ -----------
---------------

control_file_record_keep_time        integer     7

db_recovery_file_dest                string      +ARCH

db_recovery_file_dest_size           big integer 100G

db_unrecoverable_scn_tracking        boolean     TRUE

recovery_parallelism                 integer     0

那么这个问题中,先不说主备库是否都使用哪个特性,先看看主库闪回区使用率到底是多少呢?

SQL>select *from v$flash_recovery_area_usage;

FILE_TYPE            PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES

-------------------- ------------------
------------------------- ---------------

CONTROL FILE                        .01                         0               1

REDO LOG                              0                         0               0

ARCHIVED LOG                       3.92                      3.89             112

BACKUP PIECE                          0                         0               0

IMAGE COPY                            0                         0               0

FLASHBACK LOG                         0                         0               0

FOREIGN ARCHIVED LOG                  0                         0               0

所以这个问题就比较奇怪了,使用率远远没有达到80%的阀值,怎么会自动删除呢,当然查看了MOS也发现了一些相关的bug,(4911954),有的可能是v$flash_recovery_area_usage和V$RECOVERY_FILE_DEST的数据情况会有较大出入,会有这种情况,不过我的这个环境从版本的日志来看,是没有关系的。

FILE_TYPE            PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES

-------------------- ------------------
------------------------- ---------------

CONTROL FILE                        .01                         0               1

REDO LOG                              0                         0               0

ARCHIVED LOG                       3.92                      3.89             112

BACKUP PIECE                          0                         0               0

IMAGE COPY                            0                         0               0

FLASHBACK LOG                         0                         0               0

FOREIGN ARCHIVED LOG                  0                         0               0

然后继续找可能的情况,从日志中发现了一个特别的情况,也是规律,那就是删除的归档是24天以前的,切一次日志,删除一次24天以前的旧归档。
可以通过rman中的操作 crosscheck
archivelog all观察和分析日志得出。

RMAN>crosscheck archivelog
all;
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=1668 device type=DISK
validation succeeded for archived log
archived log file name=+ARCH/testdb2/archivelog/2016_01_14/thread_1_seq_4568.369.901073863
RECID=9042 STAMP=901073862
validation succeeded for archived log
archived log file
name=+ARCH/testdb2/archivelog/2016_01_14/thread_1_seq_4569.262.901095119
RECID=9043 STAMP=901095118
validation succeeded for archived log
archived log file
name=+ARCH/testdb2/archivelog/2016_01_14/thread_1_seq_4570.259.901095121
RECID=9045 STAMP=901095121

关于归档的删除策略,其实从rman中也可以做一些配置。如果配置是这样的情况,删除策略就是保留24天。
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 24 DAYS;
不过我这个问题的情况还不是,rman的配置都是取默认,只有一条新增的配置。
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
这个时候,怎么通过sql语句来查看rman中的相关设置呢,主要可以通过下面的方式来看。
SELECT NAME,VALUE FROM V$RMAN_CONFIGURATION;
当然里面只有一条自定义的配置

NAME                          
VALUE
------------------------------ ------------------------------
ARCHIVELOG DELETION POLICY     TO APPLIED ON ALL STANDBY

我们这个时候来简单测试一下这个配置的影响。取消自定义的配置。取默认值。

RMAN> CONFIGURE ARCHIVELOG
DELETION POLICY clear;
old RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
RMAN configuration parameters are successfully reset to default value

然后手工切换一次日志。得到的日志如下,又看到了一些额外的信息。

Sat Feb 06 22:16:30 2016
Thread 1 advanced to log sequence 4683 (LGWR switch)
  Current log# 7 seq# 4683 mem# 0:
+DATA/testdb2/onlinelog/group_7.271.817297835
Sat Feb 06 22:16:30 2016
Trying to expand controlfile section 11 for Oracle Managed Files
Expanded controlfile section 11 from 224 to 448 records
Requested to grow by 224 records; added 8 blocks of records
LNS: Standby redo logfile selected for thread 1 sequence 4683 for destination
LOG_ARCHIVE_DEST_2
Sat Feb 06 22:16:30 2016
Archived Log entry 9270 added for thread 1 sequence 4682 ID 0x26b3e123 dest 1:

对于看起来有些陌生的日志,当然也是集各家之言。
有一个老外的建议非常专业,我就直接贴出来了,对于这些日志的说明,他的解释如下:

this is nothing to worry
about.
the following is an extract from metalink

Starting in Oracle8 the
controlfile is automatically expanded.
A new datafile is added beyond the maxdatafiles limited specified
in the control file.

This also happens if new records are added to the "log_history"
section of
the control files and there are no entries that could be replaced.

The routine that performs the expansion writes this message to the alert log.
The messages specifies the section that was expanded and the amount of
the expansion. Please note that this message cannot be turned off.

好了,看到这里,我们还是很有必要去看一下涉及的视图 v$controlfile_record_section,

修改rman配置之后的视图内容如下,只显示了alert日志中说明的部分section 11相关的记录。

TYPE         RECORD_SIZE RECORDS_TOTAL RECORDS_USED FIRST_INDEX LAST_INDEX LAST_RECID

------------ ----------- ------------- ------------
----------- ---------- ----------

LOG HISTORY           56           292          292          12         11       4683

所以这个问题又指向了控制文件,对于控制文件,我们有一个数据库参数相关。

SQL> show parameter control_file_record_keep_time

NAME                                 TYPE        VALUE

------------------------------------ -----------
---------

control_file_record_keep_time        integer     7
所以通过日志中的一条信息,逐步测试最后发现了一些意料之外的情况,还是需要好好琢磨琢磨这些内容。

时间: 2024-10-10 05:21:34

11g主库归档自动删除的小问题分析的相关文章

Linux怎么自动删除归档日志文件?Linux自动删除归档日志文件的教程

1.日志删除策略 自动删除7天前的归档日志与备份文件. 2.调度计划 0 0 * * * nohup sh /db2backup/script/auto_rm_logs.sh & 3.日志删除脚本 auto_rm_logs.sh #!/bin/sh #------------------------------------- # rm db2 archive log file and *.tgz files @hury # create @2016-12-13 # script name:aut

RMAN 配置归档日志删除策略

        Oracle 11g中对于归档日志的删除,除了遵循RMAN保留策略外,也可以通过RMAN来配置归档日志的删除策略,也就是归档日志何时可以被删除.归档日志删除策略适用于所有归档位置(使用快速闪回区FRA/不使用FRA).本文主要描述归档日志删除策略并给出了具体的演示.  1.关于归档日志删除策略      也就是哪些归档日志符合删除策略能够被删除,如前所述,归档位置适用于所有归档位置(使用快速闪回区FRA/不使用FRA)      当启用该策略后,如归档日志存在于FRA中,则Ora

windows 7上如何更改oracle 11g的归档模式

在win7上更改oracle 11g的归档模式,描述包括可能遇到的错误,这些错误也是写这篇博文的初衷,就是为了让其它通道避免同样的错误,或者碰到同样的错误指导如何解决,因为命令已经很清楚,所以就不详细解释. SQL> conn sys/oracle@osid as sysdba 已连接. SQL> select instance_name from V$instance; INSTANCE_NAME -------------------------------- osid SQL> a

360安全卫士怎么自动删除补丁文件

  现在,电脑都会提醒要安装补丁.但是安装完后,很多人多久放着补丁文件不管,这是占据电脑内存,导致电脑速度变慢.那么,360安全卫士怎么自动删除补丁文件?今天小编就给大家带来360安全卫士怎么设置自动删除补丁文件. 360安全卫士设置自动删除补丁文件的设置步骤 1.启动360安全卫士,点击选择程序界面右上角的[主菜单]按钮.(如图所示) 2.在[主菜单]下,点击选择[设置]选项.(如图所示) 3.在[360设置中心]界面下,点击选择[漏洞修复]--[补丁保存设置]--[定期自动删除补丁文件]--

批处理 vbs-求一个批处理或者vbs,自动运行这个小程序

问题描述 求一个批处理或者vbs,自动运行这个小程序 这段时间win7安装完更新之后,右下角可能会出现升级Windows 10的图标,在网上找到一个"I don't want Windows 10.exe"这个小程序可以卸载KB3035583这个更新,非常方便. 运行这个小程序之后,点一下默认的"I Agree"摁扭,再点一下卸载该更新的"确定"摁扭,就好了,全是默认的,回车键就行. 请求哪位大侠帮我写一个批处理,双击批处理就能运行这个小程序,静

Pelican上增加评论和自动删除文章的一些坑

增加评论功能 这个网上有很多描述,主要是去disqus注册下,然后设置下配置文件example坑主要在于Pelican的默认主题是没有disqus的模板的,所以虽然看到了对disqus的请求,却看不到评论区.需要自己下个比较全的主题. 自动删除文件 在content里删除了md文件,重新make html后在output中依然会看到那个md文件生成的html文件. 一个方法是加入配置DELETE_OUTPUT_DIRECTORY = True来每次清空output,但是这带来了两个问题: 自动日

excel2010批量删除超链接小技巧

  excel2010批量删除超链接小技巧 excel2010 批量取消Excel单元格中超链接的方法非常多,但Excel 2010以前的版本都没有提供直接的方法,在Excel 2010中直接使用功能区或右键菜单中的命令就可以了. 选择所有包含超链接的单元格.无需按Ctrl键逐一选择,只要所选区域包含有超链接的单元格即可.要取消工作表中的所有超链接,按Ctrl+A或单击工作表左上角行标和列标交叉处的全选按钮选择整个工作表.在功能区中选择"开始"选项卡,在"编辑"组中

MySQL定期自动删除表

  单位8亿多条的日志表,经过自动分表之后,需要自动删除30天前创建的日志表. 但是只是在Master下线这些日志表,而Slave还需要保持在线,以备查询. 由于Master-Slave结构,在Drop表之前,设置@@session.sql_log_bin=0,那么Drop的行为就没有记录到binlog,所以Slave的日志表就会被保留. 模拟环境如下, mysql> show tables; +---------------------------------+ | Tables_in_edm

excel表格自动生成分页小计的方法

  excel表格自动生成分页小计的方法           如下图所示的数据表,需要完成分页小计功能.(每5行一页) 操作步骤: 步骤1 :在最前面插入一列,在2至6行输入1,7至11行输入2.然后先取A2:A11,双击右下角向下填充,填充方式为复制单元格. 步骤2:选取整个数据表,数据 - 分类汇总 ,在打开的分类汇总窗口中,汇总项选数量和金额.另外还要选中"每组数据分页"的选项. 设置完成后即完成自动分页小计的设置,如下图所示.