DATAGUARD BROKER配置步骤

xiaoxiao2021-02-28  125

配置broker的前提是你的有个运行正常的dataguard,我只写了在dataguard基础上配置的broker,dataguard的步骤省略了。

1.主备库查看dg_broker_start的状态

SQL> show parameter dg_broker_start; NAME     TYPE VALUE ------------------------------------ ----------- ------------------------------ dg_broker_start     boolean FALSE 该参数默认会被设为FALSE,设为TRUE会随数据库实例而自动启动 SQL>alter system set dg_broker_start = true scope=both; Systemaltered. SQL>SHOW PARAMETER DG_BROKER_START   NAME                              TYPE    VALUE ----------------------------------------------- ------------------------------ dg_broker_start                boolean TRUE 2.启用 Flashback 可以通过如下SQL 查看是否启用了Flashback: SQL>select flashback_on from v$database; FLASHBACK_ON ------------------ NO   在主备库查看: SQL>show parameter db_recovery_file_dest  NAME                              TYPE    VALUE ----------------------------------------------- ------------------------------ db_recovery_file_dest               string    /u01/app/oracle/fast_recovery_area db_recovery_file_dest_size        big integer 1G 在启用Flashback database 之前,需要先设置db_recovery_file_dest_size参数,而后才可以设置db_recovery_file_dest 如果在备库开启闪回需要先取消recover 进程,不然会报错。 主库: SQL>alter database flashback on; Database altered. SQL>select flashback_on from v$database; FLASHBACK_ON ------------------ YES 备库: SQL>alter database recover managed standby database cancel; Databasealtered. SQL>alter database flashback on; Database altered. SQL>select flashback_on from v$database; FLASHBACK_ON ------------------ YES SQL>alter database recover managed standby database disconnect from session using current logfile; Database altered. 3.配置主库、备库的db_domain 主库: SQL> shutdown immediate vi /u01/app/oracle/product/11.2.0/db_1/dbs/initdsdfdb.ora *.db_domain='cuiyan1.com' SQL> startup nomount pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initdsdfdb.ora'; SQL> create spfile from pfile; SQL> shutdown immediate SQL> startup nomount SQL> alter database mount; SQL> alter database open; SQL> show parameter db_domain; NAME     TYPE VALUE ------------------------------------ ----------- ------------------------------ db_domain     string cuiyan1.com 备库; SQL> alter database recover managed standby database cancel; SQL> shutdown immediate vi /u01/app/oracle/product/11.2.0/db_1/dbs/initdsdfdb.ora *.db_domain='cuiyan2.com' SQL> startup nomount pfile='/u01/app/oracle/product/11.2.0/db_1/dbs/initdsdfdb.ora'; SQL> create spfile from pfile; SQL> shutdown immediate SQL> startup nomount SQL> alter database mount standby database; SQL> alter database recover managed standby database disconnect from session; SQL> alter database recover managed standby database cancel; SQL> alter database open read only; SQL> alter database recover managed standby database using current logfile disconnect; SQL> show parameter db_domain; NAME     TYPE VALUE ------------------------------------ ----------- ------------------------------ db_domain     string cuiyan2.com 4.配置监听 设置listener  在Data Guard Broker环境中,需要在listener.ora静态添加一个service_name为db_unique_name_DGMGRL.db_domain的注册。这个service_name会在DGMGRL重启数据库的时候用到。通过DGMGRL重启数据库时DMON进程会先将数据库关闭,然后DGMGRL用此service_name通过listener连接到数据库,发出启动命令。这个环节很容易出错,下面的配置方法是经过实验成功的。 主库: vi $ORACLE_HOME/network/admin/listener.ora SID_LIST_LISTENER =  (SID_LIST =     (SID_DESC =      (GLOBAL_DBNAME = dsdfdbm_DGMGRL.cuiyan1.com)----------------<db_unique_name>_DGMGRL.<db_domain>       (ORACLE_HOME =/u01/app/oracle/product/11.2.0/db_1)       (SID_NAME = dsdfdb)     )    (SID_DESC =      (GLOBAL_DBNAME = dsdfdbm)------------db_unique_name      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)      (SID_NAME = dsdfdb)     )   ) LISTENER =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.255.0.51)(PORT = 1521))   ) ADR_BASE_LISTENER =/u01/app/oracle $ lsnrctl reload 备库: vi $ORACLE_HOME/network/admin/listener.ora SID_LIST_LISTENER =  (SID_LIST =    (SID_DESC =      (GLOBAL_DBNAME = dsdfdbs_DGMGRL.cuiyan2.com)      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)      (SID_NAME = dsdfdb)     )   ) LISTENER =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.255.0.52)(PORT = 1521))   ) ADR_BASE_LISTENER =/u01/app/oracle $ lsnrctl reload 主备库的tnsnames.ora dsdfdbs_DGMGRL =         (DESCRIPTION =                 (ADDRESS_LIST =                 (ADDRESS = (PROTOCOL = TCP)(HOST =10.255.0.52)(PORT = 1521))                 )         (CONNECT_DATA = (SERVICE_NAME =dsdfdbm_DGMGRL.cuiyan2.com)     )   ) dsdfdbm_DGMGRL = (DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST =10.255.0.51)(PORT = 1521))     )     (CONNECT_DATA =       (SERVICE_NAME = dsdfdbs_DGMGRL.cuiyan1.com)     )   ) dsdfdbm =     (DESCRIPTION =        (ADDRESS_LIST =           (ADDRESS = (PROTOCOL = TCP)(HOST = 10.255.0.51)(PORT = 1521))        )       (CONNECT_DATA =          (SERVER = DEDICATED)          (SERVICE_NAME = dsdfdbm)       )     ) dsdfdbs =     (DESCRIPTION =        (ADDRESS_LIST =           (ADDRESS = (PROTOCOL = TCP)(HOST = 10.255.0.52)(PORT = 1521))        )       (CONNECT_DATA =          (SERVER = DEDICATED)          (SERVICE_NAME = dsdfdbs)       )     ) 5.修改主备库保护模式 一般创建完备库,默认的保护模式是最大性能,主备库都改 SQL> select database_role,protection_mode,protection_level from v$database; DATABASE_ROLE PROTECTION_MODE      PROTECTION_LEVEL ---------------- -------------------- -------------------- PRIMARY MAXIMUM PERFORMANCE  MAXIMUM PERFORMANCE 切换到最高可用模式 SQL> alter database set standby database to maximize availability; Database altered. SQL> select database_role,protection_mode,protection_level from v$database; DATABASE_ROLE PROTECTION_MODE      PROTECTION_LEVEL ---------------- -------------------- -------------------- PRIMARY MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY 6.创建配置及添加备库 [oracle@ibpsdba ~]$ dgmgrl DGMGRL> connect sys/123456@dsdfdbm Connected. 语法:     CREATE CONFIGURATION <configurationname> AS     PRIMARY DATABASE IS <database name>   --主库的DB_UNIQUE_NAME CONNECT IDENTIFIER IS <connect identifier>; --主库的TNS_NAME   ADD DATABASE <database name>            --备库的DB_UNIQUE_NAME     [AS CONNECT IDENTIFIER IS <connect identifier>]  --备库的TNS_NAME     [MAINTAINED AS {PHYSICAL|LOGICAL}]; DGMGRL> create configuration 'Broker' as primary database is 'dsdfdbm' connect identifier is dsdfdbm_DGMGRL; Configuration "Broker" created with primary database "dsdfdbm" DGMGRL> add database 'dsdfdbs' as connect identifier is dsdfdbs_DGMGRL maintained as physical; Database "dsdfdbs" added DGMGRL> show configuration; Configuration - Broker   Protection Mode: MaxAvailability   Databases:     dsdfdbm - Primary database     dsdfdbs - Physical standby database Fast-Start Failover: DISABLED Configuration Status: DISABLED DGMGRL> ENABLE CONFIGURATION; Enabled. DGMGRL> show configuration; Configuration - Broker   Protection Mode: MaxAvailability   Databases:     dsdfdbm - Primary database     dsdfdbs - Physical standby database (disabled) Fast-Start Failover: DISABLED Configuration Status: SUCCESS DGMGRL> ENABLE FAST_START FAILOVER; Enabled. DGMGRL> show configuration; Configuration - Broker   Protection Mode: MaxAvailability   Databases:     dsdfdbm - Primary database       Warning: ORA-16819: fast-start failover observer not started     dsdfdbs - (*) Physical standby database       Warning: ORA-16819: fast-start failover observer not started Fast-Start Failover: ENABLED Configuration Status: WARNING DGMGRL> START OBSERVER FILE='/u01/app/oracle/product/11.2.0/db_1/dbs/dr1dsdfdbm.dat'; Observer started 注意: *启动之后,该前台进程不会退出,会一直挂在这。 直到从其他窗口关闭。 *默认情况下,observer会创建一个二进制的文件 fsfo.dat来保存主库和备库的连接信息。 这个文件会在调用dgmgrl命令的当前窗口下生成。 DGMGRL> show configuration; Configuration - Broker   Protection Mode: MaxAvailability   Databases:     dsdfdbm - Primary database     dsdfdbs - (*) Physical standby database Fast-Start Failover: ENABLED Configuration Status:

SUCCESS

测试故障转移 主库: SQL> shutdown abort     ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 3206836224 bytes Fixed Size    2232640 bytes Variable Size  654315200 bytes Database Buffers 2533359616 bytes Redo Buffers   16928768 bytes Database mounted. ORA-16649: possible failover to another database prevents this database from being opened 备库: SQL> select open_mode from v$database; select open_mode from v$database * ERROR at line 1: ORA-03135: connection lost contact Process ID: 31970 Session ID: 1 Serial number: 165 SQL> select * from t1; ERROR: ORA-03114: not connected to ORACLE 退出重新登录 SQL> select open_mode from v$database; OPEN_MODE -------------------- READ WRITE SQL> insert into t1 values(15,'9999'); 1 row created. DGMGRL> connect sys/123456@dsdfdbm Connected. DGMGRL> show configuration; ORA-16795: the standby database needs to be re-created Configuration details cannot be determined by DGMGRL DGMGRL> connect sys/123456@dsdfdbs Unable to connect to database ORA-12514: TNS:listener does not currently know of service requested in connect descriptor Failed. 主库退出重新登录 SQL> select open_mode from v$database; OPEN_MODE -------------------- MOUNTED

转载请注明原文地址: https://www.6miu.com/read-38222.html

最新回复(0)