1.開啟flashback(主備)
#主库
SQL> select log_mode,open_mode,flashback_on from v$database;
LOG_MODE OPEN_MODE FLASHBACK_ON
------------ -------------------- ------------------
ARCHIVELOG READ WRITE NO
SQL> alter database flashback on;
SQL> select log_mode,open_mode,flashback_on from v$database;
LOG_MODE OPEN_MODE FLASHBACK_ON
------------ -------------------- ------------------
ARCHIVELOG READ WRITE YES
#备库
#停實時日誌應用
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> alter database flashback on;
SQL> select log_mode,open_mode,flashback_on from v$database;
LOG_MODE OPEN_MODE FLASHBACK_ON
------------ -------------------- ------------------
ARCHIVELOG READ ONLY YES
#開啟實時日誌應用
SQL> recover managed standby database using current logfile disconnect from session;
SQL> select log_mode,open_mode,flashback_on from v$database;
LOG_MODE OPEN_MODE FLASHBACK_ON
------------ -------------------- ------------------
ARCHIVELOG READ ONLY WITH APPLY YES
2.開啟 dg_broker_start (主備)
SQL> show parameter dg_broker_start;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_start boolean FALSE
SQL> alter system set dg_broker_start=true;
SQL> show parameter dg_broker_start;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_start boolean TRUE
3.检查 GLOBAL_NAME(主備)
SQL> select * from global_name;
GLOBAL_NAME
--------------------------------------------------------------------------------
DB11G
SQL> show parameter global_names;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
global_names boolean FALSE
4.配置broker(主库)
[oracle@xag1124a ~]$ dgmgrl sys/123456@DB11G_PRI
DGMGRL> CREATE CONFIGURATION my_dg_cfg AS PRIMARY DATABASE IS DB11G_PRI CONNECT IDENTIFIER IS DB11G_PRI;
#添加备用数据库
DGMGRL> ADD DATABASE DB11G_STBY AS CONNECT IDENTIFIER IS DB11G_STBY MAINTAINED AS PHYSICAL;
DGMGRL> ENABLE CONFIGURATION;
#显示配置
DGMGRL> SHOW CONFIGURATION;
Configuration - my_dg_cfg
Protection Mode: MaxAvailability
Databases:
db11g_pri - Primary database
db11g_stby - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
5.修改监听配置中的 GLOBAL_NAME
DGMGRL> show database verbose 'db11g_pri';
。。。
StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xag1124a)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=DB11G_PRI_DGMGRL)(INSTANCE_NAME=DB11G)(SERVER=DEDICATED)))'
。。。
#上面的 SERVICE_NAME=DB11G_PRI_DGMGRL 就需要 将 监听配置中的 GLOBAL_NAME=DB11G_PRI_DGMGRL
DGMGRL> show database verbose 'db11g_stby';
StaticConnectIdentifier = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xag1124b)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=DB11G_STBY_DGMGRL)(INSTANCE_NAME=DB11G)(SERVER=DEDICATED)))'
#上面的 SERVICE_NAME=DB11G_PRI_DGMGRL 就需要 将 监听配置中的 GLOBAL_NAME=DB11G_STBY_DGMGRL
6.最后查看监听和tns 内容
#主机
[oracle@xag1124a admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0.4/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
#LISTENER =
# (DESCRIPTION_LIST =
# (DESCRIPTION =
# (ADDRESS = (PROTOCOL = TCP)(HOST = xag1124a)(PORT = 1521))
# (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
# )
# )
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xag1124a)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = DB11G_PRI_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/db_1)
(SID_NAME = DB11G)
)
)
ADR_BASE_LISTENER = /u01/app/oracle
#备机
[oracle@xag1124b admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0.4/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xag1124b)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = DB11G_STBY_DGMGRL)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0.4/db_1)
(SID_NAME = DB11G)
)
)
ADR_BASE_LISTENER = /u01/app/oracle
#主&备
[oracle@xag1124X admin]$ cat tnsnames.ora
DB11G_PRI =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xag1124a)(PORT = 1521))
)
(CONNECT_DATA =
(SID = DB11G)
)
)
DB11G_STBY =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = xag1124b)(PORT = 1521))
)
(CONNECT_DATA =
(SID = DB11G)
)
)
7.测试切换
DGMGRL> SWITCHOVER TO db11g_stby;
Performing switchover NOW, please wait...
Operation requires a connection to instance "DB11G" on database "db11g_stby"
Connecting to instance "DB11G"...
Connected.
New primary database "db11g_stby" is opening...
Operation requires startup of instance "DB11G" on database "db11g_pri"
Starting instance "DB11G"...
ORACLE instance started.
Database mounted.
Database opened.
Switchover succeeded, new primary is "db11g_stby"
DGMGRL> show configuration;
Configuration - my_dg_cfg
Protection Mode: MaxAvailability
Databases:
db11g_stby - Primary database
db11g_pri - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS