[20160712]logminer 与rman 删除archivelog

[20160712]logminer 与rman 删除archivelog.txt

--昨天晚上使用logminer遇到的问题,主要后台的rman脚本正好删除需要的archivelog。
--再测试环境下模拟看看:

1.环境:
SCOTT@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

SCOTT@book> select sysdate from dual ;
SYSDATE
-------------------
2016-07-12 11:19:12

2.logminer:

SYS@book> alter system archive log current ;
System altered.

$ cd /u01/app/oracle/archivelog/book
$ ls -l
total 248056
-rw-r----- 1 oracle oinstall 38988288 2016-07-10 13:10:21 1_343_907434361.dbf
-rw-r----- 1 oracle oinstall 46585344 2016-07-10 22:04:44 1_344_907434361.dbf
-rw-r----- 1 oracle oinstall 46585344 2016-07-11 08:24:54 1_345_907434361.dbf
-rw-r----- 1 oracle oinstall  3506688 2016-07-11 08:40:09 1_346_907434361.dbf
-rw-r----- 1 oracle oinstall     2048 2016-07-11 08:41:56 1_347_907434361.dbf
-rw-r----- 1 oracle oinstall 43033600 2016-07-11 22:00:12 1_348_907434361.dbf
-rw-r----- 1 oracle oinstall 42801664 2016-07-12 08:26:40 1_349_907434361.dbf
-rw-r----- 1 oracle oinstall 32196608 2016-07-12 11:15:47 1_350_907434361.dbf

BEGIN
   DBMS_LOGMNR.START_LOGMNR
   (
      STARTTIME   => '2016-07-10 10:00:00'
     ,ENDTIME     => '2016-07-11 11:00:00'
     ,OPTIONS     =>   DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG
                     + DBMS_LOGMNR.CONTINUOUS_MINE
                     + DBMS_LOGMNR.COMMITTED_DATA_ONLY
   );
END;
/

SCOTT@book> @ &r/spid
       SID    SERIAL# SPID       PID  P_SERIAL# C50
---------- ---------- ------ ------- ---------- --------------------------------------------------
        68        477 52355       30        198 alter system kill session '68,477' immediate;

select * from V$LOGMNR_CONTENTS where rownum<=100000;
...

# lsof  | grep archivelog
oracle    52355  oracle  258u      REG              104,6   38988288  306348091 /u01/app/oracle/archivelog/book/1_343_907434361.dbf

--对上进程号!!打开rman删除sequence 343的archivelog。

3.使用rman删除对应archivelog:

RMAN> delete archivelog sequence 343;

using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=134 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=145 device type=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: SID=156 device type=DISK
List of Archived Log Copies for database with db_unique_name BOOK
=====================================================================

Key     Thrd Seq     S Low Time
------- ---- ------- - -------------------
204     1    343     A 2016-07-10 08:24:16
        Name: /u01/app/oracle/archivelog/book/1_343_907434361.dbf

Do you really want to delete the above objects (enter YES or NO)? yes
deleted archived log
archived log file name=/u01/app/oracle/archivelog/book/1_343_907434361.dbf RECID=204 STAMP=916837821
Deleted 1 objects

# lsof  | grep archivelog
oracle    52355  oracle  258u      REG              104,6   38988288  306348091 /u01/app/oracle/archivelog/book/1_343_907434361.dbf (deleted)

--中断会话,再次执行:

