oracle19c rac 本地搭建adg

oracle19c rac 本地搭建adg

注意点:

本地搭建和异地搭建,主要需注意pdb的访问问题,本地需要将备库绑定到不同端口的监听,避免无法连接pdb(关键第4步)

(也可以不修改端口,修改tnsnames.ora指定实例即可,参看https://blog.csdn.net/jycjyc/article/details/107738737

1.启用归档:

[root@rac1 ~]# su - oracle

Last login: Thu Jul 30 13:51:20 CST 2020 on pts/0

[oracle@rac1 ~]$ sqlplus / as sysdba

 

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jul 30 13:53:41 2020

Version 19.8.0.0.0

 

Copyright (c) 1982, 2020, Oracle.  All rights reserved.

 

 

Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.8.0.0.0

 

SQL> show parameter name;

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

cdb_cluster_name                     string

cell_offloadgroup_name               string

db_file_name_convert                 string

db_name                              string      orcl

db_unique_name                       string      orcl

global_names                         boolean     FALSE

instance_name                        string      orcl1

lock_name_space                      string

log_file_name_convert                string

pdb_file_name_convert                string

processor_group_name                 string

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

service_names                        string      orcl

SQL>  select force_logging from v$database;

 

FORCE_LOGGING

---------------------------------------

NO

 

SQL> alter database force logging;

 

Database altered.

 

SQL>

SQL> select force_logging from v$database;

 

FORCE_LOGGING

---------------------------------------

YES

 

SQL> alter system set db_recovery_file_dest='+DATA' scope=spfile sid='*';

 

System altered.

 

SQL> alter system set db_recovery_file_dest_size = 20G scope=spfile sid='*';

 

System altered.

 

SQL> shutdown immediate

ORA-01109: database not open

 

 

Database dismounted.

ORACLE instance shut down.

SQL> startup mount

ORACLE instance started.

 

Total System Global Area 4999610048 bytes

Fixed Size                  9146048 bytes

Variable Size            1291845632 bytes

Database Buffers         3690987520 bytes

Redo Buffers                7630848 bytes

Database mounted.

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     21

Next log sequence to archive   22

Current log sequence           22

SQL> alter database open;

 

Database altered.

 

SQL> show parameter recover;

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string      +DATA

db_recovery_file_dest_size           big integer 20G

db_unrecoverable_scn_tracking        boolean     TRUE

recovery_parallelism                 integer     0

remote_recovery_file_dest            string

SQL> exit

主备配置归档删除策略,避免归档未应用被删除的情况:

CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;

2.增加standby_log

Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.8.0.0.0

[oracle@rac1 ~]$ srvctl stop database -d orcl

[oracle@rac1 ~]$ srvctl start database -d orcl

[oracle@rac1 ~]$ sqlplus / as sysdba

 

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Jul 30 14:30:52 2020

Version 19.8.0.0.0

 

Copyright (c) 1982, 2020, Oracle.  All rights reserved.

 

 

Connected to:

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.8.0.0.0

 

SQL> archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     21

Next log sequence to archive   22

Current log sequence           22

SQL> set line 160   

SQL> set wrap off

SQL> select * from v$Log;

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME          NEXT_CHANGE# NEXT_TIME

---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- ------------ -------------------

         1          1         21  209715200        512          1 YES INACTIVE               3782017 2020-07-29 12:22:29      3964886 2020-07-30 13:51:03

         2          1         22  209715200        512          1 NO  CURRENT                3964886 2020-07-30 13:51:03   9.2954E+18

         3          2          9  209715200        512          1 YES INACTIVE               3964887 2020-07-30 13:51:04      3985738 2020-07-30 13:59:05

         4          2         10  209715200        512          1 NO  CURRENT                3987920 2020-07-30 14:28:03   9.2954E+18 2020-07-30 14:28:03

 

SQL> select * from v$standby_log;

no rows selected

 

SQL>  alter database add standby logfile thread 1 group 5 ('+DATA') size 200M;

 

Database altered.

 

SQL>  alter database add standby logfile thread 1 group 6 ('+DATA') size 200M;

 

Database altered.

 

SQL> alter database add standby logfile thread 1 group 7 ('+DATA') size 200M;

 

Database altered.

 

SQL> select * from v$standby_log;

 

    GROUP# DBID                                        THREAD#  SEQUENCE#      BYTES  BLOCKSIZE       USED ARC STATUS     FIRST_CHANGE# FIRST_TIME          NEXT

---------- ---------------------------------------- ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- ------------------- ----

         5 UNASSIGNED                                        1          0  209715200        512          0 YES UNASSIGNED

         6 UNASSIGNED                                        1          0  209715200        512          0 YES UNASSIGNED

         7 UNASSIGNED                                        1          0  209715200        512          0 YES UNASSIGNED

 

SQL>  alter database add standby logfile thread 2 group 8 ('+DATA') size 200M;

 

Database altered.

 

SQL> alter database add standby logfile thread 2 group 9 ('+DATA') size 200M;

 

Database altered.

 

SQL>  alter database add standby logfile thread 2 group 10 ('+DATA') size 200M;

 

Database altered.

 

SQL> select * from v$standby_log;

    GROUP# DBID                                        THREAD#  SEQUENCE#      BYTES  BLOCKSIZE       USED ARC STATUS     FIRST_CHANGE# FIRST_TIME          NEXT

---------- ---------------------------------------- ---------- ---------- ---------- ---------- ---------- --- ---------- ------------- ------------------- ----

         5 UNASSIGNED                                        1          0  209715200        512          0 YES UNASSIGNED

         6 UNASSIGNED                                        1          0  209715200        512          0 YES UNASSIGNED

         7 UNASSIGNED                                        1          0  209715200        512          0 YES UNASSIGNED

         8 UNASSIGNED                                        2          0  209715200        512          0 YES UNASSIGNED

         9 UNASSIGNED                                        2          0  209715200        512          0 YES UNASSIGNED

        10 UNASSIGNED                                        2          0  209715200        512          0 YES UNASSIGNED

 

6 rows selected.

 

SQL> exit

3.主库添加db_unique_name

SQL> alter system set db_unique_name='orcl' scope=spfile sid='*';

 

4.创建监听DGLISTENER,端口2521

grid用户通过图形netca创建DGLISTENER,方便自动添加资源到集群中管理。

增加scan listener端口:srvctl modify scan_listener -endpoints "TCP:1521/TCP:2521"

 

节点rac1添加如下静态监听参数:

 

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = orcl)

      (ORACLE_HOME = /oracle/app/oracle/product/19c/dbhome_1)

      (SID_NAME = orcl1)

    )

    (SID_DESC =

      (GLOBAL_DBNAME = orcl_DGMGRL)

      (ORACLE_HOME = /oracle/app/oracle/product/19c/dbhome_1)

      (SID_NAME = orcl1)

    )

  )

