RMANを使用してスタンバイを作成する

53530 ワード

私が別のプロジェクトを始めている間、私はスタンバイデータベース作成のポストカバーを持っていないと理解しました.
誰もが物事を行う方法を持っていますが、最後に私は1つを作成する必要がありました、これは私がそれをやってしまった方法だった.
プライマリデータベースはRac 1クラスタ( Rad 1 - node 1/Rac 1 - node 2 )でtestとrunと呼ばれます.
スタンバイデータベースはtestdgと呼ばれ、RAC 2クラスタ( RAC 2 NODE 1/RAC 2 - node 2 )で実行されます.
データベースは1つのPDB
12.2バージョンを使用しています.一般的なプロセスはすべてのバージョンに非常に似ていますが、調整する必要があるものはほとんどありません.
DBCAサイレントオプションを使用してテストと呼ばれるプライマリデータベースを作成しましょう
[oracle@rac1-node1 ~]$ /u01/app/oracle/product/12.2.0/dbhome_1/bin/dbca \
-silent \
-createDatabase \
-templateName General_Purpose.dbc \
-gdbName TEST  \
-sid TEST  \
-createAsContainerDatabase true \
-numberOfPdbs 1 \
-pdbName TEST_PDB \
-pdbAdminPassword Welcome1 \
-SysPassword Welcome1 \
-SystemPassword Welcome1 \
-emConfiguration NONE \
-storageType ASM \
-redoLogFileSize 250  \
-diskGroupName DATA \
-characterSet AL32UTF8 \
-nationalCharacterSet AL16UTF16 \
-databaseType MULTIPURPOSE \
-sampleschema true \
-ignorePreReqs \
-nodelist rac1-node1,rac1-node2
我々はプライマリをアーカイブモードに変更する必要があり、常に
アーカイブモードに変更するには、データベースをマウントする必要があります.
[oracle@rac1-node1 ~]$ srvctl stop database -d TEST ; srvctl start database -d TEST -o mount
[oracle@rac1-node1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Sat Aug 22 10:26:00 2020

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


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST' scope=BOTH sid='*';

System altered.

SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 20G;

System altered.

SQL> ALTER SYSTEM SET db_recovery_file_dest = '+RECO' scope=BOTH sid='*';

System altered.

SQL> ALTER DATABASE ARCHIVELOG;

Database altered.

SQL> ALTER DATABASE FORCE LOGGING;

Database altered.

SQL> archive log list;
Database log mode          Archive Mode
Automatic archival         Enabled
Archive destination        USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     2
Next log sequence to archive   3
Current log sequence           3
SQL> select name, force_logging from v$database;

NAME      FORCE_LOGGING
--------- ---------------------------------------
TEST      YES

SQL> show parameter reco

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time        integer     7
db_recovery_file_dest            string  +RECO
db_recovery_file_dest_size       big integer 20G
db_unrecoverable_scn_tracking        boolean     TRUE
recovery_parallelism             integer     0
remote_recovery_file_dest        string
SQL> 

また、スタンバイredoログを追加する予定です.
スタンバイredoログについては、常にあなたのredoログよりも1グループ余分に追加することを忘れないでください、また、それらをmulitplexしないでください、あなたはスタンバイパフォーマンスが最善としてであることを確認するように.
我々は2 redoロググループを持っているので、我々は各スレッドの3スタンバイ再試行グループを作成します
あなたが本当にこのDBを使用するつもりであるならば、3
SQL> -- REDO Status
col member format a60
col STATUS format a10
set linesize 150
set pagesize 99
select l.group#, l.thread#,
f.member,
l.archived,
l.status,
(bytes/1024/1024) fsize
from
v$log l, v$logfile f
where f.group# = l.group#
order by 1,2
/
SQL> SQL> SQL> SQL> SQL>   2    3    4    5    6    7    8    9   10  
    GROUP#    THREAD# MEMBER                               ARC STATUS          FSIZE
---------- ---------- ------------------------------------------------------------ --- ---------- ----------
     1      1 +DATA/TEST/ONLINELOG/group_1.354.1048449065          NO  CURRENT       250
     2      1 +DATA/TEST/ONLINELOG/group_2.339.1048449065          YES INACTIVE      250
     3      2 +DATA/TEST/ONLINELOG/group_3.338.1048449561          YES INACTIVE      250
     4      2 +DATA/TEST/ONLINELOG/group_4.362.1048449569          NO  CURRENT       250

SQL> 



SQL> ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 '+RECO' SIZE 250M ;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 '+RECO' SIZE 250M ;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE THREAD 1 '+RECO' SIZE 250M ;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 '+RECO' SIZE 250M ;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 '+RECO' SIZE 250M ;

Database altered.

SQL> ALTER DATABASE ADD STANDBY LOGFILE THREAD 2 '+RECO' SIZE 250M ;

Database altered.

SQL> 
-- Standby REDO Status
col member format a60
col STATUS format a10
set linesize 150
set pagesize 99
select l.group#, l.thread#,
f.member,
l.archived,
l.status,
(bytes/1024/1024) fsize
from
v$standby_log l, v$logfile f
where f.group# = l.group#
order by 1,2
/
SQL> SQL> SQL> SQL> SQL> SQL>   2    3    4    5    6    7    8    9   10  
    GROUP#    THREAD# MEMBER                               ARC STATUS          FSIZE
---------- ---------- ------------------------------------------------------------ --- ---------- ----------
     5      1 +RECO/TEST/ONLINELOG/group_5.1479.1049107011         YES UNASSIGNED    250
     6      1 +RECO/TEST/ONLINELOG/group_6.1504.1049107021         YES UNASSIGNED    250
     7      1 +RECO/TEST/ONLINELOG/group_7.815.1049107051          YES UNASSIGNED    250
     8      2 +RECO/TEST/ONLINELOG/group_8.910.1049107081          YES UNASSIGNED    250
     9      2 +RECO/TEST/ONLINELOG/group_9.1494.1049107091         YES UNASSIGNED    250
    10      2 +RECO/TEST/ONLINELOG/group_10.1510.1049107101        YES UNASSIGNED    250

6 rows selected.

SQL> 
とデータベースの再起動
[oracle@rac1-node1 ~]$ srvctl stop database -d TEST ; srvctl start database -d TEST
[oracle@rac1-node1 ~]$ 
あなたのTNSNAMEにStanbdyを追加しました.最初のDBHEN HOME内のORAファイル:
[oracle@rac1-node1 ~]$ nano /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/tnsnames.ora

TEST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = TEST)
    )
  )


