RAC环境一个实例何时会归档另一个实例的日志

有人在我的BLOG上提出问题,为什么有的时候发现一个实例所在的服务器上包含了另一个服务器的归档日志。

其实很多中情况都可能造成这个问题的产生。

 

 

最简单的情况,一个节点执行了ALTER SYSTEM ARCHIVE LOG CURRENT命令:

SQL> SELECT GROUP#, THREAD#, SEQUENCE#, ARCHIVED, STATUS FROM V$LOG;

    GROUP#    THREAD#  SEQUENCE# ARCHIV STATUS
---------- ---------- ---------- ------ --------------------
         1          1        672 NO     CURRENT
         2          1        671 YES    INACTIVE
         3          2        441 YES    INACTIVE
         4          2        442 NO     CURRENT

SQL> SELECT INSTANCE_NUMBER, INSTANCE_NAME, THREAD# FROM V$INSTANCE;

INSTANCE_NUMBER INSTANCE_NAME       THREAD#
--------------- ---------------- ----------
              1 testrac1                  1

SQL> COL NAME FORMAT A30
SQL> COL VALUE FORMAT A30        
SQL> SELECT INST_ID, NAME, SUBSTR(VALUE, 1, 26) VALUE
  2  FROM GV$PARAMETER
  3  WHERE NAME = 'log_archive_dest_1';

   INST_ID NAME                           VALUE
---------- ------------------------------ ------------------------------
         1 log_archive_dest_1             LOCATION=/data1/archivelog
         2 log_archive_dest_1             LOCATION=/data1/archivelog

SQL> HOST ls -l /data1/archivelog
total 0

SQL> HOST rsh 172.25.198.223 ls -l /data1/archivelog
total 0

下面执行切换ARCHIVE LOG CURRENT的操作:

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

系统已更改。

SQL> HOST ls -l /data1/archivelog
total 102
-rw-r-----   1 oracle   oinstall   51712 Jan  5 00:23 1_672_626291662.dbf

SQL> HOST rsh 172.25.198.223 ls -l /data1/archivelog
total 288
-rw-rw----   1 oracle   oinstall  137728 Jan  5 00:25 2_442_626291662.dbf

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;             

系统已更改。

SQL> HOST ls -l /data1/archivelog
total 128
-rw-r-----   1 oracle   oinstall   51712 Jan  5 00:23 1_672_626291662.dbf
-rw-r-----   1 oracle   oinstall   12800 Jan  5 00:25 1_673_626291662.dbf

SQL> HOST rsh 172.25.198.223 ls -l /data1/archivelog
total 354
-rw-rw----   1 oracle   oinstall  137728 Jan  5 00:25 2_442_626291662.dbf
-rw-rw----   1 oracle   oinstall   33792 Jan  5 00:26 2_443_626291662.dbf

默认情况下,执行ALTER SYSTEM ARCHIVE LOG CURRENT命令时,各个实例归档当前实例加载的日志。

而如果将一个实例关闭,再次执行同样的命令:

SQL> HOST srvctl stop inst -d testrac -i testrac2

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

系统已更改。

SQL> HOST ls -l /data1/archivelog
total 902
-rw-r-----   1 oracle   oinstall   51712 Jan  5 00:23 1_672_626291662.dbf
-rw-r-----   1 oracle   oinstall   12800 Jan  5 00:25 1_673_626291662.dbf
-rw-r-----   1 oracle   oinstall   68096 Jan  5 00:31 1_674_626291662.dbf
-rw-r-----   1 oracle   oinstall  312320 Jan  5 00:31 2_444_626291662.dbf

SQL> HOST rsh 172.25.198.223 ls -l /data1/archivelog
total 354
-rw-rw----   1 oracle   oinstall  137728 Jan  5 00:25 2_442_626291662.dbf
-rw-rw----   1 oracle   oinstall   33792 Jan  5 00:26 2_443_626291662.dbf

这时,当前实例归档当前加载日志的同时,也会将关闭实例的日志归档到本地。

SQL> HOST srvctl start inst -d testrac -i testrac2

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

系统已更改。

