您的位置:首页 > 数据库 > Oracle

RAC + Dataguard Oracle 11g R2 搭建

2013-11-09 21:32 369 查看
1,rac 环境信息如下
#public
192.168.19.10 rac1
192.168.19.20 rac2

#private
192.168.10.10 rac1
192.168.10.20 rac2

#vip
192.168.19.30 rac1-vip
192.168.19.40 rac2-vip

实例名:
rac1: orcl1
rac2: orcl2
db_name: orcl

2,standby信息
ip: 192.168.19.15
实例名: standby
standby 磁盘为ASM

3,配置监听

配置rac的tnsnames.ora ,连个节点相同配置
[oracle@rac1 admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

orcl1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.30)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
orcl2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.40)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

standby =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.15)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = standby)
)
)

配置standby的tnsnames.ora

[oracle@localhost admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
orcl1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.30)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
orcl2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.40)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

standby =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.15)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = standby)
)
)

[grid@localhost admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/grid/product/11.2.0/grid/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /u01/app/grid/product/11.2.0/grid)
(SID_NAME = orcl)
)
)

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.19.15)(PORT = 1521))
)

ADR_BASE_LISTENER = /u01/app/grid

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER = ON

4,配置standby的密码文件
5,配置standby和primary参数文件
rac的参数文件:
[oracle@rac2 tmp]$ cat init.ora
orcl1.__db_cache_size=113246208
orcl2.__db_cache_size=130023424
orcl1.__java_pool_size=4194304
orcl2.__java_pool_size=4194304
orcl1.__large_pool_size=8388608
orcl2.__large_pool_size=8388608
orcl2.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl1.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
orcl1.__pga_aggregate_target=109051904
orcl2.__pga_aggregate_target=109051904
orcl1.__sga_target=318767104
orcl2.__sga_target=318767104
orcl1.__shared_io_pool_size=0
orcl2.__shared_io_pool_size=0
orcl1.__shared_pool_size=184549376
orcl2.__shared_pool_size=167772160
orcl1.__streams_pool_size=0
orcl2.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'
*.audit_trail='db'
*.cluster_database=true
*.compatible='11.2.0.0.0'
*.control_files='+DATA/orcl/controlfile/current.260.825676713','+FRA/orcl/controlfile/current.256.825676731'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.DB_FILE_NAME_CONVERT='orcl','standby'
*.db_name='orcl'
*.db_recovery_file_dest='+FRA'
*.db_recovery_file_dest_size=4070572032
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.FAL_SERVER='standby'
orcl2.instance_number=2
orcl1.instance_number=1
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(orc1,standby)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/arch1/orcl VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl'
*.LOG_ARCHIVE_DEST_2='SERVICE=standby ARCH VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby'
*.LOG_FILE_NAME_CONVERT='/u01/arch1/app/orcl','/u01/app/arch1/standby'
*.open_cursors=300
*.pga_aggregate_target=105906176
*.processes=150
*.remote_listener='racdb-scan.grid.orcl.com:1521'
*.remote_login_passwordfile='exclusive'
*.sga_target=317718528
*.STANDBY_FILE_MANAGEMENT='AUTO'
orcl2.thread=2
orcl1.thread=1
orcl2.undo_tablespace='UNDOTBS2'
orcl1.undo_tablespace='UNDOTBS1'
orcl1.fal_client=orcl1
orcl2.fal_client=orcl2

standby的参数文件如下

*.audit_file_dest='/u01/app/oracle/admin/standby/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='+DATA/orcl/controlfile/cont01.ctl','+FRA/orcl/controlfile/cont02.ctl'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.db_name='orcl'
*.db_recovery_file_dest='+FRA'
*.db_recovery_file_dest_size=4070572032
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.open_cursors=300
*.pga_aggregate_target=105906176
*.processes=150
*.remote_login_passwordfile='exclusive'
*.sga_target=317718528
*.undo_tablespace='UNDOTBS1'
DB_UNIQUE_NAME=standby
*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(standby,orcl)'
*.LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/arch1/standby VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standby'
*.LOG_ARCHIVE_DEST_2='SERVICE=orcl ARCH VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
*.FAL_SERVER='orcl'
*.STANDBY_FILE_MANAGEMENT=AUTO
*.DB_FILE_NAME_CONVERT='standby','orcl' //若不是ASM管理,更改为实际数据文件路径
*.LOG_FILE_NAME_CONVERT='/u01/arch1/app/orcl','/u01/app/arch1/standby'

注意需要创建/u01/app/oracle/admin/standby/adump' 和/u01/app/arch1/standby目录

6,将rac所有节点设置为归档模式,和force logging模式
7,使用新创建的参数文件将primary数据库启动到mount状态,standby数据库启动到nomount状态
8,在任意节点对数据库做全备份,这里包含了控制文件

