如何清除Oracle控制文件中的无用记录,例如v$archived_log中的deleted归档日志记录


有这样一种需求,虽然controlfile中的archivelog和其他一些备份信息会被覆盖重用,受到参数control_file_record_keep_time的影响,但是我们没法手动触发这种重用,这导致有时候controlfile中的archivelog 记录过多,可能导致一些备份、恢复过程中的”control file sequential read”等待事件。


已知的一些解决方案,包括:

1. 重建控制文件, 例如 backup controlfile to trace后重建该控制文件,但要求有数据文件均存在

2. 设置control_file_record_keep_time=0 然后等待记录被重用, 太过被动了….

 

这里再介绍一种手动清除v$ARCHIVED_LOG中不管是DELETED还是available 记录的方法,注意不要在你的产品数据库上这样做:

SQL> select count(*) from v$archived_log;

COUNT(*)
———-
553

SQL> /

COUNT(*)
———-
553
SQL> execute sys.dbms_backup_restore.resetCfileSection( 11);

PL/SQL procedure successfully completed.

SQL> select count(*) from v$archived_log;

COUNT(*)
———-
0

 

PROCEDURE resetCfileSection(record_type IN binary_integer );

— This procedure attempts to reset the circular controlfile section.

— Input parameters:
— record_type
— The circular record type whose controlfile section is to be reset.

 

execute sys.dbms_backup_restore.resetCfileSection( 11);  ==> 清理v$ARCHIVED_LOG对应的记录

execute sys.dbms_backup_restore.resetCfileSection(28);  ==>清理v$rman_status对应的记录

 

以上是2个例子,具体的section_id可以这样获得:

 

1* select rownum-1, type from v$controlfile_record_section
SQL> /

ROWNUM-1 TYPE
———- —————————-
0 DATABASE
1 CKPT PROGRESS
2 REDO THREAD
3 REDO LOG
4 DATAFILE
5 FILENAME
6 TABLESPACE
7 TEMPORARY FILENAME
8 RMAN CONFIGURATION
9 LOG HISTORY
10 OFFLINE RANGE
11 ARCHIVED LOG
12 BACKUP SET
13 BACKUP PIECE
14 BACKUP DATAFILE
15 BACKUP REDOLOG
16 DATAFILE COPY
17 BACKUP CORRUPTION
18 COPY CORRUPTION
19 DELETED OBJECT
20 PROXY COPY
21 BACKUP SPFILE
22 DATABASE INCARNATION
23 FLASHBACK LOG
24 RECOVERY DESTINATION
25 INSTANCE SPACE RESERVATION
26 REMOVABLE RECOVERY FILES
27 RMAN STATUS
28 THREAD INSTANCE NAME MAPPING
29 MTTR
30 DATAFILE HISTORY
31 STANDBY DATABASE MATRIX
32 GUARANTEED RESTORE POINT
33 RESTORE POINT

LOG History占用的控制文件记录数可以查询v$controlfile_record_section获得:

 

SQL> select * from v$controlfile_record_section where type='LOG HISTORY' ;

TYPE RECORD_SIZE RECORDS_TOTAL RECORDS_USED FIRST_INDEX LAST_INDEX LAST_RECID
—————————- ———– ————- ———— ———– ———- ———-
LOG HISTORY 56 584 563 300 278 570

control file sequential read

Reading from the controlfile. This happens in many cases, e.g. while:

– making a backup of the controlfiles.

– the shared info (between instances) from the controlfile.

– reading other blocks from the controlfiles.

– reading the header block.

Wait time

The wait time is the elapse time of the read.

Parameters

file#

This identifies the controlfile that Oracle7 is reading from and with the following SQL statement one can determine the name of the controlfile:

select *

from x$kcccf

where indx = file#

block#

Blocknumber in the controlfile from where we are starting to read. The blocksize is the as the physical blocksize of the port (normally 512 bytes, some UNIX ports have 1 Kilobytes or 2 Kilobytes).

blocks

The number of blocks that we are trying to read.

Advise

If the wait time is too long (more then average I/O speed), check if the controlfiles are not a disk that is too busy. This could really impact Parallel Server performance as some of the synchronization between instances is done through the controlfiles.