SID_LIST_DGLISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = dgorcl)

      (ORACLE_HOME = /oracle/app/oracle/product/19c/dbhome_1)

      (SID_NAME = dgorcl1)

    )

    (SID_DESC =

      (GLOBAL_DBNAME = dgorcl_DGMGRL)

      (ORACLE_HOME = /oracle/app/oracle/product/19c/dbhome_1)

      (SID_NAME = dgorcl1)

    )

  )

节点rac2添加如下静态监听参数:

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = orcl)

      (ORACLE_HOME = /oracle/app/oracle/product/19c/dbhome_1)

      (SID_NAME = orcl2)

    )

    (SID_DESC =

      (GLOBAL_DBNAME = orcl_DGMGRL)

      (ORACLE_HOME = /oracle/app/oracle/product/19c/dbhome_1)

      (SID_NAME = orcl2)

    )

  ) 

SID_LIST_DGLISTENER =

  (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME = dgorcl)

      (ORACLE_HOME = /oracle/app/oracle/product/19c/dbhome_1)

      (SID_NAME = dgorcl2)

    )

    (SID_DESC =

      (GLOBAL_DBNAME = dgorcl_DGMGRL)

      (ORACLE_HOME = /oracle/app/oracle/product/19c/dbhome_1)

      (SID_NAME = dgorcl2)

    )

  )

