Oracle Exadata Database Service: 手動コマンドで Active Data Guard を構成してみてみた

**[Oracle Active Data Guard (ADG)](https://www.oracle.com/jp/database/data-guard/)** を使用することで、エンタープライズ・データの高可用性、データ保護、ディザスタ・リカバリを実現できます。1つ以上の同期されたスタンバイ・データベースを作成、維持、管理することで、障害やデータ破損を切り抜けることができます。
Active Data Guard は Data Guardの機能を拡張したもので、自動ブロック修復などのデータ保護と可用性のための高度な機能に加えて、読取り専用ワークロードのオフロード機能と本番データベースからの高速増分バックアップ機能も搭載しています。
　　- [Fast-Start Failover (FSFO)](https://www.oracle.com/jp/data-guard-adg-demo-5305796.gif):　スタンバイ・データベースに自動的にフェイルオーバーできます。
　　- [自動ブロック修復](https://docs.oracle.com/en/database/oracle/oracle-database/21/sbydb/managing-oracle-data-guard-physical-standby-databases.html#GUID-67B644A3-161B-4A83-A0B2-923BF51AD932): スタンバイ・データベースの破損したデータベースをユーザーに意識させることなく自動的にリカバリします。
　　- [遠隔同期](https://docs.oracle.com/en/database/oracle/oracle-database/21/haovw/configure-and-deploy-oracle-data-guard.html#GUID-B4343DA9-128F-4A1A-B36F-225FC002E224): ネットワーク・レイテンシを発生させずに、サイトの障害時にあらゆる距離でデータ損失ゼロを実現します。
　　- [Application Continuity (AC)](https://www.oracle.com/jp/database/technologies/high-availability/app-continuity.html): データベース・トランザクションをリカバリすることで、エンドユーザーやアプリケーションへの停止の影響を排除します。
　　- [データベースのローリング・アップグレード](https://docs.oracle.com/en/database/oracle/oracle-database/21/sbydb/using-DBMS_ROLLING-to-perform-rolling-upgrade.html#GUID-70C09F5B-90BE-4C8C-96A5-45A52E05D380): データベースのバージョン・アップグレードによる停止時間を短縮します。
　　- [Global Data Services (GDS)](https://www.oracle.com/jp/database/technologies/high-availability/global-data-services.html): 接続リクエストに対するロード・バランシングを提供して複数のレプリケートされたデータベースにサービス管理を分散します。
　　- [Oracle Sharding](https://www.oracle.com/jp/database/sharding/): データを水平パーティション化および地理的分散する機能を最大限に活用して、スケーラビリティと障害分離を大幅に強化します。

今回、Active Data Guard 勉強のため次の資料を参考に [Exadata Database Service](https://www.oracle.com/jp/engineered-systems/exadata/database-service/) を使用して 手動で構成してみてみます。
　- [Oracle Exadata Cloudを使用したディザスタ・リカバリ](https://www.oracle.com/jp/a/tech/docs/hybrid-data-guard-to-exaoci-update-gen2-exacc-exacs-ja.pdf)
　- [Deploy a hybrid DR topology for an on-premises Oracle Exadata](https://docs.oracle.com/en/solutions/hybrid-dr-for-exadata/index.html#GUID-B9D75B4F-B5EE-4ECB-84AB-F0F6AC56A010)



# ■ 構成
![構成.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/a19eab6d-a745-64fd-9b9b-8955ada52c60.jpeg)
各リージョンのRemote Peering 等の Network構成は事前に作成しておきます。
・参考: [DRGで東京リージョンを経由して、オンプレミスと 大阪リージョンを接続](https://qiita.com/shirok/items/90cff318816fbf2a802d)

# ■ 手順1:クラウド・データベースを作成
## ● クラウド・コンソールを使用してデータベースを作成
クラウド・コンソールを使用し、前の手順でダウンロードしたバージョンを選択して正しいバンドル・パッチでデータベースを作成します。
スタンバイのデータベース名(db_name)はプライマリ・データベースと同じにする必要があります。 ただし、db_unique_nameは別にする必要あります。
・参考: [Oracle Exadata Cloud Infrastructure X9M作成](https://qiita.com/shirok/items/1f7a10d254849a9fdddb)
### ・プライマリ・データベース作成
Primaryサイトへ DB_NAME=CDB, DB_UNIQUE_NAME=CDB_OSAKA を作成
![01_CDB_OSAKA.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/d77d17e8-9c83-ce8d-7067-1772568a1327.jpeg)


### ・スタンバイ・データベース作成
Standbyサイトへ DB_NAME=CDB, DB_UNIQUE_NAME=CDB_TOKYO を作成
![01_CDB_TOKYO.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/c2615ec1-97c6-f6dc-b157-bcaa94dc7637.jpeg)



# ■ 作業環境効率化設定

## ● sglogin.sqlファイル設定
sqlpromptの表示をプライマリDBとスタンバイDBを間違えない様 事前定義変数を使用して接続識別子(TNS接続名)を表示するように glogin.sqlファイルに設定しときます。
・参考: [SQL*Plus®ユーザーズ・ガイドおよびリファレンス: 12.17.1 事前定義変数](https://docs.oracle.com/cd/F19136_01/sqpug/DEFINE.html#GUID-D6727C11-E4D9-4AB5-A7B8-9C6527A44A50)

**・設定例**
```:全Node
$ vi $ORACLE_HOME/sqlplus/admin/glogin.sql
$ cat $ORACLE_HOME/sqlplus/admin/glogin.sql
	set sqlprompt '&_USER@&_connect_identifier SQL> '
	set pages 1000 
```

**・確認例**

```:exa-tokyo-node#
[oracle@exa-tokyo-node1 ~]$ sqlplus system/<Password>@CDB_TOKYO

	SQL*Plus: Release 19.0.0.0.0 - Production on Thu Sep 22 06:48:58 2022
	Version 19.15.0.0.0

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


	Connected to:
	Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
	Version 19.15.0.0.0

SYSTEM@CDB_TOKYO SQL>
```

```:exa-osaka-node#
[oracle@exa-osaka-node1 ~]$ sqlplus system/<Password>@CDB_OSAKA

	SQL*Plus: Release 19.0.0.0.0 - Production on Thu Sep 22 06:49:24 2022
	Version 19.15.0.0.0

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


	Connected to:
	Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
	Version 19.15.0.0.0

SYSTEM@CDB_OSAKA SQL>
```

## ● 環境変数ファイル設定
よく使うコマンド構文を alias にしときます。
**・設定例**
```:全DB Nodes
[oracle@exa-tokyo-node1 ~]$ cat CDB.env
    ・・・
	alias cdn='cd $ORACLE_HOME/network/admin'
	alias sys='sqlplus sys/<Password>@$ORACLE_UNQNAME as sysdba'
	alias aldb='tail -f $ORACLE_BASE/diag/rdbms/${ORACLE_UNQNAME,,}/$ORACLE_SID/trace/alert_$ORACLE_SID.log'
	alias sysdgm='dgmgrl sys/<Password>@$ORACLE_UNQNAME'
```

# ■ Primaryサイト前提条件確認


## ● 名前解決を設定する場合
OCIとの間のSSHおよびOracle Netアクセスできるように設定
/etc/hosts ファイルまたは、Private DNSで設定します。

Remote Peeringは次を参考にして Primary と Standbyサイト間通信できるようにしておきます
・参考: [リージョン間を Remote VCN Peering接続](https://qiita.com/shirok/items/192674aa6e903ea6694a)



### 1)  Private DNS設定
次の情報を参考に Private DNSを設定して、VCNどうしの名前解決をできるようにします。
[Private DNSで PeeringしたVCNどうしホスト名解決する](https://qiita.com/shirok/items/4197e09dc2bfd7db82f3)

・参考
　　- [OCI Document:プライベートDNS](https://docs.oracle.com/ja-jp/iaas/Content/DNS/Tasks/privatedns.htm)
　　- [チュートリアルPrivate DNS Implementation](https://www.ateam-oracle.com/post/private-dns-implementation)


### 2) DNS名前解決確認
Primary, Standby サイトからお互いtnsnames.oraで接続するホスト名で接続できることを確認

#### ・ Osaka -> Tokyo確認

```:Primary
[oracle@exa-osaka-node1 ~]$ nslookup exa-tokyo-zuuyk-scan.clientsubnet.vcnexatokyo.oraclevcn.com
	Server:		169.254.169.254
	Address:	169.254.169.254#53

	Non-authoritative answer:
	Name:	exa-tokyo-zuuyk-scan.clientsubnet.vcnexatokyo.oraclevcn.com
	Address: 10.10.1.101
	Name:	exa-tokyo-zuuyk-scan.clientsubnet.vcnexatokyo.oraclevcn.com
	Address: 10.10.1.102
	Name:	exa-tokyo-zuuyk-scan.clientsubnet.vcnexatokyo.oraclevcn.com
	Address: 10.10.1.103
```

#### ・ Tokyo -> Osaka確認

```:Standby
[root@exa-tokyo-node1 ~]# nslookup exa-osaka-bozpx-scan.clientsubnet.vcnexaosaka.oraclevcn.com
	Server:		169.254.169.254
	Address:	169.254.169.254#53

	Non-authoritative answer:
	Name:	exa-osaka-bozpx-scan.clientsubnet.vcnexaosaka.oraclevcn.com
	Address: 10.20.1.101
	Name:	exa-osaka-bozpx-scan.clientsubnet.vcnexaosaka.oraclevcn.com
	Address: 10.20.1.102
	Name:	exa-osaka-bozpx-scan.clientsubnet.vcnexaosaka.oraclevcn.com
	Address: 10.20.1.103
```

## ● 名前解決を設定できない場合
名前解決できない場合、IPアドレスを tnsnames.ora の データベース記述子に設定することで可能です。
・参考: [付録B：ADDRESS_LISTを使用するtnsnames.oraサンプル](https://www.oracle.com/jp/a/tech/docs/hybrid-data-guard-to-exaoci-update-gen2-exacc-exacs-ja.pdf)


## ● バンドル・パッチ(BP)確認
RDBMSソフトウェアは、インスタンス化のためにプライマリとスタンバイで同じものを使用する必要があります。
現在のオンプ レミスOracle DatabaseバージョンをExadata Cloudで使用できない場合は、プライマリ・データベースにパッチを適用するか、 または使用可能なクラウド・バンドル・パッチにアップグレードする必要があります。
クラウドで使用可能なバンドル・パッチ の一覧は、以下のコマンドで表示できます。ソフトウェアのインストールについては、「デプロイメント・プロセス」セクショ ンで説明しています。

### 1) Bundle Patches(BP)確認
PrimaryとStandbyサイトでBP同一であることを確認
```:Primary/Standby
# dbaascli cswlib list
	DBAAS CLI version 22.3.1.1.0
	Executing command cswlib list

	INFO : Log file => /var/opt/oracle/log/list/list_2022-09-20_02:48:07.493531118599.log
	[INFO] [DBAAS-14011] - The usage of this command is deprecated.
	ACTION: It is recommended to use 'dbaascli cswlib showImages' for this operation.
	INFO : dbimage fixup executed.
	INFO: exabm=1 and oss_uri from return_exabm_url() :https://swiftobjectstorage.ap-tokyo-1.oraclecloud.com

	############ List of Available BP #############
	-APR2022 (For DB Versions  11204 12102 12201 18000 19000)
	-OCT2021 (For DB Versions  11204 12102 12201 18000 19000)
	-JUL2022 (For DB Versions  11204 12102 12201 18000 19000)
	-JUL2021 (For DB Versions  11204 12102 12201 18000 19000)
	-JAN2022 (For DB Versions  11204 12102 12201 18000 19000)
```

# ■ 個別パッチとマージ・パッチ確認
個別パッチとマージ・パッチもプライマリとスタンバイのデータベース間で一致している必要があります。
適用された個別パッチ を以下のコマンドで検索し、パッチのドキュメントに従ってすべてのプライマリ・データベース個別パッチをクラウド・データベース・ソフ トウェアに適用します。

**・ 確認**
PrimaryとStandbyサイトでDBパッチが同一であることを確認
```:Primary/Standby
$ $ORACLE_HOME/OPatch/opatch lspatches
	34088989;ONE-OFF REQUEST FOR DELETE DIR FOR SUPTOOLS/TFA + SUPTOOLS/ORACHK + SUPTOOLS/ORACHK.ZIP FROM DB PSU/BP/RU/RUR
	34096213;Fix for Bug 34096213
	33810360;CVE-2021-45943 REPORTED IN (OPEN SOURCE GEOSPATIAL FOUNDATION/GEOSPATIAL DATA ABSTRACTION LIBRARY/OPENGIS SIMPLE FEATURES REFERENCE IMPLEMENTATION (GDAL/OGR)/3.3.0)
	33809062;TRACKING BUG FOR REGRESSION RTI 24544369 CAUSED BY PKNAGGS_BUG-32472737 APPROVED/INCLUDED IN 21.0.0.0 ADBSBP
	29780459;INCREASE _LM_RES_HASH_BUCKET AND BACK OUT CHANGES FROM THE BUG 29416368 FIX
	33613833;DSTV37 UPDATE - TZDATA2021E - NEED OJVM FIX
	33613829;RDBMS - DSTV37 UPDATE - TZDATA2021E
	32327201;RDBMS - DSTV36 UPDATE - TZDATA2020E
	31335037;RDBMS - DSTV35 UPDATE - TZDATA2020A
	30432118;MERGE REQUEST ON TOP OF 19.0.0.0.0 FOR BUGS 28852325 29997937
	33912872;DATABASE PERL UPDATE IN 19C TO V5.32-1 (CVE-2022-23990 - LIBEXPAT UPDATE)
	33810130;JDK BUNDLE PATCH 19.0.0.0.220419
	33808367;OJVM RELEASE UPDATE: 19.15.0.0.220419 (33808367)
	33815596;OCW RELEASE UPDATE 19.15.0.0.0 (33815596)
	33806152;Database Release Update : 19.15.0.0.220419 (33806152)

	OPatch succeeded.
```


## ● Data Guard Broker構成確認
プライマリ・データベースがまだ既存のData Guard Broker構成の一部 になっていないことを前提としています。

```:Primary
SQL> select decode(count(*),0,'NOCONFIG') from v$DG_BROKER_CONFIG;

	DECODE(C
	--------
	NOCONFIG
```

## ● プライマリ・データベースのリスナー・ポート検証
次のコマンドを実行して、プライマリ・データベース のリスナー・ポートを検証します。
このポートは、 REDO転送の構成時に必要となり、デプロイメント・プロセス時にtns記述子に入力されます。
```:Primary
[oracle@exa-tokyo-node1 ~]$ lsnrctl stat| grep 'Connecting to'
	Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
```

## ● プライマリ・データベースでMAAベスト・プラクティスのパラメータ設定を実装する
プライマリ・データベースでMAAベスト・プラクティスのパラメータ設定を実装する
ベスト・プラクティスのリストについては、[ドキュメントの付録A](https://www.oracle.com/jp/a/tech/docs/hybrid-data-guard-to-exaoci-update-gen2-exacc-exacs-ja.pdf) を参照してください。このドキュメントで説明するプロセスでは、
インスタンス 化前にプライマリ・データベースが構成されていることを前提としています。
インスタンス化前にREDOログを構成することは特に重要です。


## ● 適切なロギング・モードの有効化 
Data Guard構成の使用方法に適したロギング・モードを有効化する必要があります。
・参考: [ドキュメントの付録A](https://www.oracle.com/jp/a/tech/docs/hybrid-data-guard-to-exaoci-update-gen2-exacc-exacs-ja.pdf) 

```:Primary
SQL> ALTER DATABASE FORCE LOGGING;

    データベースが変更されました。
```


## ● STANDBY_FILE_MANAGEMENT 設定
STANDBY_FILE_MANAGEMENT を AUTO に設定すると、データファイル作成等すると スタンバイ・データベース上にファイルが自動的に作成されます。
場合によっては既存のファイルが上書きされます。STANDBY_FILE_MANAGEMENT と DB_FILE_NAME_CONVERT を設定する場合は、既存のスタンバイ・ファイルが意図せずに上書きされないように注意してください。
スタンバイ・データベースがプライマリ・データベースと同じシステム上にある場合は、プライマリ・システムとスタンバイ・システムが同じファイルを指していないことを確認してください。

・参考: [データベース・リファレンス](https://docs.oracle.com/cd/F19136_01/refrn/STANDBY_FILE_MANAGEMENT.html#GUID-BD652D33-31C7-47C9-8019-7A4B79A9D974)

```:SQL
SQL> ALTER SYSTEM SET standby_file_management=AUTO SCOPE=BOTH;
	System altered.
```

## ● プライマリ・データベース・ホストとスタンバイ・データベースホストとの間の接続の検証
すべてのネットワーク接続手順を正常に実施し終えたら、以下のコマンドを実行して、全ソースから全ターゲットへ、および全ターゲットから全ソースへの接続に問題がないことをTelnet,nc,sqlp接続等で確認します。

### ・ Osaka -> Tokyo接続確認
```:Primary
・TOKYO: Node1 1521接続確認
 [root@exa-osaka-node1 ~]# nc -zv 10.10.1.11 1521
	Ncat: Version 7.50 ( https://nmap.org/ncat )
	Ncat: Connected to 10.10.1.12:1521.
	Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.

・TOKYO: Node2 1521接続確認
[root@exa-osaka-node1 ~]# nc -zv 10.10.1.12 1521
	Ncat: Version 7.50 ( https://nmap.org/ncat )
	Ncat: Connected to 10.10.1.12:1521.
	Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.

・TOKYO: Scan1 1521接続確認
[root@exa-osaka-node1 ~]# nc -zv 10.10.1.101 1521
	Ncat: Version 7.50 ( https://nmap.org/ncat )
	Ncat: Connected to 10.10.1.101:1521.
	Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.

・TOKYO: Scan2 1521接続確認
[root@exa-osaka-node1 ~]#  nc -zv 10.10.1.102 1521
	Ncat: Version 7.50 ( https://nmap.org/ncat )
	Ncat: Connected to 10.10.1.102:1521.
	Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.

・TOKYO: Scan3
[root@exa-osaka-node1 ~]# nc -zv 10.10.1.103 1521
	Ncat: Version 7.50 ( https://nmap.org/ncat )
	Ncat: Connected to 10.10.1.103:1521.
	Ncat: 0 bytes sent, 0 bytes received in 0.02 seconds.
```


### ・ Tokyo -> Osaka 1521接続確認
```:Standby
・OSAKA: Node1 1521接続確認
[root@exa-tokyo-node1 ~]# nc -zv 10.20.1.11 1521
	Ncat: Version 7.50 ( https://nmap.org/ncat )
	Ncat: Connected to 10.20.1.11:1521.
	Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.

・OSAKA: Node2 1521接続確認
[root@exa-tokyo-node1 ~]# nc -zv 10.20.1.12 1521
	Ncat: Version 7.50 ( https://nmap.org/ncat )
	Ncat: Connected to 10.20.1.12:1521.
	Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.

・OSAKA: Scan1 1521接続確認
[root@exa-tokyo-node1 ~]# nc -zv 10.20.1.101 1521
	Ncat: Version 7.50 ( https://nmap.org/ncat )
	Ncat: Connected to 10.20.1.101:1521.
	Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.

・OSAKA: Scan2 1521接続確認
[root@exa-tokyo-node1 ~]# nc -zv 10.20.1.102 1521
	Ncat: Version 7.50 ( https://nmap.org/ncat )
	Ncat: Connected to 10.20.1.102:1521.
	Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.

・OSAKA: Scan3 1521接続確認
[root@exa-tokyo-node1 ~]# nc -zv 10.20.1.103 1521
	Ncat: Version 7.50 ( https://nmap.org/ncat )
	Ncat: Connected to 10.20.1.103:1521.
	Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
```


# ■ クラウド・ツール更新
dbaastools バージョン18.2.3.2.0_190618以上が必要です。最新のdbaastools rpmに更新することが常に推奨されています。

### 1) dbaascli Version Up
最新のdbaastoolsを適用します。 
・参考: [クラウド・ツール dbaascliをバージョンアップ](https://qiita.com/shirok/items/9c5f4176b86536ff221e)


### 2) dbaascli Version Up確認

```:Primary/Standby
[root@ ~]# dbaascli patch tools list
	DBAAS CLI version 22.3.1.1.0
	Executing command patch tools list
	Checking Current tools on all nodes

	exa-tokyo-node1: Patchid : 22.3.1.1.0_220826.0317
	No applicable tools patches are available

	exa-tokyo-zuuyk2: Patchid : 22.3.1.1.0_220826.0317
	No applicable tools patches are available

	All Nodes have the same tools version
```





# ■ 手順2:APIで作成されたデータベースを手動で削除
## ● データベース・ファイル削除スクリプト作成
スクリプトを作成して、すべてのデータベース・ファイルを削除

```:Standby
SQL> set heading off linesize 999 pagesize 0 feedback off trimspool on 
SQL> spool /tmp/delete_ASM_files.sh
SQL> select 'asmcmd rm '||name from v$datafile
	union all
	select 'asmcmd rm '||name from v$tempfile
	union all
	select 'asmcmd rm '||member from v$logfile;
SQL> spool off
SQL> create pfile='/tmp/CDB_TOKYO.pfile' from spfile;
SQL> host chmod 777 /tmp/delete_ASM_files.sh
SQL> host cat /tmp/delete_ASM_files.sh
		SQL> select 'asmcmd rm '||name from v$datafile
		2  union all
		3  select 'asmcmd rm '||name from v$tempfile
		4  union all
		5  select 'asmcmd rm '||member from v$logfile;
		asmcmd rm +DATAC1/CDB_TOKYO/DATAFILE/system.291.1115821901
		asmcmd rm +DATAC1/CDB_TOKYO/DE03BE2347E67ADBE053C00DD10A4229/DATAFILE/system.271.1115821673
		asmcmd rm +DATAC1/CDB_TOKYO/DATAFILE/sysaux.297.1115821887
		asmcmd rm +DATAC1/CDB_TOKYO/DE03BE2347E67ADBE053C00DD10A4229/DATAFILE/sysaux.301.1115821673
		asmcmd rm +DATAC1/CDB_TOKYO/DATAFILE/undotbs1.292.1115821915
		asmcmd rm +DATAC1/CDB_TOKYO/DE03BE2347E67ADBE053C00DD10A4229/DATAFILE/undotbs1.300.1115821673
		asmcmd rm +DATAC1/CDB_TOKYO/DATAFILE/users.290.1115821929
		asmcmd rm +DATAC1/CDB_TOKYO/DATAFILE/undotbs2.289.1115821937
		asmcmd rm +DATAC1/CDB_TOKYO/E909A6304600B2CAE05353010A0AA253/DATAFILE/system.274.1115822297
		asmcmd rm +DATAC1/CDB_TOKYO/E909A6304600B2CAE05353010A0AA253/DATAFILE/sysaux.279.1115822305
		asmcmd rm +DATAC1/CDB_TOKYO/E909A6304600B2CAE05353010A0AA253/DATAFILE/undotbs1.264.1115822309
		asmcmd rm +DATAC1/CDB_TOKYO/E909A6304600B2CAE05353010A0AA253/DATAFILE/undo_2.283.1115822315
		asmcmd rm +DATAC1/CDB_TOKYO/E909A6304600B2CAE05353010A0AA253/DATAFILE/users.270.1115822295
		asmcmd rm +DATAC1/CDB_TOKYO/TEMPFILE/temp.285.1115822003
		asmcmd rm +DATAC1/CDB_TOKYO/E9098419BE65BF0DE05366010A0AED64/TEMPFILE/temp.299.1115821703
		asmcmd rm +DATAC1/CDB_TOKYO/E909A6304600B2CAE05353010A0AA253/TEMPFILE/temp.277.1115822291
		asmcmd rm +DATAC1/CDB_TOKYO/ONLINELOG/group_4.261.1115821627
		asmcmd rm +DATAC1/CDB_TOKYO/ONLINELOG/group_3.265.1115821627
		asmcmd rm +DATAC1/CDB_TOKYO/ONLINELOG/group_2.278.1115821627
		asmcmd rm +DATAC1/CDB_TOKYO/ONLINELOG/group_1.267.1115821627
		asmcmd rm +DATAC1/CDB_TOKYO/ONLINELOG/group_5.298.1115822129
		asmcmd rm +DATAC1/CDB_TOKYO/ONLINELOG/group_6.296.1115822131
		asmcmd rm +DATAC1/CDB_TOKYO/ONLINELOG/group_7.295.1115822133
		asmcmd rm +DATAC1/CDB_TOKYO/ONLINELOG/group_8.294.1115822135
		SQL>  spool off
```


## ● インスタンス化後に再適用するRMAN設定保存

```:Standby
[oracle@exa-osaka-node1 ~]$ rman target / log='/tmp/rman_setting.log'
RMAN> show all;
RMAN> exit
[oracle@exa-tokyo-node1 ~]$ cat /tmp/rman_setting.log

		Recovery Manager: Release 19.0.0.0.0 - Production on Wed Sep 21 06:23:53 2022
		Version 19.15.0.0.0

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

		connected to target database: CDB (DBID=2232425141)

		RMAN>
		using target database control file instead of recovery catalog
		RMAN configuration parameters for database with db_unique_name CDB_TOKYO are:
		CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
		CONFIGURE BACKUP OPTIMIZATION ON;
		CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
		CONFIGURE CONTROLFILE AUTOBACKUP ON;
		CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
		CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
		CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
		CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
		CONFIGURE MAXSETSIZE TO UNLIMITED; # default
		CONFIGURE ENCRYPTION FOR DATABASE OFF;
		CONFIGURE ENCRYPTION ALGORITHM 'AES256';
		CONFIGURE COMPRESSION ALGORITHM 'LOW' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE;
		CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
		CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
		CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+DATAC1/CDB_TOKYO/controlfile/snapcf_CDB.f';

		RMAN>

		Recovery Manager complete.
```



## ● データベースをシャットダウン
後で参照できるよう、データベースのクラスタウェア構成を収集します。


```:Standby
[oracle@exa-tokyo-node1 ~]$ srvctl config database -d CDB_TOKYO > /tmp/CDB_TOKYO.config
[oracle@exa-tokyo-node1 ~]$ cat /tmp/CDB_TOKYO.config
		Database unique name: CDB_TOKYO
		Database name: CDB
		Oracle home: /u02/app/oracle/product/19.0.0.0/dbhome_1
		Oracle user: oracle
		Spfile: +DATAC1/CDB_TOKYO/PARAMETERFILE/spfile.281.1115822137
		Password file: +DATAC1/CDB_TOKYO/PASSWORD/pwdcdb_tokyo.293.1115821459
		Domain: clientsubnet.vcnexatokyo.oraclevcn.com
		Start options: open
		Stop options: immediate
		Database role: PRIMARY
		Management policy: AUTOMATIC
		Server pools:
		Disk Groups: DATAC1
		Mount point paths: /acfs01
		Services: CDB_PDB1.paas.oracle.com
		Type: RAC
		Start concurrency:
		Stop concurrency:
		OSDBA group: dba
		OSOPER group: racoper
		Database instances: CDB_TOKYO1,CDB_TOKYO2
		Configured nodes: exa-tokyo-node1,exa-tokyo-zuuyk2
		CSS critical: no
		CPU count: 0
		Memory target: 0
		Maximum memory: 0
		Default network number for database services:
		Database is administrator managed
```



## ● 最後に、データベースを停止します。

```:Standby
[oracle@exa-tokyo-node1 ~]$ srvctl stop database -d CDB_TOKYO -o immediate
[oracle@exa-tokyo-node1 ~]$ srvctl status database -d CDB_TOKYO
	Instance CDB_TOKYO1 is not running on node exa-tokyo-node1
	Instance CDB_TOKYO2 is not running on node exa-tokyo-zuuyk2
```


## ● データベース・ファイルを削除
Standbyサイトの既存のデータファイル、ログ・ファイル、tempfileを削除します。パスワード・ファイルは置換され、spfileは再使用します。

### 1) データベース・ファイル削除スクリプト作成
gridユーザーとして、前に作成した/tmp/delete_ASM_files.sh を編集して、sqlplusからすべての不要な行を削除し、'asmcmd'で始まる行のみを残します。 

```:Standby
[grid@exa-tokyo-node1 ~]$ cp /tmp/delete_ASM_files.sh /tmp/delete_ASM_files.sh.org
[grid@exa-tokyo-node1 ~]$ vi /tmp/delete_ASM_files.sh
	<--すべての不要な行を削除し、'asmcmd'で始まる行のみを残します。

[grid@exa-tokyo-node1 ~]$ cat /tmp/delete_ASM_files.sh
	asmcmd rm +DATAC1/CDB_TOKYO/DATAFILE/system.291.1115821901
	asmcmd rm +DATAC1/CDB_TOKYO/DE03BE2347E67ADBE053C00DD10A4229/DATAFILE/system.271.1115821673
	asmcmd rm +DATAC1/CDB_TOKYO/DATAFILE/sysaux.297.1115821887
	asmcmd rm +DATAC1/CDB_TOKYO/DE03BE2347E67ADBE053C00DD10A4229/DATAFILE/sysaux.301.1115821673
	asmcmd rm +DATAC1/CDB_TOKYO/DATAFILE/undotbs1.292.1115821915
	asmcmd rm +DATAC1/CDB_TOKYO/DE03BE2347E67ADBE053C00DD10A4229/DATAFILE/undotbs1.300.1115821673
	asmcmd rm +DATAC1/CDB_TOKYO/DATAFILE/users.290.1115821929
	asmcmd rm +DATAC1/CDB_TOKYO/DATAFILE/undotbs2.289.1115821937
	asmcmd rm +DATAC1/CDB_TOKYO/E909A6304600B2CAE05353010A0AA253/DATAFILE/system.274.1115822297
	asmcmd rm +DATAC1/CDB_TOKYO/E909A6304600B2CAE05353010A0AA253/DATAFILE/sysaux.279.1115822305
	asmcmd rm +DATAC1/CDB_TOKYO/E909A6304600B2CAE05353010A0AA253/DATAFILE/undotbs1.264.1115822309
	asmcmd rm +DATAC1/CDB_TOKYO/E909A6304600B2CAE05353010A0AA253/DATAFILE/undo_2.283.1115822315
	asmcmd rm +DATAC1/CDB_TOKYO/E909A6304600B2CAE05353010A0AA253/DATAFILE/users.270.1115822295
	asmcmd rm +DATAC1/CDB_TOKYO/TEMPFILE/temp.285.1115822003
	asmcmd rm +DATAC1/CDB_TOKYO/E9098419BE65BF0DE05366010A0AED64/TEMPFILE/temp.299.1115821703
	asmcmd rm +DATAC1/CDB_TOKYO/E909A6304600B2CAE05353010A0AA253/TEMPFILE/temp.277.1115822291
	asmcmd rm +DATAC1/CDB_TOKYO/ONLINELOG/group_4.261.1115821627
	asmcmd rm +DATAC1/CDB_TOKYO/ONLINELOG/group_3.265.1115821627
	asmcmd rm +DATAC1/CDB_TOKYO/ONLINELOG/group_2.278.1115821627
	asmcmd rm +DATAC1/CDB_TOKYO/ONLINELOG/group_1.267.1115821627
	asmcmd rm +DATAC1/CDB_TOKYO/ONLINELOG/group_5.298.1115822129
	asmcmd rm +DATAC1/CDB_TOKYO/ONLINELOG/group_6.296.1115822131
	asmcmd rm +DATAC1/CDB_TOKYO/ONLINELOG/group_7.295.1115822133
	asmcmd rm +DATAC1/CDB_TOKYO/ONLINELOG/group_8.294.1115822135
```


### 2) スクリプトを保存して実行
/tmp/delete_ASM_files.sh これで、初期データベースのすべてのファイルが削除されました。

```:Standby
[grid@exa-tokyo-node1 ~]$ . /tmp/delete_ASM_files.sh
[grid@exa-tokyo-node1 ~]$ asmcmd ls +DATAC1/CDB_TOKYO
		CONTROLFILE/
		DATAGUARDCONFIG/
		PARAMETERFILE/
		PASSWORD/

[grid@exa-tokyo-node1 ~]$ asmcmd ls +DATAC1/CDB_TOKYO/ONLINELOG
		ASMCMD-8002: entry 'ONLINELOG' does not exist in directory '+DATAC1/CDB_TOKYO/'
```


# ■ 手順3:パスワード・ファイルをスタンバイ・データベースにコピー
スタンバイ・データベースのパスワード・ファイルは、プライマリ・データベースのパスワード・ファイルで置き換えます。

## ● プライマリ・データベース のパスワード・ファイルの場所を確認する

```:Standby
[grid@exa-tokyo-node1 ~]$ srvctl config database -db CDB_OSAKA
	Database unique name: CDB_OSAKA
	Database name: CDB
	Oracle home: /u02/app/oracle/product/19.0.0.0/dbhome_1
	Oracle user: oracle
	Spfile: +DATAC1/CDB_OSAKA/PARAMETERFILE/spfile.267.1115956849
	Password file: +DATAC1/CDB_OSAKA/PASSWORD/pwdcdb_osaka.272.1115956143
	Domain: clientsubnet.vcnexaosaka.oraclevcn.com
	Start options: open
	Stop options: immediate
	Database role: PRIMARY
	Management policy: AUTOMATIC
	Server pools:
	Disk Groups: DATAC1
	Mount point paths: /acfs01
	Services: CDB_PDB1.paas.oracle.com
	Type: RAC
	Start concurrency:
	Stop concurrency:
	OSDBA group: dba
	OSOPER group: racoper
	Database instances: CDB_OSAKA1,CDB_OSAKA2
	Configured nodes: exa-osaka-node1,exa-osaka-node2
	CSS critical: no
	CPU count: 0
	Memory target: 0
	Maximum memory: 0
	Default network number for database services:
	Database is administrator managed
```


## ● プライマリ・データベースのパスワード・ファイルを Standby へコピー
パスワード・ファイルをすべての Standbyノードにコピーします。
パスワード・ファイルの場所がASMの場合は、ユーザーを"grid"またはASM所有者に切り替え、環境変数を指定してから、以下のようにしてパスワード・ファイルをコピーします。

### 1) パスワード・ファイル確認
```:Primary
[grid@exa-osaka-node1 ~]$ asmcmd
ASMCMD> cd +DATAC1/CDB_OSAKA/PASSWORD
ASMCMD> ls
	pwdcdb_osaka.272.1115956143
```

### ２) パスワード・ファイルを /tmpへコピー
```:Primary
ASMCMD> cp pwdcdb_osaka.272.1115956143 /tmp
	copying +DATAC1/CDB_OSAKA/PASSWORD/pwdcdb_osaka.272.1115956143 -> /tmp/pwdcdb_osaka.272.1115956143
```

### 3) パスワード・ファイルを スタンバイ・データベース へコピー
```:Primary
[oracle@exa-osaka-node1 .ssh]$ scp -i $HOME/.ssh/id_rsa2 /tmp/pwdcdb_osaka.272.1115956143 oracle@10.10.1.11:/tmp/
		pwdcdb_osaka.272.1115956143				100% 2560   247.5KB/s   00:00
```


## ● Standby のパスワード・ファイルをASMに格納
### 1) Standbyの既存パスワード・ファイル確認
```:Standby
[grid@exa-tokyo-node1 ~]$ srvctl config database -db CDB_TOKYO | grep Password
	Password file: +DATAC1/CDB_TOKYO/PASSWORD/pwdcdb_tokyo.293.1115821459
```


### 2) Standbyの既存パスワード・ファイル削除
```:Standby
$ asmcmd rm <Password file Path>
```

### 3) Primaryパスワード・ファイルをStandbyへコピー
前に登録されたパスワード・ファイルの場所を再使用している場合、Error ASMCMD-9453: failed to register password file as a CRS resourceは無視してかまいません。
```:Standby
ASMCMD> pwcopy --dbuniquename CDB_TOKYO /tmp/pwdcdb_osaka.272.1115956143 +DATAC1/CDB_TOKYO/PASSWORD/pwdcdb_tokyo -f
	ASMCMD-9453: failed to register password file as a CRS resource
	copying /tmp/pwdcdb_osaka.272.1115956143 -> +DATAC1/CDB_TOKYO/PASSWORD/pwdcdb_tokyo
	ASMCMD-9453: failed to register password file as a CRS resource
    <-- ASMCMD-9453は無視できる

ASMCMD> ls -l +DATAC1/CDB_TOKYO/PASSWORD/
	Type      Redund  Striped  Time             Sys  Name
	PASSWORD  HIGH    COARSE   SEP 22 10:00:00  N    pwdcdb_tokyo => +DATAC1/CDB_TOKYO/PASSWORD/pwdcdb_tokyo.294.1116068321
	PASSWORD  HIGH    COARSE   SEP 22 10:00:00  Y    pwdcdb_tokyo.294.1116068321
```


### 4) 新規パスワード・ファイルを登録

```:Standby
[oracle@exa-tokyo-node1 ~]$ srvctl modify database -db CDB_TOKYO -pwfile +DATAC1/CDB_TOKYO/PASSWORD/pwdcdb_tokyo
```


### 5) 新規パスワード・ファイル登録確認

```:Standby
[oracle@exa-tokyo-node1 ~]$ srvctl config database -db CDB_TOKYO | grep Password
	Password file: +DATAC1/CDB_TOKYO/PASSWORD/pwdcdb_tokyo
```


# ■ 手順4:スタンバイ・データベースへのウォレット・ファイルのコピー
### 1) プライマリ・データベース の TDEウォレットの場所を取得
以下の問合せで、プライマリ・データベース の TDEウォレットの場所を取得します。 

```:Primary
SQL> select WRL_PARAMETER from v$encryption_wallet;

	WRL_PARAMETER
	--------------------------------------------------------------------------------
	/var/opt/oracle/dbaas_acfs/CDB/wallet_root/tde/

SQL> host ls -l /var/opt/oracle/dbaas_acfs/CDB/wallet_root/tde/
	total 32
	-rw------- 1 oracle oinstall 5512 Sep 21 04:02 cwallet.sso
	-rw------- 1 oracle oinstall 2555 Sep 21 03:55 ewallet_2022092103555151.p12
	-rw------- 1 oracle oinstall 3995 Sep 21 04:02 ewallet_2022092104025724.p12
	-rw------- 1 oracle oinstall 5467 Sep 21 04:02 ewallet.p12
```


### 2) Standbyへウォレット・ファイルをコピー
Primary の ewallet.p12ファイルと cwallet.sso ファイルを、Standbyノード1上の /tmpディレクトリにコピーします。
プライマリでは、パスワード・ファイルの場合と同様に、ASMから/tmpにファイルをコピーすることが必要になる場合があります。

```:Primary
[oracle@exa-osaka-node1 ~]$ cd /var/opt/oracle/dbaas_acfs/CDB/wallet_root/tde/
[oracle@exa-osaka-node1 ~]$ scp -i ~/.ssh/id_rsa2 ewallet.p12 cwallet.sso oracle@10.20.1.11:/tmp
		ewallet.p12                     100% 5467   570.7KB/s   00:00
		cwallet.sso                     100% 5512   557.9KB/s   00:00
```



### 3) Standby 既存ウォレット・ファイルを削除
/var/opt/oracle/dbaas_acfs/<standby db_name>/tde_walletの古いウォレット・ファイルを削除します。
ノード1でのみコマンドを 実行します(スタンバイ・データベース・ノードは、ACFSを使用して/var/opt/oracle/dbaas_acfsのストレージを共有)。

```:Standby
[oracle@exa-tokyo-node1 tde]$ cd /var/opt/oracle/dbaas_acfs/CDB/wallet_root/tde
[oracle@exa-tokyo-node1 tde]$ ls -l
	total 32
	-rw------- 1 oracle oinstall 5512 Sep 16 15:06 cwallet.sso
	-rw------- 1 oracle oinstall 2555 Sep 16 14:59 ewallet_2022091614591224.p12
	-rw------- 1 oracle oinstall 3995 Sep 16 15:06 ewallet_2022091615063141.p12
	-rw------- 1 oracle oinstall 5467 Sep 16 15:06 ewallet.p12

[oracle@exa-tokyo-node1 tde]$ rm cwallet.sso ewallet*
[oracle@exa-tokyo-node1 tde]$ ls -l
	total 0
```


### 4) プライマリ・データベース のウォレット・ファイルを Standby DBへコピー

```:Standby
[oracle@exa-tokyo-node1 ~]$ chmod 777 /tmp/cwallet.sso
[oracle@exa-tokyo-node1 ~]$ cp /tmp/ewallet.p12 /var/opt/oracle/dbaas_acfs/CDB/wallet_root/tde
[oracle@exa-tokyo-node1 ~]$ cp /tmp/cwallet.sso /var/opt/oracle/dbaas_acfs/CDB/wallet_root/tde
[oracle@exa-tokyo-node1 ~]$ chmod 600 /tmp/cwallet.sso /var/opt/oracle/dbaas_acfs/CDB/wallet_root/tde/*wallet*
[oracle@exa-tokyo-node1 ~]$ ls -l /var/opt/oracle/dbaas_acfs/CDB/wallet_root/tde
	total 16
	-rw------- 1 oracle oinstall 5512 Sep 22 05:11 cwallet.sso
	-rw------- 1 oracle oinstall 5467 Sep 22 05:11 ewallet.p12
```




# ■ 手順5:(11gのみ)静的リスナーを構成
19cでは不要




# ■ 手順6:REDO転送用のオラクルのネットワーク暗号化とTNSエントリ
プレーンテキストまたは暗号化されていない表領域のREDOがWAN上で可視状態にならないよう保護するには、プライマリ・データベース のすべてとクラウドにおいてsqlnet.oraファイルに次のエントリを入力します。


## ● tnsnames.ora設定
REDO転送が正常に行われるようにするには、プライマリとスタンバイの両方のtnsnames.oraファイルに各データベースのエントリが含まれている必要があります。
データベースのTNS記述子は、他のシステムからスキャン・リスナーが解決可能かどうかに応じて異なります。
以下の設定内容では、スキャン名が解決可能で、TNS記述子で使用可能なことを前提としています。スキャン名を解決できない場合は、ADDRESS_LISTを使用して、[付録B](https://www.oracle.com/jp/a/tech/docs/hybrid-data-guard-to-exaoci-update-gen2-exacc-exacs-ja.pdf)でTNS記述子の例を参照してください。


**・tnsnames.ora設定内容**
Primary(Local DB) の接続記述子には , (UR=A)オプションがあります。

```
<primary db_unique_name> =
	(DESCRIPTION =
		(SDU=65536) (RECV_BUF_SIZE=134217728)
		(SEND_BUF_SIZE=134217728)
		(ADDRESS_LIST =
			(ADDRESS = (PROTOCOL = TCP)(HOST = <primary scan name>)(PORT = {1521|<port#>}))
		)
		(CONNECT_DATA =
			(SERVER = DEDICATED)
			(SERVICE_NAME = <primary database service name>])
			(UR=A)
	))

<standby db_unique_name> =
	(DESCRIPTION =
		(SDU=65536) (RECV_BUF_SIZE=134217728)
		(SEND_BUF_SIZE=134217728)
		(ADDRESS_LIST =
			(ADDRESS = (PROTOCOL = TCP)(HOST = <standby scan name>)(PORT = {1521|<port#>}))
		)
		(CONNECT_DATA =
			(SERVER = DEDICATED)
			(SERVICE_NAME = <service name of the standby database>)
	))
```


**・設定確認**
```:exa-tokyo-node#
[oracle@exa-tokyo-node1 ~]$ cat $ORACLE_HOME/network/admin/tnsnames.ora
	# tnsnames.ora Network Configuration File: /u02/app/oracle/product/19.0.0.0/dbhome_1/network/admin/CDB/tnsnames.ora
	# Generated by Oracle configuration tools.

	CDB_TOKYO =
		(DESCRIPTION =
			(SDU=65536) (RECV_BUF_SIZE=134217728)
			(SEND_BUF_SIZE=134217728)
			(ADDRESS_LIST =
				(ADDRESS = (PROTOCOL = TCP)(HOST = exa-tokyo-zuuyk-scan.clientsubnet.vcnexatokyo.oraclevcn.com)(PORT = 1521))
			)
			(CONNECT_DATA =
				(SERVER = DEDICATED)
				(SERVICE_NAME = CDB_TOKYO.clientsubnet.vcnexatokyo.oraclevcn.com)
				(UR=A)
			)
		)

	CDB_OSAKA =
		(DESCRIPTION =
			(SDU=65536) (RECV_BUF_SIZE=134217728)
			(SEND_BUF_SIZE=134217728)
			(ADDRESS_LIST =
				(ADDRESS = (PROTOCOL = TCP)(HOST = exa-osaka-node-scan.clientsubnet.vcnexaosaka.oraclevcn.com)(PORT = 1521))
			)
			(CONNECT_DATA =
				(SERVER = DEDICATED)
				(SERVICE_NAME = CDB_OSAKA.clientsubnet.vcnexaosaka.oraclevcn.com)
			)
		)
		
	CDB=
		(DESCRIPTION=
		(ADDRESS=
			(PROTOCOL=TCP)
			(HOST=exa-tokyo-zuuyk-scan.clientsubnet.vcnexatokyo.oraclevcn.com)
			(PORT=1521))
		(CONNECT_DATA=
			(SERVER=DEDICATED)
			(SERVICE_NAME=CDB_TOKYO.clientsubnet.vcnexatokyo.oraclevcn.com)
			(FAILOVER_MODE=
			(TYPE=select)
			(METHOD=basic))))
	PDB1=
		(DESCRIPTION=
		(ADDRESS=
			(PROTOCOL=TCP)
			(HOST=exa-tokyo-zuuyk-scan.clientsubnet.vcnexatokyo.oraclevcn.com)
			(PORT=1521))
		(CONNECT_DATA=
			(SERVER=DEDICATED)
			(SERVICE_NAME=PDB1.clientsubnet.vcnexatokyo.oraclevcn.com)
			(FAILOVER_MODE=
			(TYPE=select)
			(METHOD=basic))))
```


```:exa-osaka-node#
[oracle@exa-osaka-node1 ~]$ cat $ORACLE_HOME/network/admin/tnsnames.ora
	# tnsnames.ora Network Configuration File: /u02/app/oracle/product/19.0.0.0/dbhome_1/network/admin/CDB/tnsnames.ora
	# Generated by Oracle configuration tools.

	CDB_OSAKA =
		(DESCRIPTION =
			(SDU=65536) (RECV_BUF_SIZE=134217728)
			(SEND_BUF_SIZE=134217728)
			(ADDRESS_LIST =
				(ADDRESS = (PROTOCOL = TCP)(HOST = exa-osaka-node-scan.clientsubnet.vcnexaosaka.oraclevcn.com)(PORT = 1521))
			)
			(CONNECT_DATA =
				(SERVER = DEDICATED)
				(SERVICE_NAME = CDB_OSAKA.clientsubnet.vcnexaosaka.oraclevcn.com)
				(UR=A)
			)
		)

	CDB_TOKYO =
		(DESCRIPTION =
			(SDU=65536) (RECV_BUF_SIZE=134217728)
			(SEND_BUF_SIZE=134217728)
			(ADDRESS_LIST =
				(ADDRESS = (PROTOCOL = TCP)(HOST = exa-tokyo-zuuyk-scan.clientsubnet.vcnexatokyo.oraclevcn.com)(PORT = 1521))
			)
			(CONNECT_DATA =
				(SERVER = DEDICATED)
				(SERVICE_NAME = CDB_TOKYO.clientsubnet.vcnexatokyo.oraclevcn.com)
			)
		)

	CDB=
		(DESCRIPTION=
		(ADDRESS=
			(PROTOCOL=TCP)
			(HOST=exa-osaka-node-scan.clientsubnet.vcnexaosaka.oraclevcn.com)
			(PORT=1521))
		(CONNECT_DATA=
			(SERVER=DEDICATED)
			(SERVICE_NAME=CDB_OSAKA.clientsubnet.vcnexaosaka.oraclevcn.com)
			(FAILOVER_MODE=
			(TYPE=select)
			(METHOD=basic))))
	PDB1=
		(DESCRIPTION=
		(ADDRESS=
			(PROTOCOL=TCP)
			(HOST=exa-osaka-node-scan.clientsubnet.vcnexaosaka.oraclevcn.com)
			(PORT=1521))
		(CONNECT_DATA=
			(SERVER=DEDICATED)
			(SERVICE_NAME=PDB1.clientsubnet.vcnexaosaka.oraclevcn.com)
			(FAILOVER_MODE=
			(TYPE=select)
			(METHOD=basic))))
```


## ● sqlnet.ora設定
```
SQLNET.ENCRYPTION_SERVER=REQUIRED 
SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED 
SQLNET.ENCRYPTION_TYPES_SERVER=(AES256,AES192,AES128) 
SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER=(SHA1) 
SQLNET.ENCRYPTION_CLIENT=REQUIRED 
SQLNET.CRYPTO_CHECKSUM_CLIENT=REQUIRED 
SQLNET.ENCRYPTION_TYPES_CLIENT=(AES256,AES192,AES128)
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT=(SHA1)
```

**・設定確認**
```：Primary/Standby All Nodes
[oracle@ ~]$ cat sqlnet.ora
	HTTPS_SSL_VERSION=1.2
	SQLNET.CRYPTO_CHECKSUM_CLIENT=REQUIRED
	SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED
	SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT=(SHA256,SHA384,SHA512,SHA1)
	SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER=(SHA256,SHA384,SHA512)
	SQLNET.ENCRYPTION_CLIENT=REQUIRED
	SQLNET.ENCRYPTION_SERVER=REQUIRED
	SQLNET.ENCRYPTION_TYPES_CLIENT=(AES256,AES192,AES128)
	SQLNET.ENCRYPTION_TYPES_SERVER=(AES256,AES192,AES128)
	SQLNET.EXPIRE_TIME=10
	SQLNET.IGNORE_ANO_ENCRYPTION_FOR_TCPS=TRUE
	SQLNET.WALLET_OVERRIDE=FALSE
	SSL_CIPHER_SUITES=(SSL_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,SSL_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,SSL_ECDHE_RSA_WITH_AES_128_GCM_SHA256,SSL_ECDHE_RSA_WITH_AES_256_GCM_SHA384)
	SSL_CLIENT_AUTHENTICATION=FALSE
	SSL_VERSION=1.2
	WALLET_LOCATION=
		(SOURCE=
		(METHOD=FILE)
		(METHOD_DATA=(DIRECTORY=/var/opt/oracle/dbaas_acfs/grid/tcps_wallets)))
	ENCRYPTION_WALLET_LOCATION=
		(SOURCE=
		(METHOD=FILE)
		(METHOD_DATA=(DIRECTORY=/var/opt/oracle/dbaas_acfs/CDB/wallet_root/tde)))
```


## ● プライマリ・データベース 再起動
sqlnet.ora の WALLET_LOCATION を変更もしくは新規追加した場合、DBを再起動して設定を反映します。

```:Primary
[oracle@exa-osaka-node1 ~]$ srvctl stop database -d CDB_OSAKA -o immediate
[oracle@exa-osaka-node1 ~]$ srvctl start database -d CDB_OSAKA
[oracle@exa-osaka-node1 ~]$ srvctl status database -d CDB_OSAKA
	Instance CDB_OSAKA1 is running on node exa-osaka-node1
	Instance CDB_OSAKA2 is running on node exa-osaka-node1
```



# ■ 手順7:スタンバイ・データベースをインスタンス化

## ● スタンバイ・インスタンス作成

### 1) スタンバイ・データベース停止
```:Standby
[oracle@exa-tokyo-node1 ~]$ srvctl stop database -d CDB_TOKYO -o immediate
		PRCC-1016 : CDB_TOKYO was already stopped
```

### 2) RMAN接続
```:Standby
[oracle@exa-tokyo-node1 ~]$ rman target sys/<Paassword>

		Recovery Manager: Release 19.0.0.0.0 - Production on Thu Sep 22 06:19:40 2022
		Version 19.15.0.0.0

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

		connected to target database (not started)
```


### 3)  NOMOUNT起動
```:Standby
RMAN> startup nomount

		Oracle instance started

		Total System Global Area    7953271232 bytes

		Fixed Size                     9157056 bytes
		Variable Size               1560281088 bytes
		Database Buffers            6106906624 bytes
		Redo Buffers                 276926464 bytes
```


### 4) Standby Control File作成
```:Standby
RMAN> restore standby controlfile from service 'CDB_OSAKA';

		Starting restore at 22-SEP-22
		using target database control file instead of recovery catalog
		allocated channel: ORA_DISK_1
		channel ORA_DISK_1: SID=2360 instance=CDB_TOKYO1 device type=DISK

		channel ORA_DISK_1: starting datafile backup set restore
		channel ORA_DISK_1: using network backup set from service CDB_OSAKA
		channel ORA_DISK_1: restoring control file
		channel ORA_DISK_1: restore complete, elapsed time: 00:00:10
		output file name=+DATAC1/CDB_TOKYO/CONTROLFILE/current.272.1115821621
		Finished restore at 22-SEP-22
```


### 5）MOUNT起動
```:Standby
RMAN> alter database mount;

	using target database control file instead of recovery catalog
	Statement processed
```


### 6）並列度設定
可能分のCPU並列数を設定
```:Standby
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4;

	new RMAN configuration parameters:
	CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;
	new RMAN configuration parameters are successfully stored
```


### 7) スタンバイ・データベース ファイル・リストア
```:Standby
RMAN> restore database from service 'CDB_OSAKA' section size 64G;

		Starting restore at 22-SEP-22
		Starting implicit crosscheck backup at 22-SEP-22
		allocated channel: ORA_DISK_1
		allocated channel: ORA_DISK_2
		allocated channel: ORA_DISK_3
		allocated channel: ORA_DISK_4
		Crosschecked 1 objects
		Crosschecked 1 objects
		Finished implicit crosscheck backup at 22-SEP-22

		Starting implicit crosscheck copy at 22-SEP-22
		using channel ORA_DISK_1
		using channel ORA_DISK_2
		using channel ORA_DISK_3
		using channel ORA_DISK_4
		Finished implicit crosscheck copy at 22-SEP-22

		searching for all files in the recovery area
		cataloging files...
		cataloging done

		List of Cataloged Files
		=======================
		File Name: +RECOC1/CDB_TOKYO/ARCHIVELOG/2022_09_21/thread_1_seq_3.272.1115965625

		using channel ORA_DISK_1
		using channel ORA_DISK_2
		using channel ORA_DISK_3
		using channel ORA_DISK_4

		channel ORA_DISK_1: starting datafile backup set restore
		channel ORA_DISK_1: using network backup set from service CDB_OSAKA
		channel ORA_DISK_1: specifying datafile(s) to restore from backup set
		channel ORA_DISK_1: restoring datafile 00001 to +DATAC1/CDB_TOKYO/DATAFILE/system.295.1116051887
		channel ORA_DISK_1: restoring section 1 of 1
		channel ORA_DISK_2: starting datafile backup set restore
		channel ORA_DISK_2: using network backup set from service CDB_OSAKA
		channel ORA_DISK_2: specifying datafile(s) to restore from backup set
		channel ORA_DISK_2: restoring datafile 00002 to +DATAC1/CDB_TOKYO/E928E01AB9D5993DE0532801140ABDF5/DATAFILE/system.296.1116051889
		channel ORA_DISK_2: restoring section 1 of 1
		channel ORA_DISK_3: starting datafile backup set restore
		channel ORA_DISK_3: using network backup set from service CDB_OSAKA
		channel ORA_DISK_3: specifying datafile(s) to restore from backup set
		channel ORA_DISK_3: restoring datafile 00003 to +DATAC1/CDB_TOKYO/DATAFILE/sysaux.298.1116051889
		channel ORA_DISK_3: restoring section 1 of 1
		channel ORA_DISK_4: starting datafile backup set restore
		channel ORA_DISK_4: using network backup set from service CDB_OSAKA
		channel ORA_DISK_4: specifying datafile(s) to restore from backup set
		channel ORA_DISK_4: restoring datafile 00004 to +DATAC1/CDB_TOKYO/E928E01AB9D5993DE0532801140ABDF5/DATAFILE/sysaux.267.1116051891
		channel ORA_DISK_4: restoring section 1 of 1
		channel ORA_DISK_2: restore complete, elapsed time: 00:00:07
		channel ORA_DISK_2: starting datafile backup set restore
		channel ORA_DISK_2: using network backup set from service CDB_OSAKA
		channel ORA_DISK_2: specifying datafile(s) to restore from backup set
		channel ORA_DISK_2: restoring datafile 00005 to +DATAC1/CDB_TOKYO/DATAFILE/undotbs1.278.1116051895
		channel ORA_DISK_2: restoring section 1 of 1
		channel ORA_DISK_2: restore complete, elapsed time: 00:00:04
		channel ORA_DISK_2: starting datafile backup set restore
		channel ORA_DISK_2: using network backup set from service CDB_OSAKA
		channel ORA_DISK_2: specifying datafile(s) to restore from backup set
		channel ORA_DISK_2: restoring datafile 00006 to +DATAC1/CDB_TOKYO/E928E01AB9D5993DE0532801140ABDF5/DATAFILE/undotbs1.265.1116051899
		channel ORA_DISK_2: restoring section 1 of 1
		channel ORA_DISK_4: restore complete, elapsed time: 00:00:09
		channel ORA_DISK_4: starting datafile backup set restore
		channel ORA_DISK_4: using network backup set from service CDB_OSAKA
		channel ORA_DISK_4: specifying datafile(s) to restore from backup set
		channel ORA_DISK_4: restoring datafile 00007 to +DATAC1/CDB_TOKYO/DATAFILE/users.261.1116051901
		channel ORA_DISK_4: restoring section 1 of 1
		channel ORA_DISK_2: restore complete, elapsed time: 00:00:03
		channel ORA_DISK_2: starting datafile backup set restore
		channel ORA_DISK_2: using network backup set from service CDB_OSAKA
		channel ORA_DISK_2: specifying datafile(s) to restore from backup set
		channel ORA_DISK_2: restoring datafile 00008 to +DATAC1/CDB_TOKYO/DATAFILE/undotbs2.277.1116051903
		channel ORA_DISK_2: restoring section 1 of 1
		channel ORA_DISK_4: restore complete, elapsed time: 00:00:04
		channel ORA_DISK_4: starting datafile backup set restore
		channel ORA_DISK_4: using network backup set from service CDB_OSAKA
		channel ORA_DISK_4: specifying datafile(s) to restore from backup set
		channel ORA_DISK_4: restoring datafile 00009 to +DATAC1/CDB_TOKYO/E9290415DB2766B2E0532801140AAE9A/DATAFILE/system.299.1116051905
		channel ORA_DISK_4: restoring section 1 of 1
		channel ORA_DISK_1: restore complete, elapsed time: 00:00:18
		channel ORA_DISK_1: starting datafile backup set restore
		channel ORA_DISK_1: using network backup set from service CDB_OSAKA
		channel ORA_DISK_1: specifying datafile(s) to restore from backup set
		channel ORA_DISK_1: restoring datafile 00010 to +DATAC1/CDB_TOKYO/E9290415DB2766B2E0532801140AAE9A/DATAFILE/sysaux.285.1116051905
		channel ORA_DISK_1: restoring section 1 of 1
		channel ORA_DISK_2: restore complete, elapsed time: 00:00:04
		channel ORA_DISK_2: starting datafile backup set restore
		channel ORA_DISK_2: using network backup set from service CDB_OSAKA
		channel ORA_DISK_2: specifying datafile(s) to restore from backup set
		channel ORA_DISK_2: restoring datafile 00011 to +DATAC1/CDB_TOKYO/E9290415DB2766B2E0532801140AAE9A/DATAFILE/undotbs1.270.1116051907
		channel ORA_DISK_2: restoring section 1 of 1
		channel ORA_DISK_2: restore complete, elapsed time: 00:00:04
		channel ORA_DISK_2: starting datafile backup set restore
		channel ORA_DISK_2: using network backup set from service CDB_OSAKA
		channel ORA_DISK_2: specifying datafile(s) to restore from backup set
		channel ORA_DISK_2: restoring datafile 00012 to +DATAC1/CDB_TOKYO/E9290415DB2766B2E0532801140AAE9A/DATAFILE/undo_2.283.1116051911
		channel ORA_DISK_2: restoring section 1 of 1
		channel ORA_DISK_3: restore complete, elapsed time: 00:00:22
		channel ORA_DISK_3: starting datafile backup set restore
		channel ORA_DISK_3: using network backup set from service CDB_OSAKA
		channel ORA_DISK_3: specifying datafile(s) to restore from backup set
		channel ORA_DISK_3: restoring datafile 00013 to +DATAC1/CDB_TOKYO/E9290415DB2766B2E0532801140AAE9A/DATAFILE/users.264.1116051911
		channel ORA_DISK_3: restoring section 1 of 1
		channel ORA_DISK_2: restore complete, elapsed time: 00:00:02
		channel ORA_DISK_4: restore complete, elapsed time: 00:00:08
		channel ORA_DISK_1: restore complete, elapsed time: 00:00:10
		channel ORA_DISK_3: restore complete, elapsed time: 00:00:05
		Finished restore at 22-SEP-22
```

### 8) スタンバイ・データベース停止
```:Standby
RMAN> shutdown immediate

	database dismounted
	Oracle instance shut down
```



## ● スタンバイ・データベース再起動

```:Standby
[oracle@exa-tokyo-node1 ~]$ srvctl start database -d CDB_TOKYO -o mount
[oracle@exa-tokyo-node1 ~]$ srvctl status database -d CDB_TOKYO
	Instance CDB_TOKYO1 is running on node exa-tokyo-node1
	Instance CDB_TOKYO2 is running on node exa-tokyo-zuuyk2
```

## ● Standbyの すべてのオンラインおよびスタンバイREDOログを消去
すべてのオンラインおよびスタンバイREDOログを消去します。

### 1) ログを消去する前にDB_CREATE_ONLINE_LOG_DEST確認

• DB_CREATE_ONLINE_LOG_DEST_1= <DATA disk group> を必要に応じて修正
• DB_CREATE_ONLINE_LOG_DEST_n is not set other than n=1.


```:Standby
SQL> show parameter DB_CREATE_ONLINE_LOG_DEST

	NAME				     TYPE	 VALUE
	------------------------------------ ----------- ------------------------------
	db_create_online_log_dest_1	     string	 +DATAC1
	db_create_online_log_dest_2	     string
	db_create_online_log_dest_3	     string
	db_create_online_log_dest_4	     string
	db_create_online_log_dest_5	     string
```



### 2) すべてのlogfileを消去
logfileを消去するための clearlogs.sql ファイルを作成

```:Standby
[oracle@exa-tokyo-node1 ~]$ sqlplus / as sysdba

	SQL*Plus: Release 19.0.0.0.0 - Production on Thu Sep 22 06:48:58 2022
	Version 19.15.0.0.0

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


	Connected to:
	Oracle Database 19c EE Extreme Perf Release 19.0.0.0.0 - Production
	Version 19.15.0.0.0

SQL> select member from v$logfile;

	MEMBER
	--------------------------------------------------------------------------------
	+DATAC1/CDB_TOKYO/ONLINELOG/group_4.290.1116052363
	+DATAC1/CDB_TOKYO/ONLINELOG/group_3.289.1116052361
	+DATAC1/CDB_TOKYO/ONLINELOG/group_2.274.1116052361
	+DATAC1/CDB_TOKYO/ONLINELOG/group_1.279.1116052359
	+DATAC1/CDB_TOKYO/ONLINELOG/group_5.300.1116052365
	+DATAC1/CDB_TOKYO/ONLINELOG/group_6.292.1116052367
	+DATAC1/CDB_TOKYO/ONLINELOG/group_7.301.1116052369
	+DATAC1/CDB_TOKYO/ONLINELOG/group_8.297.1116052369

	8 rows selected.

SQL> set pagesize 0 feedback off linesize 120 trimspool on
SQL> spool /tmp/clearlogs.sql
SQL> select distinct 'alter database clear logfile group '||group#||';' from v$logfile; 
SQL> spool off
SQL> host vi /tmp/clearlogs.sql
 　<--不要な行を削除

SQL> host cat /tmp/clearlogs.sql
	alter database clear logfile group 1;
	alter database clear logfile group 2;
	alter database clear logfile group 3;
	alter database clear logfile group 4;
	alter database clear logfile group 5;
	alter database clear logfile group 6;
	alter database clear logfile group 7;
	alter database clear logfile group 8;

SQL> @/tmp/clearlogs.sql
```



### 3) Online Redo確認

```
SQL> col MEMBER format a60
SQL> SELECT
		b.THREAD#
		,b.MEMBERS
		,a.GROUP#
		,b.SEQUENCE#
		,a.MEMBER
		,b.bytes/1024/1024 as "Bytes(MB)"
		,a.TYPE
		,b.STATUS
		,b.ARCHIVED
	FROM
		v$logfile a
		,v$log b
	WHERE
		a.GROUP#=b.GROUP#
	ORDER BY GROUP#;


	THREAD#    MEMBERS	  GROUP#  SEQUENCE# MEMBER							  Bytes(MB) TYPE    STATUS	     ARC
	---------- ---------- ---------- ---------- ------------------------------------------------------------ ---------- ------- ---------------- ---
		1	    1	       1	  1 +DATAC1/CDB_OSAKA/ONLINELOG/group_1.277.1115956313		       4000 ONLINE  INACTIVE	     YES
		1	    1	       2	  2 +DATAC1/CDB_OSAKA/ONLINELOG/group_2.273.1115956313		       4000 ONLINE  INACTIVE	     YES
		1	    1	       3	  3 +DATAC1/CDB_OSAKA/ONLINELOG/group_3.274.1115956313		       4000 ONLINE  INACTIVE	     YES
		1	    1	       4	  4 +DATAC1/CDB_OSAKA/ONLINELOG/group_4.271.1115956313		       4000 ONLINE  CURRENT	     NO
		2	    1	       5	  1 +DATAC1/CDB_OSAKA/ONLINELOG/group_5.283.1115956841		       4000 ONLINE  INACTIVE	     YES
		2	    1	       6	  2 +DATAC1/CDB_OSAKA/ONLINELOG/group_6.264.1115956843		       4000 ONLINE  INACTIVE	     YES
		2	    1	       7	  3 +DATAC1/CDB_OSAKA/ONLINELOG/group_7.279.1115956845		       4000 ONLINE  CURRENT	     NO
		2	    1	       8	  0 +DATAC1/CDB_OSAKA/ONLINELOG/group_8.281.1115956847		       4000 ONLINE  UNUSED	     YES

	8 rows selected.
```


# ■ Standby Redo 作成
Standby Redo 作成する時、以下のように数とサイズを設定
	a) the size of SRLs must be the same as the size of ORLs (Online Redo Logs)
	b) (number of SRLs ) = (number of ORLs + 1) for each primary thread.


## ● スタンバイ・データベース に Standby Redo 作成
### 1) Standby Redo 作成

```:Standby
-- thread 1
alter database add standby logfile thread 1 group 111 '+DATAC1/CDB_TOKYO/ONLINELOG/standby_group_111' SIZE 4000M;
alter database add standby logfile thread 1 group 112 '+DATAC1/CDB_TOKYO/ONLINELOG/standby_group_112' SIZE 4000M;
alter database add standby logfile thread 1 group 113 '+DATAC1/CDB_TOKYO/ONLINELOG/standby_group_113' SIZE 4000M;
alter database add standby logfile thread 1 group 114 '+DATAC1/CDB_TOKYO/ONLINELOG/standby_group_114' SIZE 4000M;
alter database add standby logfile thread 1 group 115 '+DATAC1/CDB_TOKYO/ONLINELOG/standby_group_115' SIZE 4000M;

-- thread 2
alter database add standby logfile thread 2 group 121 '+DATAC1/CDB_TOKYO/ONLINELOG/standby_group_121' SIZE 4000M;
alter database add standby logfile thread 2 group 122 '+DATAC1/CDB_TOKYO/ONLINELOG/standby_group_122' SIZE 4000M;
alter database add standby logfile thread 2 group 123 '+DATAC1/CDB_TOKYO/ONLINELOG/standby_group_123' SIZE 4000M;
alter database add standby logfile thread 2 group 124 '+DATAC1/CDB_TOKYO/ONLINELOG/standby_group_124' SIZE 4000M;
alter database add standby logfile thread 2 group 125 '+DATAC1/CDB_TOKYO/ONLINELOG/standby_group_125' SIZE 4000M;
```


### 2) Stadby Redo 作成確認

```
SQL> col MEMBER format a60
SQL> SELECT
	b.THREAD#
	,a.GROUP#
	,a.MEMBER
	,b.bytes/1024/1024 as "Bytes(MB)"
	,a.TYPE
	,b.STATUS
FROM
	v$logfile a
	,V$STANDBY_LOG  b
WHERE
	a.GROUP#=b.GROUP#
union
SELECT
		b.THREAD#
		,a.GROUP#
		,a.MEMBER
		,b.bytes/1024/1024 as "Bytes(MB)"
		,a.TYPE
		,b.STATUS
	FROM
		v$logfile a
		,v$log b
	WHERE
		a.GROUP#=b.GROUP#
	ORDER BY GROUP#;

	THREAD#     GROUP# MEMBER							    Bytes(MB) TYPE    STATUS
	---------- ---------- ------------------------------------------------------------ ---------- ------- ----------------
		1	    1 +DATAC1/CDB_TOKYO/ONLINELOG/group_1.279.1116052359		 4000 ONLINE  UNUSED
		1	    2 +DATAC1/CDB_TOKYO/ONLINELOG/group_2.274.1116052361		 4000 ONLINE  UNUSED
		1	    3 +DATAC1/CDB_TOKYO/ONLINELOG/group_3.289.1116052361		 4000 ONLINE  UNUSED
		1	    4 +DATAC1/CDB_TOKYO/ONLINELOG/group_4.290.1116052363		 4000 ONLINE  UNUSED
		2	    5 +DATAC1/CDB_TOKYO/ONLINELOG/group_5.300.1116052365		 4000 ONLINE  UNUSED
		2	    6 +DATAC1/CDB_TOKYO/ONLINELOG/group_6.292.1116052367		 4000 ONLINE  UNUSED
		2	    7 +DATAC1/CDB_TOKYO/ONLINELOG/group_7.301.1116052369		 4000 ONLINE  UNUSED
		2	    8 +DATAC1/CDB_TOKYO/ONLINELOG/group_8.297.1116052369		 4000 ONLINE  UNUSED
		1	  111 +DATAC1/CDB_TOKYO/ONLINELOG/standby_group_111			 4000 STANDBY UNASSIGNED
		1	  112 +DATAC1/CDB_TOKYO/ONLINELOG/standby_group_112			 4000 STANDBY ACTIVE
		1	  113 +DATAC1/CDB_TOKYO/ONLINELOG/standby_group_113			 4000 STANDBY UNASSIGNED
		1	  114 +DATAC1/CDB_TOKYO/ONLINELOG/standby_group_114			 4000 STANDBY UNASSIGNED
		1	  115 +DATAC1/CDB_TOKYO/ONLINELOG/standby_group_115			 4000 STANDBY UNASSIGNED
		2	  121 +DATAC1/CDB_TOKYO/ONLINELOG/standby_group_121			 4000 STANDBY UNASSIGNED
		2	  122 +DATAC1/CDB_TOKYO/ONLINELOG/standby_group_122			 4000 STANDBY ACTIVE
		2	  123 +DATAC1/CDB_TOKYO/ONLINELOG/standby_group_123			 4000 STANDBY UNASSIGNED
		2	  124 +DATAC1/CDB_TOKYO/ONLINELOG/standby_group_124			 4000 STANDBY UNASSIGNED
		2	  125 +DATAC1/CDB_TOKYO/ONLINELOG/standby_group_125			 4000 STANDBY UNASSIGNED

	18 rows selected.
```


## ● プライマリ・データベース に Stadby Redo 作成
### 1) Stadby Redo 作成

```:Primary
-- thread 1
alter database add standby logfile thread 1 group 111 '+DATAC1/CDB_OSAKA/ONLINELOG/standby_group_111' SIZE 4000M;
alter database add standby logfile thread 1 group 112 '+DATAC1/CDB_OSAKA/ONLINELOG/standby_group_112' SIZE 4000M;
alter database add standby logfile thread 1 group 113 '+DATAC1/CDB_OSAKA/ONLINELOG/standby_group_113' SIZE 4000M;
alter database add standby logfile thread 1 group 114 '+DATAC1/CDB_OSAKA/ONLINELOG/standby_group_114' SIZE 4000M;
alter database add standby logfile thread 1 group 115 '+DATAC1/CDB_OSAKA/ONLINELOG/standby_group_115' SIZE 4000M;

-- thread 2
alter database add standby logfile thread 2 group 121 '+DATAC1/CDB_OSAKA/ONLINELOG/standby_group_121' SIZE 4000M;
alter database add standby logfile thread 2 group 122 '+DATAC1/CDB_OSAKA/ONLINELOG/standby_group_122' SIZE 4000M;
alter database add standby logfile thread 2 group 123 '+DATAC1/CDB_OSAKA/ONLINELOG/standby_group_123' SIZE 4000M;
alter database add standby logfile thread 2 group 124 '+DATAC1/CDB_OSAKA/ONLINELOG/standby_group_124' SIZE 4000M;
alter database add standby logfile thread 2 group 125 '+DATAC1/CDB_OSAKA/ONLINELOG/standby_group_125' SIZE 4000M;
```

### 2) Stadby Redo 作成確認

```:Primary
SQL> col MEMBER format a60
SQL> SELECT
	b.THREAD#
	,a.GROUP#
	,a.MEMBER
	,b.bytes/1024/1024 as "Bytes(MB)"
	,a.TYPE
	,b.STATUS
FROM
	v$logfile a
	,V$STANDBY_LOG  b
WHERE
	a.GROUP#=b.GROUP#
union
SELECT
		b.THREAD#
		,a.GROUP#
		,a.MEMBER
		,b.bytes/1024/1024 as "Bytes(MB)"
		,a.TYPE
		,b.STATUS
	FROM
		v$logfile a
		,v$log b
	WHERE
		a.GROUP#=b.GROUP#
	ORDER BY GROUP#;

   THREAD#     GROUP# MEMBER							    Bytes(MB) TYPE    STATUS
---------- ---------- ------------------------------------------------------------ ---------- ------- ----------------
	 1	    1 +DATAC1/CDB_OSAKA/ONLINELOG/group_1.277.1115956313		 4000 ONLINE  INACTIVE
	 1	    2 +DATAC1/CDB_OSAKA/ONLINELOG/group_2.273.1115956313		 4000 ONLINE  INACTIVE
	 1	    3 +DATAC1/CDB_OSAKA/ONLINELOG/group_3.274.1115956313		 4000 ONLINE  CURRENT
	 1	    4 +DATAC1/CDB_OSAKA/ONLINELOG/group_4.271.1115956313		 4000 ONLINE  INACTIVE
	 2	    5 +DATAC1/CDB_OSAKA/ONLINELOG/group_5.283.1115956841		 4000 ONLINE  CURRENT
	 2	    6 +DATAC1/CDB_OSAKA/ONLINELOG/group_6.264.1115956843		 4000 ONLINE  INACTIVE
	 2	    7 +DATAC1/CDB_OSAKA/ONLINELOG/group_7.279.1115956845		 4000 ONLINE  INACTIVE
	 2	    8 +DATAC1/CDB_OSAKA/ONLINELOG/group_8.281.1115956847		 4000 ONLINE  INACTIVE
	 1	  111 +DATAC1/CDB_OSAKA/ONLINELOG/standby_group_111			 4000 STANDBY UNASSIGNED
	 1	  112 +DATAC1/CDB_OSAKA/ONLINELOG/standby_group_112			 4000 STANDBY UNASSIGNED
	 1	  113 +DATAC1/CDB_OSAKA/ONLINELOG/standby_group_113			 4000 STANDBY UNASSIGNED
	 1	  114 +DATAC1/CDB_OSAKA/ONLINELOG/standby_group_114			 4000 STANDBY UNASSIGNED
	 1	  115 +DATAC1/CDB_OSAKA/ONLINELOG/standby_group_115			 4000 STANDBY UNASSIGNED
	 2	  121 +DATAC1/CDB_OSAKA/ONLINELOG/standby_group_121			 4000 STANDBY UNASSIGNED
	 2	  122 +DATAC1/CDB_OSAKA/ONLINELOG/standby_group_122			 4000 STANDBY UNASSIGNED
	 2	  123 +DATAC1/CDB_OSAKA/ONLINELOG/standby_group_123			 4000 STANDBY UNASSIGNED
	 2	  124 +DATAC1/CDB_OSAKA/ONLINELOG/standby_group_124			 4000 STANDBY UNASSIGNED
	 2	  125 +DATAC1/CDB_OSAKA/ONLINELOG/standby_group_125			 4000 STANDBY UNASSIGNED

    18 rows selected.
```



# ■ 手順8:Data Guard Broker を構成
## ● dg_broker_config_fileパラメータ有効
プライマリ・データベースとスタンバイ・データベースで、dg_broker_config_file パラメータを有効にします。

```:Primary
SQL> create pfile='/tmp/initCDB_OSAKA.ora_nonDG' from spfile;

	File created.

SQL> alter system set dg_broker_config_file1='+DATAC1/CDB_OSAKA/dr1.dat';

    System altered.

SQL> alter system set dg_broker_config_file2='+RECOC1/CDB_OSAKA/dr2.dat';

    System altered.
```


```:Standby
SQL> create pfile='/tmp/initCDB_TOKYO.ora_nonDG' from spfile;

	File created.

SQL> alter system set dg_broker_config_file1='+DATAC1/CDB_TOKYO/dr1.dat';

	System altered.

SQL> alter system set dg_broker_config_file2='+RECOC1/CDB_TOKYO/dr2.dat';

	System altered.
```






## ● Data Guard Brokerプロセス開始
プライマリ・データベースとスタンバイ・データベースで Data Guard Broker プロセスを開始します。


```:Standby
SQL> alter system set dg_broker_start=true;

	System altered.

SQL> show parameter dg_broker_start

	NAME				     TYPE	 VALUE
	------------------------------------ ----------- ------------------------------
	dg_broker_start 		     boolean	 TRUE

SQL> select INST_ID,pname from gv$process where pname like 'DMON%';

    INST_ID PNAME
    ---------- -----
        2 DMON
        1 DMON

[grid@exa-tokyo-zuuyk2 ~]$ asmcmd ls +DATAC1/CDB_TOKYO/dr1.dat
	dr1.dat

[grid@exa-tokyo-zuuyk2 ~]$ asmcmd ls +RECOC1/CDB_TOKYO/dr2.dat
	dr2.dat
```


```:Primary
SQL> alter system set dg_broker_start=true;

	System altered.

SQL> show parameter dg_broker_start

	NAME				     TYPE	 VALUE
	------------------------------------ ----------- ------------------------------
	dg_broker_start 		     boolean	 TRUE

SQL>  select INST_ID,pname from gv$process where pname like 'DMON%';

	INST_ID PNAME
	---------- -----
		1 DMON
		2 DMON

[grid@exa-osaka-node1 ~]$ asmcmd ls +DATAC1/CDB_OSAKA/dr1.dat
	dr1.dat

[grid@exa-osaka-node1 ~]$ asmcmd ls +RECOC1/CDB_OSAKA/dr2.dat
	dr2.dat
```

## ● Data Guard Brokerへデータベースを登録
プライマリ・サイトで Data Guard command-line interface (DGMGRL) を使用してデータベースを登録します。
```:Command
$ dgmgrl sys/<sys password>@<net service name for primary database>
DGMGRL> CREATE CONFIGURATION <configuration_name> AS PRIMARY DATABASE IS <プライマリ・データベース_unique_name> CONNECT IDENTIFIER IS <Net Service name for primary database>;
DGMGRL> ADD DATABASE <standby db_unique_name> AS CONNECT IDENTIFIER IS <Net Service name for standby database> MAINTAINED AS PHYSICAL;
DGMGRL> enable configuration;
```


```:Primary
[oracle@exa-osaka-node1 ~]$ dgmgrl sys/<Password>@CDB_OSAKA
	DGMGRL for Linux: Release 19.0.0.0.0 - Production on Thu Sep 22 11:20:50 2022
	Version 19.15.0.0.0

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

	Welcome to DGMGRL, type "help" for information.
	Connected to "CDB_OSAKA"
	Connected as SYSDBA.

DGMGRL> CREATE CONFIGURATION DG_CONFIG AS PRIMARY DATABASE IS "CDB_OSAKA" CONNECT IDENTIFIER IS CDB_OSAKA;
	Configuration "dg_config" created with primary database "CDB_OSAKA"

DGMGRL> ADD DATABASE "CDB_TOKYO" AS CONNECT IDENTIFIER IS CDB_TOKYO MAINTAINED AS PHYSICAL;
	Database "CDB_TOKYO" added

DGMGRL> enable configuration;
	Enabled.	
```



## ● スタンバイ・データベース で フラッシュバック・データベースを有効化

### 1) Data Guard command-line interface (DGMGRL)接続
```:Standby
[oracle@exa-tokyo-node1 ~]$ dgmgrl sys/<Password>@CDB_TOKYO
	DGMGRL for Linux: Release 19.0.0.0.0 - Production on Thu Sep 22 11:30:32 2022
	Version 19.15.0.0.0

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

	Welcome to DGMGRL, type "help" for information.
	Connected to "CDB_TOKYO"
	Connected as SYSDBA.
```

### 2) Redo Apply 停止
```:Standby
DGMGRL> edit database CDB_TOKYO set state=apply-off;
	Succeeded.
```

### 3) Flashback Database有効
SQL＊PLUS接続して Flashback Databaseを有効にします。

```:Standby
SQL> sqlplus / as sysdbaexit
SQL> alter database flashback on;

	Database altered.
```

### 4）Redo Apply 停止
```:Standby
DGMGRL> edit database CDB_TOKYO set state=apply-on;
	Succeeded.
```


# ■ 手順9:(11gのみ)静的リスナーを削除
19cのため無し



# ■ 手順10:RMANパラメータを設定
元のRMAN構成を、前に作成した/tmp/rman_setting.log の内容で置き換えます。
これにより、もっとも重要な点として、バックアッ プ構成が、スナップショットcontrolfileの場所に加えて、暗号化、圧縮、保存で置換されます。
これらの値は、スタンバイの controlfileがプライマリ・データベースからコピーされたときに失われています。

```:Primary
[oracle@exa-osaka-node1 ~]$ cat /tmp/rman_setting.log

		Recovery Manager: Release 19.0.0.0.0 - Production on Sun Sep 18 15:34:44 2022
		Version 19.15.0.0.0

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

		connected to target database: CDB (DBID=2232167610)

		RMAN>
		using target database control file instead of recovery catalog
		RMAN configuration parameters for database with db_unique_name CDB_OSAKA are:
		CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
		CONFIGURE BACKUP OPTIMIZATION ON;
		CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
		CONFIGURE CONTROLFILE AUTOBACKUP ON;
		CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
		CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
		CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
		CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
		CONFIGURE MAXSETSIZE TO UNLIMITED; # default
		CONFIGURE ENCRYPTION FOR DATABASE OFF;
		CONFIGURE ENCRYPTION ALGORITHM 'AES256';
		CONFIGURE COMPRESSION ALGORITHM 'LOW' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE;
		CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
		CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
		CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+DATAC1/CDB_OSAKA/controlfile/snapcf_CDB.f';


[oracle@exa-osaka-node1 ~]$ rman target /

	Recovery Manager: Release 19.0.0.0.0 - Production on Mon Sep 19 05:31:33 2022
	Version 19.15.0.0.0

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

	connected to target database: CDB (DBID=2232114498, not open)

RMAN> show all;

	using target database control file instead of recovery catalog
	RMAN configuration parameters for database with db_unique_name CDB_OSAKA are:
	CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
	CONFIGURE BACKUP OPTIMIZATION ON;
	CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
	CONFIGURE CONTROLFILE AUTOBACKUP ON;
	CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
	CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;
	CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
	CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
	CONFIGURE MAXSETSIZE TO UNLIMITED; # default
	CONFIGURE ENCRYPTION FOR DATABASE OFF;
	CONFIGURE ENCRYPTION ALGORITHM 'AES256';
	CONFIGURE COMPRESSION ALGORITHM 'LOW' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE;
	CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
	CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
	CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u02/app/oracle/product/19.0.0.0/dbhome_1/dbs/snapcf_CDB_OSAKA1.f'; # default
```


# ■ SPFILE確認
Data Guard 構成された SPFILE を確認

```:Primary
SQL> create pfile='/tmp/initCDB_OSAKA_DG_AFTER.ora' from spfile;
SQL> host cat /tmp/initCDB_OSAKA_DG_AFTER.ora
```

```:Standby
SQL> create pfile='/tmp/initCDB_TOKYO_DG_AFTER.ora' from spfile;
SQL> host cat /tmp/initCDB_TOKYO_DG_AFTER.ora
```



# ■ 構成確認
## ● 現在の保護モード確認

```
DGMGRL> show configuration verbose


	Configuration - dg_config

	Protection Mode: MaxPerformance
	Members:
	CDB_OSAKA - Primary database
		CDB_TOKYO - Physical standby database

	Properties:
		FastStartFailoverThreshold      = '30'
		OperationTimeout                = '30'
		TraceLevel                      = 'USER'
		FastStartFailoverLagLimit       = '30'
		CommunicationTimeout            = '180'
		ObserverReconnect               = '0'
		FastStartFailoverAutoReinstate  = 'TRUE'
		FastStartFailoverPmyShutdown    = 'TRUE'
		BystandersFollowRoleChange      = 'ALL'
		ObserverOverride                = 'FALSE'
		ExternalDestination1            = ''
		ExternalDestination2            = ''
		PrimaryLostWriteAction          = 'CONTINUE'
		ConfigurationWideServiceName    = 'CDB_CFG'

	Fast-Start Failover:  Disabled

	Configuration Status:
	SUCCESS

DGMGRL> show configuration

	Configuration - dg_config

	Protection Mode: MaxPerformance
	Members:
	CDB_OSAKA - Primary database
		CDB_TOKYO - Physical standby database

	Fast-Start Failover:  Disabled

	Configuration Status:
	SUCCESS   (status updated 11 seconds ago)
```


## ● DB確認

```
DGMGRL> show database CDB_TOKYO

Database - CDB_TOKYO

  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: 5.00 KByte/s
  Real Time Query:    ON
  Instance(s):
    CDB_TOKYO1 (apply instance)
    CDB_TOKYO2

Database Status:
SUCCESS


DGMGRL> show database verbose  CDB_TOKYO

	Database - CDB_TOKYO

	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: 5.00 KByte/s
	Active Apply Rate:  1.07 MByte/s
	Maximum Apply Rate: 1.82 MByte/s
	Real Time Query:    ON
	Instance(s):
		CDB_TOKYO1 (apply instance)
		CDB_TOKYO2

	Properties:
		DGConnectIdentifier             = 'cdb_tokyo'
		ObserverConnectIdentifier       = ''
		FastStartFailoverTarget         = ''
		PreferredObserverHosts          = ''
		LogShipping                     = 'ON'
		RedoRoutes                      = ''
		LogXptMode                      = 'ASYNC'
		DelayMins                       = '0'
		Binding                         = 'optional'
		MaxFailure                      = '0'
		ReopenSecs                      = '300'
		NetTimeout                      = '30'
		RedoCompression                 = 'DISABLE'
		PreferredApplyInstance          = ''
		ApplyInstanceTimeout            = '0'
		ApplyLagThreshold               = '30'
		TransportLagThreshold           = '30'
		TransportDisconnectedThreshold  = '30'
		ApplyParallel                   = 'AUTO'
		ApplyInstances                  = '0'
		StandbyFileManagement           = ''
		ArchiveLagTarget                = '0'
		LogArchiveMaxProcesses          = '0'
		LogArchiveMinSucceedDest        = '0'
		DataGuardSyncLatency            = '0'
		LogArchiveTrace                 = '0'
		LogArchiveFormat                = ''
		DbFileNameConvert               = ''
		LogFileNameConvert              = ''
		ArchiveLocation                 = ''
		AlternateLocation               = ''
		StandbyArchiveLocation          = ''
		StandbyAlternateLocation        = ''
		InconsistentProperties          = '(monitor)'
		InconsistentLogXptProps         = '(monitor)'
		LogXptStatus                    = '(monitor)'
		SendQEntries                    = '(monitor)'
		RecvQEntries                    = '(monitor)'
		HostName(*)
		StaticConnectIdentifier(*)
		TopWaitEvents(*)
		SidName(*)
		(*) - Please check specific instance for the property value

	Log file locations(*):
		(*) - Check specific instance for log file locations.

	Database Status:
	SUCCESS

DGMGRL> show database CDB_OSAKA

	Database - CDB_OSAKA

	Role:               PRIMARY
	Intended State:     TRANSPORT-ON
	Instance(s):
		CDB_OSAKA1
		CDB_OSAKA2

	Database Status:
	SUCCESS

DGMGRL> show database verbose  CDB_OSAKA

	Database - CDB_OSAKA

	Role:               PRIMARY
	Intended State:     TRANSPORT-ON
	Instance(s):
		CDB_OSAKA1
		CDB_OSAKA2

	Properties:
		DGConnectIdentifier             = 'cdb_osaka'
		ObserverConnectIdentifier       = ''
		FastStartFailoverTarget         = ''
		PreferredObserverHosts          = ''
		LogShipping                     = 'ON'
		RedoRoutes                      = ''
		LogXptMode                      = 'ASYNC'
		DelayMins                       = '0'
		Binding                         = 'optional'
		MaxFailure                      = '0'
		ReopenSecs                      = '300'
		NetTimeout                      = '30'
		RedoCompression                 = 'DISABLE'
		PreferredApplyInstance          = ''
		ApplyInstanceTimeout            = '0'
		ApplyLagThreshold               = '30'
		TransportLagThreshold           = '30'
		TransportDisconnectedThreshold  = '30'
		ApplyParallel                   = 'AUTO'
		ApplyInstances                  = '0'
		StandbyFileManagement           = ''
		ArchiveLagTarget                = '0'
		LogArchiveMaxProcesses          = '0'
		LogArchiveMinSucceedDest        = '0'
		DataGuardSyncLatency            = '0'
		LogArchiveTrace                 = '0'
		LogArchiveFormat                = ''
		DbFileNameConvert               = ''
		LogFileNameConvert              = ''
		ArchiveLocation                 = ''
		AlternateLocation               = ''
		StandbyArchiveLocation          = ''
		StandbyAlternateLocation        = ''
		InconsistentProperties          = '(monitor)'
		InconsistentLogXptProps         = '(monitor)'
		LogXptStatus                    = '(monitor)'
		SendQEntries                    = '(monitor)'
		RecvQEntries                    = '(monitor)'
		HostName(*)
		StaticConnectIdentifier(*)
		TopWaitEvents(*)
		SidName(*)
		(*) - Please check specific instance for the property value

	Log file locations(*):
		(*) - Check specific instance for log file locations.

	Database Status:
	SUCCESS
```



# ■ フィジカル・スタンバイ・データベースへの REDO転送/適用確認
スタンバイ・データベースで、V$DATAGUARD_PROCESSビューを問い合せて、REDOがプライマリ・データベースから送信され、スタンバイ・データベースに適用されていることを確認します。

### 1) スタンバイへ適用されているarchive redo SEQUENCE#を確認

```:Primary DB
SYS@CDB_OSAKA SQL> SELECT ROLE, THREAD#, SEQUENCE#, ACTION FROM V$DATAGUARD_PROCESS;

  ROLE			    THREAD#  SEQUENCE# ACTION
  ------------------------ ---------- ---------- ------------
  log writer			  0	     0 IDLE
  redo transport monitor		  0	     0 IDLE
  broker instance slave		  0	     0 IDLE
  broker monitor			  0	     0 IDLE
  gap manager			  1	    95 IDLE
  redo transport timer		  0	     0 IDLE
  archive redo			  0	     0 IDLE
  archive redo			  0	     0 IDLE
  archive local			  0	     0 IDLE
  archive redo			  0	     0 IDLE
  broker net slave		  0	     0 IDLE
  broker net slave		  0	     0 IDLE
  broker worker			  0	     0 IDLE
  async ORL multi 		  1	    95 WRITING
  heartbeat redo informer 	  0	     0 IDLE
  broker net slave		  0	     0 IDLE
  async ORL single		  1	    95 WRITING
  async ORL single		  1	    95 WRITING
  controlfile update		  0	     0 IDLE

  19 rows selected.
```

### 2) Log Switch 実行
```:Primary DB
SYS@CDB_OSAKA SQL> alter system archive log current;

  System altered.

SYS@CDB_OSAKA SQL> /

  System altered.

SYS@CDB_OSAKA SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

 SEQUENCE# FIRST_TIM NEXT_TIME APPLIED
---------- --------- --------- ---------
	 1 08-OCT-22 08-OCT-22 YES
	 1 08-OCT-22 08-OCT-22 YES
	 1 08-OCT-22 08-OCT-22 YES

   ・・・

	94 01-DEC-22 01-DEC-22 YES
	95 01-DEC-22 01-DEC-22 NO
	95 01-DEC-22 01-DEC-22 YES
	95 01-DEC-22 01-DEC-22 YES
	95 01-DEC-22 01-DEC-22 YES
	96 01-DEC-22 01-DEC-22 NO
	96 01-DEC-22 01-DEC-22 NO
	96 01-DEC-22 01-DEC-22 NO
	96 01-DEC-22 01-DEC-22 NO

  495 rows selected.
```

### 3) V$DATAGUARD_PROCESSで REDO SEQUENCE# 確認
スタンバイへ適用されているarchive redo SEQUENCE#を確認

```:Standby DB
SYS@CDB_TOKYO SQL> SELECT ROLE, THREAD#, SEQUENCE#, ACTION FROM V$DATAGUARD_PROCESS;

  ROLE			    THREAD#  SEQUENCE# ACTION
  ------------------------ ---------- ---------- ------------
  log writer			  0	     0 IDLE
  redo transport monitor		  0	     0 IDLE
  broker instance slave		  0	     0 IDLE
  broker monitor			  0	     0 IDLE
  gap manager			  1	    97 IDLE
  redo transport timer		  0	     0 IDLE
  archive redo			  0	     0 IDLE
  archive redo			  0	     0 IDLE
  archive local			  0	     0 IDLE
  archive redo			  0	     0 IDLE
  broker net slave		  0	     0 IDLE
  broker net slave		  0	     0 IDLE
  broker worker			  0	     0 IDLE
  async ORL multi 		  1	    97 WRITING
  heartbeat redo informer 	  0	     0 IDLE
  broker net slave		  0	     0 IDLE
  async ORL single		  1	    97 WRITING
  async ORL single		  1	    97 WRITING
  controlfile update		  0	     0 IDLE
  archive redo			  1	    95 CONNECTED

  20 rows selected.
```

### 4) V$ARCHIVED_LOGで REDO SEQUENCE# 確認
スタンバイへ適用されている ARCHIVE REDO SEQUENCE# を V$ARCHIVED_LOGで確認
APPLIED列が IN-MEMORYの場合、時間経過するとデータファイルへ書き込み完了して YESへ変化します
```:Standby DB
SYS@CDB_TOKYO SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

  SEQUENCE# FIRST_TIM NEXT_TIME APPLIED
  ---------- --------- --------- ---------
	 1 08-OCT-22 08-OCT-22 YES
	 1 08-OCT-22 08-OCT-22 YES
	 1 14-OCT-22 14-OCT-22 YES

  ・・・

	93 01-DEC-22 01-DEC-22 YES
	94 01-DEC-22 01-DEC-22 YES
	95 01-DEC-22 01-DEC-22 IN-MEMORY
	96 01-DEC-22 01-DEC-22 IN-MEMORY

  372 rows selected.
```

### 5) Alert Log確認
Log Switch 実行時の Alert Log確認

```:Primary DB 
[oracle@db-osaka1 ~]$ tail -f $ORACLE_BASE/diag/rdbms/${ORACLE_UNQNAME,,}/$ORACLE_SID/trace/alert_$ORACLE_SID.log
  ALTER SYSTEM ARCHIVE LOG
  2022-12-01T09:20:44.501405+00:00
  Thread 1 advanced to log sequence 96 (LGWR switch),  current SCN: 29687567
    Current log# 11 seq# 96 mem# 0: +RECO/CDB_TOKYO/ONLINELOG/group_11.300.1117516527
  2022-12-01T09:20:44.568404+00:00
  NET  (PID:63070): Archived Log entry 534 added for T-1.S-95 ID 0x85477880 LAD:1
  2022-12-01T09:20:49.987456+00:00
  ALTER SYSTEM ARCHIVE LOG
  2022-12-01T09:20:51.933879+00:00
  Thread 1 advanced to log sequence 97 (LGWR switch),  current SCN: 29687623
    Current log# 1 seq# 97 mem# 0: +RECO/CDB_TOKYO/ONLINELOG/group_1.258.1117284581
  2022-12-01T09:20:51.966838+00:00
  ARC1 (PID:19474): Archived Log entry 542 added for T-1.S-96 ID 0x85477880 LAD:1
```


```:Standby DB
[oracle@db-tokyo1 ~]$ tail -f $ORACLE_BASE/diag/rdbms/${ORACLE_UNQNAME,,}/$ORACLE_SID/trace/alert_$ORACLE_SID.log
    2022-12-01T09:20:52.098877+00:00
    rfs (PID:68215): Selected LNO:111 for T-1.S-97 dbid 2233888099 branch 1118038704
    2022-12-01T09:20:52.108674+00:00
    ARC2 (PID:68108): Archived Log entry 379 added for T-1.S-96 ID 0x85477880 LAD:1
    2022-12-01T09:20:53.117561+00:00
    rfs (PID:68217): Selected LNO:121 for T-2.S-92 dbid 2233888099 branch 1118038704
    2022-12-01T09:20:53.124219+00:00
    ARC0 (PID:68098): Archived Log entry 380 added for T-2.S-91 ID 0x85477880 LAD:1
    2022-12-01T09:20:53.163477+00:00
    PR00 (PID:69052): Media Recovery Waiting for T-1.S-97 (in transit)
    2022-12-01T09:20:53.169139+00:00
    Recovery of Online Redo Log: Thread 1 Group 111 Seq 97 Reading mem 0
      Mem# 0: +RECO/CDB_OSAKA/ONLINELOG/standby_group_111
```

### 6) GV$MANAGED_STANDBY確認
REDOがプライマリ・データベースから送信され、スタンバイ・データベースに適用されていることを確認
```:Standby DB
SYS@CDB_TOKYO SQL> SELECT CLIENT_PROCESS, PROCESS, THREAD#, SEQUENCE#, STATUS FROM GV$MANAGED_STANDBY WHERE CLIENT_PROCESS='LGWR' OR PROCESS='MRP0' order by THREAD#;

  CLIENT_P PROCESS      THREAD#  SEQUENCE# STATUS
  -------- --------- ---------- ---------- ------------
  LGWR	 RFS		    1	      97 RECEIVING
  N/A	 MRP0		    2	      92 APPLYING_LOG
  LGWR	 RFS		    2	      92 RECEIVING
```

# ■ Active Datagurd 設定
スタンバイDB は OPEN して、SELECT文を実行できるRead Replicaとして利用できます。

## ● Active Datagurd 設定
スタンバイ・データベース を Read (Real Time Query)できるように設定
### 1) Real Time Query 設定前確認
Real Time QueryがOFFであることを確認

```
DGMGRL> show database CDB_TOKYO
	Database - CDB_TOKYO

	Role:               PHYSICAL STANDBY
	Intended State:     APPLY-ON
	Transport Lag:      0 seconds (computed 0 seconds ago)
	Apply Lag:          0 seconds (computed 0 seconds ago)
	Average Apply Rate: 1.19 MByte/s
	Real Time Query:    OFF
	Instance(s):
		CDB_TOKYO1 (apply instance)
		CDB_TOKYO2

	Database Status:
	SUCCESS
```

### 2) Redo Apply停止
```
DGMGRL> edit database CDB_TOKYO set state=apply-off;
	Succeeded.
```


### 3) Real Time Query ON
Standby Database を Open

```
SQL> alter database open;
```


### 4) Redo Apply起動
```
DGMGRL> edit database CDB_TOKYO set state=apply-on;
```

### 5) 設定確認
```
DGMGRL> show database CDB_TOKYO

	Database - CDB_TOKYO

	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: 812.00 KByte/s
	Real Time Query:    ON
	Instance(s):
		CDB_TOKYO1 (apply instance)
		CDB_TOKYO2

	Database Status:
	SUCCESS
```



## ● リアル・タイム・アプライ確認
スタンバイDBは OPENして、SELECT文を実行できるRead Replicaとして利用できます。
プライマリDBで作成されたテーブルがスタンバイDBへ伝搬されSELECTできることを確認します
### 1) プライマリDBでテーブル作成

```:Primary DB
SYS@CDB_TOKYO1 SQL> CREATE TABLE test_table1 (id number(3), name varchar2(10)) TABLESPACE USERS;
	Table created.

SYS@CDB_OSAKA SQL> INSERT INTO test_table1  VALUES (1,'AAA');
SYS@CDB_OSAKA SQL> INSERT INTO test_table1  VALUES (1,'BBB');
SYS@CDB_OSAKA SQL> commit;
	Commit complete.

SYS@CDB_OSAKA SQL> select * from test_table1;

	ID NAME
---------- ----------
	 1 AAA
	 2 BBB
```

### 2) スタンバイDBでプライマリDBのトランザクション伝搬確認
スタンバイDBをOPENして、プライマリDB側で作成したテーブルtest_table1が伝搬されてSELECTできることを確認
```:Standby DB
SYS@CDB_TOKYO SQL> select * from test_table1;

	ID NAME
---------- ----------
	 1 AAA
	 2 BBB
```

# ■ Switchover
スイッチオーバーを実行するには、Data Guard Brokerで以下のコマンドを実行します。
```
DGMGRL> validate database stby;
	Database Role:Physical standby database Primary Database: pri
	Ready for Switchover:Yes
	Ready for Failover:Yes (Primary Running) DGMGRL> switchover to <target standby>;
DGMGRL> switchover to <target standby>;
```


## ● Switchover実行(Primary:Osaka -> Tokyo)

### 1) Data Guardコマンドライン・インタフェース接続
```
[oracle@exa-osaka-node1 ~]$ dgmgrl sys/<Password>@CDB_OSAKA
	DGMGRL for Linux: Release 19.0.0.0.0 - Production on Fri Sep 23 09:32:34 2022
	Version 19.15.0.0.0

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

	Welcome to DGMGRL, type "help" for information.
	Connected to "CDB_OSAKA"
	Connected as SYSDBA.

```

### 2) データベース・チェック
ロール変更に先立って包括的なデータベース・チェックを実行

```
DGMGRL> validate database CDB_OSAKA;

  Database Role:    Primary database

  Ready for Switchover:  Yes

  Managed by Clusterware:
    CDB_OSAKA:  YES


DGMGRL> validate database CDB_TOKYO

  Database Role:     Physical standby database
  Primary Database:  CDB_OSAKA

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

  Managed by Clusterware:
    CDB_OSAKA:  YES
    CDB_TOKYO:  YES
```


### 3) Switchover 実行
```
DGMGRL> switchover to  CDB_TOKYO;
	Performing switchover NOW, please wait...

	Operation requires a connection to database "CDB_TOKYO"
	Connecting ...
	Connected to "CDB_TOKYO"
	Connected as SYSDBA.
	New primary database "CDB_TOKYO" is opening...
	Oracle Clusterware is restarting database "CDB_OSAKA" ...
	Connected to "CDB_OSAKA"
	Connected to "CDB_OSAKA"
	Switchover succeeded, new primary is "cdb_tokyo"
```



### 4) Switchover 確認

```
DGMGRL> show database CDB_OSAKA

	Database - CDB_OSAKA

	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: 6.00 KByte/s
	Real Time Query:    ON
	Instance(s):
		CDB_OSAKA1 (apply instance)
		CDB_OSAKA2

	Database Status:
	SUCCESS

DGMGRL> show database CDB_TOKYO

	Database - CDB_TOKYO

	Role:               PRIMARY
	Intended State:     TRANSPORT-ON
	Instance(s):
		CDB_TOKYO1
		CDB_TOKYO2

	Database Status:
	SUCCESS
```


# ■ Failover と Reinstate

## ● Failover
```
DGMGRL> failover to <Standby>;
```


### 1) 事前確認
```
DGMGRL> show configuration

	Configuration - dg_config

	Protection Mode: MaxPerformance
	Members:
	CDB_TOKYO - Primary database
		CDB_OSAKA - Physical standby database

	Fast-Start Failover:  Disabled

	Configuration Status:
	SUCCESS   (status updated 59 seconds ago)
```

### 2) Failover
Standbyで実行

```:Standby
DGMGRL> failover to CDB_OSAKA
	Performing failover NOW, please wait...
	Failover succeeded, new primary is "cdb_osaka"

DGMGRL> show configuration

	Configuration - dg_config

	Protection Mode: MaxPerformance
	Members:
	CDB_OSAKA - Primary database
		CDB_TOKYO - Physical standby database (disabled)
		ORA-16661: the standby database needs to be reinstated

	Fast-Start Failover:  Disabled

	Configuration Status:
	SUCCESS   (status updated 0 seconds ago)
```



## ● Reinstate
```
・旧Primaryで実行
SQL> shutdown abort
SQL> startup mount

・新Primaryで実行
DGMGRL> reinstate database <Primary>
```

### 1) 旧Primaryで実行
```: 旧Primary
DGMGRL> show configuration

	Configuration - dg_config

	Protection Mode: MaxPerformance
	Members:
	CDB_OSAKA - Primary database
		CDB_TOKYO - Physical standby database

	Fast-Start Failover:  Disabled

	Configuration Status:
	DISABLED
	DGM-17290: Role change detected. This database may no longer be the primary database.

SQL> shutdown abort
	ORACLE instance shut down.

SQL> startup mount
	ORACLE instance started.

	Total System Global Area 7953271232 bytes
	Fixed Size		    9157056 bytes
	Variable Size		 1644167168 bytes
	Database Buffers	 6023020544 bytes
	Redo Buffers		  276926464 bytes
	Database mounted.
```

### 2) 新Primaryで実行

```:新Primary
DGMGRL>  reinstate database CDB_TOKYO
	Reinstating database "cdb_tokyo", please wait...
	Reinstatement of database "cdb_tokyo" succeeded


DGMGRL> show configuration

	Configuration - dg_config

	Protection Mode: MaxPerformance
	Members:
	CDB_OSAKA - Primary database
		CDB_TOKYO - Physical standby database

	Fast-Start Failover:  Disabled

	Configuration Status:
	SUCCESS   (status updated 34 seconds ago)
```





# ■ スタンバイ・データベースからスナップショット・スタンバイへの変換
## ● スナップショット・スタンバイへの変換

### 1) スナップショット・スタンバイへ変換
```
DGMGRL> convert database 'CDB_OSAKA' to snapshot standby;
	Converting database "CDB_OSAKA" to a Snapshot Standby database, please wait...
	Database "CDB_OSAKA" converted successfully
```

### 2) 確認

```
DGMGRL> SHOW CONFIGURATION;

	Configuration - dg_config

	Protection Mode: MaxPerformance
	Members:
	CDB_TOKYO - Primary database
		CDB_OSAKA - Snapshot standby database
		Warning: ORA-16855: transport lag has exceeded specified threshold

	Fast-Start Failover:  Disabled

	Configuration Status:
	WARNING   (status updated 37 seconds ago)



DGMGRL> show database CDB_OSAKA

	Database - CDB_OSAKA

	Role:               SNAPSHOT STANDBY
	Transport Lag:      3 minutes 5 seconds (computed 1 second ago)
	Apply Lag:          3 minutes 8 seconds (computed 1 second ago)
	Instance(s):
		CDB_OSAKA1
		CDB_OSAKA2

	Database Warning(s):
		ORA-16855: transport lag has exceeded specified threshold

	Database Status:
	WARNING


DGMGRL> show database CDB_TOKYO

	Database - CDB_TOKYO

	Role:               PRIMARY
	Intended State:     TRANSPORT-ON
	Instance(s):
		CDB_TOKYO1
		CDB_TOKYO2

	Database Status:
	SUCCESS
```


## ● スナップショット・スタンバイから元のフィジカル・スタンバイ・データベースに変換
Data Guard Brokerを介して、次のコマンドを発行します
```
DGMGRL> CONVERT DATABASE 'stby' to PHYSICAL STANDBY;
```

### 1) フィジカル・スタンバイ・データベースへ変換
```
DGMGRL> CONVERT DATABASE 'CDB_OSAKA' to PHYSICAL STANDBY;
	Converting database "CDB_OSAKA" to a Physical Standby database, please wait...
	Operation requires a connection to database "CDB_TOKYO"
	Connecting ...
	Connected to "CDB_TOKYO"
	Connected as SYSDBA.
	Oracle Clusterware is restarting database "CDB_OSAKA" ...
	Connected to "CDB_OSAKA"
	Connected to "CDB_OSAKA"
	Continuing to convert database "CDB_OSAKA" ...
	Database "CDB_OSAKA" converted successfully
```

### 2) 確認
```
DGMGRL> SHOW CONFIGURATION;

	Configuration - dg_config

	Protection Mode: MaxPerformance
	Members:
	CDB_TOKYO - Primary database
		CDB_OSAKA - Physical standby database

	Fast-Start Failover:  Disabled

	Configuration Status:
	SUCCESS   (status updated 31 seconds ago)
```


# ■ フィジカル・スタンバイでの手動操作が必要なプライマリ・データベースの変更
プライマリ・データベースに対して行われる構造変更のほとんどは、REDOデータによってフィジカル・スタンバイ・データベースに自動的に伝播されますが、手動操作が必要な変更がいくつかあります。
次のドキュメントを参考に、フィジカル・スタンバイ・データベースで手動操作が必要な、プライマリ・データベースの構造および構成の変更を確認します。

・参考: [フィジカル・スタンバイでの手動操作が必要なプライマリ・データベースの変更](https://docs.oracle.com/cd/F19136_01/sbydb/managing-oracle-data-guard-physical-standby-databases.html#GUID-62007456-DD41-431D-B0E7-56C99FEB2277
)

# ■ プライマリ・データベースでの PDBの作成
PDBのサブセットをマルチテナント・コンテナ・データベース(CDB)のフィジカル・スタンバイに複製するように指定できます。このためには、[ENABLED_PDBS_ON_STANDBYパラメータ](https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/ENABLED_PDBS_ON_STANDBY.html)初期化パラメータを使用してPDBのリストを指定するか、STANDBYS句をCREATE PLUGGABLE DATABASE文で使用するか、あるいはその両方を実行します。

・参考: [プライマリ・データベースでのPDBの作成](https://docs.oracle.com/cd/F19136_01/sbydb/creating-oracle-data-guard-physical-standby.html#GUID-20D2DEAC-0355-4FBB-ADB8-37BF5F4328E2)


# ■ 参考
**● 本手順書**
　[Oracle Exadata Cloudを使用したディザスタ・リカバリ](https://www.oracle.com/jp/a/tech/docs/hybrid-data-guard-to-exaoci-update-gen2-exacc-exacs-ja.pdf)

**● Data Guard**
・[Data Guard](https://www.oracle.com/jp/database/data-guard/#rc30p2)
・[Oracle Exadata Cloudを使用した ディザスタ・リカバリ](https://www.oracle.com/a/tech/docs/hybrid-data-guard-to-exaoci-update-gen2-exacc-exacs.pdf)
・[Hybrid Data Guard to Exadata Cloud Services](https://www.oracle.com/technetwork/database/availability/hybrid-data-guard-to-exaoci-5600751.pdf)
・[Solution Playbooks: Deploy a hybrid DR topology for an on-premises Oracle Exadata](https://docs.oracle.com/en/solutions/hybrid-dr-for-exadata/index.html#GUID-B9D75B4F-B5EE-4ECB-84AB-F0F6AC56A010)
・[プライマリ・データベースでのPDBの作成](https://docs.oracle.com/cd/F19136_01/sbydb/creating-oracle-data-guard-physical-standby.html#GUID-20D2DEAC-0355-4FBB-ADB8-37BF5F4328E2)
・[フィジカル・スタンバイでの手動操作が必要なプライマリ・データベースの変更](https://docs.oracle.com/cd/F19136_01/sbydb/managing-oracle-data-guard-physical-standby-databases.html#GUID-62007456-DD41-431D-B0E7-56C99FEB2277
)
・[Data Guard Impact on Oracle Multitenant Environments (Doc ID 2049127.1)](http://support.oracle.com)
・[同期REDO転送のベスト・プラクティス](https://www.oracle.com/technetwork/jp/database/availability/sync-2437177-ja.pdf)
・[Active Data Guard diffs from 11gR2 to 19c](https://speakerdeck.com/oracle4engineer/active-data-guard-diffs-from-11gr2-to-19c)

**● Data Guard Broker**
・[マニュアル: Oracle Data Guard Broker ](https://docs.oracle.com/cd/F19136_01/dgbkr/oracle-data-guard-broker-concepts.html#GUID-723E5B73-A350-4B2E-AF3C-5EA4EFC83966)
・[Oracle Data Guardのベスト・プラクティス](https://docs.oracle.com/cd/F19136_01/haovw/oracle-data-guard-best-practices.html)

**● Exadata**
・[概要: Oracle Exadata Database Service](https://www.oracle.com/jp/engineered-systems/exadata/database-service/)
・[キュメント: Exadataシステム](https://docs.oracle.com/ja-jp/iaas/Content/Database/Concepts/troubleshooting_topic-Exadata_DB_Systems.htm)
・[キュメント: DBAASツール: dbaascliを使用したクラウド・ツール・ログの収集およびクラウド・ツールの ヘルス・チェックの実行](https://docs.oracle.com/ja-jp/iaas/Content/Database/References/dbaascli_topic-tooling_log_collection.htm)
・[Oracle Database Product Management](https://bit.ly/dbpm-youtube)

**● Private DNS**
・[キュメント: OCI Document:プライベートDNS](https://docs.oracle.com/ja-jp/iaas/Content/DNS/Tasks/privatedns.htm)
・[チュートリアル: Private DNS Implementation](https://www.ateam-oracle.com/post/private-dns-implementation)

**● ENCRYPTION 暗号化**
・[Oracle Data Guard Redo Decryption for Hybrid Disaster Recovery Configurations](https://blogs.oracle.com/maa/post/introducing-dg-redo-decrypt-for-hybrid-cloud)
・[TABLESPACE_ENCRYPTION ](https://docs.oracle.com/cd/F19136_01/refrn/TABLESPACE_ENCRYPTION.html#GUID-42408BFB-1A3F-4BAA-B0E9-1AA0CD48FA5A)

**● Oracle Cloud：Maximum Availability Architecture (MAA)**
・[Oracle CloudのMAAベスト・プラクティス まとめ](https://www.oracle.com/jp/database/technologies/high-availability/oracle-cloud-maa.html)
・[Oracle WebLogic Server for Oracle Cloud Infrastructureの障害時リカバリ](https://www.oracle.com/jp/a/tech/docs/maa-wls-mp-dr-ja.pdf)
・[Oracle Cloud Infrastructure Marketplace上のSOA Suiteの障害時リカバリ](https://www.oracle.com/jp/a/tech/docs/maa-soamp-dr-ja.pdf)

**● My Oracle Support**
・ [When do SQLNET.ORA changes take effect ? (Doc ID 562589.1)](https://support.oracle.com/knowledge/Oracle%20Database%20Products/562589_1.html)
・ [Data Guard] Data Guard に関する FAQ(KROWN:125680) (Doc ID 1740071.1)
・ [DataGuard] フィジカル・スタンバイ環境での個別パッチの適用手順(KROWN:140197) (Doc ID 1748475.1)

**● Qiitaまとめ**
・ [DRGで東京リージョンを経由して、オンプレミスと 大阪リージョンを接続](https://qiita.com/shirok/items/90cff318816fbf2a802d)
・ [Oracle Exadata Cloud Infrastructure X9M作成](https://qiita.com/shirok/items/1f7a10d254849a9fdddb)
・ [リージョン間を Remote VCN Peering接続](https://qiita.com/shirok/items/192674aa6e903ea6694a)
・ [Private DNSで PeeringしたVCNどうしホスト名解決する](https://qiita.com/shirok/items/4197e09dc2bfd7db82f3)
・ [クラウド・ツール dbaascliをバージョンアップ](https://qiita.com/shirok/items/9c5f4176b86536ff221e)