TESTDG =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = TESTDG)
    )
  )

  [....]


[oracle@rac1-node1 ~]$ tnsping testdg

TNS Ping Utility for Linux: Version 12.2.0.1.0 - Production on 22-AUG-2020 11:07:24

Copyright (c) 1997, 2016, Oracle.  All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = TESTDG)))
OK (0 msec)
[oracle@rac1-node1 ~]$ 


[oracle@rac1-node1 ~]$ scp -pr /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/tnsnames.ora rac1-node2:/u01/app/oracle/product/12.2.0/dbhome_1/network/admin/tnsnames.ora
tnsnames.ora                                                                   100% 1225   925.6KB/s   00:00    
[oracle@rac1-node1 ~]$ 
プライマリおよびスタンバイパスワードファイルを同じにする必要がありますので、プライマリパスワードを抽出し、スタンバイ側の両方のノードにコピーします.
12 c以降、データベースパスワードファイルはASM DiskGroup
インスタンス名をパスワードファイル名、testd 1/test 2に追加し、両方のノードにコピーしてください
[oracle@rac1-node1 ~]$ asmcmd pwcopy `asmcmd pwget --dbuniquename TEST` /tmp/orapwTEST
copying +DATA/TEST/PASSWORD/pwdtest.281.1048448813 -> /tmp/orapwTEST
[oracle@rac1-node1 ~]$ 

[oracle@rac1-node1 ~]$ scp -pr /tmp/orapwTEST rac2-node1:/u01/app/oracle/product/12.2.0/dbhome_1/dbs/orapwTESTDG1
orapwTEST                                                                      100% 3584     2.9MB/s   00:00    
[oracle@rac1-node1 ~]$ scp -pr /tmp/orapwTEST rac2-node2:/u01/app/oracle/product/12.2.0/dbhome_1/dbs/orapwTESTDG2 
orapwTEST                                                                      100% 3584     2.7MB/s   00:00    
[oracle@rac1-node1 ~]$ 

重複の間にいくつかの問題を避けることができるものは、spfileの場所に向かうプライマリ側のpfileを作成することです.
[oracle@rac1-node1 ~]$ sqlplus / as sysdba

SQL> show parameter spfile

NAME    TYPE     VALUE
------ --------- ----------------------------------------------
spfile  string   +DATA/TEST/PARAMETERFILE/spfile.297.1048449579

