oracle 11g dataguard之dgmgrl

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 11g dataguard之dgmgrl相关的知识,希望对你有一定的参考价值。

环境概述:搭好Dataguard,搭建参考:http://blog.51cto.com/snowhill/1923591
源:db_name:db rac
备:db_name:sbdb1 单机

1 启用dgmgrl
相关参数:

dg_broker_start
dg_broker_config_file1

配置:
alter system set dg_broker_start=true scope=both;
此时数据库会增加dmon进程

[[email protected] ~]$ ps -ef|grep -i _dmon|grep -v grep
oracle     2699      1  0 06:57 ?        00:00:01 ora_dmon_db1

但此时使用

DGMGRL> show configuration
ORA-16532: Data Guard broker configuration does not exist
 需配置:
DGMGRL> help create 
DGMGRL> create configuration ‘db‘ as primary database is db connect identifier is db;
DGMGRL>help add
DGMGRL>add database "SBDB1" as connect identifier is "sbdb1"  maintained as physical;
DGMGRL>enable configuration

add database ‘SBDB1‘ ,这里的dg是指database的db_unique_name,而as connect identifier is sbdb1这里的sbdb1是指tnsname.ora连接到standby database的net service name.
注意区分大小,默认为小写;

检查alert_$ORACLE_SID.log日志可以看到:

RSM0 started with pid=48, OS id=34551 
ALTER SYSTEM SET log_archive_dest_1=‘location=USE_DB_RECOVERY_FILE_DEST‘,‘valid_for=(ALL_LOGFILES, ALL_ROLES)‘ SCOPE=BOTH;
ALTER SYSTEM SET log_archive_trace=0 SCOPE=BOTH SID=‘db1‘;
ALTER SYSTEM SET log_archive_format=‘%t_%s_%r.dbf‘ SCOPE=SPFILE SID=‘db1‘;
ALTER SYSTEM SET standby_file_management=‘AUTO‘ SCOPE=BOTH SID=‘*‘;
ALTER SYSTEM SET archive_lag_target=0 SCOPE=BOTH SID=‘*‘;
ALTER SYSTEM SET log_archive_max_processes=4 SCOPE=BOTH SID=‘*‘;
ALTER SYSTEM SET log_archive_min_succeed_dest=1 SCOPE=BOTH SID=‘*‘;

检查drc$ORACLE_SID.log:

Creating Data Guard Broker Monitor Process (DMON)
04/03/2018 23:26:33
>> Starting Data Guard Broker bootstrap <<
Broker Configuration File Locations:
      dg_broker_config_file1 = "/u01/app/oracle/product/11.2.0/dbhome_1/dbs/dr1SBDB1.dat"
      dg_broker_config_file2 = "/u01/app/oracle/product/11.2.0/dbhome_1/dbs/dr2SBDB1.dat"
04/03/2018 23:26:38
Broker Configuration:       "db"
      Protection Mode:            Maximum Performance
      Fast-Start Failover (FSFO): Disabled, flags=0x0, version=0
      Primary Database:           db (0x01010000)
      Standby Database:           SBDB1, Enabled Physical Standby (0x02010000)

二 检查配置:

DGMGRL> show database sbdb1
Object "sbdb1" was not found
DGMGRL> show database SBDB1  
Object "sbdb1" was not found

注意大小写

DGMGRL> show database ‘SBDB1‘ 
Database - SBDB1 
  Role:            PHYSICAL STANDBY
  Intended State:  APPLY-ON
  Transport Lag:   0 seconds (computed 0 seconds ago)
  Apply Lag:       0 seconds (computed 0 seconds ago)
  Apply Rate:      0 Byte/s
  Real Time Query: ON
  Instance(s):
    SBDB1 
Database Status:
SUCCESS

三 snapshot standby 测试

不用dgmrl的方法参见:http://blog.51cto.com/snowhill/2047857
DGMGRL> convert database ‘SBDB1‘ to snapshot standby;
Converting database "SBDB1" to a Snapshot Standby database, please wait...
Database "SBDB1" converted successfully
这里从alert_sbdb1.log里看,数据库并没有发生重启,只是将会话杀掉了;
3.1不开database flashback on 测试

SQL> select open_mode, database_role, protection_mode,flashback_on from v$database;
 OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE      FLASHBACK_ON
-------------------- ---------------- -------------------- ------------------
READ WRITE           SNAPSHOT STANDBY MAXIMUM PERFORMANCE  RESTORE POINT ONLY
SQL> truncate table system.test; 
Table truncated. 
SQL> select count(*) from system.test; 
  COUNT(*)
----------
         0               
DGMGRL>convet database ‘SBDB1‘ to physical standby;
Unable to connect to database
ORA-12545: Connect failed because target host or object does not exist 
Failed.
Warning: You are no longer connected to ORACLE. 
Please complete the following steps and reissue the CONVERT command:
        shut down instance "SBDB1" of database "SBDB1"
        start up and mount instance "SBDB1" of database "SBDB1"

手动启动备库到mount状态,后面的dgmgrl自动恢复到sbdb1,但在open过程中经常会死在最后一步,相关日志如下:

