rac环境下修改归档路径,并设置远程传输属性

1:设置rac数据库为归档模式
在节点2上查看rac的状态
[oracle@rac2 dbs]$ crs_stat -t
Name           Type           Target    State     Host       
------------------------------------------------------------
ora....SM1.asm application    ONLINE    ONLINE    rac1       
ora....C1.lsnr application    ONLINE    ONLINE    rac1       
ora.rac1.gsd   application    ONLINE    ONLINE    rac1       
ora.rac1.ons   application    ONLINE    ONLINE    rac1       
ora.rac1.vip   application    ONLINE    ONLINE    rac1       
ora....SM2.asm application    ONLINE    ONLINE    rac2       
ora....C2.lsnr application    ONLINE    ONLINE    rac2       
ora.rac2.gsd   application    ONLINE    ONLINE    rac2       
ora.rac2.ons   application    ONLINE    ONLINE    rac2       
ora.rac2.vip   application    ONLINE    ONLINE    rac2       
ora.racdb.db   application    ONLINE    ONLINE    rac1       
ora....b1.inst application    ONLINE    ONLINE    rac1       
ora....b2.inst application    ONLINE    ONLINE    rac2 
[oracle@rac2 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Mon May 20 21:49:33 2013
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> select inst_id,instance_name,version,archiver,status from  gv$instance;
   INST_ID INSTANCE_NAME    VERSION           ARCHIVE STATUS
---------- ---------------- ----------------- ------- ------------
         1 racdb1           10.2.0.1.0        STOPED MOUNTED
         2 racdb2           10.2.0.1.0        STOPED MOUNTED

因此以上信息可以看到rac1和rac2节点的数据库均处于mount状态,但还处于未归档(archive字段的状态为stoped)

rac跟单实例一样,修改归档模式是在db处于mount状态下进行,但rac的所有实例必须处于非open状态,
然后在任意一个处于mount状态的实例(节点)执行alter database命令,操作如下
在rac2节点执行
首先备份spfile
SQL> show parameter spfile;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /home/oracle/10.2.0/db_1/dbs/spfileracdb2.ora
SQL>
SQL> create pfile='/home/oracle/initbak.0521' from spfile;
File created.

接着修改集群参数
SQL> alter system set cluster_database=false scope=spfile sid='*';
System altered.
v$parameter视图中 issys_modifiable可看出哪些参数是静态、动态
 
将rac2节点的db启动到mount状态,rac1节点保持db处于mount状态(如果是close状态的话,rac1节点是归档,但是没有路径)
 
在rac2节点上修改归档路径,并修改归档模式
SQL> alter system set log_archive_dest_1='location=/home/oracle/rac2_arch' sid='racdb2';
System altered.
SQL>  alter system set log_archive_dest_1='location=/home/oracle/rac1_arch' sid='racdb1';
System altered.

SQL> alter database archivelog;
Database altered.

rac2节点上打开db,查看归档及路径

SQL> alter database open;
Database altered.
SQL>
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /home/oracle/rac2_arch
Oldest online log sequence     32
Next log sequence to archive   33
Current log sequence           33

然后在rac2节点上改回原来的参数cluster_database为true状态
注意此参数一定要在rac2节点的db处于open状态改,修改完之后重启db

SQL> alter system set cluster_database=true scope=spfile sid='*';
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL>
SQL>
SQL> startup
ORACLE instance started.
Total System Global Area  608174080 bytes
Fixed Size                  1220844 bytes
Variable Size             239079188 bytes
Database Buffers          364904448 bytes
Redo Buffers                2969600 bytes
Database mounted.
Database opened.
SQL>  show parameter cluster_database;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cluster_database                     boolean     TRUE
cluster_database_instances           integer     2
 
然后在rac1节点启动db,查看归档
SQL> alter database open;
Database altered.
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /home/oracle/rac1_arch
Oldest online log sequence     41
Next log sequence to archive   42
Current log sequence           42
SQL>
 
然后切换日志,查看新的日志文件
 
[oracle@rac2 rac2_arch]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Tue May 21 02:39:04 2013
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> alter system switch logfile;
System altered.
SQL>
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
[oracle@rac2 rac2_arch]$ ls -lt
total 25112
-rw-r-----  1 oracle dba 25679872 May 21 02:39 2_33_797085894.dbf
[oracle@rac2 rac2_arch]$ date
Tue May 21 02:39:23 CST 2013
[oracle@rac2 rac2_arch]$
[oracle@rac2 rac2_arch]$ pwd
/home/oracle/rac2_arch
[oracle@rac2 rac2_arch]$
 
 
 
2:配置节点间归档日志自动传输
通过rman进行rac备份时,必须确保连接到的实例能够访问所有节点生成的归档日志文件,否则会导致
备份失败(除非不备份归档日志,这里有两种方法:
*各节点生成的归档日志存放在共享存储上(比如asm或第三方的集群文件系统)
*各节点除在本地生成归档日志外,另外向其他节点或者说执行备份的节点发送归档日志,以确保执行
 备份的的那台节点能够访问到所有的归档日志文件
 
 
 oracle的重做日志发送机制非常灵活,其实就是给 log_archive_dest_n初始化参数设置适当的值。
 
 此次决定将备份操作放在节点rac2上执行,因此需要在rac1节点中,设置发送节点rac1生成的归档到节点rac2即可
 
 rac1节点执行
查看网络配置
 
[oracle@rac1 rac1_arch]$ cd $ORACLE_HOME/network/admin
[oracle@rac1 admin]$ more tnsnames.ora
# tnsnames.ora Network Configuration File: /home/oracle/10.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
RACDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = racdb)
      (INSTANCE_NAME = racdb1)
    )
  )
RACDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
#    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = racdb)
    )
  )
LISTENERS_RACDB =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
  )
EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )
RACDB2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = racdb)
      (INSTANCE_NAME = racdb2)
    )
  )

[oracle@rac1 admin]$ tnsping racdb2
TNS Ping Utility for Linux: Version 10.2.0.1.0 - Production on 21-MAY-2013 02:37:30
Copyright (c) 1997, 2005, Oracle.  All rights reserved.
Used parameter files:

Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = racdb) (INSTANCE_NAME = racdb2)))
OK (10 msec)
[oracle@rac1 admin]$
然后设置归档日志自动传输路径
[oracle@rac1 admin]$ sqlplus  / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Tue May 21 02:39:09 2013
Copyright (c) 1982, 2005, Oracle.  All rights reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> select status from v$instance;
STATUS
------------
OPEN
SQL> alter system set log_archive_dest_2='service=RACDB2' sid='racdb1';
System altered.
SQL>

注意此处service的值RACDB2,是 tnsnames.ora中的网络服务命令
查看设置后的新值
SQL> show parameter log_archive_dest;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest                     string
log_archive_dest_1                   string      location=/home/oracle/rac1_arc
                                                 h
log_archive_dest_10                  string
log_archive_dest_2                   string      service=RACDB2
log_archive_dest_3                   string
log_archive_dest_4                   string
log_archive_dest_5                   string
log_archive_dest_6                   string
log_archive_dest_7                   string
log_archive_dest_8                   string
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_9                   string
log_archive_dest_state_1             string      enable
log_archive_dest_state_10            string      enable
log_archive_dest_state_2             string      enable
log_archive_dest_state_3             string      enable
log_archive_dest_state_4             string      enable
log_archive_dest_state_5             string      enable
log_archive_dest_state_6             string      enable
log_archive_dest_state_7             string      enable
log_archive_dest_state_8             string      enable
log_archive_dest_state_9             string      enable

然后在rac1节点执行手动切换
SQL>  select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
         1          1         44   52428800          2 YES ACTIVE                 3380998 21-MAY-13
         2          1         45   52428800          2 NO  CURRENT                3381074 21-MAY-13
         3          2         33   52428800          2 YES INACTIVE               3362646 20-MAY-13
         4          2         34   52428800          2 NO  CURRENT                3378938 21-MAY-13
SQL>  alter system switch logfile;
System altered.
SQL> col name format a55;
SQL> select inst_id,recid,dest_id,name from gv$archived_log where sequence#=45;
   INST_ID      RECID    DEST_ID NAME
---------- ---------- ---------- -------------------------------------------------------
         1         72          1 /home/oracle/rac1_arch/1_45_797085894.dbf
         1         73          2 /home/oracle/rac2_arch/1_45_797085894.dbf
         2         72          1 /home/oracle/rac1_arch/1_45_797085894.dbf
         2         73          2 /home/oracle/rac2_arch/1_45_797085894.dbf
 
可以看到归档日志成功生成并发送到rac2节点
[oracle@rac2 rac2_arch]$ ls -lt
total 28148
-rw-r-----  1 oracle dba   643072 May 21 03:33 2_34_797085894.dbf
-rw-r-----  1 oracle dba    10240 May 21 03:33 1_45_797085894.dbf
-rw-r-----  1 oracle dba     2048 May 21 03:31 1_44_797085894.dbf
-rw-r-----  1 oracle dba  2440192 May 21 03:28 1_43_797085894.dbf
-rw-r-----  1 oracle dba 25679872 May 21 02:39 2_33_797085894.dbf

如果在rac1节点一直切换日志,但是在rac2节点仍看不到切换后的日志,那么就在rac1节点执行如下操作:

SQL> alter system set log_archive_local_first=false sid='racdb1';

System altered.

LOG_ARCHIVE_LOCAL_FIRST参数,用来设置是否首先归档文件到本地,默认为true,将其改为false,只修改节点1的设置即可


 
 现在考虑一个问题,加入由于某个原因,rac1节点的日志文件没有传送到rac2节点上,怎么办?
 
 首先在rac1节点上找到归档日志文件的全路径(从v$archived_log视图得到),然后通过scp远程复制到
 rac2节点上,然后再在rac2节点注册该归档日志,注册命令为
 SQL> alter database register physical logfile '/home/oracle/rac2_arch/1_46_797085894.dbf';
 
 
STANDBY_ARCHIVE_DEST is relevant only for a standby database in managed recovery mode. It specifies the location of archive logs arriving from a primary database.
 
LOG_ARCHIVE_LOCAL_FIRST是10g的新功能
它的推出主要是在10g以前dataguard环境中本地和远程的归档需要都完成以后,online redo log才可以被重用,这就意味着在网络速度慢的环境中,dataguard会很大地影响priamry site的处理能力。

而设置了LOG_ARCHIVE_LOCAL_FIRST=TRUE,则表示在本地归档结束以后,再将重作数据传到远程,而设置为FALSE,则表示在归档到本地的同时也传送数据到远程。

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

转载于:http://blog.itpub.net/24862808/viewspace-761597/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值