暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

ORACLE 11g/12c/19c DG使用sqlplus、dg broker切换手册

原创 张鹏远 2023-02-16
1761

目 录

1. DG配置检查

1.1. DGbroker配置检查 

1.2. SQLPLUS配置检查 


使用SQLPLUS进行SWITCHOVER 

11g 

一、 先决条件 

1. 检查配置 

2. 检查备库中的redolog状态 

3. 检查主备库中的GAP 

4. 验证数据文件状态 

二、 Switchover切换 

1. 取消备库延迟应用 

2. 设置trc级别,并查看日志 

3. 创建还原点(可选操作)

4. 执行swithcover

三、 切换后步骤 

1. 设置trc为初始值 

2. 开启关闭JOB 

3. 主备库中删除已创建还原点 

12C及以上 

一、 先决条件 

1. 检查配置 

二、 Switchover切换 

1. 在主数据库和备用数据库上启用 Data Guard trc跟踪 

2. 监控日志 

3. 执行SWITCHOVER 

三、 切换后步骤 

1. 设置Trace为初始值 

2. 检查切换后状态 


使用DG Broker进行SWITCHOVER 

11G 

一、 先决条件 

1. 检查配置 

2. 检查备库中的redolog状态

3. 检查主备库中的GAP 

4. 验证数据文件状态

二、 Switchover切换

1. 取消备库延迟应用

2. 检查当前同步状态

3. 创建还原点(可选操作)

4. 执行swithcover 

三、 切换后步骤 

1. 如果设置延迟应用,需打开

2. 设置LogArchiveTrace为初始值 

3. 开启关闭JOB

4. 主备库中删除已创建还原点 

12C及以上 

一、 先决条件 

1. 检查配置 

二、 Switchover切换 

1. 取消备库延迟应用 

2. 在主数据库和备用数据库上启用 Data Guard trc跟踪 

3. 监控日志 

4. 执行SWITCHOVER 

三、 切换后步骤 

1. 如果设置延迟应用,需打开 

2. 设置Trace为初始值 

3. 检查切换后状态 

DG配置检查

DGbroker配置检查

主库

show parameter dg_broker_start;

show parameter DG_BROKER_CONFIG_FILE1;

show parameter DG_BROKER_CONFIG_FILE2;

备库

show parameter dg_broker_start;

show parameter DG_BROKER_CONFIG_FILE1;

show parameter DG_BROKER_CONFIG_FILE2;

主、备库动态监听配置检查(grid用户)

-主库动态监听配置检查

cat /app/oracle/19c/grid/network/admin/listener.ora

SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=orcl_DGMGRL)(SID_NAME=orcl)(ORACLE_HOME=/app/oracle/oracle/product/19c/dbhome_1)))

-备库动态监听检查

SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=orcladg_DGMGRL)(SID_NAME=orcladg)(ORACLE_HOME=/app/oracle/oracle/product/19c/dbhome_1)))

oracle用户

-主备库TNS配置检查

cat $ORACLE_HOME/network/admin/tnsnames.ora

别名配置为动态监听的GLOBAL_DBNAME

orcl_DGMGRL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = VIP)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = VIP)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl_DGMGRL)

)

)

别名配置为动态监听的GLOBAL_DBNAME

orcladg_DGMGRL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = VIP)(PORT = 1521))

(ADDRESS = (PROTOCOL = TCP)(HOST = VIP)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcladg_DGMGRL)

)

)

enable configuration;开启broker

show configuration;检查broker配置

show database xxx;检查备库应用状态

switchover to xxx;主备切换

常用命令:

show configuration;

show database xxx;

show database xxx;

show database verbose xxx;

show database verbose xxx;

show instance verbose xxx on database xxx;

show instance verbose xxx on database xxx;

SQLPLUS切换配置检查

核对参数

- 主库

log_archive_dest_2

service="orcldg"','LGWR ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="orcldg" net_timeout=30','valid_for=(all_logfiles,primary_role)

