1. Architecture
In Oracle 10g, the process for transmitting logs to the standby node database is ARCH and LGWR. (In 11g, LGWR is replaced by LNS, but I'm not sure if it is LGWR in 10g !)
The slave node receives logs by using the log_archive_config, fal_client, and fal_server parameters, and communicates with the master node to identify whether the log is applied.
Data Guard adopts the maximum available mode to ensure that Data is synchronized to at least one node in real time. Because we chose the first slave node as the real-time data synchronization point, the synchronization process adopts the LGWR process.
2. Configuration
The main configuration items of initialization parameters of each node in the Data Guard 10g environment of two slave nodes on the master node.
Configure the initialization parameter file on the master node:
*. Log_archive_config = 'dg _ config = (codb, codg, codg2 )'
*. Log_archive_dest_1 = 'location =/oradata/htcodb/archive_logs_codb'
*. Log_archive_dest_2 = 'service = codb_standby lgwr sync affrem valid_for = (online_logfiles, primary_role) db_unique_name = codg'
*. Log_archive_dest_3 = 'service = codb_standby2 arch async affrem valid_for = (online_logfiles, primary_role) db_unique_name = codg2'
*. Log_archive_dest_state_2 = 'enable'
*. Log_archive_dest_state_3 = 'enable'
Configure the initialization parameter file on slave Node 1:
*. Db_name = 'codb'
*. Db_unique_name = 'codg'
*. Fal_client = 'Code _ standby'
*. Fal_server = 'codb _ primary'
*. Log_archive_config = 'dg _ config = (codb, codg, codg2 )'
*. Log_archive_dest_1 = 'location =/oradata/archivelog/valid_for = (all_logfiles, all_roles) db_unique_name = codg'
*. Log_archive_format = '% t _ % s _ % r. dbf'
Configure the initialization parameter file on slave Node 2:
*. Db_name = 'codb'
*. Db_unique_name = 'codg2'
*. Fal_client = 'codb _ standby'
*. Fal_server = 'codb _ primary'
*. Log_archive_config = 'dg _ config = (codb, codg2 )'
*. Log_archive_dest_1 = 'location =/u01/archivelog_standby/valid_for = (all_logfiles, all_roles) db_unique_name = codg2'
*. Log_archive_format = '% t _ % s _ % r. dbf'
Communication between the master and slave nodes is achieved through Oracle Net. The configuration information in Oracle Net is used on the fal_client and fal_server parameters.
In the tnsnames. ora file of the master node, the configuration items of DG are as follows:
CODB_PRIMARY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = codb1-vip.htsc.com.cn) (PORT = 1521 ))
(ADDRESS = (PROTOCOL = TCP) (HOST = codb2-vip.htsc.com.cn) (PORT = 1521 ))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = codb)
)
)-
CODB_STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.15.219) (PORT = 1521 ))
)
(CONNECT_DATA =
(SID = codb)
)
)
CODB_STANDBY2 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.15.90) (PORT = 1521 ))
)
(CONNECT_DATA =
(SID = codb)
)
)
In the tnsnames. ora file of slave Node 1, the configuration items of DG are as follows:
CODB_PRIMARY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = codb1-vip.htsc.com.cn) (PORT = 1521 ))
(ADDRESS = (PROTOCOL = TCP) (HOST = codb2-vip.htsc.com.cn) (PORT = 1521 ))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = codb)
)
)
CODB_STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.15.219) (PORT = 1521 ))
)
(CONNECT_DATA =
(SERVICE_NAME = codb)
)
)
In the tnsnames. ora file of slave Node 2, the configuration items of DG are as follows:
CODB_PRIMARY =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = codb1-vip.htsc.com.cn) (PORT = 1521 ))
(ADDRESS = (PROTOCOL = TCP) (HOST = codb2-vip.htsc.com.cn) (PORT = 1521 ))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = codb)
)
)
CODB_STANDBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP) (HOST = 192.168.15.90) (PORT = 1521 ))
)
(CONNECT_DATA =
(SERVICE_NAME = codb)
)
)