如何清除Oracle控制文件中的无用记录,例如v$archived

 我来答
育知同创教育
2016-02-15 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
一些解决方案,包括
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
renfengjun1986
2018-07-06 · 知道合伙人软件行家
renfengjun1986
知道合伙人软件行家
采纳数:925 获赞数:1553
中国地质调查局特聘数据库专家 CSDN博客专家 百度知道数据库行家 炼数成金版主 想了解更多请关注我的博客:

向TA提问 私信TA
展开全部
control file中的内容都是由oracle数据库本身来维护的。
想清除无效的归档内容,可以使用rman命令,
crosscheck archivelog all;
delete expired archivelog all ;
来实现。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一骑当后
2015-02-15 · 知道合伙人数码行家
一骑当后
知道合伙人数码行家
采纳数:40292 获赞数:306468
网络、设备维护、电路、弱电检测。

向TA提问 私信TA
展开全部
  有这样一种需求,虽然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 然后等待记录被重用
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式