log_archive_config dg_config=(orcldg,orcl)

log_archive_dest_state_1 enable

log_archive_dest_state_2 ENABLE

fal_client

fal_server

- 备库

log_archive_dest_2 service="orcl", LGWR ASYNC NOAFFIRM delay=0 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="orcl" net_timeout=30, valid_for=(all_logfiles,primary_role)

log_archive_config dg_config=(orcldg,orcl)

log_archive_dest_state_1 enable

log_archive_dest_state_2 ENABLE

fal_client

fal_server

查看主备库tnsnames

cat /app/oracle/product/11.0.4/dbhome_1/network/admin/tnsnames.ora

- 主备库sqlplus 测试服务名连接

sqlplus sys/xxxx@orcl as sysdba

sqlplus sys/xxxx@orcldg as sysdba

使用SQLPLUS进行SWITCHOVER

  • 11g
  1. 先决条件
  2. 检查配置

(1)检查备库中MRP0进程状态

SQL> SELECT PROCESS FROM V$MANAGED_STANDBY WHERE PROCESS LIKE 'MRP%';

(2)主库检查LOG_ARCHIVE_DEST_2 状态

SQL> SELECT RECOVERY_MODE FROM V$ARCHIVE_DEST_STATUS WHERE DEST_ID=2;

RECOVERY_MODE
-----------------------
MANAGED REAL TIME APPLY

(3)如果备库MRP0进程为开启,使用以下命令开启。

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

(4)检查主备数据库中参数LOG_ARCHIVE_MAX_PROCESSES

SQL> show parameter LOG_ARCHIVE_MAX_PROCESSES (确保该参数大于等于4)

  1. 检查备库中的redolog状态

在备用数据库成为主数据库之前,需要清除目标物理备用数据库上的redo日志。尽管这将作为 SWITCHOVER TO PRIMARY 命令的一部分自动发生,但建议在切换之前清除日志。

如果在Broker中设置了物理备用数据库设置了 LogFileNameConvert 属性,当在备用数据库上启动管理恢复时,联机重做日志将被自动清除。

如果数据库使用 Oracle Managed Files (OMF) 或者已经设置了 LogFileNameConvert 属性,跳过此步骤,联机日志文件将始终被自动清除。

例子:

LOG_FILE_NAME_CONVERT=’/oradata/order_db/redo/’,’/oradata/order_db/redo/’

备库不重启可用以下命令进行清除

SQL> SELECT DISTINCT L.GROUP# FROM V$LOG L, V$LOGFILE LF

WHERE L.GROUP# = LF.GROUP# AND L.STATUS

NOT IN ('UNUSED','CLEARING','CLEARING_CURRENT');

替换以上命令返回结果。

SQL> ALTER DATABASE CLEAR LOGFILE GROUP <ORL GROUP# from the query above>;

  1. 检查主备库中的GAP

(1)确定主数据库上每个线程的当前序列号

SQL> SELECT THREAD#, SEQUENCE# FROM V$THREAD;

(2)备库确认无GAP

SQL> SELECT THREAD#, MAX(SEQUENCE#) FROM V$ARCHIVED_LOG

WHERE APPLIED = 'YES'

AND RESETLOGS_CHANGE# = (SELECT RESETLOGS_CHANGE#

FROM V$DATABASE_INCARNATION

WHERE STATUS = 'CURRENT')

GROUP BY THREAD#;

SQL> SELECT * FROM V$ARCHIVE_GAP;

如果存在GAP,并主库不可用时,可用以下命令在备库中修复GAP。

本地归档路径为LOG_ARCHIVE_DEST_1

SQL> SELECT * FROM V$ARCHIVE_GAP;

SQL> SELECT NAME FROM V$ARCHIVED_LOG WHERE THREAD#=1 AND DEST_ID=1 AND SEQUENCE# BETWEEN 7 AND 10;

将缺失归档手动复制至备库,并应用。