ALTER DATABASE CONVERT TO PHYSICAL STANDBY (SBDB1)
Killing 3 processes with pids 3013,3017,3019 (all RFS) in order to disallow current and future RFS connections. Requested by OS process 3025
Flashback Restore Start
Flashback Restore Complete
Drop guaranteed restore point 
Guaranteed restore point  dropped
Clearing standby activation ID 1736364983 (0x677ed3b7)
The primary database controlfile was created using the
‘MAXLOGFILES 192‘ clause.
There is space for up to 188 standby redo logfiles
Use the following SQL commands on the standby database to create
standby redo logfiles that match the primary database:
ALTER DATABASE ADD STANDBY LOGFILE ‘srl1.f‘ SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE ‘srl2.f‘ SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE ‘srl3.f‘ SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE ‘srl4.f‘ SIZE 52428800;
ALTER DATABASE ADD STANDBY LOGFILE ‘srl5.f‘ SIZE 52428800;
Waiting for all non-current ORLs to be archived...
All non-current ORLs have been archived.
Clearing online redo logfile 1 /u01/app/oracle/oradata/SBDB1/SBDB1/onlinelog/o1_mf_1_fd4wmho5_.log
Clearing online log 1 of thread 1 sequence number 3
Clearing online redo logfile 1 complete
Clearing online redo logfile 2 /u01/app/oracle/oradata/SBDB1/SBDB1/onlinelog/o1_mf_2_fd4wmjq3_.log
Clearing online log 2 of thread 1 sequence number 4
Clearing online redo logfile 2 complete
Completed: alter database convert to physical standby
Wed Apr 04 01:15:50 2018
Primary database is in MAXIMUM PERFORMANCE mode
RFS[3]: Assigned to RFS process 3029
RFS[3]: Selected log 5 for thread 1 sequence 70 dbid 1729483220 branch 965667412
Wed Apr 04 01:16:11 2018
RFS[4]: Assigned to RFS process 3031
RFS[4]: Selected log 6 for thread 1 sequence 69 dbid 1729483220 branch 965667412
Wed Apr 04 01:16:11 2018
Expanded controlfile section 11 from 28 to 203 records
Requested to grow by 175 records; added 7 blocks of records
Archived Log entry 29 added for thread 1 sequence 69 ID 0x6715d4d4 dest 1:
Wed Apr 04 01:16:13 2018
ARC2: Becoming the active heartbeat ARCH
Wed Apr 04 01:17:13 2018
alter database open
Data Guard Broker initializing...

最后一步会假死一下,没关系,直接shutdown abort,再启动,就可以了;由于dgmgrl的存在,他会自动补上命令,如下图所示:
技术分享图片

SQL> select open_mode, database_role, protection_mode,flashback_on from v$database; 
OPEN_MODE            DATABASE_ROLE    PROTECTION_MODE      FLASHBACK_ON
-------------------- ---------------- -------------------- ------------------
READ ONLY WITH APPLY PHYSICAL STANDBY MAXIMUM PERFORMANCE  NO
SQL> select count(*) from system.test; 
  COUNT(*)
----------
     15386

为啥会自动,检查数据库配置:

DGMGRL> show database verbose ‘SBDB1‘; 
Database - SBDB1 
  Role:            PHYSICAL STANDBY
  Intended State:  APPLY-ON
  Transport Lag:   0 seconds (computed 1 second ago)
  Apply Lag:       0 seconds (computed 1 second ago)
  Apply Rate:      0 Byte/s
  Real Time Query: ON

四 dgmgrl 调整参数:
4.1调整应用延迟
DGMGRL&gt; edit database ‘SBDB1‘ set property DelayMins=1 ;
其实就是如下命令:

ALTER SYSTEM SET log_archive_dest_2=‘service="sbdb1"‘,‘LGWR ASYNC NOAFFIRM delay=1 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="SBDB1" net_timeout=30‘,‘valid_for=(all_logfiles,primary_role)‘ SCOPE=BOTH;
ALTER SYSTEM SWITCH ALL LOGFILE start (db1)
ALTER SYSTEM SWITCH ALL LOGFILE complete (db1)
DGMGRL> edit database ‘SBDB1‘ set property LogXptMode=sync;

4.2调整异步同步模式
DGMGRL&gt; edit database ‘SBDB1‘ set property LogXptMode=sync;
对应的命令如下:
ALTER SYSTEM SET log_archive_dest_2=‘service="sbdb1"‘,‘LGWR SYNC AFFIRM delay=1 optional compression=disable max_failure=0 max_connections=1 reopen=300 db_unique_name="SBDB1" net_timeout=30‘,‘valid_for=(all_logfiles,primary_role)‘ SCOPE=BOTH;

以上是关于oracle 11g dataguard之dgmgrl的主要内容,如果未能解决你的问题,请参考以下文章

oracle11g dataguard 完全手册

ORACLE 11G 搭建dataguard详细步骤(所有操作总结)

oracle11g dataguard 完全手册

oracle11g dataguard 完全手册

搭建Oracle 11G单实例Active DataGuard

[dataguard同步数据库]oracle11g dataguard 备库数据同步的检查方法