配置之前DG环境状态
测试的DG环境安装在同一个机器上,当前两个数据库处于同步的状态,两个实例的名字分别是TORCLA和TORCLB,数据库的名字TORCL,数据库DB_DOMAIN设置为mycompany,其他的设置如下。
listener.ora设置
( address =
( protocol = tcp ) ( host = orainst . desktop . mycompany . com ) ( port = 8000 ) ( queuesize = 32 )
)
log_file_L_torcla_001 =/ tmp / L_torclb_001 . log
SID_LIST_L_dg =
( SID_LIST =
( SID_DESC =
( ORACLE_HOME =/ data1 / dg / 10.2.0.2 / A10db )
( SID_NAME = torcl )
)
)
本地tnsname.ora的设置
( DESCRIPTION =
( ENABLE = BROKEN )
( ADDRESS_LIST =
( ADDRESS = ( PROTOCOL = TCP )( HOST = orainst . desktop . mycompany . com )( PORT = 8000 ))
)
( CONNECT_DATA =
( SID = torcl )
)
)
torcla . mycompany =
( DESCRIPTION =
( SDU = 32767 )
( ADDRESS_LIST =
( ADDRESS = ( PROTOCOL = TCP )( HOST = orainst . desktop . mycompany . com )( PORT = 8000 ))
( ADDRESS = ( PROTOCOL = TCP )( HOST = orainst . desktop . mycompany . com )( PORT = 8000 ))
)
( CONNECT_DATA =
( SERVICE_NAME = torcla . mycompany )
( SERVER = DEDICATED )
)
)
torclb . mycompany =
( DESCRIPTION =
( SDU = 32767 )
( ADDRESS_LIST =
( ADDRESS = ( PROTOCOL = TCP )( HOST = orainst . desktop . mycompany . com )( PORT = 8000 ))
( ADDRESS = ( PROTOCOL = TCP )( HOST = orainst . desktop . mycompany . com )( PORT = 8000 ))
)
( CONNECT_DATA =
( SERVICE_NAME = torclb . mycompany )
( SERVER = DEDICATED )
)
)
DG的相关设置
SYS @ torclb > SELECT DATABASE_ROLE , PROTECTION_MODE , OPEN_MODE , SWITCHOVER_STATUS FROM V $ DATABASE ;
DATABASE_ROLE PROTECTION_MODE OPEN_MODE SWITCHOVER_STATUS
------------------ -- ------------------------- --------------- --------------------
primary MAXIMUM PERFORMANCE READ WRITE SESSIONS ACTIVE
-- 日志归档相关设置
SYS @ torclb > show parameter log_archive_dest_1
NAME TYPE VALUE
---------------------------------- -- --------------------------------- ------------------------------
log_archive_dest_1 string location = " /data1/dg/databases/
torclb/redolog " , valid_for = ( ONL
INE_LOGFILE , ALL_ROLES )
SYS @ torclb > show parameter log_archive_dest_2
NAME TYPE VALUE
---------------------------------- -- --------------------------------- ------------------------------
log_archive_dest_1 string SERVICE = torcla . mycompany valid_fo
tr = ( online_logfile , primary_ro
tle ) REOPEN = 60 OPTIONAL LGWR S
tYNC AFFIRM db_unique_name = torcla
broker设置准备工作
下面按照上一篇文章所列出的准备工作清单一一做一遍。
设置primary和standby使用spfile
不管是primary数据库还是standby数据库都要完成这一步,设置完毕后重启下数据库使设置生效。
SYS @ torclb > create spfile = ' /data1/dg/10.2.0.2/A10db/dbs/spfiletorclb.ora ' from pfile ;
File created .
--在当前的 standby 上
SYS @ torcla > create spfile = ' /data1/dg/10.2.0.2/A10db/dbs/spfiletorclb.ora ' from pfile ;
File created .
然后修改init文件设定spfile参数:
$ cat inittorclb . ora
spfile = ' spfiletorclb.ora '
-- standby的init文件
$ cat inittorcla . ora
spfile = ' spfiletorcla.ora '
配置DG_BROKER_CONFIG_FILEn
这里我们的DG_BROKER_CONFIG_FILEn不做特别的设置,使用默认的$ORACLE_HOME/dbs目录以及两个默认的文件名dr1.dat和dr2.dat。
当然也可以用sqlplus通过下面语句设定不同的目录,要注意在两个数据库上面都要设置:
alter system set dg_broker_config_file2 = ' /data1/dg/10.2.0.2/A10db/dbs/dr2torcla.dat '
设置local_listener
这一步设置是为了保证一些service name能正确的被注册上。
System altered .
添加静态的_unique_name_DGMGRL.db_domain注册
在当前的测试环境中primary和standby是在同一机器上面,因此这个service name的设置也是在同一个listener.ora文件上,设置完了以后的listener.ora如下
( address =
( protocol = tcp ) ( host = orainst . desktop . mycompany . com ) ( port = 8000 ) ( queuesize = 32 )
)
log_file_L_torcla_001 =/ tmp / L_torclb_001 . log
SID_LIST_L_dg =
( SID_LIST =
( SID_DESC =
( ORACLE_HOME =/ data1 / dg / 10.2.0.2 / A10db )
( SID_NAME = torcl )
)
( SID_DESC =
( ORACLE_HOME =/ data1 / dg / 10.2.0.2 / A10db )
( SID_NAME = torcla )
( GLOBAL_DBNAME = torcla_DGMGRL . mycompany )
)
( SID_DESC =
( ORACLE_HOME =/ data1 / dg / 10.2.0.2 / A10db )
( SID_NAME = torclb )
( GLOBAL_DBNAME = torclb_DGMGRL . mycompany )
)
)
(DESCRIPTION=
(ADDRESS= (PROTOCOL = TCP)(HOST = orainst.desktop.mycompany.com)(PORT = 8000))
(CONNECT_DATA=
(SERVICE_NAME= torcla_DGMGRL.mycompany)))
torclb_DGMGRL.mycompany =
(DESCRIPTION=
(ADDRESS= (PROTOCOL = TCP)(HOST = orainst.desktop.mycompany.com)(PORT = 8000))
(CONNECT_DATA=
(SERVICE_NAME=torclb_DGMGRL.mycompany)))
设置完毕后记得重启下listener,然后查看一下设置的效果:
$ lsnrctl service L_dg | grep ' Service '
Service " torcl " has 1 instance ( s ) .
Service " torcla.mycompany " has 1 instance ( s ) .
Service " torcla_DGMGRL.mycompany " has 1 instance ( s ) .
Service " torcla_XPT.mycompany " has 1 instance ( s ) .
Service " torclb.mycompany " has 1 instance ( s ) .
Service " torclb_DGMGRL.mycompany " has 1 instance ( s ) .
Service " torclb_XPT.mycompany " has 1 instance ( s ) .
从上面的listener上注册的服务我们可以看到动态注册的_XPT已经有了,说明local_listener设置正确,_DGMGRL也配置正确。
设置dg_broker_start为TRUE
这一步是启动Data Guard broker monitor(DMON)进程,在两个数据库上面都运行下下面的命令
然后查看下结果,先看进程是否起来了
$ ps - ef | grep dmon | grep - v grep
oracle 19389 1 0 09 : 51 ? 00 : 00 : 00 ora_dmon_torcla
oracle 19420 1 0 09 : 51 ? 00 : 00 : 00 ora_dmon_torclb
可以看到两个dmon进程都起来了,接下来看看service name _DGB有没有被正确的注册上
$ lsnrctl service L_dg | grep ' Service '
Service " torcl " has 1 instance ( s ) .
Service " torcla.mycompany " has 1 instance ( s ) .
Service " torcla_DGB.mycompany " has 1 instance ( s ) .
Service " torcla_DGMGRL.mycompany " has 1 instance ( s ) .
Service " torcla_XPT.mycompany " has 1 instance ( s ) .
Service " torclb.mycompany " has 1 instance ( s ) .
Service " torclb_DGB.mycompany " has 1 instance ( s ) .
Service " torclb_DGMGRL.mycompany " has 1 instance ( s ) .
Service " torclb_XPT.mycompany " has 1 instance ( s ) .
可以看到service name _DGB也正常的注册上了,到现在我们前期的准备工就已经全部完成了。
配置broker
现在我们可以来配置broker了,为了保证配置过程不会因为权限问题导致问题,我们始终都是用sys连接数据库的。
首先使用DGMGRL连接到primary机器上,运行下面的命令:
$ dgmgrl sys / 12345 @ torclb . mycompany
DGMGRL for Linux : Version 10.2.0.2.0 - Production
Copyright ( c ) 2000 , 2005 , Oracle . All rights reserved .
Welcome to DGMGRL , type " help " for information .
Connected .
DGMGRL > show configuration
Error : ORA - 16532 : Data Guard broker configuration does not exist
Configuration details can not be determined by DGMGRL
当前还没有任何的配置信息,现在创建一个配置
> primary database is ' torclb '
> connect identifier is torclb . mycompany ;
Configuration " FSF " created with primary database " torclb "
这样我们就创建了一个名为FSF的broker配置,接下来把standby机器也就入到配置中
> connect identifier is torcla . mycompany
> maintained as physical ;
Database " torcla " added
就这两步,broker的最基本配置就完成了,这下可以用show configuration来看成果了。
Configuration
Name : FSF
Enabled : NO
Protection Mode : MaxPerformance
Fast - Start Failover : DISABLED
Databases :
torclb - primary database
torcla - Physical standby database
Current status for " FSF " :
DISABLED
Enabled .
DGMGRL > show configuration
Configuration
Name : FSF
Enabled : YES
Protection Mode : MaxPerformance
Fast - Start Failover : DISABLED
Databases :
torclb - primary database
torcla - Physical standby database
Current status for " FSF " :
SUCCESS
这样就成了,一个成功的broker配置完成,挺简单的。
最后我们做一个switchover来检验下成果吧,具体的switchover的过程在后面再介绍。
Performing switchover NOW , please wait ...
Operation requires shutdown of instance " torclb " on database " torclb "
Shutting down instance " torclb " ...
ORA - 01109 : database not open
Database dismounted .
ORACLE instance shut down .
Operation requires shutdown of instance " torcla " on database " torcla "
Shutting down instance " torcla " ...
ORA - 01109 : database not open
Database dismounted .
ORACLE instance shut down .
Operation requires startup of instance " torclb " on database " torclb "
Starting instance " torclb " ...
ORACLE instance started .
Database mounted .
Operation requires startup of instance " torcla " on database " torcla "
Starting instance " torcla " ...
ORACLE instance started .
Database mounted .
Switchover succeeded , new primary is " torcla "
DGMGRL > show configuration
Configuration
Name : FSF
Enabled : YES
Protection Mode : MaxPerformance
Fast - Start Failover : DISABLED
Databases :
torclb - Physical standby database
torcla - Primary database
Current status for " FSF " :
SUCCESS
我们已经成功的将primary数据库却换成了torcla,用一个简单的命令,这个就是broker的优势所在,简单!
参考至:http://www.dbabeta.com/2009/learn-data-guard-broker_a-broker-example.html
如有错误,欢迎指正
邮箱:czmcj@163.com