SQL> ALTER DATABASE REGISTER LOGFILE '/physical_standby1/thread1_dest/arcr_1_7.arc';

再次查询V$ARCHIVE_GAP直到无GAP

SQL> SELECT * FROM V$ARCHIVE_GAP;

以下命名确认每个线程当前只返回一个归档,若出现多个需手动复制并REGISTER。

SQL> COLUMN FILE_NAME FORMAT a55

SQL> SELECT THREAD#, SEQUENCE#, FILE_NAME FROM DBA_LOGSTDBY_LOG L WHERE NEXT_CHANGE# NOT IN (SELECT FIRST_CHANGE# FROM DBA_LOGSTDBY_LOG WHERE L.THREAD# = THREAD#) ORDER BY THREAD#, SEQUENCE#;

  1. 验证数据文件状态

(1)验证主、备库temp数据库文件是否与主库匹配

SQL> SELECT TMP.NAME FILENAME, BYTES, TS.NAME TABLESPACE

FROM V$TEMPFILE TMP, V$TABLESPACE TS WHERE TMP.TS#=TS.TS#;

(2)检查所有数据文件online

SQL> SELECT NAME FROM V$DATAFILE WHERE STATUS='OFFLINE';

如果有offline数据文件需online

SQL> ALTER DATABASE DATAFILE '<datafile-name>' ONLINE;

  1. Switchover切换
  2. 取消备库延迟应用

如配置延迟应用,请开启实时应用。

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE NODELAY DISCONNECT FROM SESSION;;

停止主库上的JOB

(1)检查主库JOB状态

SQL> SELECT * FROM DBA_JOBS_RUNNING;

SQL> SELECT OWNER, JOB_NAME, START_DATE, END_DATE, ENABLED

FROM DBA_SCHEDULER_JOBS WHERE ENABLED='TRUE' AND OWNER <> 'SYS';

SQL> SHOW PARAMETER job_queue_processes

(2)停止JOB

SQL> ALTER SYSTEM SET job_queue_processes=0 SCOPE=BOTH SID='*';

SQL> EXECUTE DBMS_SCHEDULER.DISABLE( <job_name> );

  1. 设置trc级别,并查看日志

(1)主备库设置每个实例的trc跟踪级别

SQL> SHOW PARAMETER log_archive_trace

SQL> ALTER SYSTEM SET log_archive_trace=8191;

(2)查看日志

tail -f <background_dump_dest location>/alert*

  1. 创建还原点(可选操作)

备库操作:

(1)停止备库应用

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

(2)备库创建还原点

SQL> CREATE RESTORE POINT SWITCHOVER_START_GRP GUARANTEE FLASHBACK DATABASE;

(开启备库应用)

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE
USING CURRENT LOGFILE DISCONNECT;

主库操作:

(1)创建还原点

SQL> CREATE RESTORE POINT SWITCHOVER_START_GRP GUARANTEE FLASHBACK DATABASE;

主库查询switchover状态:

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
-----------------
TO STANDBY

如果备库为RAC数据库,关闭无MRP0进程的复制实例后在进行切换。

  1. 执行swithcover

(1)主库切换为备库

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO STANDBY WITH SESSION SHUTDOWN;

(2)备库库查询switchover状态

SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS
-----------------
TO PRIMARY

(3)将备用数据库切换为主数据库

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY WITH SESSION SHUTDOWN;

(4)开启新主库

SQL> ALTER DATABASE OPEN;

(5)重启新备库

SQL> shutdown immediate;

SQL> STARTUP MOUNT;

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT;

如果配置延迟应用,使用以下命令开启应用:

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT;

如果为RAC,打开辅助实例。

SQL> startup;

  1. 切换后步骤
  2. 设置trc为初始值

SQL> ALTER SYSTEM SET log_archive_trace=<prior value>;;

  1. 开启关闭JOB

SQL> ALTER SYSTEM SET job_queue_processes=<value saved> scope=both sid='*';

