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
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
---------- ---------------- ----------------- ------- ------------
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;
------------------------------------ ----------- ------------------------------
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
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.
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;
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
------------------------------------ ----------- ------------------------------
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>
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]$
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的重做日志发送机制非常灵活,其实就是给 log_archive_dest_n初始化参数设置适当的值。
此次决定将备份操作放在节点rac2上执行,因此需要在rac1节点中,设置发送节点rac1生成的归档到节点rac2即可
rac1节点执行
查看网络配置
[oracle@rac1 rac1_arch]$ cd $ORACLE_HOME/network/admin
[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.
# 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)
)
)
(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)
)
)
(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))
)
(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)
)
)
(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)
)
)
(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
------------
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
------------------------------------ ----------- ------------------------------
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
------------------------------------ ----------- ------------------------------
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
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
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
---------- ---------- ---------- -------------------------------------------------------
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
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';
首先在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,则表示在归档到本地的同时也传送数据到远程。
它的推出主要是在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/