5.创建tnsnames.ora内容

 

[oracle@rac1 admin]$ cat tnsnames.ora

# tnsnames.ora Network Configuration File: /oracle/app/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora

# Generated by Oracle configuration tools.

scan-orcl =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

scan-dgorcl =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 2521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dgorcl)

    )

  )

scan_orcl_pdb =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = pdb)

    )

  )

scan_dgorcl_pdb =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 2521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = pdb)

    )

  )

scan_orcl_jyc =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = jyc)

    )

  )

scan_dgorcl_jyc =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 2521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = jyc)

    )

  )

orcl =

  (DESCRIPTION =

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

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

 

dgorcl =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.52.183)(PORT = 2521))

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.52.184)(PORT = 2521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dgorcl)

    )

  )

tns_orcl =

  (DESCRIPTION =

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

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orcl)

    )

  )

 

tns_dgorcl =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.52.183)(PORT = 2521))

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.52.184)(PORT = 2521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = dgorcl)

    )

  )

orcl_pdb =

  (DESCRIPTION =

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

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = pdb)

    )

  ) 

dgorcl_pdb =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.52.183)(PORT = 2521))

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.52.184)(PORT = 2521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = pdb)

    )

  )

orcl_jyc =

  (DESCRIPTION =

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

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

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = jyc)

    )

  )

dgorcl_jyc =

  (DESCRIPTION =

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.52.183)(PORT = 2521))

    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.52.184)(PORT = 2521))

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = jyc)

    )

  )

 

6.修改local_listener和remote_listener内容

节点1:

export ORACLE_SID=orcl1

sqlplus / as sysdba

alter system set local_listener ='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.52.183)(PORT=1521))' scope=both sid='orcl1';

alter system set remote_listener ='rac-scan:1521' scope=both sid='orcl1';

export ORACLE_SID=dgorcl1

sqlplus / as sysdba

alter system set local_listener ='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.52.183)(PORT=2521))' scope=both sid='dgorcl1';

alter system set remote_listener ='rac-scan:2521' scope=both sid='dgorcl1';

 

节点2:

export ORACLE_SID=orcl2

sqlplus / as sysdba

alter system set local_listener ='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.52.184)(PORT=1521))' scope=both sid='orcl2';

alter system set remote_listener ='rac-scan:1521' scope=both sid='orcl2';

export ORACLE_SID=dgorcl2

sqlplus / as sysdba

alter system set local_listener ='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.52.184)(PORT=2521))' scope=both sid='dgorcl2';

alter system set remote_listener ='rac-scan:2521' scope=both sid='dgorcl2';

https://img-blog.csdnimg.cn/20200731140452334.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p5Y2p5Yw==,size_16,color_FFFFFF,t_70https://img-blog.csdnimg.cn/20200731140523602.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2p5Y2p5Yw==,size_16,color_FFFFFF,t_70

7.dbca创建备库dgorcl

dbca -silent -createDuplicateDB \
-gdbName orcl \
-sid dgorcl \
-sysPassword oracle \
-primaryDBConnectionString 192.168.52.183:1521/orcl \
-nodelist rac1,rac2 \
-adminManaged \
-databaseConfigType RAC \
-createAsStandby -dbUniqueName dgorcl \
-datafileDestination '+DATA' \
-initParams db_create_file_dest=+DATA, db_create_online_log_dest_1=+DATA

dbca -silent -createDuplicateDB \

> -gdbName orcl \

> -sid dgorcl \

> -sysPassword oracle \

> -primaryDBConnectionString 192.168.52.183:1521/orcl \

> -nodelist rac1,rac2 \

> -adminManaged \

> -databaseConfigType RAC \

> -createAsStandby -dbUniqueName dgorcl \

> -datafileDestination '+DATA' \

> -initParams db_create_file_dest=+DATA, db_create_online_log_dest_1=+DATA

Prepare for db operation

22% complete

Listener config step

44% complete

Auxiliary instance creation

67% complete

RMAN duplicate

89% complete

Post duplicate database operations

100% complete

 