SQL> EXECUTE DBMS_SCHEDULER.ENABLE(<for each job name captured>);

  1. 主备库中删除已创建还原点

SQL> DROP RESTORE POINT SWITCHOVER_START_GRP;

  • 12C及以上
  1. 先决条件
  2. 检查配置

验证切换状态

SQL>alter database switchover to <target standby db_unique_name> verify;

  1. Switchover切换
  2. 在主数据库和备用数据库上启用 Data Guard trc跟踪

SQL>alter system set log_archive_trace=8191 sid=’*’;

  1. 监控日志

tail –f <alert log of primary>

tail –f <alert log of standby>

  1. 执行SWITCHOVER

主库执行

SQL>alter database switchover to <standby db_unique_name>;

开启新主库

SQL>alter database open;

重启新备库

SQL>shut abort

SQL>startup

SQL>alter database recover managed standby database disconnect;

切换完成后,OCR 中的数据库角色不会自动更改。 需要使用 [srvctl modify database] 根据真实的数据库角色更改 OCR 中的数据库角色。

例:

新主库

#sqlplus / as sysdba
SQL> select DB_UNIQUE_NAME,DATABASE_ROLE from v$database;
DB_UNIQUE_NAME    DATABASE_ROLE
------------------------------
chicago        PRIMARY

#srvctl config database -db chicago
...
Database Role: PHYSICAL_STANDBY

#srvctl modify database -db chicago -role PRIMARY

新备库:

#sqlplus / as sysdba
SQL> select DB_UNIQUE_NAME,DATABASE_ROLE from v$database;
DB_UNIQUE_NAME    DATABASE_ROLE
------------------------------
boston        PHYSICAL STANDBY

#srvctl config database -db boston
...
Database Role: PRIMARY

#srvctl modify database -db boston -role PHYSICAL_STANDBY

  1. 切换后步骤
  2. 设置Trace为初始值

SQL>  alter system set log_archive_trace=0;

  1. 检查切换后状态

新主库

SQL>alter system switch logfile;

SQL>select dest_id,error,status from v$archive_dest where dest_id=<your remote log_archive_dest_<n>>;

