[20150625]v$archived_log字段creator.txt
--如果有人问你知道那个archivelog是日志满切换产生的,还是手工执行切换产生的。估计你的回答是看归档日志的大小,当然这个不是
--很准确。
--实际上v$archived_log有一个字段creator可以反映这个情况:
SYS@test> @ &r/ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- ----------------------------------------------------------------
x86_64/Linux 2.4.xx 10.2.0.4.0 Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
SYS@test> select creator,count(*) from V$ARCHIVED_LOG group by creator ;
CREATOR COUNT(*)
------- ------------
FGRD 52
ARCH 36
--可以发现建立者存在两个值,FGRD,ARCH。arch可以猜出是是日志满产生的,而FGRD可以猜出应该是手工执行
--alter system switch logfile ;或者alter system archive log current ;产生的。
--顺便帖一个生产环境的例子:
SYS@dbcn1> select creator,count(*) from V$ARCHIVED_LOG group by creator ;
CREATOR COUNT(*)
------- ----------
FGRD 147
LGWR 1574
ARCH 1287
--多出了一个LGWR应该是传输到dataguard的归档日志。执行以下可以确定。
SYS@dbcn1> select distinct name from V$ARCHIVED_LOG where creator='LGWR' ;
NAME
----------
dbcndg
dbcndg2
--回到测试环境看看执行alter system switch logfile ;或者alter system archive log current ;的情况是否creator='FGRD'.
SYS@test> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 94
Next log sequence to archive 96
Current log sequence 96
--当前日志seq =96.
SYS@test> alter system switch logfile ;
System altered.
SYS@test> alter system archive log current ;
System altered.
SYS@test> alter system switch logfile ;
System altered.
SYS@test> select name,sequence#,creator from V$ARCHIVED_LOG where sequence#>=96;
NAME SEQUENCE# CREATOR
------------------------------------------------------------------------------------------ ------------ -------
/u01/app/oracle/flash_recovery_area/TEST/archivelog/2015_06_25/o1_mf_1_96_brpn5l7j_.arc 96 ARCH
/u01/app/oracle/flash_recovery_area/TEST/archivelog/2015_06_25/o1_mf_1_97_brpn5srw_.arc 97 FGRD
/u01/app/oracle/flash_recovery_area/TEST/archivelog/2015_06_25/o1_mf_1_98_brpn83nj_.arc 98 ARCH
--可以看出一个小小的区别:
--执行alter system switch logfile ;的CREATOR='ARCH'.
--执行alter system archive log current ;的CREATOR='FGRD'. 而FGRD表示什么,我就不清楚了。
--google找到如下链接http://www.askmaclean.com/archives/only-arch-bgprocess-may-create-archivelog.html。
CREATOR VARCHAR2(7) Creator of the archivelog:
ARCH - Archiver process
FGRD - Foreground process
RMAN - Recovery Manager
SRMN - RMAN at standby
LGWR - Logwriter process
--FGRD 表示 Foreground process。文章还提到creator='RMAN'是RMAN(注意实际上并非直接由rman进程完成)在执行热备操作时也可能掺
--合进来归档一把。自己也测试看看:
SYS@test> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 97
Next log sequence to archive 99
Current log sequence 99
SYS@test> alter database begin backup;
Database altered.
SYS@test> alter system switch logfile ;
System altered.
SYS@test> select name,sequence#,creator from V$ARCHIVED_LOG where sequence#>=99;
NAME SEQUENCE# CREATOR
------------------------------------------------------------------------------------------ ------------ -------
/u01/app/oracle/flash_recovery_area/TEST/archivelog/2015_06_25/o1_mf_1_99_brpo2jry_.arc 99 ARCH
--不是rman?随便找一个表执行一些dml语句。
SCOTT@test> update t set name='XXXXXXX' ;
100008 rows updated.
SCOTT@test> commit ;
Commit complete.
SCOTT@test> update t set name='yyyyyyyyyy' ;
100008 rows updated.
SCOTT@test> commit ;
Commit complete.
SYS@test> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 100
Next log sequence to archive 102
Current log sequence 102
SYS@test> select name,sequence#,creator from V$ARCHIVED_LOG where sequence#>=99;
NAME SEQUENCE# CREATOR
------------------------------------------------------------------------------------------ ------------ -------
/u01/app/oracle/flash_recovery_area/TEST/archivelog/2015_06_25/o1_mf_1_99_brpo2jry_.arc 99 ARCH
/u01/app/oracle/flash_recovery_area/TEST/archivelog/2015_06_25/o1_mf_1_100_brpo5074_.arc 100 ARCH
/u01/app/oracle/flash_recovery_area/TEST/archivelog/2015_06_25/o1_mf_1_101_brpo5dyk_.arc 101 ARCH
SYS@test> alter database end backup;
Database altered.
--好像作者讲的不对。或者我的理解存在问题。
$ cp /u01/app/oracle/flash_recovery_area/TEST/archivelog/2015_06_25/o1_mf_1_101_brpo5dyk_.arc /home/oracle/backup/
$ cd /home/oracle/backup/
$ mv o1_mf_1_101_brpo5dyk_.arc aa.arc
RMAN> catalog start with '/home/oracle/backup/';
using target database control file instead of recovery catalog
searching for all files that match the pattern /home/oracle/backup/
List of Files Unknown to the Database
=====================================
File Name: /home/oracle/backup/aa.arc
Do you really want to catalog the above files (enter YES or NO)? yes
cataloging files...
cataloging done
List of Cataloged Files
=======================
File Name: /home/oracle/backup/aa.arc
SYS@test> select name,sequence#,creator from V$ARCHIVED_LOG where sequence#>=99;
NAME SEQUENCE# CREATOR
------------------------------------------------------------------------------------------ ------------ -------
/u01/app/oracle/flash_recovery_area/TEST/archivelog/2015_06_25/o1_mf_1_99_brpo2jry_.arc 99 ARCH
/u01/app/oracle/flash_recovery_area/TEST/archivelog/2015_06_25/o1_mf_1_100_brpo5074_.arc 100 ARCH
/u01/app/oracle/flash_recovery_area/TEST/archivelog/2015_06_25/o1_mf_1_101_brpo5dyk_.arc 101 ARCH
/home/oracle/backup/aa.arc 101 RMAN
--可以发现这样的情况建立者才是rman。