Look at the log file "/oracle/app/oracle/cfgtoollogs/dbca/dgorcl/dgorcl.log" for further details.

 

8.添加主备参数:

---创建路径

ASMCMD> mkdir +DATA/dgshare/

 

主库修改参数:

show parameter dg

alter system set dg_broker_config_file1='+DATA/dgshare/dr1orcl.dat'  SID='*';

alter system set dg_broker_config_file2='+DATA/dgshare/dr2orcl.dat'  SID='*';

alter system set dg_broker_start=true sid='*';

alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl' sid='*';

alter system set LOG_ARCHIVE_DEST_2='service=tns_dgorcl VALID_FOR=(online_logfiles,primary_role) DB_UNIQUE_NAME=dgorcl' sid='*';

alter system set log_archive_config='dg_config=(orcl,dgorcl)' sid='*';

alter system set db_file_name_convert='+DATA','+DATA' scope=spfile sid='*';

alter system set log_file_name_convert='+DATA','+DATA' scope=spfile sid='*';

alter system set standby_file_management=auto scope=spfile sid='*';

alter system set fal_client='tns_orcl' sid='*';

alter system set fal_server='tns_dgorcl' sid='*';

 

 

 

备库修改参数:

show parameter dg

alter system set dg_broker_config_file1='+DATA/dgshare/dr1dgorcl.dat' SID='*';

alter system set dg_broker_config_file2='+DATA/dgshare/dr2dgorcl.dat' SID='*';

alter system set dg_broker_start=true sid='*';

 

alter system set LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dgorcl' scope=spfile sid='*';

alter system set LOG_ARCHIVE_DEST_2='service=tns_orcl VALID_FOR=(online_logfiles,primary_role) DB_UNIQUE_NAME=orcl' sid='*';

 

alter system set log_archive_config='dg_config=(orcl,dgorcl)';

alter system set db_file_name_convert='+DATA','+DATA' scope=spfile sid='*';

alter system set log_file_name_convert='+DATA','+DATA' scope=spfile sid='*';

alter system set standby_file_management=auto scope=spfile sid='*';

alter system set fal_client='tns_dgorcl' sid='*';

alter system set fal_server='tns_orcl' sid='*';

 

srvctl stop db -d orcl

srvctl start db -d orcl

srvctl stop db -d dgorcl

srvctl start db -d dgorcl

set line 160

set wrap off

col inst_id for 99

select INST_ID, dbid,name,DB_UNIQUE_NAME,current_scn,protection_mode,database_role,force_logging,open_mode,switchover_status from gv$database;

 

启用同步测试:

alter database recover managed standby database cancel;

alter database recover managed standby database using current logfile disconnect;

测试连接:

sqlplus sys/oracle@orcl as sysdba
sqlplus sys/oracle@dgorcl as sysdba
sqlplus jyc/jyc@dgorcl_pdb
sqlplus jyc/jyc@dgorcl_jyc

 

9.配置dg_broker

dgmgrl sys/oracle@orcl

show configuration

create configuration orcl as

primary database is orcl

connect identifier is tns_orcl;

add database dgorcl as

connect identifier is tns_dgorcl

maintained as physical;

enable configuration

show configuration verbose

show database verbose orcl;

show database verbose dgorcl;

switchover to dgorcl;

edit database dgorcl set property logxptmode='sync';

edit configuration set protection mode as maxavailability;

edit database orcl set property 'faststartfailovertarget'='dgorcl';

edit database dgorcl set property 'faststartfailovertarget'='orcl';

edit database 'dgorcl' set state='apply-off';

alter database open;

edit database 'dgorcl' set state='apply-on';

edit database dgorcl set state='apply-on' with apply instance=orcl1;

show fast_start failover

show database verbose orcl 'faststartfailovertarget';

enable fast_start failover;     

show fast_start failover;

failover to dgorcl;

reinstate database orcl;

 

alter database recover managed standby database cancel;

alter database flashback on;

select flashback_on,force_logging from v$database;

alter database recover managed standby database using current logfile disconnect;

 

猜你喜欢

转载自blog.csdn.net/jycjyc/article/details/107715544