SQL>select max(sequence#),thread# from v$log_history group by thread#;

If remote log_Archive_destination is 2 i.e log_archive_dest_2.

SQL>select max(sequence#)  from v$archived_log where applied='YES' and
dest_id=2;

新备库:

SQL>select thread#,sequence#,process,status from gv$managed_standby;

SQL>select max(sequence#),thread# from v$archived_log group by thread#;

 

Oracle 12.2 版,使用 v$dataguard_process 。Oracle 12.2 中弃用的 v$managed_standby

SQL> select name,role,instance,thread#,sequence#,action from gv$dataguard_process;

使用DG Broker进行SWITCHOVER

  • 11G
  1. 先决条件
  2. 检查配置

(1)检查DG Broker配置

DGMGRL> SHOW CONFIGURATION;

(2)检查数据库状态

DGMGRL> SHOW DATABASE 'DBNAME';

DGMGRL> SHOW DATABASE 'ADGDBNAME';

(3)检查LogXptStatus状态(redo传输)

DGMGRL> SHOW DATABASE 'DBNAME' 'LogXptStatus';

(4)检查数据库中的不一致属性

DGMGRL> SHOW DATABASE 'DBNAME' 'InconsistentProperties';

确定内存中属性正确时,使用以下命令可将数据库中内存与spfile和BROKER的不一致属性更新为内存中数据。

例:

DGMGRL> EDIT DATABASE 'North_Sales' SET PROPERTY 'LogArchiveTrace'=511;

(5)检查主备数据库中参数LOG_ARCHIVE_MAX_PROCESSES

SQL> show parameter LOG_ARCHIVE_MAX_PROCESSES (确保该参数大于等于4)

  1. 检查备库中的redolog状态

在备用数据库成为主数据库之前,需要清除目标物理备用数据库上的redo日志。尽管这将作为 SWITCHOVER TO PRIMARY 命令的一部分自动发生,但建议在切换之前清除日志。

如果在Broker中设置了物理备用数据库设置了 LogFileNameConvert 属性,当在备用数据库上启动管理恢复时,联机重做日志将被自动清除。

如果数据库使用 Oracle Managed Files (OMF) 或者已经设置了 LogFileNameConvert 属性,跳过此步骤,联机日志文件将始终被自动清除。

使用以下命令在DG Broker中设置LOGFILENAMECONVERT(该参数需要重启备库)

DGMGRL> EDIT DATABASE <standby-db_unique_name> SET PROPERTY 'LOGFILENAMECONVERT'="'/oradata/order_db/redo/','/oradata/order_db/redo/'";

备库不重启可用以下命令进行清楚

SQL> SELECT DISTINCT L.GROUP# FROM V$LOG L, V$LOGFILE LF

WHERE L.GROUP# = LF.GROUP# AND L.STATUS

NOT IN ('UNUSED','CLEARING','CLEARING_CURRENT');

替换以上命令返回结果。

SQL> ALTER DATABASE CLEAR LOGFILE GROUP <ORL GROUP# from the query above>;

  1. 检查主备库中的GAP

(1)确定主数据库上每个线程的当前序列号

SQL> SELECT THREAD#, SEQUENCE# FROM V$THREAD;

(2)备库确认无GAP

SQL> SELECT THREAD#, MAX(SEQUENCE#) FROM V$ARCHIVED_LOG

WHERE APPLIED = 'YES'

AND RESETLOGS_CHANGE# = (SELECT RESETLOGS_CHANGE#

FROM V$DATABASE_INCARNATION

WHERE STATUS = 'CURRENT')

GROUP BY THREAD#;

SQL> SELECT * FROM V$ARCHIVE_GAP;

如果存在GAP,并主库不可用时,可用以下命令在备库中修复GAP。

本地归档路径为LOG_ARCHIVE_DEST_1

SQL> SELECT * FROM V$ARCHIVE_GAP;

SQL> SELECT NAME FROM V$ARCHIVED_LOG WHERE THREAD#=1 AND DEST_ID=1 AND SEQUENCE# BETWEEN 7 AND 10;

将缺失归档手动复制至备库,并应用。

SQL> ALTER DATABASE REGISTER LOGFILE '/physical_standby1/thread1_dest/arcr_1_7.arc';

再次查询V$ARCHIVE_GAP直到无GAP

SQL> SELECT * FROM V$ARCHIVE_GAP;

以下命名确认每个线程当前只返回一个归档,若出现多个需手动复制并REGISTER。

SQL> COLUMN FILE_NAME FORMAT a55

SQL> SELECT THREAD#, SEQUENCE#, FILE_NAME FROM DBA_LOGSTDBY_LOG L WHERE NEXT_CHANGE# NOT IN (SELECT FIRST_CHANGE# FROM DBA_LOGSTDBY_LOG WHERE L.THREAD# = THREAD#) ORDER BY THREAD#, SEQUENCE#;

  1. 验证数据文件状态

(1)验证主、备库temp数据库文件是否与主库匹配

SQL> SELECT TMP.NAME FILENAME, BYTES, TS.NAME TABLESPACE

FROM V$TEMPFILE TMP, V$TABLESPACE TS WHERE TMP.TS#=TS.TS#;

(2)检查所有数据文件online

SQL> SELECT NAME FROM V$DATAFILE WHERE STATUS='OFFLINE';

如果有offline数据文件需online

SQL> ALTER DATABASE DATAFILE '<datafile-name>' ONLINE;

  1. Switchover切换
  2. 取消备库延迟应用

检查是否配置延迟应用

DGMGRL> SHOW DATABASE <standby-db_unique_name> DELAYMINS;

若配置,需取消延迟应用

DGMGRL> EDIT DATABASE <standby-db_unique_name> SET PROPERTY 'DELAYMINS'='0';

停止主库上的JOB

(1)检查主库JOB状态

SQL> SELECT * FROM DBA_JOBS_RUNNING;

SQL> SELECT OWNER, JOB_NAME, START_DATE, END_DATE, ENABLED

FROM DBA_SCHEDULER_JOBS WHERE ENABLED='TRUE' AND OWNER <> 'SYS';

SQL> SHOW PARAMETER job_queue_processes

(2)停止JOB

SQL> ALTER SYSTEM SET job_queue_processes=0 SCOPE=BOTH SID='*';

SQL> EXECUTE DBMS_SCHEDULER.DISABLE( <job_name> );

  1. 检查当前同步状态

(1)检查每个实例的状态

DGMGRL> SHOW DATABASE VERBOSE 'dbname';

DGMGRL> SHOW INSTANCE <SID> LogArchiveTrace;

(2)设置每个实例的trc跟踪级别

DGMGRL> EDIT INSTANCE * ON DATABASE <db_unique_name> SET PROPERTY LogArchiveTrace=8191;

(2)查看日志

tail -f <background_dump_dest location>/dr*

tail -f <background_dump_dest location>/alert*

  1. 创建还原点(可选操作

备库操作:

(1)停止备库应用

DGMGRL> CONNECT SYS/<password>@<standby service>

DGMGRL> EDIT DATABASE <standby-db-unique-name> SET STATE='APPLY-OFF';

(2)创建还原点

DGMGRL> SQL "CREATE RESTORE POINT SWITCHOVER_START_GRP GUARANTEE FLASHBACK DATABASE";

(开启备库应用)

DGMGRL> EDIT DATABASE <standby-db-unique-name> SET STATE='APPLY-ON';

主库操作:

(1)创建还原点

DGMGRL> CONNECT SYS/<password>@<primary service>

DGMGRL> SQL "CREATE RESTORE POINT SWITCHOVER_START_GRP GUARANTEE FLASHBACK DATABASE";.

  1. 执行swithcover

(1)使用与主数据库和备用数据库上的 sys 用户相同的密码,以 sys 身份使用 DGMGRL 命令行实用程序连接到主数据库。

DGMGRL> CONNECT SYS/<password>@<primary service>

DGMGRL> SWITCHOVER TO <standby database name>;

注意:如果使用主机凭据(仅限“/”)连接到 DGMGRL,则切换将起作用,新的主数据库将准备就绪,但必须手动重新启动旧的主数据库作为备用数据库。

如果使用“/”必须使用相同的SYS密码创建wallet

mkstore -wrl /u01/app/oracle/admin/wallet -createEntry oracle.security.client.default_username SYS

mkstore -wrl /u01/app/oracle/admin/wallet -createEntry oracle.security.client.default_password <sys password>

创建完成后可使用以下命令执行切换

DGMGRL> CONNECT /@<primary service>

(2)switchover切换过程

例:

DGMGRL> switchover to 'South_Sales';

Performing switchover NOW, please wait...

New primary database "South_Sales" is opening...

Operation requires shutdown of instance "north_sales1" on database "North_Sales"

Shutting down instance "north_sales1"...

ORA-01109: database not open

Database dismounted.

ORACLE instance shut down.

Operation requires startup of instance "north_sales1" on database "North_Sales"

Starting instance "north_sales1"...

ORACLE instance started.

Database mounted.

Switchover succeeded, new primary is "South_Sales"

(3)检查切换后状态

DGMGRL> SHOW CONFIGURATION;

DGMGRL> SHOW DATABASE VERBOSE 'dbname';

  1. 切换后步骤
  2. 如果设置延迟应用,需打开

DGMGRL> EDIT DATABASE <standby-db-unique-name> SET PROPERTY 'DELAYMINS'='<saved_value>';

  1. 设置LogArchiveTrace为初始值

DGMGRL> EDIT INSTANCE * ON DATABASE <db-unique-name> SET PROPERTY LogArchiveTrace=<prior_value>;

  1. 开启关闭JOB

SQL> ALTER SYSTEM SET job_queue_processes=<value saved> scope=both sid='*';

SQL> EXECUTE DBMS_SCHEDULER.ENABLE(<for each job name captured>);

  1. 主备库中删除已创建还原点

SQL> DROP RESTORE POINT SWITCHOVER_START_GRP;

  • 12C及以上
  1. 先决条件
  2. 检查配置

DGMGRL>show configuration;

DGMGRL>show database <primary>;

DGMGRL>show database <standby>;

DGMGRL>show database verbose <primary>;

DGMGRL>show database verbose <standby>;

19c以上,验证网络状态:

DGMGRL>validate network configuration for <primary>;

DGMGRL>validate network configuration for <standby>;

验证切换状态

DGMGRL> validate database <primary>

  Database Role:    Primary database

  Ready for Switchover:  Yes    <-----------Ready for Switchover

  Flashback Database Status:

   <primary>:  Off

DGMGRL> validate database <standby>

  Database Role:     Physical standby database

  Primary Database:  <standby>

  Ready for Switchover:  Yes    <--------This confirms Switchover readiness

  Ready for Failover:    Yes (Primary Running)

  Flashback Database Status:

   <primary>:   Off

   <standby>:  Off

  Future Log File Groups Configuration:

    Thread #  Online Redo Log Groups   Standby Redo Log Groups

              <primary>               <standby>

    1         4                        4

显示详细切换状态:

DGMGRL>validate database verbose <primary>

DGMGRL>validate database verbose <standby>

  1. Switchover切换
  2. 取消备库延迟应用

若存在延迟应用,需取消。

DGMGRL>edit database <standby> set property delaymins=0;

  1. 在主数据库和备用数据库上启用 Data Guard trc跟踪

DGMGRL> edit configuration set property tracelevel=support;

单机数据库:

DGMGRL> edit database <primary> set property LogArchiveTrace=8191;

DGMGRL> edit database <standby> set property LogArchiveTrace=8191;

RAC数据库:

DGMGRL> EDIT INSTANCE * ON DATABASE '<primary>' SET PROPERTY LogArchiveTrace=8191;

DGMGRL> EDIT INSTANCE * ON DATABASE '<standby>' SET PROPERTY LogArchiveTrace=8191;

  1. 监控日志

tail –f <alert log of primary>

tail –f <alert log of standby>

tail –f <drc<SID> log of primary>

tail –f <drc<SID> log of standby>

  1. 执行SWITCHOVER

使用与主数据库和备用数据库上的 sys 用户相同的密码,以 sys 身份使用 DGMGRL 命令行实用程序连接到主数据库。

DGMGRL> CONNECT SYS/<password>@<primary service>

DGMGRL> switchover to <standby>

例:

DGMGRL> switchover to chicago

Performing switchover NOW, please wait...

Operation requires a connection to instance "chicago" on database "chicago"

Connecting to instance "chicago"...

Connected as SYSDBA.

New primary database "chicago" is opening...

Operation requires startup of instance "boston" on database "boston"

Starting instance "boston"...

ORACLE instance started.

Database mounted.

Database opened.

Switchover succeeded, new primary is "chicago"

DGMGRL> SHOW CONFIGURATION;

DGMGRL> SHOW DATABASE VERBOSE 'dbname';

  1. 切换后步骤
  2. 如果设置延迟应用,需打开

DGMGRL> edit database <new standby> set property delaymins=<old MRP delay value>;

  1. 设置Trace为初始值

DGMGRL> edit configuration reset property tracelevel ;

DGMGRL> edit database boston reset property logarchivetrace;

DGMGRL> edit database chicago reset property logarchivetrace;

  1. 检查切换后状态

DGMGRL> SHOW CONFIGURATION;

DGMGRL> SHOW DATABASE VERBOSE 'dbname';

最后修改时间:2023-02-16 11:47:35
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论