SQL> HOST ls -l /data1/archivelog
total 1142
-rw-r-----   1 oracle   oinstall   51712 Jan  5 00:23 1_672_626291662.dbf
-rw-r-----   1 oracle   oinstall   12800 Jan  5 00:25 1_673_626291662.dbf
-rw-r-----   1 oracle   oinstall   68096 Jan  5 00:31 1_674_626291662.dbf
-rw-r-----   1 oracle   oinstall  112640 Jan  5 00:37 1_675_626291662.dbf
-rw-r-----   1 oracle   oinstall  312320 Jan  5 00:31 2_444_626291662.dbf

SQL> HOST rsh 172.25.198.223 ls -l /data1/archivelog
total 676
-rw-rw----   1 oracle   oinstall  137728 Jan  5 00:25 2_442_626291662.dbf
-rw-rw----   1 oracle   oinstall   33792 Jan  5 00:26 2_443_626291662.dbf
-rw-rw----   1 oracle   oinstall    1024 Jan  5 00:37 2_445_626291662.dbf
-rw-rw----   1 oracle   oinstall  153600 Jan  5 00:39 2_446_626291662.dbf

当关闭实例恢复后,执行命令后,一般会恢复各个实例归档各自加载日志的情况。

另一种情况是备份、恢复造成的。

对于RESTORE命令就不想多少了,备份命令也可能造成本地实例归档其他实例日志的情况:

SQL> HOST
$ rman target /

恢复管理器: Release 10.2.0.3.0 - Production on 星期六 1 5 00:42:51 2008

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

连接到目标数据库: TESTRAC (DBID=4291216984)

RMAN> configure channel 1 device type disk format '/data1/backup/%U' connect sys/test@testrac1;

使用目标数据库控制文件替代恢复目录
旧的 RMAN 配置参数:
CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT   '/data1/backup/%U' CONNECT '*';
新的 RMAN 配置参数
:
CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT   '/data1/backup/%U' CONNECT '*';
已成功存储新的 RMAN 配置参数

RMAN> configure channel 2 device type disk format '/data1/backup/%U' connect sys/test@testrac2;

旧的 RMAN 配置参数:
CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT   '/data1/backup/%U' CONNECT '*';
新的 RMAN 配置参数
:
CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT   '/data1/backup/%U' CONNECT '*';
已成功存储新的 RMAN 配置参数

RMAN> configure default device type to disk;

旧的 RMAN 配置参数:
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
新的 RMAN 配置参数
:
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
已成功存储新的 RMAN 配置参数

RMAN> backup archivelog all;

启动 backup 05-1 -08
当前日志已存档

分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=309 实例
=testrac1 devtype=DISK
分配的通道
: ORA_DISK_2
通道 ORA_DISK_2: sid=291 实例
=testrac2 devtype=DISK
通道 ORA_DISK_1: 正在启动存档日志备份集

通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =1 序列 =672 记录 ID=2336 时间戳=643163033
输入存档日志线程 =1 序列 =673 记录 ID=2341 时间戳
=643163127
输入存档日志线程 =1 序列 =674 记录 ID=2345 时间戳
=643163504
输入存档日志线程 =1 序列 =675 记录 ID=2350 时间戳
=643163864
输入存档日志线程 =1 序列 =676 记录 ID=2354 时间戳
=643164280
输入存档日志线程 =2 序列 =444 记录 ID=2344 时间戳
=643163497
通道 ORA_DISK_1: 正在启动段 1 05-1
-08
通道 ORA_DISK_2: 正在启动存档日志备份集

通道 ORA_DISK_2: 正在指定备份集中的存档日志
输入存档日志线程 =2 序列 =442 记录 ID=2337 时间戳=643163120
输入存档日志线程 =2 序列 =443 记录 ID=2340 时间戳
=643163213
输入存档日志线程 =2 序列 =445 记录 ID=2348 时间戳
=643163878
输入存档日志线程 =2 序列 =446 记录 ID=2351 时间戳
=643163951
通道 ORA_DISK_2: 正在启动段 1 05-1
-08
通道 ORA_DISK_1: 已完成段 1 05-1
-08
段句柄=/data1/backup/1cj5bq3v_1_1 标记=TAG20080105T004446 注释
=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间
:00:00:02
通道 ORA_DISK_2: 已完成段 1 05-1
-08
段句柄=/data1/backup/1dj5bq6m_1_1 标记=TAG20080105T004446 注释
=NONE
通道 ORA_DISK_2: 备份集已完成, 经过时间
:00:00:02
通道 ORA_DISK_1: 正在启动存档日志备份集