相关文章 | Related posts:

  1. control file sequential read等待事件 加入dbDao.com Oracle技术学习QQ群:171092051 This is a read from […]...
  2. 如何rename datafile name中存在乱码的数据文件 加入dbDao.com Oracle技术学习QQ群:171092051 存在这样的情况create table […]...
  3. control file parallel write等待事件 加入dbDao.com Oracle技术学习QQ群:171092051 This event occurs w […]...
  4. Oracle Controlfile控制文件中记录的信息片段sections 加入dbDao.com Oracle技术学习QQ群:171092051 初学Oracle的朋友肯定对Contr […]...
  5. VIEW:X$KCCRS-Controlfile Record Section directory (8.0 – 8.1) 加入dbDao.com Oracle技术学习QQ群:171092051 View: X$KCCRS [K]er […]...
  6. 11g Release 2 enhanced Tablespace Point In Time Recovery 加入dbDao.com Oracle技术学习QQ群:171092051 11g release 2中引入了针对 […]...
  7. 【转】ASM + AMDU 加入dbDao.com Oracle技术学习QQ群:171092051 AMDU just extracts […]...
  8. direct path read等待事件 加入dbDao.com Oracle技术学习QQ群:171092051 Sometimes related t […]...
  9. direct path read temp等待事件 加入dbDao.com Oracle技术学习QQ群:171092051 Often related to so […]...
  10. Rolling a Standby Forward using an RMAN Incremental Backup 加入dbDao.com Oracle技术学习QQ群:171092051 Rolling a Standby F […]...

原文地址:http://www.askmaclean.com/archives/cleanup-controlfile-sectio-record-deleted-archivelog.html


