Data Guard配置步骤
生产端配置步骤
1.关闭一个实例。
用oracle用户登录192.166.1.190,执行以下SQL关闭其上的实例:
SQL>shutdown immediate;
2.检查另一个实例以确保它是打开的。
用oracle用户登录192.166.1.191,用以下SQL确保其上的实例是打开状态:
SQL> select status from v$instance;
STATUS
------------------------------------
OPEN
3.在192.166.1.191上用show parameter<parameter name>;检查以下参数是否正确配置(<parameter name>用以下:左边的参数名替换,包括参数值的一对’是为步骤4所用,检查参数值时可以忽略):
DB_NAME : ‘ipcc’
DB_UNIQUE_NAME : ‘ipccp’
LOG_ARCHIVE_CONFIG : ‘dg_config=(ipccp,ipccs)’
CONTROL_FILES : ‘+DG_ORA(CONTROLFILE)/ipccp/ora_ctl01’, ‘+DG_ORA(CONTROLFILE)/ipccp/ora_ctl02’, ‘+DG_ORA(CONTROLFILE)/ipccp/ora_ctl03’
LOG_ARCHIVE_DEST_1 : ‘LOCATION=+DG_BACKUP valid_for= (ALL_LOGFILES,ALL_ROLES)’
LOG_ARCHIVE_DEST_2 : ‘service="ipccs" LGWR ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="ipccs" net_timeout=30 valid_for=(all_logfiles, primary_role)’
LOG_ARCHIVE_DEST_STATE_1 : enable
LOG_ARCHIVE_DEST_STATE_2 : enable
REMOTE_LOGIN_PASSWORDFILE : ‘EXCLUSIVE’
LOG_ARCHIVE_FORMAT : ‘%t_%s_%r.dbf’
LOG_ARCHIVE_MAX_PROCESSES : 30
FAL_SERVER : ‘ipccs’
DB_FILE_NAME_CONVERT : ‘+DG_DATA’, ‘+DG_DATA’
LOG_FILE_NAME_CONVERT : ‘+DG_ORA/ipccs’, ‘+DG_ORA/ipccp’
STANDBY_FILE_MANAGEMENT : ‘AUTO’
& 说明:
- 数据库参数db_file_name_convert和log_file_name_convert这两个参数里的路径对里,前者必须是容灾端的路径,后者必须是生产端的路径。
- LOG_ARCHIVE_CONFIG : ‘dg_config=(ipccp,ipccs)’里的ipccp和ipccs均为db_uniqe_name参数值。
- LOG_ARCHIVE_DEST_2 里‘service="ipccs"的ipccs是生产端tnsnames.ora里的用于连接容灾端的连接字符串别名。
- FAL_SERVER 里‘ipccs’的ipccs是生产端tnsnames.ora里的用于连接容灾端的连接字符串别名。
4.如果以上检查结果与规划不一致,在生产端节点192.166.1.191上按照以下方法对这些参数进行修改,然后重启实例使其生效(<parameter name>用步骤3里:前的参数名替换,<parameter value>用步骤3里:后的参数值替换):
SQL>alter system set <parameter name>=<parameter value> scope=spfile;
利用以上语句修改了所有参数之后,执行以下语句使其生效:
SQL>shutdown immediate;
SQL>startup;
5.配置生产端所有节点的监听:
以grid用户登录192.166.1.191,执行以下命令:
grid@DB1:/opt/oracrs/product/11gR2/grid/network/admin> srvctl add listener -l listener_db2 -p "TCP:1526"
grid@DB1:/opt/oracrs/product/11gR2/grid/network/admin> srvctl start listener -l listener_db2
& 说明:
- 如果生产端已经配置了监听,则不需要执行srvctl add listener命令直接执行以下步骤。另外,如果生产端的监听是在oracle用户下配置的,则以下关于监听的配置均在oracle用户下进行,而不是grid用户下进行。
以grid用户登录192.166.1.191,进入到$ORACLE_HOME/network/admin下,编辑listener.ora添加以下内容:
SID_LIST_LISTENER_DB2 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ipccp)
(ORACLE_HOME = /opt/oracle/product/11gR2/db)
(SID_NAME = ipccp1)
)
)
以oracle用户登录192.166.1.191上数据库实例,修改LOCAL_LISTENER参数值:
oracle@DB1:/opt/oracle/product/11gR2/db/network/admin> sqlplus / as sysdba
SQL>alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.166.1.104)(PORT=1526))))' scope=both sid=’ipccp1’;
以grid用户登录192.166.1.191,重启监听:
grid@DB1:~> srvctl stop listener -l listener_db2
grid@DB1:~> srvctl start listener -l listener_db2
以grid用户登录192.166.1.190,进入到$ORACLE_HOME/network/admin下,编辑listener.ora添加以下内容:
SID_LIST_LISTENER_DB2 =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ipccp)
(ORACLE_HOME = /opt/oracle/product/11gR2/db)
(SID_NAME = ipccp2)
)
)
以oracle用户登录192.166.1.190上数据库实例,修改LOCAL_LISTENER参数值:
oracle@DB1:/opt/oracle/product/11gR2/db/network/admin> sqlplus / as sysdba
SQL>startup;
SQL>alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.166.1.105)(PORT=1526))))' scope=both sid=’ipccp2’;
以grid用户登录192.166.1.190,重启监听:
grid@DB1:~> srvctl stop listener -l listener_db2
grid@DB1:~> srvctl start listener -l listener_db2
& 说明:
- 上面所用的/opt/oracle/product/11gR2/db是oracle用户下echo $ORACLE_HOME的返回值。
- GLOBAL_DBNAME = ipccp里的ipccp是生产端的db_unique_name参数值。
6.配置生产端所有节点的tnsnames.ora:
以oracle用户登录192.166.1.191,进入到$ORACLE_HOME/network/admin下,编辑tnsnames.ora添加以下内容:
ipccs =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.166.1.50)(PORT = 1525))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ipccs)
)
)
以oracle用户登录192.166.1.190,进入到$ORACLE_HOME/network/admin下,编辑tnsnames.ora添加以下内容:
ipccs =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.166.1.50)(PORT = 1525))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ipccs)
)
)
7.在生产端节点192.166.1.191添加容灾日志组:
SQL> alter database add standby logfile thread 1 group 5 '+DG_ORA/ipccp/ora_sdb05_1' size 524288000;
SQL> alter database add standby logfile thread 1 group 6 '+DG_ORA/ipccp/ora_sdb06_1' size 524288000;
SQL> alter database add standby logfile thread 1 group 7 '+DG_ORA/ipccp/ora_sdb07_1' size 524288000;
SQL> alter database add standby logfile thread 2 group 8 '+DG_ORA/ipccp/ora_sdb08_1' size 524288000;
SQL> alter database add standby logfile thread 2 group 9 '+DG_ORA/ipccp/ora_sdb09_1' size 524288000;
SQL> alter database add standby logfile thread 2 group 10 '+DG_ORA/ipccp/ora_sdb010_1' size 524288000;
& 说明:
- 容灾日志组用于容灾端的REDO应用。因为生产端在switchover或failover之后也会变为容灾端,所以生产端也必须配置容灾日志组。
- 生产端容灾日志组必须要比容灾端对应thread的重做日志组的组数至少大于一,如容灾端两个thread的重做日志组均为3,则生产端的两个thread的容灾日志组必须至少均为4。容灾日志组大小必须和重做日志一样。
可以利用生产端的备份集配置容灾端,也可用RMAN的duplicate命令配置容灾端。这里对这两种方法分别介绍。