RAC 配置 dataguard
1、配置实例
Primary Standby
RAC(2 instance) Single Instance
环境:
RAC PRIMARY STANDBY
HOST RAC1 RAC2 DG
IP VIP 192.168.5.239
PUBIP 192.168.5.246
PRIIP 10.0.0.1
VIP 192.168.5.240
PUBIP 192.168.5.247
PRIIP 10.0.0.2
192.168.5.243
Instance racdb1 racdb1 racdb
DB_NAME racdb racdb
Data 、 control
file、redo file
ASM /usr/oracle/oradata/racdb
2、Primary准备工作
1)启动数据库 force logging
SQL> alter database force logging;
2)配置 primary归档模式
配置 flash recovery area,用于存放两个实例的归档
SQL> alter system set db_recovery_file_dest_size=4G;
SQL> alter system set db_recovery_file_dest='+recovery';
SQL> show parameter recovery
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string +recovery
db_recovery_file_dest_size big integer 4G
recovery_parallelism integer 0
启动归档,要求两个实例都处于非 OPEN 状态,在其中一个实例处于 mount 状态修改后,再
打开其他实例即可。
SQL> alter database archivelog;
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 18
Next log sequence to archive 19
Current log sequence 19
3、Standby准备工作
目录规划
[oracle@dg ~]$ cd /usr/oracle
$ mkdir -p oradata/racdb/archive
$ mkdir –p admin/racdb
$ cd admin/racdb
$ mkdir adump bdump dpdump pfile udump
4、生成 standby 数据库的备份、参数文件、密码文件、控制文件
1)primary和 standby 参数文件
SQL> create pfile='/usr/oracle/initracdb.ora' from spfile;
Primary最终参数文件:
racdb2.__db_cache_size=83886080
racdb1.__db_cache_size=88080384
racdb1.__java_pool_size=4194304
racdb2.__java_pool_size=4194304
racdb1.__large_pool_size=4194304
racdb2.__large_pool_size=4194304
racdb2.__shared_pool_size=109051904
racdb1.__shared_pool_size=104857600
racdb1.__streams_pool_size=0
racdb2.__streams_pool_size=0
*.audit_file_dest='/usr/oracle/admin/racdb/adump'
*.background_dump_dest='/usr/oracle/admin/racdb/bdump'
*.cluster_database_instances=2
*.cluster_database=true
*.compatible='10.2.0.1.0'
*.control_files='+DATA/racdb/controlfile/current.260.749574973'
*.core_dump_dest='/usr/oracle/admin/racdb/cdump'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='racdb'
*.db_recovery_file_dest_size=4294967296
*.db_recovery_file_dest='+recovery'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=racdbXDB)'
racdb2.instance_number=2
racdb1.instance_number=1
*.job_queue_processes=10
racdb2.local_listener='LISTENERS_RACDB2'
racdb1.local_listener='LISTENERS_RACDB1'
*.log_archive_config='dg_config=(racdb,racdb_single)'
*.log_archive_dest_2='service=racdb_single db_unique_name=racdb_single lgwr async'
*.log_archive_dest_state_2='ENABLE'
*.open_cursors=300
*.pga_aggregate_target=52428800
*.processes=150
*.remote_listener='LISTENERS_RACDB'
*.remote_login_passwordfile='exclusive'
*.sga_target=209715200
racdb2.thread=2
racdb1.thread=1
*.undo_management='AUTO'
racdb2.undo_tablespace='UNDOTBS2'
racdb1.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/usr/oracle/admin/racdb/udump'
Standby参数文件为:
*.audit_file_dest='/usr/oracle/admin/racdb/adump'
*.background_dump_dest='/usr/oracle/admin/racdb/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/usr/oracle/oradata/racdb/control01.ctl'
*.core_dump_dest='/usr/oracle/admin/racdb/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='racdb'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=racdbXDB)'
*.job_queue_processes=10
*.db_unique_name='racdb_single'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.log_archive_config='dg_config=(racdb,racdb_single)'
*.log_archive_dest_1='location=/usr/oracle/oradata/racdb/archive'
*.log_archive_format='%t_%s_%r.dbf'
*.db_file_name_convert='+DATA/racdb/datafile','/usr/oracle/oradata/racdb'
*.log_file_name_convert='+DATA/racdb/onlinelog','/usr/oracle/oradata/racdb'
*.standby_file_management=auto
*.fal_client='racdb_single'
*.fal_server='racdb1','racdb2'
*.open_cursors=300
*.pga_aggregate_target=52428800
*.processes=150
*.remote_login_passwordfile='exclusive'
*.sga_target=209715200
*.standby_file_management='auto'
*.user_dump_dest='/usr/oracle/admin/racdb/udump'
2)密码文件
直接拷贝一个实例上的密码文件即可。
[oracle@rac1 ~]$ ls /usr/oracle/product/10.2.0/db/dbs/orapwracdb1
3)利用 RMAN 备份数据库
[oracle@rac1 ~]$ rman
[oracle@rac1 ~]$ rman
Recovery Manager: Release 10.2.0.1.0 - Production on 星期四 5月 5 10:54:15 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
RMAN> connect target
connected to target database: RACDB (DBID=747191741)
RMAN> backup database format '/usr/oracle/full.bak';
4)创建 standby 控制文件
SQL> alter database create standby controlfile as '/usr/oracle/control01.ctl';
5)设置 primary和 standby 的 listener和 tnsnames.ora
Primary:
Rac1:
Listener:
LISTENER_RAC1 =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.239)(PORT = 3173)(IP = FIRST))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.246)(PORT = 3173)(IP = FIRST))
)
)
)
tnsnames.ora
RACDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.239)(PORT = 3173))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
(INSTANCE_NAME = racdb1)
)
)
RACDB2 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.240)(PORT = 3173))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
(INSTANCE_NAME = racdb2)
)
)
RACDB_SINGLE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.243)(PORT = 3173))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = racdb)
)
)
Rac2的 listener 和 tnsname 和 RAC1 类似
Standby:
Listener:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC=
(GLOBAL_DBNAME = racdb)
(ORACLE_HOME = /usr/oracle/product/10.2.0)
(SID_NAME = racdb)
)
)
LISTENER =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.5.243)(PORT=3173))
)
tnsname.ora
和 primary 的 tnsnames.ora 相同
5、生成 standby 数据库
1)ftp 将在 primary 数据库生成的数据库备份,控制文件、参数文件、密码文件分别放到对
应的目录下。
2)启动 standby 数据库到 mount 状态
$ sqlplus " / as sysdba"
SQL> startup nomount
SQL> alter database mount
3)使用 RMAN restore 数据文件
$ORACLE_HOME/bin/rman
RMAN> connect target
RMAN> restore database
4)创建 standby redo logfiles
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/usr/oracle/oradata/racdb/group_2.262.749574975
/usr/oracle/oradata/racdb/group_1.261.749574975
/usr/oracle/oradata/racdb/group_3.265.749575023
/usr/oracle/oradata/racdb/group_4.266.749575023
需要针对每个 thread创建 3 个 standby 日志组
SQL> alter database add standby logfile thread 1
group 5 ('/usr/oracle/oradata/racdb/st_1_5.log')size 50M,
group 6 ('/usr/oracle/oradata/racdb/st_1_6.log')size 50M,
group 7 ('/usr/oracle/oradata/racdb/st_1_7.log')size 50M;
SQL> alter database add standby logfile thread 2
group 8 ('/usr/oracle/oradata/racdb/st_2_8.log')size 50M,
group 9 ('/usr/oracle/oradata/racdb/st_2_9.log')size 50M,
group 10 ('/usr/oracle/oradata/racdb/st_2_10.log')size 50M;
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/usr/oracle/oradata/racdb/group_2.262.749574975
/usr/oracle/oradata/racdb/group_1.261.749574975
/usr/oracle/oradata/racdb/group_3.265.749575023
/usr/oracle/oradata/racdb/group_4.266.749575023
/usr/oracle/oradata/racdb/st_1_5.log
/usr/oracle/oradata/racdb/st_1_6.log
/usr/oracle/oradata/racdb/st_1_7.log
/usr/oracle/oradata/racdb/st_2_8.log
/usr/oracle/oradata/racdb/st_2_9.log
/usr/oracle/oradata/racdb/st_2_10.log
5)启动 standby 数据库日志应用
SQL> recover managed standby database using current logfile disconnect from session;
SQL> select process,status from v$managed_standby;
PROCESS STATUS
--------- ------------
ARCH CLOSING
ARCH CONNECTED
MRP0 WAIT_FOR_LOG
RFS IDLE
RFS IDLE
RFS IDLE
6、在 primary 进行操作,验证数据同步
primary
[oracle@rac1 ~]$ sqlplus " / as sysdba"
SQL> alter tablespace test add datafile size 100M;
Tablespace altered.
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
+DATA/racdb/datafile/system.256.749574909
+DATA/racdb/datafile/undotbs1.258.749574911
+DATA/racdb/datafile/sysaux.257.749574911
+DATA/racdb/datafile/users.259.749574911
+DATA/racdb/datafile/undotbs2.264.749575005
+DATA/racdb/datafile/test.268.750281521
+DATA/racdb/datafile/test.269.750339203
Standby
[oracle@dg oracle]$ sqlplus " / as sysdba"
SQL> select process,status from v$managed_standby;
PROCESS STATUS
--------- ------------
ARCH CLOSING
ARCH CLOSING
RFS IDLE
RFS IDLE
RFS IDLE
RFS IDLE
MRP0 APPLYING_LOG
SQL> select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/usr/oracle/oradata/racdb/system.256.749574909
/usr/oracle/oradata/racdb/undotbs1.258.749574911
/usr/oracle/oradata/racdb/sysaux.257.749574911
/usr/oracle/oradata/racdb/users.259.749574911
/usr/oracle/oradata/racdb/undotbs2.264.749575005
/usr/oracle/oradata/racdb/test.268.750281521
/usr/oracle/oradata/racdb/test.269.750339203
7、switchover
在 switchover 过程中,只能有一个主实例和一个 standby 实例处于 active 状态中,因此,在
switchover 之前,停止集群中的其他实例。
如果 standby 数据库为 RAC 的话,日志接收和日志恢复可以不是同一个实例,分别称为
Receive Instance和 Recover Instance。为了简化,一般将二者统一为一个 instance,
本文档为【Oracle 10g RAC配置DATAGUARD】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。