[oracle@rac1-node1 ~]$ echo "SPFILE='+DATA/TEST/PARAMETERFILE/spfile.297.1048449579'" > /u01/app/oracle/product/12.2.0/dbhome_1/dbs/initTEST1.ora
[oracle@rac1-node1 ~]$ scp -pr /u01/app/oracle/product/12.2.0/dbhome_1/dbs/initTEST1.ora rac1-node2:/u01/app/oracle/product/12.2.0/dbhome_1/dbs/initTEST2.ora
initTEST1.ora                                                                  100%   56    52.0KB/s   00:00    
[oracle@rac1-node1 ~]$ 
スタンバイ側(RAC 2)に移動すると、まずデータベース環境を設定します
[oracle@rac2-node1 ~]$ . oraenv
ORACLE_SID = [oracle] ? TESTDG1
ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/12.2.0/dbhome_1
The Oracle base has been set to /u01/app/oracle
[oracle@rac2-node1 ~]$ 
私たちは、RMAN複製プロセスの間、問題に関してAudiofileとCoredump目的地フォルダを作成する必要があります:
[oracle@rac2-node1 ~]$ mkdir -p /u01/app/oracle/admin/TESTDG/cdump
[oracle@rac2-node1 ~]$ mkdir -p /u01/app/oracle/admin/TESTDG/adump
[oracle@rac2-node1 ~]$ 
tnsnamesを指定してください.私の場合、プライマリ側で両方の側面を追加し、両方のスタンバイノードにファイルをコピーします.
[oracle@rac1-node1 ~]$ scp -pr /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/tnsnames.ora rac2-node1:/u01/app/oracle/product/12.2.0/dbhome_1/network/admin/tnsnames.ora
tnsnames.ora                                                                   100% 1225     1.2MB/s   00:00    
[oracle@rac1-node1 ~]$ scp -pr /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/tnsnames.ora rac2-node2:/u01/app/oracle/product/12.2.0/dbhome_1/network/admin/tnsnames.ora
tnsnames.ora                                                                   100% 1225    41.3KB/s   00:00    
[oracle@rac1-node1 ~]$ 


[oracle@rac2-node1 ~]$ tnsping test

TNS Ping Utility for Linux: Version 12.2.0.1.0 - Production on 22-AUG-2020 10:59:41

Copyright (c) 1997, 2016, Oracle.  All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-scan)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = test)))
OK (0 msec)
[oracle@rac2-node1 ~]$
スタンバイクラスタ( Rac 2 )のNode 1リスナーに新しい静的エントリを追加する
そして、リスナーをリロードしてサービスを確認する

[oracle@rac2-node1 ~]$ nano /u01/app/19.3.0/grid/network/admin/listener.ora
SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
     (GLOBAL_DBNAME= TESTDG)
     (ORACLE_HOME= /u01/app/oracle/product/12.2.0/dbhome_1)
     (SID_NAME= TESTDG1)
    )
    (SID_DESC=
     (GLOBAL_DBNAME= st121_DGMGRL)
     (ORACLE_HOME= /u01/app/oracle/product/12.1.0/dbhome_1)
     (SID_NAME= st1211)
    )

    [....]
)

[oracle@rac2-node1 ~]$ . oraenv
ORACLE_SID = [TESTDG1] ? +ASM1
[oracle@rac2-node1 ~]$ lsnrctl reload listener

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 22-AUG-2020 11:22:57

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
The command completed successfully

[oracle@rac2-node1 ~]$ lsnrctl reload listener

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 22-AUG-2020 11:22:57

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
The command completed successfully

[oracle@rac2-node1 ~]$ lsnrctl status listener

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 22-AUG-2020 11:22:59

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                22-AUG-2020 10:25:53
Uptime                    0 days 0 hr. 57 min. 7 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/19.3.0/grid/network/admin/listener.ora
Listener Log File         /u01/app/grid/diag/tnslsnr/rac2-node1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
Services Summary...
Service "TESTDG" has 1 instance(s).
  Instance "TESTDG1", status UNKNOWN, has 1 handler(s) for this service...
Service "cdbst121_DGMGRL" has 1 instance(s).
  Instance "cdbst1211", status UNKNOWN, has 1 handler(s) for this service...
[......]

プライマリDBRIGN名だけでpfileを作成し、システムをマウントします
pfileは、locateのインスタンス名、testdg 1
[oracle@rac2-node1 ~]$ echo 'DB_NAME=TEST' > $ORACLE_HOME/dbs/initTESTDG1.ora
[oracle@rac2-node1 ~]$  