通道 ORA_DISK_1: 正在指定备份集中的存档日志
输入存档日志线程 =2 序列 =447 记录 ID=2355 时间戳=643164283
通道 ORA_DISK_1: 正在启动段 1 05-1
-08
通道 ORA_DISK_1: 已完成段 1 05-1
-08
段句柄=/data1/backup/1ej5bq41_1_1 标记=TAG20080105T004446 注释
=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间
:00:00:01
完成 backup 05-1 -08

启动 Control File and SPFILE Autobackup 05-1 -08
handle=/data/oracle/product/10.2/database/dbs/c-4291216984-20080105-02 comment=NONE
完成 Control File and SPFILE Autobackup 05-1 -08

RMAN> exit


恢复管理器完成。
$ ls -l /data1/archivelog
total 1540
-rw-r-----   1 oracle   oinstall   51712 Jan  5 00:23 1_672_626291662.dbf
-rw-r-----   1 oracle   oinstall   12800 Jan  5 00:25 1_673_626291662.dbf
-rw-r-----   1 oracle   oinstall   68096 Jan  5 00:31 1_674_626291662.dbf
-rw-r-----   1 oracle   oinstall  112640 Jan  5 00:37 1_675_626291662.dbf
-rw-r-----   1 oracle   oinstall   55808 Jan  5 00:44 1_676_626291662.dbf
-rw-r-----   1 oracle   oinstall  312320 Jan  5 00:31 2_444_626291662.dbf
-rw-r-----   1 oracle   oinstall  136192 Jan  5 00:44 2_447_626291662.dbf
$ rsh 172.25.198.223 ls -l /data1/archivelog
total 676
-rw-rw----   1 oracle   oinstall  137728 Jan  5 00:25 2_442_626291662.dbf
-rw-rw----   1 oracle   oinstall   33792 Jan  5 00:26 2_443_626291662.dbf
-rw-rw----   1 oracle   oinstall    1024 Jan  5 00:37 2_445_626291662.dbf
-rw-rw----   1 oracle   oinstall  153600 Jan  5 00:39 2_446_626291662.dbf

在上面的例子中,为了同时备份两个实例的归档,rman设置了两个CHANNEL,分别连接到不同的实例上执行备份操作。由于执行BACKUP ARCHIVE LOG操作,Oracle自动会执行一个ARCHIVE LOG CURRENT的命令,而这个命令是在当前的实例执行的。对于这种情况,所有实例的日志都会归档到本地。

从上面最后的ls命令可以看到,thread 2 sequence 447的归档已经在本地生成。

其实对于RAC来说,哪个实例加载哪个THREAD#不是固定的,完全可以互换两个实例所加载的日志THREAD

$ exit

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

系统已更改。

SQL> HOST ls -l /data1/archivelog
total 1828
-rw-r-----   1 oracle   oinstall   51712 Jan  5 00:23 1_672_626291662.dbf
-rw-r-----   1 oracle   oinstall   12800 Jan  5 00:25 1_673_626291662.dbf
-rw-r-----   1 oracle   oinstall   68096 Jan  5 00:31 1_674_626291662.dbf
-rw-r-----   1 oracle   oinstall  112640 Jan  5 00:37 1_675_626291662.dbf
-rw-r-----   1 oracle   oinstall   55808 Jan  5 00:44 1_676_626291662.dbf
-rw-r-----   1 oracle   oinstall  136192 Jan  5 00:51 1_677_626291662.dbf
-rw-r-----   1 oracle   oinstall  312320 Jan  5 00:31 2_444_626291662.dbf
-rw-r-----   1 oracle   oinstall  136192 Jan  5 00:44 2_447_626291662.dbf