<think>我们正在分析用户的问题:用户想理解Oracle查询语句中`SYS.V_$ARCHIVED_LOG@ODSORCL`的具体含义以及其作用。首先,分解这个对象:1.`SYS`:这是Oracle的一个内置用户,拥有数据字典和很多系统视图。2.`V_$ARCHIVED_LOG`:这是一个动态性能视图,其同义词通常为`V$ARCHIVED_LOG`。它记录了关于归档日志的信息,比如归档日志文件名、序列号、大小、完成时间等。注意:`V$ARCHIVED_LOG`实际上是`V_$ARCHIVED_LOG`的同义词。3.`@ODSORCL`:这是一个数据库链接(dblink),指向名为`ODSORCL`的数据库实例。所以,整个对象`SYS.V_$ARCHIVED_LOG@ODSORCL`表示通过数据库链接`ODSORCL`访问远程数据库(实例名为ODSORCL)上SYS用户的`V_$ARCHIVED_LOG`视图。作用:该视图用于查询远程数据库的归档日志信息归档日志是Oracle数据库在重做日志切换时生成的,用于记录数据库的所有变更,是数据库恢复的重要依据。具体而言,`V$ARCHIVED_LOG`视图包含的主要信息有:-归档日志的序列号(SEQUENCE#)-归档日志文件名(NAME)-归档日志大小(BLOCKS*BLOCK_SIZE)-归档完成时间(COMPLETION_TIME)-是否已备份(BACKUP_COUNT)-等等。使用场景:1.监控归档日志的产生情况。2.在备份恢复过程中,检查归档日志的完整性。3.在搭建DataGuard物理备库时,监控归档日志的传输和应用情况。注意:由于视图属于SYS用户,且通常只有具有DBA权限的用户才能访问。通过数据库链接访问远程数据库时,需要确保本地用户有访问该远程视图的权限,并且数据库链接已经正确配置。参考用户提供的引用:-引用[3]提到了动态性能视图,其中就包括`v$archived_log`(在列表中第11条)。-引用[4]中提到了清除控制文件无用归档日志记录,其中`v$archived_log`也是相关视图。因此,我们可以这样回答用户:[用户可见层]###`SYS.V_$ARCHIVED_LOG@ODSORCL`详解####1.**组件解析**-**`SYS`**:Oracle内置超级用户,拥有数据字典和动态性能视图的所有权。-**`V_$ARCHIVED_LOG`**:动态性能视图,记录数据库生成的所有归档日志的详细信息。通常使用同义词`V$ARCHIVED_LOG`访问,但底层对象名为`V_$ARCHIVED_LOG`。-**`@ODSORCL`**:数据库链接(dblink),指向名为`ODSORCL`的远程数据库实例。>综上:该表达式表示**通过数据库链接访问远程数据库`ODSORCL`的`V$ARCHIVED_LOG`视图**。####2.**视图核心功能**`V$ARCHIVED_LOG`提供归档日志的元数据,包括:-`SEQUENCE#`:归档日志序列号(唯一标识)-`NAME`:归档日志文件的完整路径-`DEST_ID`:归档目标ID(可配置多个归档路径)-`ARCHIVED`:是否已完成归档(`YES`/`NO`)-`APPLIED`:在DataGuard中是否已应用到备库-`COMPLETION_TIME`:归档完成的时间戳-`BACKUP_COUNT`:备份次数(用于判断是否需要保留)####3.**典型应用场景**1.**备份恢复监控**检查归档日志的连续性和完整性,确保可恢复至任意时间点[^4]。```sql--查看最近10个归档日志SELECTsequence#,name,completion_timeFROMSYS.V_$ARCHIVED_LOG@ODSORCLWHERErownum<=10;```2.**DataGuard运维**监控归档日志是否成功传输并应用到物理备库:```sqlSELECTsequence#,appliedFROMSYS.V_$ARCHIVED_LOG@ODSORCLWHEREdest_id=2;--假设dest_id=2指向备库```3.**空间管理**统计归档日志大小,避免存储溢出:```sqlSELECTSUM(blocks*block_size)AStotal_sizeFROMSYS.V_$ARCHIVED_LOG@ODSORCLWHEREcompletion_time>SYSDATE-7;--近7天的归档```####4.**权限要求**-本地用户需具备`SELECT`权限(通常通过角色`SELECT_CATALOG_ROLE`或显式授权)-数据库链接`ODSORCL`需正确配置并可用---###§§注意事项§§1.**视图实时性**动态性能视图(`V$`开头的视图)的数据来自内存和控制文件[^3],重启数据库后部分数据会丢失。2.**跨库访问延迟**通过dblink查询受网络质量影响,不适用于高性能监控。3.**控制文件记录清理**当`V$ARCHIVED_LOG`中的记录不再需要时(如备份完成后),可执行控制文件清理:```sqlEXECUTESYS.DBMS_BACKUP_RESTORE.RESETCFILESECTION(11);--11对应ARCHIVEDLOG[^4]```---§§相关问题§§1.如何创建访问远程数据库的DBLink?2.OracleDataGuard中如何监控归档日志的应用延迟?3.动态性能视图(如`V$ARCHIVED_LOG`)的数据来源是什么?</think> ### `SYS.V_$ARCHIVED_LOG@ODSORCL` 详解 `SYS.V_$ARCHIVED_LOG@ODSORCL` 是Oracle数据库中的动态性能视图调用语句,核心功能是**查询归档日志信息**。以下是具体解析: #### 1. **组件解析** - **`SYS`**:Oracle内置超级用户,拥有系统级视图的访问权限。 - **`V_$ARCHIVED_LOG`**: - 动态性能视图,存储**归档日志文件**的元数据(文件名、序列号、大小、归档时间等)[^3]。 - 原始名称为`V$ARCHIVED_LOG`,但在SQL中需写为`V_$ARCHIVED_LOG`(避免`$`被解析为变量符号)。 - **`@ODSORCL`**:数据库链接(DBLink),指向名为`ODSORCL`的远程数据库实例(允许跨实例查询)。 #### 2. **核心作用** 此视图用于: 1. **监控归档日志** 查询已生成的归档日志文件(如日志序列号、归档时间、文件路径): ```sql SELECT sequence#, name, completion_time FROM SYS.V_$ARCHIVED_LOG@ODSORCL; ``` 2. **诊断备份与恢复** 检查归档日志是否完整(如备份失败导致缺失日志): ```sql SELECT sequence#, archived, applied FROM SYS.V_$ARCHIVED_LOG@ODSORCL WHERE applied = 'NO'; ``` 3. **清理控制文件记录** 配合`DBMS_BACKUP_RESTORE`包清除无用记录(如已删除归档日志)[^4]: ```sql EXECUTE SYS.DBMS_BACKUP_RESTORE.RESETCFILESECTION(11); -- 11对应ARCHIVED LOG ``` #### 3. **关键字段说明** | 字段 | 含义 | 示例值 | |------------------|--------------------------------|------------------------| | `SEQUENCE#` | 归档日志序列号 | `12345` | | `NAME` | 归档日志文件路径 | `/arch/1_12345.arc` | | `COMPLETION_TIME`| 归档完成时间 | `2024-07-15 14:30:22` | | `APPLIED` | 是否已应用到备库 (Data Guard) | `YES`/`NO` | | `DELETED` | 是否已被删除 | `YES`/`NO` | #### 4. **典型应用场景** - **备份验证**:确保RMAN备份包含所有必需的归档日志。 - **空间管理**:统计归档日志占用空间: ```sql SELECT SUM(blocks * block_size) AS total_size FROM SYS.V_$ARCHIVED_LOG@ODSORCL WHERE completion_time > SYSDATE - 30; ``` - **Data Guard监控**:检查归档日志是否同步到备库。 #### 5. **注意事项** 1. **权限要求**:需授予用户`SELECT`权限(通常通过`SELECT_CATALOG_ROLE`角色)[^3]。 2. **动态性**:视图数据来自内存和控制文件,重启数据库后部分记录丢失。 3. **清理机制**:长期不清理可能导致控制文件过大,需定期执行`RESETCFILESECTION`[^4]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值