RMAN> backup database format '/tmp/racdbfull%u_%s_%p' include current controlfile for standby

9,将备份复制到备库相同目录/tmp

[oracle@rac1 tmp]$ scp racdbfull* 192.168.19.15:/tmp

10, 在备库上执行下面命令恢复
[oracle@localhost ~]$ rman target sys/oracle@orcl auxiliary /
RMAN> duplicate target database for standby;

11,在备库上创建standby logfile(大小相等,但日志组数量要比primary数据库多一组)

SQL> alter database add standby logfile ('+data') size 50m;

Database altered.

SQL> alter database add standby logfile ('+data') size 50m;

Database altered.

SQL> alter database add standby logfile ('+data') size 50m;

Database altered.

SQL> alter database add standby logfile ('+data') size 50m;

Database altered.

12,使用spfile将rac所有节点和standby数据启动到open状态
13,在备库上启用redo apply
SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

14,检查
SQL> select THREAD#,SEQUENCE#,applied from v$archived_log;

THREAD# SEQUENCE# APPLIED
---------- ---------- ---------
2 6 YES
1 9 YES
1 10 YES
1 11 YES
2 7 YES
1 12 NO
1 13 NO

7 rows selected.

主库:

SQL> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/arch1/orcl
Oldest online log sequence 13
Next log sequence to archive 14
Current log sequence 14

在orcl1 上切换日志,跟踪备库的alter日志如下:

Sat Nov 09 09:13:26 2013
RFS[4]: Assigned to RFS process 12645
RFS[4]: Identified database type as 'physical standby': Client is ARCH pid 2639
RFS[4]: Selected log 5 for thread 1 sequence 14 dbid 1353457449 branch 825676742
Sat Nov 09 09:13:31 2013
Archived Log entry 8 added for thread 1 sequence 14 ID 0x50ab6422 dest 1:
Sat Nov 09 09:13:32 2013
RFS[5]: Assigned to RFS process 12665
RFS[5]: Identified database type as 'physical standby': Client is ARCH pid 5841
RFS[5]: Selected log 6 for thread 2 sequence 8 dbid 1353457449 branch 825676742
Sat Nov 09 09:13:33 2013
Recovery of Online Redo Log: Thread 2 Group 6 Seq 8 Reading mem 0
Mem# 0: +DATA/standby/onlinelog/group_6.274.831027171
Sat Nov 09 09:13:38 2013
Archived Log entry 9 added for thread 2 sequence 8 ID 0x50ab6422 dest 1:
Media Recovery Log /u01/app/arch1/standby/1_12_825676742.dbf
Sat Nov 09 09:13:46 2013
Media Recovery Log /u01/app/arch1/standby/1_13_825676742.dbf
Sat Nov 09 09:14:24 2013
Media Recovery Log /u01/app/arch1/standby/1_14_825676742.dbf
Media Recovery Waiting for thread 1 sequence 15

在orcl2上切换日志:

SQL> select *from t;

no rows selected
SQL> insert into t values (1);

1 row created.

SQL> commit;

Commit complete.

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/arch1/orcl
Oldest online log sequence 8
Next log sequence to archive 9
Current log sequence 9

跟踪备库alter日志
RFS[5]: Selected log 6 for thread 2 sequence 9 dbid 1353457449 branch 825676742
Sat Nov 09 09:18:58 2013
Archived Log entry 10 added for thread 2 sequence 9 ID 0x50ab6422 dest 1:
Sat Nov 09 09:20:00 2013
RFS[5]: Selected log 6 for thread 2 sequence 10 dbid 1353457449 branch 825676742
Sat Nov 09 09:20:03 2013
Archived Log entry 11 added for thread 2 sequence 10 ID 0x50ab6422 dest 1:
Sat Nov 09 09:20:05 2013
RFS[4]: Selected log 5 for thread 1 sequence 15 dbid 1353457449 branch 825676742
Sat Nov 09 09:20:05 2013
Recovery of Online Redo Log: Thread 1 Group 5 Seq 15 Reading mem 0
Mem# 0: +DATA/standby/onlinelog/group_5.273.831027081
Sat Nov 09 09:20:06 2013
Archived Log entry 12 added for thread 1 sequence 15 ID 0x50ab6422 dest 1:
Media Recovery Log /u01/app/arch1/standby/2_9_825676742.dbf
Media Recovery Log /u01/app/arch1/standby/2_10_825676742.dbf
Media Recovery Waiting for thread 2 sequence 11

在备库上验证数据同步

SQL> select * from t;

ID
----------
1

从上面的alter日志可以看到,节点orcl1的日志序列号要高于节点orcl2的序列号,在备库上应用的时候使用了不同的线程,节点一使用thread 1 节点二使用thread 2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle dataguard 搭建 rac