[oracle@rac2-node1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Sat Aug 22 10:57:46 2020

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

Connected to an idle instance.

SQL> STARTUP NOMOUNT pfile='/u01/app/oracle/product/12.2.0/dbhome_1/dbs/initTESTDG1.ora'

ORACLE instance started.

Total System Global Area  444596224 bytes
Fixed Size          8621520 bytes
Variable Size         377487920 bytes
Database Buffers       50331648 bytes
Redo Buffers            8155136 bytes
SQL> 
RMANの複製から始めましょう.
まずスタンバイ側でRMANを起動し、ターゲット(プライマリ)を接続し、補助(スタンバイ)する
[oracle@rac2-node1 ~]$ rman

Recovery Manager: Release 12.2.0.1.0 - Production on Sat Aug 22 11:43:57 2020

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.

RMAN> CONNECT TARGET sys/Welcome1@TEST;

connected to target database: TEST (DBID=2346595492)

RMAN> CONNECT AUXILIARY sys/Welcome1@TESTDG;

connected to auxiliary database: TEST (not mounted)
接続が完了したら、重複スクリプトを実行します.あなたはより多くのオプションを加えることができます、しかし、私はこれが十分に基本的で理解しやすいと思います
スクリプト実行中に何か問題が発生した場合は、新しいスタンバイを止めて、以前に行ったようにマウントしないでください
# Script #

run {
allocate channel prmy1 type disk;
allocate channel prmy2 type disk;
allocate auxiliary channel stby1 type disk;
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE SPFILE
set 'db_unique_name'='TESTDG'
set instance_name='TESTDG1'
set instance_number='1'
set db_create_online_log_dest_1='+DATA'
set db_recovery_file_dest='+RECO'
set audit_file_dest='/u01/app/oracle/admin/TESTDG/adump'
set core_dump_dest='/u01/app/oracle/admin/TESTDG/cdump'
nofilenamecheck;
}

# Execution #
RMAN> run {
allocate channel prmy1 type disk;
allocate channel prmy2 type disk;
allocate auxiliary channel stby1 type disk;
DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE SPFILE
set 'db_unique_name'='TESTDG'
set instance_name='TESTDG1'
set instance_number='1'
set db_create_online_log_dest_1='+DATA'
set db_recovery_file_dest='+RECO'
set audit_file_dest='/u01/app/oracle/admin/TESTDG/adump'
set core_dump_dest='/u01/app/oracle/admin/TESTDG/cdump'
nofilenamecheck;
}2> 3> 4> 5> 6> 7> 8> 9> 10> 11> 12> 13> 14> 

using target database control file instead of recovery catalog
allocated channel: prmy1
channel prmy1: SID=255 instance=TEST1 device type=DISK

allocated channel: prmy2
channel prmy2: SID=500 instance=TEST1 device type=DISK

allocated channel: stby1
channel stby1: SID=661 device type=DISK

Starting Duplicate Db at 22-AUG-20

contents of Memory Script:
{
   backup as copy reuse
   targetfile  '+DATA/TEST/PASSWORD/pwdtest.281.1048448813' auxiliary format 
 '/u01/app/oracle/product/12.2.0/dbhome_1/dbs/orapwTESTDG1'   targetfile 
 '+DATA/TEST/PARAMETERFILE/spfile.297.1048449579' auxiliary format 
 '/u01/app/oracle/product/12.2.0/dbhome_1/dbs/spfileTESTDG1.ora'   ;
   sql clone "alter system set spfile= ''/u01/app/oracle/product/12.2.0/dbhome_1/dbs/spfileTESTDG1.ora''";
}
executing Memory Script

[......]

input datafile file number=00007 name=+DATA/TEST/DATAFILE/users.327.1048448999
output file name=+DATA/TESTDG/DATAFILE/users.262.1049111999 tag=TAG20200822T115621
channel prmy1: datafile copy complete, elapsed time: 00:00:01
channel prmy1: starting datafile copy
input datafile file number=00014 name=+DATA/TEST/ACDC107EDC390BC2E0530C01A8C0FEF5/DATAFILE/users.298.1048449829
output file name=+DATA/TESTDG/DATAFILE/undotbs2.258.1049111997 tag=TAG20200822T115621
channel prmy2: datafile copy complete, elapsed time: 00:00:03
output file name=+DATA/TESTDG/ACDC107EDC390BC2E0530C01A8C0FEF5/DATAFILE/users.328.1049111999 tag=TAG20200822T115621
channel prmy1: datafile copy complete, elapsed time: 00:00:01
Finished backup at 22-AUG-20

[....]

input datafile copy RECID=14 STAMP=1049112005 file name=+DATA/TESTDG/ACDC107EDC390BC2E0530C01A8C0FEF5/DATAFILE/undotbs1.331.1049111975
datafile 13 switched to datafile copy
input datafile copy RECID=15 STAMP=1049112005 file name=+DATA/TESTDG/ACDC107EDC390BC2E0530C01A8C0FEF5/DATAFILE/undo_2.330.1049111989
datafile 14 switched to datafile copy
input datafile copy RECID=16 STAMP=1049112005 file name=+DATA/TESTDG/ACDC107EDC390BC2E0530C01A8C0FEF5/DATAFILE/users.328.1049111999
Finished Duplicate Db at 22-AUG-20
released channel: prmy1
released channel: prmy2
released channel: stby1

RMAN> 
私たちは2つのインスタンスDBを持ちたいので、いくつかの変更を最初に必要とします
SQL> ALTER SYSTEM SET INSTANCE_NUMBER=1 SCOPE=SPFILE SID='TESTDG1';
System altered.

SQL> ALTER SYSTEM SET INSTANCE_NUMBER=2 SCOPE=SPFILE SID='TESTDG2';
System altered.

SQL> ALTER SYSTEM SET INSTANCE_NAME='TESTDG1' SCOPE=SPFILE SID='TESTDG1';
System altered.

SQL> ALTER SYSTEM SET INSTANCE_NAME='TESTDG2' SCOPE=SPFILE SID='TESTDG2';
System altered.

私はまた、いくつかの一貫性を保つために、彼はより多くの“友好的な名前のファイル”にspfileをmovetすることをお勧めします
SQL> CREATE PFILE='/tmp/TESTDG.ora' FROM SPFILE;

File created.

SQL> CREATE SPFILE='+DATA/TESTDG/PARAMETERFILE/spfile.ora' From PFILE='/tmp/TESTDG.ora';

File created.

[oracle@rac2-node1 ~]$ echo "SPFILE='+DATA/TESTDG/PARAMETERFILE/spfile.ora'" > /u01/app/oracle/product/12.2.0/dbhome_1/dbs/initTESTDG1.ora
[oracle@rac2-node1 ~]$ scp -pr /u01/app/oracle/product/12.2.0/dbhome_1/dbs/initTESTDG1.ora rac2-node2:/u01/app/oracle/product/12.2.0/dbhome_1/dbs/initTESTDG2.ora
initTESTDG1.ora                                      100%   47    45.3KB/s   00:00    
[oracle@rac2-node1 ~]$ 

これでシステムをクラスタに追加できます.
まず、スタンバイデータベースとして追加し、各ノードに2つのインスタンスを追加します.
[oracle@rac2-node1 ~]$ srvctl add database -d TESTDG -o /u01/app/oracle/product/12.2.0/dbhome_1 -role physical_standby -startoption "read only" -diskgroup DATA,RECO

[oracle@rac2-node1 ~]$ srvctl add instance -d TESTDG -i TESTDG1 -n rac2-node1
[oracle@rac2-node1 ~]$ srvctl add instance -d TESTDG -i TESTDG2 -n rac2-node2

[oracle@rac2-node1 ~]$ srvctl modify database -d TESTDG -p +DATA/TESTDG/PARAMETERFILE/spfile.ora

もう一つのことは、スタンバイパスワードファイルを
[oracle@rac2-node1 ~]$ asmcmd -p
ASMCMD [+] > cd DATA
ASMCMD [+DATA] > cd TESTDG
ASMCMD [+DATA/TESTDG] > mkdir PASSWORD
ASMCMD [+DATA/TESTDG] > cd PASSWORD
ASMCMD [+DATA/TESTDG/PASSWORD] > pwcopy /u01/app/oracle/product/12.2.0/dbhome_1/dbs/orapwTESTDG1 +DATA/TESTDG/PASSWORD/orapwTESTSDG
copying /u01/app/oracle/product/12.2.0/dbhome_1/dbs/orapwTESTDG1 -> +DATA/TESTDG/PASSWORD/orapwTESTSDG
ASMCMD [+DATA/TESTDG/PASSWORD] > 


[oracle@rac2-node1 ~]$ . oraenv
ORACLE_SID = [+ASM1] ? TESTDG1
ORACLE_HOME = [/home/oracle] ? /u01/app/oracle/product/12.2.0/dbhome_1 
The Oracle base has been changed from /u01/app/grid to /u01/app/oracle
[oracle@rac2-node1 ~]$ srvctl modify database -d TESTDG -pwfile +DATA/TESTDG/PASSWORD/orapwTESTSDG
[oracle@rac2-node1 ~]$

[oracle@rac2-node1 ~]$ srvctl config database -d TESTDG
Database unique name: TESTDG
Database name: 
Oracle home: /u01/app/oracle/product/12.2.0/dbhome_1
Oracle user: oracle
Spfile: +DATA/TESTDG/PARAMETERFILE/spfile.ora
Password file: +DATA/TESTDG/PASSWORD/orapwTESTSDG
Domain: 
Start options: read only
Stop options: immediate
Database role: PHYSICAL_STANDBY
Management policy: AUTOMATIC
Server pools: 
Disk Groups: DATA,RECO
Mount point paths: 
Services: 
Type: RAC
Start concurrency: 
Stop concurrency: 
OSDBA group: oinstall
OSOPER group: oinstall
Database instances: TESTDG1,TESTDG2
Configured nodes: rac2-node1,rac2-node2
CSS critical: no
CPU count: 0
Memory target: 0
Maximum memory: 0
Default network number for database services: 
Database is administrator managed
[oracle@rac2-node1 ~]$ 
両方のインスタンスが正しく起動されるように、DBを再起動して
この時点で、システムはORA - 10458でオープンすることができないかもしれません:スタンバイデータベースは我々がセットアップデータブローカーであるので、回復を必要とします
[oracle@rac2-node1 ~]$ sqlplus / as sysdba


SQL> shut immediate
ORA-01109: database not open
Database dismounted.

[oracle@rac2-node1 ~]$ srvctl start database -d TESTDG -o mount
[oracle@rac2-node1 ~]$ 
今、我々は両方の側面にDGHNOブローカー空の設定ファイルを追加する必要があります

#Primary#

SQL> ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1 = '+DATA/TEST/DG_BROKER_CONFIG1.DAT' SCOPE=BOTH;
System altered.

SQL> ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2 = '+RECO/TEST/DG_BROKER_CONFIG2.DAT' SCOPE=BOTH;
System altered.

SQL> alter system set dg_broker_start=true scope=both sid='*';
System altered.

# Standby #

SQL> ALTER SYSTEM SET DG_BROKER_CONFIG_FILE1 = '+DATA/TESTDG/DG_BROKER_CONFIG1.DAT' SCOPE=BOTH;
System altered.

SQL> ALTER SYSTEM SET DG_BROKER_CONFIG_FILE2 = '+RECO/TESTDG/DG_BROKER_CONFIG2.DAT' SCOPE=BOTH;
System altered.

SQL> alter system set dg_broker_start=true scope=both sid='*';
System altered.
DataGuardブローカーは、セットアップに準備ができました.
そのために、Pimary側から接続し、プライマリデータベースの設定を作成し、スタンバイを追加します.
最後のステップとして、設定を有効にする
[oracle@rac1-node1 ~]$ dgmgrl /
DGMGRL for Linux: Release 12.2.0.1.0 - Production on Sat Aug 22 12:40:06 2020

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.

Welcome to DGMGRL, type "help" for information.
Connected to "TEST"
Connected as SYSDG.
DGMGRL> CREATE CONFIGURATION DG_BROKER_CONFIG AS PRIMARY DATABASE IS TEST CONNECT IDENTIFIER IS TEST;
Configuration "dg_broker_config" created with primary database "test"
DGMGRL> ADD DATABASE TESTDG AS CONNECT IDENTIFIER IS TESTDG MAINTAINED AS PHYSICAL;
Database "testdg" added
DGMGRL> enable configuration;
Enabled.
DGMGRL> 


DGMGRL> show database TESTDG

Database - testdg

  Role:               PHYSICAL STANDBY
  Intended State:     APPLY-ON
  Transport Lag:      0 seconds (computed 1 second ago)
  Apply Lag:          0 seconds (computed 1 second ago)
  Average Apply Rate: 73.00 KByte/s
  Real Time Query:    OFF
  Instance(s):
    TESTDG1 (apply instance)
    TESTDG2

Database Status:
SUCCESS

DGMGRL> 
すべてがそうするべきであるなら、これはスタンバイアラートログで最初に見なければならないものです、最初にDGブローカー構成を確認して、直後に、我々は回復プロセスがどのように始まって、アーカイブが適用されるかについて見ます:
2020-08-22T12:41:55.607913+01:00
Data Guard Broker executes SQL [alter system set log_archive_config='dg_config=(testdg)']
2020-08-22T12:41:55.710671+01:00
ALTER SYSTEM SET log_archive_config='dg_config=(testdg)' SCOPE=BOTH;
Data Guard Broker executes SQL [alter system set log_archive_config='dg_config=(TESTDG,test)']
2020-08-22T12:41:55.888304+01:00
ALTER SYSTEM SET log_archive_config='dg_config=(TESTDG,test)' SCOPE=BOTH;
Starting background process NSV0
2020-08-22T12:41:55.920290+01:00
NSV0 started with pid=55, OS id=6988 
2020-08-22T12:42:03.600627+01:00
Starting background process RSM0
2020-08-22T12:42:03.630941+01:00
RSM0 started with pid=67, OS id=7009 
2020-08-22T12:42:08.097339+01:00
ALTER SYSTEM SET log_archive_trace=0 SCOPE=BOTH SID='TESTDG1';
2020-08-22T12:42:08.154409+01:00
ALTER SYSTEM SET log_archive_format='%t_%s_%r.dbf' SCOPE=SPFILE SID='TESTDG1';
2020-08-22T12:42:08.451243+01:00
ALTER SYSTEM SET standby_file_management='MANUAL' SCOPE=BOTH SID='*';
2020-08-22T12:42:08.547972+01:00
ALTER SYSTEM SET archive_lag_target=0 SCOPE=BOTH SID='*';
2020-08-22T12:42:08.805954+01:00
ALTER SYSTEM SET log_archive_max_processes=4 SCOPE=BOTH SID='*';
2020-08-22T12:42:09.015793+01:00
ALTER SYSTEM SET log_archive_min_succeed_dest=1 SCOPE=BOTH SID='*';
2020-08-22T12:42:09.234752+01:00
ALTER SYSTEM SET data_guard_sync_latency=0 SCOPE=BOTH SID='*';
2020-08-22T12:42:09.388845+01:00
ALTER SYSTEM SET fal_server='test' SCOPE=BOTH;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT  NODELAY
2020-08-22T12:42:09.491980+01:00
Attempt to start background Managed Standby Recovery process (TESTDG1)
Starting background process MRP0
2020-08-22T12:42:09.523322+01:00
MRP0 started with pid=79, OS id=7067 
2020-08-22T12:42:09.525487+01:00
MRP0: Background Managed Standby Recovery process started (TESTDG1)
2020-08-22T12:42:10.687790+01:00
RFS[1]: Assigned to RFS process (PID:7069)
RFS[1]: Opened log for T-1.S-3 dbid 2346595492 branch 1048449065
2020-08-22T12:42:11.604173+01:00
Primary database is in MAXIMUM PERFORMANCE mode
2020-08-22T12:42:11.973938+01:00
Primary database is in MAXIMUM PERFORMANCE mode
RFS[2]: Assigned to RFS process (PID:7076)
RFS[2]: Selected log 8 for T-2.S-5 dbid 2346595492 branch 1048449065
2020-08-22T12:42:12.568782+01:00
RFS[3]: Assigned to RFS process (PID:7079)
RFS[3]: Selected log 9 for T-2.S-4 dbid 2346595492 branch 1048449065
2020-08-22T12:42:12.979727+01:00
RFS[4]: Assigned to RFS process (PID:7081)
RFS[4]: Selected log 5 for T-1.S-5 dbid 2346595492 branch 1048449065
2020-08-22T12:42:13.713759+01:00
RFS[5]: Assigned to RFS process (PID:7083)
RFS[5]: Selected log 6 for T-1.S-4 dbid 2346595492 branch 1048449065
2020-08-22T12:42:13.722897+01:00
Archived Log entry 1 added for thread 1 sequence 3 rlc 1048449065 ID 0x8bde9d9e LAD2 :
2020-08-22T12:42:14.488865+01:00
RFS[6]: Assigned to RFS process (PID:7094)
RFS[6]: Opened log for T-2.S-3 dbid 2346595492 branch 1048449065
2020-08-22T12:42:14.756261+01:00
Starting single instance redo apply (SIRA) 
 Started logmerger process
2020-08-22T12:42:16.017149+01:00
Managed Standby Recovery starting Real Time Apply
2020-08-22T12:42:16.072516+01:00
Archived Log entry 2 added for T-2.S-4 ID 0x8bde9d9e LAD:1
2020-08-22T12:42:16.601886+01:00
Archived Log entry 3 added for T-1.S-4 ID 0x8bde9d9e LAD:1
2020-08-22T12:42:16.828860+01:00
Archived Log entry 4 added for thread 2 sequence 3 rlc 1048449065 ID 0x8bde9d9e LAD2 :
2020-08-22T12:42:17.381826+01:00
Parallel Media Recovery started with 8 slaves
2020-08-22T12:42:17.723949+01:00
Media Recovery Log +RECO/TESTDG/ARCHIVELOG/2020_08_22/thread_1_seq_3.1090.1049114531
2020-08-22T12:42:17.799127+01:00
Waiting for all non-current ORLs to be archived
2020-08-22T12:42:17.799549+01:00
All non-current ORLs have been archived
2020-08-22T12:42:17.844507+01:00
NOTE: dependency between database TESTDG and diskgroup resource ora.RECO.dg is established
2020-08-22T12:42:18.018819+01:00
Media Recovery Log +RECO/TESTDG/ARCHIVELOG/2020_08_22/thread_2_seq_3.1084.1049114535
2020-08-22T12:42:18.562868+01:00
Completed: ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT  NODELAY
2020-08-22T12:42:18.660714+01:00
Media Recovery Log +RECO/TESTDG/ARCHIVELOG/2020_08_22/thread_1_seq_4.1094.1049114537
2020-08-22T12:42:19.033745+01:00
Media Recovery Log +RECO/TESTDG/ARCHIVELOG/2020_08_22/thread_2_seq_4.1092.1049114535
2020-08-22T12:42:20.632132+01:00
Media Recovery Waiting for thread 2 sequence 5 (in transit)
2020-08-22T12:42:20.640513+01:00
Recovery of Online Redo Log: Thread 2 Group 8 Seq 5 Reading mem 0
  Mem# 0: +DATA/TESTDG/ONLINELOG/group_8.315.1049112501
2020-08-22T12:42:35.534885+01:00
Media Recovery Waiting for thread 1 sequence 5 (in transit)
2020-08-22T12:42:35.544298+01:00
Recovery of Online Redo Log: Thread 1 Group 5 Seq 5 Reading mem 0
  Mem# 0: +DATA/TESTDG/ONLINELOG/group_5.318.1049112381
スタンバイを再開しましょう
[oracle@rac2-node1 ~]$ srvctl stop database -d TESTDG ; srvctl start database -d TESTDG 
[oracle@rac2-node1 ~]$ srvctl status database -d TESTDG -v
Instance TESTDG1 is running on node rac2-node1. Instance status: Open,Readonly.
Instance TESTDG2 is running on node rac2-node2. Instance status: Open,Readonly.
[oracle@rac2-node1 ~]$ 
これで、スイッチを行うことができます.
両方のシステムが準備ができていることを確認する前に妥当性を確認するのは良い考えです
[oracle@rac2-node1 ~]$ dgmgrl 

DGMGRL> connect sys/Welcome1@TEST
Connected to "TEST"
Connected as SYSDBA.
DGMGRL> 

DGMGRL> validate database TEST

  Database Role:    Primary database

  Ready for Switchover:  Yes

  Flashback Database Status:
    test:  Off

  Managed by Clusterware:
    test:  YES            

DGMGRL> validate database TESTDG

  Database Role:     Physical standby database
  Primary Database:  test

  Ready for Switchover:  Yes
  Ready for Failover:    Yes (Primary Running)

  Flashback Database Status:
    test  :  Off
    testdg:  Off

  Managed by Clusterware:
    test  :  YES            
    testdg:  YES            

DGMGRL> 


DGMGRL> switchover to TESTDG
Performing switchover NOW, please wait...
Operation requires a connection to database "testdg"
Connecting ...
Connected to "TESTDG"
Connected as SYSDBA.
New primary database "testdg" is opening...
Oracle Clusterware is restarting database "test" ...
Connected to "TEST"
Connected to "TEST"
Switchover succeeded, new primary is "testdg"


DGMGRL> show configuration

Configuration - dg_broker_config

  Protection Mode: MaxPerformance
  Members:
  testdg - Primary database
    test   - Physical standby database 

Fast-Start Failover: DISABLED

Configuration Status:
SUCCESS   (status updated 143 seconds ago)

DGMGRL> 

いくつかのクリーニングを行うことができます、作成したようにリスナーの静的エントリを削除します.
ステップは少し長いです、しかし、一旦彼らを利用するならば、あなたはちょうど他のシステムにプロセスを適応させることができます.
いずれにせよ、これはスタンバイを作成する唯一の方法です.