SQL> HOST rsh 172.25.198.223 ls -l /data1/archivelog
total 948
-rw-rw----   1 oracle   oinstall  137728 Jan  5 00:25 2_442_626291662.dbf
-rw-rw----   1 oracle   oinstall   33792 Jan  5 00:26 2_443_626291662.dbf
-rw-rw----   1 oracle   oinstall    1024 Jan  5 00:37 2_445_626291662.dbf
-rw-rw----   1 oracle   oinstall  153600 Jan  5 00:39 2_446_626291662.dbf
-rw-rw----   1 oracle   oinstall  124928 Jan  5 00:52 2_448_626291662.dbf

下面关闭数据库,修改初始化参数,使得当前实例加载THREAD 2的日志:

SQL> HOST srvctl stop db -d testrac

SQL> CREATE PFILE='/export/home/oracle/inittestrac1.ora' FROM SPFILE='+DISK/testrac/spfiletestrac.ora';

文件已创建。

将初始化参数inittestrac1.ora中的

testrac1.thread=2
testrac2.thread=1

改为

testrac1.thread=2
testrac2.thread=1

下面启动当前实例:

SQL> STARTUP PFILE=inittestrac1.ora
ORACLE
例程已经启动。

Total System Global Area 2147483648 bytes
Fixed Size                  2031480 bytes
Variable Size            1056964744 bytes
Database Buffers         1073741824 bytes
Redo Buffers               14745600 bytes
数据库装载完毕。
数据库已经打开。
SQL> SELECT INSTANCE_NUMBER, INSTANCE_NAME, THREAD# FROM V$INSTANCE;

INSTANCE_NUMBER INSTANCE_NAME       THREAD#
--------------- ---------------- ----------
              1 testrac1                  2

SQL> SELECT GROUP#, THREAD#, SEQUENCE#, ARCHIVED, STATUS FROM V$LOG;

    GROUP#    THREAD#  SEQUENCE# ARC STATUS
---------- ---------- ---------- --- --------------------
         1          1        678 NO  CURRENT
         2          1        677 YES INACTIVE
         3          2        449 YES INACTIVE
         4          2        450 NO  CURRENT

SQL> ALTER SYSTEM SWITCH LOGFILE;

系统已更改。

SQL> SELECT GROUP#, THREAD#, SEQUENCE#, ARCHIVED, STATUS FROM V$LOG;

    GROUP#    THREAD#  SEQUENCE# ARC STATUS
---------- ---------- ---------- --- --------------------
         1          1        678 YES INACTIVE
         2          1        679 NO  CURRENT
         3          2        451 NO  CURRENT
         4          2        450 YES ACTIVE

SQL> HOST ls -l /data1/archivelog
total 3304
-rw-r-----   1 oracle   oinstall   51712 Jan  5 00:23 1_672_626291662.dbf
-rw-r-----   1 oracle   oinstall   12800 Jan  5 00:25 1_673_626291662.dbf
-rw-r-----   1 oracle   oinstall   68096 Jan  5 00:31 1_674_626291662.dbf
-rw-r-----   1 oracle   oinstall  112640 Jan  5 00:37 1_675_626291662.dbf
-rw-r-----   1 oracle   oinstall   55808 Jan  5 00:44 1_676_626291662.dbf
-rw-r-----   1 oracle   oinstall  136192 Jan  5 00:51 1_677_626291662.dbf
-rw-r-----   1 oracle   oinstall   50688 Jan  5 01:12 1_678_626291662.dbf
-rw-r-----   1 oracle   oinstall  312320 Jan  5 00:31 2_444_626291662.dbf
-rw-r-----   1 oracle   oinstall  136192 Jan  5 00:44 2_447_626291662.dbf
-rw-r-----   1 oracle   oinstall  354816 Jan  5 01:03 2_449_626291662.dbf
-rw-r-----   1 oracle   oinstall  321024 Jan  5 01:12 2_450_626291662.dbf

由此可见,对于日志和实例其实并没有对应关系,因此在本地出现其他实例上的归档也是十分正常的情况。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-200426/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/4227/viewspace-200426/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值