一、修改dg_broker 为true
SQL> show parameter dg_broker_start
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_start boolean FALSE
SQL> alter system set dg_broker_start=true;
System altered.
SQL> show parameter dg_broker_start
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_start boolean TRUE
主库:
SQL> show parameter dg
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1 string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/dr1rac.dat
dg_broker_config_file2 string /u01/app/oracle/product/11.2.0
/dbhome_1/dbs/dr2rac.dat
dg_broker_start boolean TRUE
并且使用spfile起库
在主库创建连接到主库:
DGMGRL> connect
Username: sys
Password:
Connected.
创建配置:
DGMGRL> create configuration 'dg_rac' as primary database is 'rac' connect identifier is 'rac';
Configuration "dg_rac" created with primary database "rac"
create configuration '随意起名' as primary database is 'db_unique_name' connect identifier is 'tnsname.ora里连接主库';
查看配置信息:
DGMGRL> show configuration
Configuration - dg_rac
Protection Mode: MaxPerformance
Databases:
rac - Primary database
Fast-Start Failover: DISABLED
Configuration Status:
DISABLED
添加备库到配置信息:
DGMGRL> add database 'orcl' as connect identifier is 'orcl' maintained as physical;
Database "orcl" added
add database 'db_unique_name' as connect identifier is 'tnsname.ora连接备库' maintained as physical;
查看配置信息:
DGMGRL> show configuration
Configuration - dg_rac
Protection Mode: MaxPerformance
Databases:
rac - Primary database
orcl - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
DISABLED
开启配置信息:
DGMGRL> enable configuration;
Enabled.
DGMGRL> show configuration
Configuration - dg_rac
Protection Mode: MaxPerformance
Databases:
rac - Primary database
orcl - Physical standby database (disabled) ---有点问题
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL> remove database orcl
Removed database "orcl" from the configuration
DGMGRL> show configuration
Configuration - dg_rac
Protection Mode: MaxPerformance
Databases:
rac - Primary database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL> show configuration
Configuration - rac_dg
Protection Mode: MaxPerformance
Databases:
rac - Primary database
orcl - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
ORA-16610: command "ENABLE DATABASE rac" in progress
DGM-17017: unable to determine configuration status
DGMGRL> enable database rac;
DGMGRL> show configuration
Configuration - rac_dg
Protection Mode: MaxPerformance
Databases:
rac - Primary database
Warning: ORA-16532: Data Guard broker configuration does not exist
orcl - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
WARNING
最后找到问题的关键原因是:dg_broker_config_file1 /u01/app/oracle/product/11.2.0/dbhome_1/dbs/dr1rac.dat 文件不共享
DGMGRL> remove configuration;
SQL> alter system set dg_broker_config_file1='+data/rac/dr1rac.dat' scope=both sid='*';
alter system set dg_broker_config_file1='+data/rac/dr1rac.dat' scope=both sid='*'
*
ERROR at line 1:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-16573: attempt to change or access configuration file for an enabled broker
configuration
SQL> alter system set dg_broker_start=false scope=both sid='*';
System altered.
SQL> show parameter dg_broker_start
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_start boolean FALSE
SQL> alter system set dg_broker_config_file1='+data/rac/dr1rac.dat' sid='*';
System altered.
SQL> alter system set dg_broker_config_file2='+data/rac/dr2rac.dat' sid='*';
System altered.
SQL> alter system set dg_broker_start=true scope=both sid='*';
System altered.
SQL> show parameter dg
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1 string +data/rac/dr1rac.dat
dg_broker_config_file2 string +data/rac/dr2rac.dat
dg_broker_start boolean TRUE
SQL>
DGMGRL> create configuration 'dg_rac' as primary database is 'rac' connect identifier is 'rac';
Configuration "dg_rac" created with primary database "rac"
DGMGRL> add database 'orcl' as connect identifier is 'orcl' maintained as physical;
DGMGRL> show configuration
Configuration - dg_rac
Protection Mode: MaxPerformance
Databases:
rac - Primary database
orcl - Physical standby database (disabled)
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL> enable database orcl
Enabled.
DGMGRL> show configuration
Configuration - dg_rac
Protection Mode: MaxPerformance
Databases:
rac - Primary database
orcl - Physical standby database (disabled) ---出现问题的原因是 需要恢复日志一下
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
备库:
SQL> recover managed standby database disconnect from session;
Media recovery complete.
SQL> recover managed standby database cancel;
Media recovery complete.
主库:
DGMGRL> show configuration
Configuration - dg_rac
Protection Mode: MaxPerformance
Databases:
rac - Primary database
orcl - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL> switchover to orcl
Performing switchover NOW, please wait...
New primary database "orcl" is opening...
Operation requires shutdown of instance "rac2" on database "rac"
Shutting down instance "rac2"...
ORA-01109: database not open
Database dismounted.
ORACLE instance shut down.
Operation requires startup of instance "rac2" on database "rac"
Starting instance "rac2"...
Unable to connect to database
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
Failed.
Warning: You are no longer connected to ORACLE.
Please complete the following steps to finish switchover:
start up and mount instance "rac2" of database "rac"
主库和备库切换后,主库自动关闭,备库变成primary,处于open状态,但是之前连接的sesion全部断开,必须重新连接。
主库和备库切换状态后,查询状态:
SQL> select database_role from v$database;
DATABASE_ROLE
----------------
PHYSICAL STANDBY