I know there are various cases where in we have to setup a second physical standby database in our environments to have a redundant fail over strategy. I don't think there are enough documents out there that outline the process of adding the second standby database. I though I will share these steps today.
Parameters that should be considered while setting up the 2 node (single instance) standby Database.
In my case I will explain the parameters and their usage in setup. I am not going to explain the entire setup here. I you don't know how to setup physical standby database, please refer to this Physical_standby_setup.
At this point I am considering you know how to setup physical standby database and you are looking to add additional node to your setup.
Environments:
ORCL is PRIMARY INSTANCE and is on host LINUX01 >> Primary Instance
ORCLSTB1 is STANDBY INSTANCE and is on host LINUX02 >> Standby already exists
ORCLSTB2 is STANDBY INSTANCE and is on host LINUX03 >>> new instance to be added
PARAMETERS to be considered :
ARCHIVE_LOG_DEST_N >>> this needs to be set to ship your logs to the new node
This is a simple setup that can be used to makes sure all the three nodes will ship logs in case of switch over. In the below image I have configured such a way that each instance will send log files to other when they act as PRIMARY INSTANCE.
log_archive_config='dg_config=(ORCL,ORCLSTB1,ORCLSTB2)';
*.db_file_name_convert='/ORCLSTB1/','/ORCLSTB2/','/ORCL/','/ORCLSTB2/'
Parameters that should be considered while setting up the 2 node (single instance) standby Database.
In my case I will explain the parameters and their usage in setup. I am not going to explain the entire setup here. I you don't know how to setup physical standby database, please refer to this Physical_standby_setup.
At this point I am considering you know how to setup physical standby database and you are looking to add additional node to your setup.
Environments:
ORCL is PRIMARY INSTANCE and is on host LINUX01 >> Primary Instance
ORCLSTB1 is STANDBY INSTANCE and is on host LINUX02 >> Standby already exists
ORCLSTB2 is STANDBY INSTANCE and is on host LINUX03 >>> new instance to be added
PARAMETERS to be considered :
ARCHIVE_LOG_DEST_N >>> this needs to be set to ship your logs to the new node
This is a simple setup that can be used to makes sure all the three nodes will ship logs in case of switch over. In the below image I have configured such a way that each instance will send log files to other when they act as PRIMARY INSTANCE.
Example of Archive_Log_Dest setup
Adding Archive_log Dests:
ON DB SERVER Linux01 (ORCLPRIM):
alter system set log_archive_config='dg_config=(ORCL,ORCLSTB1,ORCLSTB2)';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=ORCLSTB1 NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCLSTB1';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_3='SERVICE=ORCLSTB2 NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCLSTB2';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_3=ENABLE;
ON DB SERVER Linux02 (ORCLSTB1):
alter system set log_archive_config='dg_config=(ORCL,ORCLSTB1,ORCLSTB2)';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=ORCLPRIM NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCL';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_3='SERVICE=ORCLSTB2 NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCLSTB2';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_3=ENABLE;
ON DB SERVER Linux03 (ORCLSTB2):
alter system set log_archive_config='dg_config=(ORCL,ORCLSTB1,ORCLSTB2)';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=ORCLPRIM NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCL';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_3='SERVICE=ORCLSTB1 NOAFFIRM ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=ORCLSTB1';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_3=ENABLE;
OTHER PARAMETER FILE SETTINGS:
PFILE DB_* PARAMETERS on DB SERVER1 (Linux01)(ORCL):
log_archive_config='dg_config=(ORCL,ORCLSTB1,ORCLSTB2)'; >> This is to tell oracle that what all instances are part of this config
*.db_file_name_convert='/ORCLSTB1/','/ORCL/','/ORCLSTB2/','/ORCL/' -- > add both servers so oracle knows where to create file.
*.db_name='ORCL' ### same across all Databases
*.db_unique_name='ORCL' ### Unique across each Database
FAL_SERVER=ORCLSTB1, ORCLSTB2-- > add both servers so oracle knows where to get the archive files from incase of switchover.
FAL_CLIENT=ORCLThis is always the Current DB server typically standby DB. This is ignored when the DB is in Primary mode
PFILE DB_* PARAMETERS on DB SERVER2 (Linux02)(ORCLSTB1):
log_archive_config='dg_config=(ORCL,ORCLSTB1,ORCLSTB2)';
*.db_file_name_convert='/ORCL/','/ORCLSTB1/','/ORCLSTB2/','/ORCLSTB1/'
*.db_file_name_convert='/ORCL/','/ORCLSTB1/','/ORCLSTB2/','/ORCLSTB1/'
*.db_name='ORCL'### same across all Databases
*.db_unique_name='ORCLSTB1' ### Unique across each Database
*.FAL_CLIENT=STANDBY_SERVER
*.FAL_SERVER=PRIMARY_SERVERS
PFILE DB_* PARAMETERS on DB SERVER3 (Linux03)(ORCLSTB2):
log_archive_config='dg_config=(ORCL,ORCLSTB1,ORCLSTB2)';
*.db_file_name_convert='/ORCLSTB1/','/ORCLSTB2/','/ORCL/','/ORCLSTB2/'
*.db_name='ORCL'### same across all Databases
*.db_unique_name='ORCLSTB2' ### Unique across each Database
*.FAL_CLIENT=STANDBY_SERVER
*.FAL_SERVER=PRIMARY_SERVERS
No comments:
Post a Comment