SCOTT@book> select * from V$LOGMNR_CONTENTS where rownum<=100000;
select * from V$LOGMNR_CONTENTS where rownum<=100000
*
ERROR at line 1:
ORA-01291: missing logfile
ORA-16241: Waiting for gap log file (thread# 1, sequence# 1)

--alert.log记录如下:
LOGMINER: summary for session# = 2147484417
LOGMINER: StartScn: 0 (0x0000.00000000)
LOGMINER: EndScn: 0 (0x0000.00000000)
LOGMINER: HighConsumedScn: 0
LOGMINER: session_flag: 0x0
LOGMINER: Read buffers: 8
LOGMINER: Memory LWM: limit 10M, LWM 8M, 80%
LOGMINER: Memory Release Limit: 0M
LOGMINER: Begin mining logfile for session -2147482879 thread 1 sequence 343, /u01/app/oracle/archivelog/book/1_343_907434361.dbf
Tue Jul 12 11:26:21 2016
LOGMINER: Begin mining logfile for session -2147482879 thread 1 sequence 343, /u01/app/oracle/archivelog/book/1_343_907434361.dbf

--重新来:

BEGIN
   DBMS_LOGMNR.START_LOGMNR
   (
      STARTTIME   => '2016-07-10 10:00:00'
     ,ENDTIME     => '2016-07-11 11:00:00'
     ,OPTIONS     =>   DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG
                     + DBMS_LOGMNR.CONTINUOUS_MINE
                     + DBMS_LOGMNR.COMMITTED_DATA_ONLY
   );
END;
/

SCOTT@book> select * from V$LOGMNR_CONTENTS where rownum<=100000;
select * from V$LOGMNR_CONTENTS where rownum<=100000
*
ERROR at line 1:
ORA-01291: missing logfile
ORA-16241: Waiting for gap log file (thread# 1, sequence# 1)

--看来最佳的方式执行是马上执行:
create table tt tablespace xxxx as select * from V$LOGMNR_CONTENTS ;

--实际上如果是使用asm,根本无法删除,而是在rman中报ORA-15028错误。

$ oerr ora 15028
15028, 00000, "ASM file '%s' not dropped; currently being accessed"
// *Cause:  An attempt was made to drop an ASM file, but the file was
//          being accessed by one or more clients and therefore could
//          not be dropped.
// *Action: Stop all clients that are using this file and retry the drop
//          command. Query the V$ASM_CLIENT fixed view in an ASM instance
//          or use ASMCMD LSOF to list active clients.
//

不过asmcmd lsof有点鸡肋,无法定位会话。

时间: 2024-10-27 01:41:30

[20160712]logminer 与rman 删除archivelog的相关文章

【Oracle】 rman 删除归档日志的命令

   因为数据仓库上asm的磁盘空间不足,需要删除早期的归档日志,查看资料有以下两种方式: delete archivelog until time 'sysdate-N'; delete archivelog all completed before 'sysdate-N'; 这两个命令的差别在哪里呢? 使用list 命令来查看一下究竟... RMAN>  list archivelog until time 'sysdate-1'; using target database control

rman命令学习-tina(下)

五.rman删除     delete命令     删除相关的备份集或镜像副本的物理文件,同时将删除标记DELETE更新到控制文件,如果使用恢复目录,则是清除恢复目录内的备份集.     delete (archivelog, backuppiece, backupset, backup, controlfilecopy, copy, datafilecopy, expired, force,     foreign, global, noprompt, obsolete, proxy, scr

RMAN 配置归档日志删除策略

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

解决delete archivelog all无法彻底删除归档日志的问题

最近在因归档日志暴增,使用delete archivelog all貌似无法清除所有的归档日志,到底是什么原因呢? 1.演示环境 SQL> select * from v$version where rownum<2; BANNER ---------------------------------------------------------------- Oracle Database 10g Release 10.2.0.3.0 - 64bit Production SQL> s

【rman】list archivelog all与list backup of archivelog all

list archivelog all 是列出控制文件中记录的未被rman delete 命令删除的手工删除的日志文件,如果手工删除之后使用list命令对应的日志文件的status为标记为X! 模拟删除日志yangdb_1_192_762800109.log  oracle@rac3:/opt/oracle/yangdb_arch>mv yangdb_1_192_762800109.log /tmp/ crosscheck 命令检查归档日志的信息: RMAN> crosscheck archi

delete archivelog all 无法彻底删除归档日志?

    最近在因归档日志暴增,使用delete archivelog all貌似无法清除所有的归档日志,到底是什么原因呢? 1.演示环境 SQL> select * from v$version where rownum<2; BANNER ---------------------------------------------------------------- Oracle Database 10g Release 10.2.0.3.0 - 64bit Production SQL&g

rman 还原归档日志(restore archivelog)

     听说过还原(restore)数据库,表空间及数据库文件,使用归档日志恢复(recover)数据库,表空间,数据库文件.咦,还有还原归档日志这一说法呢?没错,可能我们忽略了还原归档日志这一个过程,原因是还原归档日志通常情况下是oracle在recover时自动完成的.大多数情况下我们是先还原数据库,恢复数据库,打开数据库.实际上在恢复数据库之前有一个动作,那就是还原归档日志,也就是将日志文件还原到缺省的归档位置,如果我们在备份归档日志时使用了delete [all] input子句的话.

win中oracle实现rman备份和删除dg备库归档日志脚本

总觉得使用windows跑oracle是不靠谱的事情,可以这个世界上总有很多人喜欢做类似这样的事情,对于数据库比较常见的两件事情:rman和删除dg备库归档日志,在linux/unix平台上使用shell实现很简单,可是跑到win里面,就变的烦了,不是因为其麻烦,而是因为用的人少,不知道怎么下手处理该事情,我编写了简单的实现初级功能的win下面rman备份和删除备库归档日志脚本,供大家参考,也更加欢迎朋友提出来更加好的处理方法(win是真心的不懂) rman备份脚本  代码如下 复制代码 --b

win平台oracle rman备份和删除dg备库归档日志脚本_oracle

总觉得使用windows跑oracle是不靠谱的事情,可以这个世界上总有很多人喜欢做类似这样的事情,对于数据库比较常见的两件事情:rman和删除dg备库归档日志,在linux/unix平台上使用shell实现很简单,可是跑到win里面,就变的烦了,不是因为其麻烦,而是因为用的人少,不知道怎么下手处理该事情,我编写了简单的实现初级功能的win下面rman备份和删除备库归档日志脚本,供大家参考,也更加欢迎朋友提出来更加好的处理方法(win是真心的不懂)rman备份脚本 复制代码 代码如下: --ba