Oracle Cloud: 東京-大阪リージョン間で手動Data Guardしてみてみた

# ■大阪リージョン 
Oracle Cloud 大阪リージョンがオープンしました。
またいつのまにか、メルボルン（オーストラリア）、ジェッダ（サウジアラビア）、モントリオール（カナダ）、アムステルダム（オランダ）もオープンしています。
大阪リージョンができたことにより、日本国内、東京ー大阪間で容易にDR構成をとり、法的管轄外から機密データをホストせず、コンプライアンス準拠に対応することができます。
ということで、東京ー大阪間をRemoe Peering でセキュアにバックボーン接続し、Data Guardしてみてみます。


**● Data Guard**
Oracle Data Guardによって、これらのスタンバイ・データベースが本番データベースの同期コピーとして保持されます。
これらのスタンバイ・データベースは、本番データベース・センターから数千マイルも離れたリモート障害時リカバリ・サイトに配置でき、同じ都市、構内、もしくはビルにも配置できます。 
計画停止または計画外停止が原因で本番データベースが使用不可になった場合、スタンバイ・データベースを本番ロールに切り替え、その停止に起因する停止時間を最小限に抑えて、データ損失を防止できます。
また、Active Data Guardの機能により、スタンバイ・データベース有効活用としてソース集中型のバックアップおよびレポート生成操作をスタンバイ・システムにオフロードすることで、本番データベースのパフォーマンスを改善し向上できます。




# ■構成
<img width="953" alt="NW構成.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/93295a17-42f8-126e-da42-de2858062cde.png">
今回のData Guardは勉強のために、IaaSのMarket Placeを利用してData Guardを手動で作成します。


# ■Remote Peering構成の設定
Remote Peeringは以前の記事を参考に設定します。
・参考：[Oracle Cloud：リージョン間をRemote Peering(バックボーン接続) してみた](https://qiita.com/shirok/items/b00deaa462c279314848)


# ■Computeインスタンス作成
Oracle Cloud Market Place にOracle Databaseがあるのでこれを使用します。
大阪リージョン、東京リージョン両方同じに作成します

**① Compute > Instances から[Create Instance]をクリック**
<img width="1008" alt="01_DB作成00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/8b0ea2a2-b44f-d197-6225-5497c4e47f23.png">



**② Browse All Imageから Oracle Databaseを選択**
<img width="1142" alt="01_DB作成01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/5c3cea8b-1d90-a40d-b01f-3ef6597d6a6b.png">

**③ 必要情報を入力し、[Creaate]を実行**
作成は数分で完了します。

<img width="1009" alt="01_DB作成02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/0fa4b56e-18f7-513f-fc06-21f06f00f3bf.png">

<img width="887" alt="01_DB作成03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/551d83cc-52d6-b8c6-5847-0c0c66f59b51.png">
<img width="838" alt="01_DB作成04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/4c5ff13c-9a60-0c78-c7d5-7ca0df1c62c2.png">
<img width="898" alt="01_DB作成05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/056b52dc-c00c-35d7-ce12-c422814e6f27.png">
<img width="798" alt="01_DB作成06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109087/141d3230-5995-26eb-e358-92931c268acd.png">



# ■ Database作成
Oracle Databaseサーバー作成後、buildsingle.shでDatabaseを作成します
buildsingle.shの引数は次のものとなります

|引数  |デフォルト値  |概要  |
|---|---|---|
|SIDNAME | orcl|SID名|
|DBNAME | orcl|DB名|
|DBCA_SAMPLE_SCHEMA | no|サンプルスキーマーのインストール|
|CLONE_SYS_PASSWORD | Ora_DB4U|SYSユーザーパスワード|
|CLONE_SYSTEM_PASSWORD | Ora_DB4U|SYSTEMユーザーパスワード|
|CLONE_PDBADMIN_PASSWORD  | Ora_DB4U|PDBADMINユーザーパスワード|
|CLONE_SYSMAN_PASSWORD | Ora_DB4U|SYSMANユーザーパスワード|

**① /u01をmount**
/u01をmountします、通常マウントされているので、dfコマンドで確認し、mountされていなければmountします

・mount確認

```shell-session
[opc@tokyo-db-inst01 ~]$ sudo -s
[root@tokyo-db-inst01 opc]# df -h
    ファイルシス   サイズ  使用  残り 使用% マウント位置
    devtmpfs          15G     0   15G    0% /dev
    tmpfs             15G     0   15G    0% /dev/shm
    tmpfs             15G  8.7M   15G    1% /run
    tmpfs             15G     0   15G    0% /sys/fs/cgroup
    /dev/sda3         39G  3.2G   36G    9% /
    /dev/sda1        200M  9.7M  191M    5% /boot/efi
    tmpfs            3.0G     0  3.0G    0% /run/user/54321
    /dev/sda4        250G   28G  210G   12% /u01
    tmpfs            3.0G     0  3.0G    0% /run/user/1000

・/u01 mountコマンド

```shell-session
[opc@tokyo-db-inst01 ~]$ sudo -s
[root@tokyo-db-inst01 opc]# mount /u01
```

**② Database 作成**
東京リージョン：tokyodb：SIDNAME=tokyodb DBNAME=tokyodb
大阪リージョン：osakadb：SIDNAME=osakadb DBNAME=osakadb
として作成します
大阪リージョンのosakadbは作成しなくてもOKです。後からtokyodbを複製して作成するので、必要ディレクトリとorapwdファイル、Oracle＊NET関連ファイルを手動作成してもOKです

```shell-session
[root@tokyo-db-inst01 opc]# /u01/ocidb/GenerateNetconfig.sh > /u01/ocidb/netconfig.ini
[root@tokyo-db-inst01 opc]# SIDNAME=tokyodb DBNAME=tokyodb DBCA_SAMPLE_SCHEMA=yes  /u01/ocidb/buildsingle.sh -s
    Invoking on tokyo-db-inst01 as root...
    Oracle (DB/RAC OCI) OneCommand - 19c/18c/12c/11gR2 (v2.2.2c) - (c) 2010-2019 Oracle Corporation
    Cksum: [2600197023 651500 dbrac.sh] at 2020年  2月  2日 日曜日 03:47:53 GMT
    Kernel: 4.14.35-1902.6.6.el7uek.x86_64 (x86_64) [4 processor(s)] 29880 MB | KVM
    Kit Version: 19.5.0.0.191015 (Single Instance Mode, Enterprise Edition)
    Step(s): buildsingle

    INFO (node:tokyo-db-inst01): Skipping confirmation, flag (-s) supplied on command line
    2020-02-02 03:47:53:[buildsingle:Start:tokyo-db-inst01] Building 19c Single Instance
    2020-02-02 03:47:53:[usrsgrps:Start:tokyo-db-inst01] Verifying Oracle users & groups on local node (create/modify mode)..
    2020-02-02 03:47:54:[usrsgrpslocal:Start:tokyo-db-inst01] Verifying Oracle users & groups (create/modify mode)..

    INFO (node:tokyo-db-inst01): The (oracle) user as specified in DBOWNER/RACOWNER is defined as follows:
    uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)

    2020-02-02 03:47:54:[usrsgrpslocal:Done :tokyo-db-inst01] Verifying Oracle users & groups (create/modify mode)..
    2020-02-02 03:47:54:[usrsgrpslocal:Time :tokyo-db-inst01] Completed successfully in 0 seconds (0h:00m:00s)
    2020-02-02 03:47:54:[usrsgrps:Done :tokyo-db-inst01] Verifying Oracle users & groups on local node (create/modify mode)..
    2020-02-02 03:47:54:[usrsgrps:Time :tokyo-db-inst01] Completed successfully in 1 seconds (0h:00m:01s)

    INFO (node:tokyo-db-inst01): Parameters loaded from params.ini...
    Users & Groups:
    Role Separation: no  Running as: root
    OInstall    : oinstall       GID: 54321
    DB Owner    : oracle         UID: 54321
        DB OSDBA   : dba            GID: 54322
        DB OSOPER  :                GID:
        DB OSBACKUP: dba            GID:
        DB OSDGDBA : dba            GID:
        DB OSKMDBA : dba            GID:
        DB OSRAC   : dba            GID:
    Software Locations:
    Operating Mode: Single Instance       Database Edition:
    Central Inventory: /u01/app/oraInventory
    DB Home : /u01/app/oracle/product/19c/dbhome_1  (Detected: 19c, Enterprise Edition)
    DB Name : OraDB19Home1
    DB Base : /u01/app/oracle
    DB/RAC OCI kit : /u01/ocidb
    Attach RAC Home: yes   GI Home: yes  Relink Homes: no   On OS Change: yes
    Addnode Copy: no
    Database & Storage:
    Database : yes        DBName: tokyodb  SIDName: tokyodb  DG: OCRVFDG   Listener Port: 1521
    Container DB: yes    Pluggable DB Name: tokyodbpdb   Count: 1
    FS Datafile location: /u01/app/oracle/oradata   DB on FS: yes   FS Permisisons: 770
    Persistent disknames: yes  Stamp: yes  Partition: yes  Align: yes  GPT:    Dsk.Permissions: 660

    Network information loaded from netconfig.ini...
    Default Gateway: 10.0.0.1  Domain:
    DNS: 169.254.169.254
    Public NIC : ens3  Mask: 255.255.255.0
    Node PubIP : 10.0.0.101      PubName : tokyo-db-inst01
    Running on tokyo-db-inst01 as root...
    Oracle (DB/RAC OCI) OneCommand - 19c/18c/12c/11gR2 (v2.2.2c) - (c) 2010-2019 Oracle Corporation
    Cksum: [2600197023 651500 dbrac.sh] at 2020年  2月  2日 日曜日 03:47:54 GMT
    Kernel: 4.14.35-1902.6.6.el7uek.x86_64 (x86_64) [4 processor(s)] 29880 MB | KVM
    Kit Version: 19.5.0.0.191015 (Single Instance Mode, Enterprise Edition)
    2020-02-02 03:47:54:[printparams:Time :tokyo-db-inst01] Completed successfully in 0 seconds (0h:00m:00s)
    2020-02-02 03:47:54:[diskconfig:Start:tokyo-db-inst01] Storage Setup

    INFO (node:tokyo-db-inst01): Filesystem checks (diskconfig)...

    INFO (node:tokyo-db-inst01): Successfully created directory (/u01/app/oracle/oradata/tokyodb) for Database on filesystem location (/u01/app/oracle/oradata) set in FS_DATAFILE_LOCATION

    INFO (node:tokyo-db-inst01): Successfully changed permissions (770) & ownership (oracle:oinstall) on Filesystem location (/u01/app/oracle/oradata) set in FS_DATAFILE_LOCATION; to skip in the future set CLONE_SKIP_FS_LOCATION_PERMISSION_CHANGE=yes
    2020-02-02 03:47:54:[diskconfig:Done :tokyo-db-inst01] Storage Setup
    2020-02-02 03:47:54:[diskconfig:Time :tokyo-db-inst01] Completed successfully in 0 seconds (0h:00m:00s)
    2020-02-02 03:47:54:[check:Start:tokyo-db-inst01] Pre-install checks
    .2020-02-02 03:47:55:[checkfs:Start:tokyo-db-inst01] Checking filesystem mount options


    INFO (node:tokyo-db-inst01): Checking database filesystem location on: tokyo-db-inst01
    2020-02-02 03:47:55:[checkfslocal:Time :tokyo-db-inst01] Completed successfully in 0 seconds (0h:00m:00s)
    2020-02-02 03:47:56:[checkfs:Done :tokyo-db-inst01] Checking filesystem mount options
    2020-02-02 03:47:56:[checklocal:Start:tokyo-db-inst01] Pre-install checks
    2020-02-02 03:47:57:[usrsgrpslocal:Start:tokyo-db-inst01] Verifying Oracle users & groups (check only mode)..

    INFO (node:tokyo-db-inst01): The (oracle) user as specified in DBOWNER/RACOWNER is defined as follows:
    uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba),54323(oper),54324(backupdba),54325(dgdba),54326(kmdba),54330(racdba)

    2020-02-02 03:47:57:[usrsgrpslocal:Done :tokyo-db-inst01] Verifying Oracle users & groups (check only mode)..

    INFO (node:tokyo-db-inst01): Node forming new Single Instance installation; Kernel: 4.14.35-1902.6.6.el7uek.x86_64 (x86_64) [4 processor(s)] 29880 MB | KVM

    INFO (node:tokyo-db-inst01): Skipping disk checks since running in a Single Instance environment (database files should reside on a filesystem)

    INFO (node:tokyo-db-inst01): Running network checks...
    .........
    INFO (node:tokyo-db-inst01): Check completed successfully
    2020-02-02 03:48:02:[checklocal:Done :tokyo-db-inst01] Pre-install checks
    2020-02-02 03:48:02:[checklocal:Time :tokyo-db-inst01] Completed successfully in 6 seconds (0h:00m:06s)
    2020-02-02 03:48:03:[check:Done :tokyo-db-inst01] Pre-install checks
    2020-02-02 03:48:03:[check:Time :tokyo-db-inst01] Completed successfully in 9 seconds (0h:00m:09s)
    2020-02-02 03:48:03:[preparelocal:Start:tokyo-db-inst01] Preparing node for Oracle installation

    INFO (node:tokyo-db-inst01): Resetting permissions on Oracle Homes... May take a while...

    INFO (node:tokyo-db-inst01): Configured size of /dev/shm is (see output below):
    ファイルシス   サイズ  使用  残り 使用% マウント位置
    tmpfs             15G     0   15G    0% /dev/shm
    2020-02-02 03:48:11:[preparelocal:Done :tokyo-db-inst01] Preparing node for Oracle installation
    2020-02-02 03:48:11:[preparelocal:Time :tokyo-db-inst01] Completed successfully in 8 seconds (0h:00m:08s)
    2020-02-02 03:48:12:[prepare:Time :tokyo-db-inst01] Completed successfully in 9 seconds (0h:00m:09s)
    2020-02-02 03:48:14:[dbclone:Start:tokyo-db-inst01] Attaching 19c DB Home

    INFO (node:tokyo-db-inst01): Running on: tokyo-db-inst01 as root: /bin/chown -HRf oracle:oinstall /u01/app/oracle/product/19c/dbhome_1 2>/dev/null
    2020-02-02 03:48:15:[dbattachlocal:Start:tokyo-db-inst01] Attaching DB Home on node tokyo-db-inst01

    INFO (node:tokyo-db-inst01): Running on: tokyo-db-inst01 as oracle: /u01/app/oracle/product/19c/dbhome_1/oui/bin/runInstaller -silent -ignoreSysPrereqs -waitforcompletion -attachHome INVENTORY_LOCATION='/u01/app/oraInventory' ORACLE_HOME='/u01/app/oracle/product/19c/dbhome_1' ORACLE_HOME_NAME='OraDB19Home1' ORACLE_BASE='/u01/app/oracle'   -local
    Oracle Universal Installerを起動中です...

    スワップ領域の確認中: 500MBを超えている必要があります.   実際 8191MB    問題なし
    The inventory pointer is located at /etc/oraInst.loc
    このインストール・セッションのログは次の場所にあります:
    /u01/app/oraInventory/logs/AttachHome2020-02-02_03-48-15AM.log
    セッション終了時に'/u01/app/oraInventory/orainstRoot.sh'スクリプトを実行してください。
    'AttachHome'が成功しました。

    INFO (node:tokyo-db-inst01): Running on: tokyo-db-inst01 as root: /u01/app/oraInventory/orainstRoot.sh
    権限を変更中 /u01/app/oraInventory.
    グループの読取り/書込み権限を追加中。
    全ユーザーの読取り/書込み/実行権限を削除中。

    グループ名の変更 /u01/app/oraInventory 宛先 oinstall.
    スクリプトの実行が完了しました。
    2020-02-02 03:48:19:[dbattachlocal:Done :tokyo-db-inst01] Attaching DB Home on node tokyo-db-inst01
    2020-02-02 03:48:19:[dbattachlocal:Time :tokyo-db-inst01] Completed successfully in 4 seconds (0h:00m:04s)
    2020-02-02 03:48:19:[dbrootlocal:Start:tokyo-db-inst01] Running root.sh on DB Home
    Check /u01/app/oracle/product/19c/dbhome_1/install/root_tokyo-db-inst01_2020-02-02_03-48-19-236416923.log for the output of root script
    2020-02-02 03:48:19:[dbrootlocal:Done :tokyo-db-inst01] Running root.sh on DB Home
    2020-02-02 03:48:19:[dbrootlocal:Time :tokyo-db-inst01] Completed successfully in 0 seconds (0h:00m:00s)

    INFO (node:tokyo-db-inst01): Resetting permissions on Oracle Home (/u01/app/oracle/product/19c/dbhome_1)...
    2020-02-02 03:48:19:[racclonelocal:Done :tokyo-db-inst01] Attaching 19c DB Home
    2020-02-02 03:48:19:[dbclone:Time :tokyo-db-inst01] Completed successfully in 7 seconds (0h:00m:07s)
    2020-02-02 03:48:19:[dbassist:Start:tokyo-db-inst01] Running DB Home assistants (netca)

    INFO (node:tokyo-db-inst01): Creating the node Listener using NETCA... (03:48:19)

    INFO (node:tokyo-db-inst01): Running on: tokyo-db-inst01 as oracle: export ORACLE_BASE=/u01/app/oracle; export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1; /u01/app/oracle/product/19c/dbhome_1/bin/netca /orahome /u01/app/oracle/product/19c/dbhome_1 /instype typical /inscomp client,oraclenet,javavm,server,ano /insprtcl tcp /cfg local /authadp NO_VALUE /responseFile /u01/app/oracle/product/19c/dbhome_1/network/install/netca_typ.rsp /lisport 1521 /silent /orahnam OraDB19Home1

    コマンドライン引数の解析:
        パラメータ "orahome" = /u01/app/oracle/product/19c/dbhome_1
        パラメータ "instype" = typical
        パラメータ "inscomp" = client,oraclenet,javavm,server,ano
        パラメータ "insprtcl" = tcp
        パラメータ "cfg" = local
        パラメータ "authadp" = NO_VALUE
        パラメータ "responsefile" = /u01/app/oracle/product/19c/dbhome_1/network/install/netca_typ.rsp
        パラメータ "lisport" = 1521
        パラメータ "silent" = true
        パラメータ "orahnam" = OraDB19Home1
    コマンドライン引数の解析が終了しました。
    Oracle Net Servicesの構成:
    プロファイルの構成が完了しました。
    リスナーは、コマンドラインで指定されたポートを使用しています:1521
    Oracle Net Listenerの起動:
        リスナーの制御の実行:
        /u01/app/oracle/product/19c/dbhome_1/bin/lsnrctl start LISTENER
        リスナーの制御が完了しました。
        リスナーの起動に成功しました。
    リスナーの構成が完了しました。
    Oracle Net Servicesの構成に成功しました。終了コードは次のとおりです。0
    2020-02-02 03:48:21:[dbassist:Done :tokyo-db-inst01] Running DB Home assistants (netca)
    2020-02-02 03:48:21:[dbassist:Time :tokyo-db-inst01] Completed successfully in 2 seconds (0h:00m:02s)
    2020-02-02 03:48:21:[createdb:Start:tokyo-db-inst01] Creating 19c Single Instance Database (tokyodb)
    2020-02-02 03:48:22:[adjustmemlocal:Start:tokyo-db-inst01] Adjusting memory settings

    INFO (node:tokyo-db-inst01): Not attempting to adjust size of /dev/shm since the available space (14940MB) exceeds the calculated needed space

    INFO (node:tokyo-db-inst01): Configured size of /dev/shm is (see output below):
    ファイルシス   サイズ  使用  残り 使用% マウント位置
    tmpfs             15G     0   15G    0% /dev/shm
    2020-02-02 03:48:22:[adjustmemlocal:Done :tokyo-db-inst01] Adjusting memory settings
    2020-02-02 03:48:22:[adjustmemlocal:Time :tokyo-db-inst01] Completed successfully in 0 seconds (0h:00m:00s)

    INFO (node:tokyo-db-inst01): Creating database (tokyodb) (Single Instance)

    INFO (node:tokyo-db-inst01): Running on: tokyo-db-inst01 as oracle: export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1; export ORACLE_BASE=/u01/app/oracle; /u01/app/oracle/product/19c/dbhome_1/bin/dbca -silent -createDatabase  -emConfiguration NONE  -templateName 'General_Purpose.dbc' -storageType FS -datafileDestination '/u01/app/oracle/oradata' -datafileJarLocation '/u01/app/oracle/product/19c/dbhome_1/assistants/dbca/templates' -sampleSchema true -oratabLocation /etc/oratab  -runCVUChecks false -continueOnNonFatalErrors true -createAsContainerDatabase true -numberOfPDBs 1 -pdbName tokyodbpdb -gdbName 'tokyodb' -sid 'tokyodb' -initParams filesystemio_options=setall -ignorePrereqs
    SYSユーザー・パスワードを入力してください:
    SYSTEMユーザー・パスワードを入力してください:
    ************
    PDBADMINユーザー・パスワードを入力してください:
    **********
    DB操作の準備
    8%完了
    データベース・ファイルのコピー中
    31%完了
    Oracleインスタンスの作成および起動中
    32%完了
    36%完了
    40%完了
    43%完了
    46%完了
    データベース作成の完了
    51%完了
    53%完了
    54%完了
    プラガブル・データベースの作成
    58%完了
    77%完了
    構成後アクションの実行
    100%完了
    データベースの作成が完了しました。詳細は、次の場所にあるログ・ファイルを参照してください:
    /u01/app/oracle/cfgtoollogs/dbca/tokyodb。
    データベース情報:
    グローバル・データベース名:tokyodb
    システム識別子(SID):tokyodb
    詳細はログ・ファイル"/u01/app/oracle/cfgtoollogs/dbca/tokyodb/tokyodb.log"を参照してください。

    INFO (node:tokyo-db-inst01): Adding Service (tokyodbpdb) stored in DBCA_PLUGGABLE_DB_NAME used to access the Pluggable Database to: /u01/app/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora

    INFO (node:tokyo-db-inst01): Enabling automated startup of all Pluggable Database due to CLONE_DATABASE_AUTOSTART_PDBS=yes specified (or defaulted) in params.ini

    INFO (node:tokyo-db-inst01): Setting Single Instance database to automatically start on next boot due to CLONE_SI_DATABASE_AUTOSTART=yes  (/etc/rc.d/rc.local)

    INFO (node:tokyo-db-inst01): DBCA post creation scripts are running in background (due to DBCA_POST_SQL_BG=yes) as pid: 10616... (continuing execution)
    See log at: /u01/ocidb/buildsingle2_createdbpostsql_2020 2月02_04_09_45.log

    INFO (node:tokyo-db-inst01): Setup oracle's environment
    2020-02-02 04:09:46:[createdb:Done :tokyo-db-inst01] Creating 19c Single Instance Database (tokyodb)
    2020-02-02 04:09:46:[createdb:Time :tokyo-db-inst01] Completed successfully in 1285 seconds (0h:21m:25s)

    INFO (node:tokyo-db-inst01): Current Single Instance state (04:09:46)...
    oracle    5960     1  0 03:48 ?        00:00:00 /u01/app/oracle/product/19c/dbhome_1/bin/tnslsnr LISTENER -inherit
    oracle   10154     1  0 04:09 ?        00:00:00 ora_dbw0_tokyodb

    INFO (node:tokyo-db-inst01): Single Instance running (see output above)

    2020-02-02 04:09:46:[singlestate:Time :tokyo-db-inst01] Completed successfully in 0 seconds (0h:00m:00s)
    2020-02-02 04:09:46:[buildsingle:Done :tokyo-db-inst01] Building 19c Single Instance
    2020-02-02 04:09:46:[buildsingle:Time :tokyo-db-inst01] Completed successfully in 1313 seconds (0h:21m:53s)

    INFO (node:tokyo-db-inst01): This entire build was logged in logfile: /u01/ocidb/buildsingle2.log
```


## ● 作成されたDB情報確認
作成されたDBのsysパスワードなどDB情報はparams.iniで確認できます

```shell-session
[root@tokyo-db-inst01 opc]# cat /u01/ocidb/params.ini
        #
        #/* Copyright 2013-2019,  Oracle. All rights reserved. */
        #
        #
       ・・・・
```



## ● 環境変数 .bashrc設定確認
デフォルトで以下のように.bashrcへ環境変数が設定されます
ここでは追加でNLS_LANGを設定します

```shell-session
[oracle@tokyo-db-inst01 ~]$ cat .bashrc
    # .bashrc

    # Source global definitions
    if [ -f /etc/bashrc ]; then
        . /etc/bashrc
    fi

    # Uncomment the following line if you don't like systemctl's auto-paging feature:
    # export SYSTEMD_PAGER=

    # User specific aliases and functions
    [ -f /home/oracle/.bash_history ] || rm -f /home/oracle/.bash_history && touch /home/oracle/.bash_history
    #
    # Oracle user environment setup
    #
    function addpath {

    [[ ":${PATH}:" =~ :$1: ]] && return
    PATH="$PATH:$1"
    }

    export ORACLE_BASE=/u01/app/oracle
    export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
    export ORACLE_UNQNAME=tokyodb
    export ORACLE_SID=tokyodb
    # If binary locations do not already exist in
    # $PATH add them to the end without duplicates...
    addpath ${ORACLE_HOME%/}/bin
    addpath ${ORACLE_HOME%/}/OPatch

    export NLS_LANG=Japanese_Japan.AL32UTF8

[oracle@tokyo-db-inst01 ~]$ . .bashrc
[oracle@tokyo-db-inst01 ~]$ env | grep LA
    NLS_LANG=Japanese_Japan.AL32UTF8
```



## ● sqlplus 変数設定
glogin.sqlファイルにsqlplus変数をあらかじめ設定できるので、
プライマリDBとスタンバイDBを間違えない様に以下を設定しときます。

**① 設定**

```shell-session
[oracle@tokyo-db-inst01 ~]$ vi $ORACLE_HOME/sqlplus/admin/glogin.sql

    set sqlprompt '&_USER@&_connect_identifier SQL> '
    set pages 1000
```

**② 設定確認**
各DBへ接続してLoginユーザー名、SID名が表示されることを確認

・tokyodb

```shell-session
[oracle@tokyo-db-inst01 admin]$ sqlplus / as sysdba
SYS@tokyodb SQL>
```


・osakadb

```shell-session
[oracle@osaka-db-inst01 OSAKADB]$ sqlplus / as sysdba
SYS@osakadb SQL>
```




## ● 初期化パラメータ確認
初期化パラメータをcreate pfileで確認します

```shell-session
[oracle@tokyo-db-inst01 oracle]$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on 日 2月 2 04:44:50 2020
    Version 19.5.0.0.0

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

    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.5.0.0.0
    に接続されました。

SYS@tokyodb SQL> create pfile='/tmp/inittokyodb.ora' from spfile;

ファイルが作成されました。

SYS@tokyodb SQL> host cat /tmp/inittokyodb.ora
    tokyodb.__data_transfer_cache_size=0
    tokyodb.__db_cache_size=7784628224
    tokyodb.__inmemory_ext_roarea=0
    tokyodb.__inmemory_ext_rwarea=0
    tokyodb.__java_pool_size=0
    tokyodb.__large_pool_size=33554432
    tokyodb.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
    tokyodb.__pga_aggregate_target=3154116608
    tokyodb.__sga_target=9428795392
    tokyodb.__shared_io_pool_size=134217728
    tokyodb.__shared_pool_size=1442840576
    tokyodb.__streams_pool_size=0
    tokyodb.__unified_pga_pool_size=0
    *.audit_file_dest='/u01/app/oracle/admin/tokyodb/adump'
    *.audit_trail='db'
    *.compatible='19.0.0'
    *.control_files='/u01/app/oracle/oradata/TOKYODB/control01.ctl','/u01/app/oracle/oradata/TOKYODB/control02.ctl'
    *.db_block_size=8192
    *.db_name='tokyodb'
    *.diagnostic_dest='/u01/app/oracle'
    *.dispatchers='(PROTOCOL=TCP) (SERVICE=tokyodbXDB)'
    *.enable_pluggable_database=true
    *.filesystemio_options='setall'
    *.local_listener='LISTENER_TOKYODB'
    *.nls_language='JAPANESE'
    *.nls_territory='JAPAN'
    *.open_cursors=300
    *.pga_aggregate_target=2988m
    *.processes=320
    *.remote_login_passwordfile='EXCLUSIVE'
    *.sga_target=8964m
    *.undo_tablespace='UNDOTBS1'
```


# ■ スタンバイ・データベースを作成するためのプライマリ・データベースの準備 

    適切なロギング・モードの有効化
    REDO転送の認証の構成
    REDOデータを受信するためのプライマリ・データベースの構成
    プライマリ・データベースの初期化パラメータの設定
    アーカイブの有効化

# ■ Archive Log ModeとFlashback Database有効化
Data Guardするには、rhice Log ModeとFlashback Databaseが必要です。
初期状態では、Archive Log ModeとFlashback DatabaseとついでにBLOCK CHANGE TRACKINGが有効化されていないのでしときます

## ● Archive Log ModeとFlashback Database有効化
初期化パラメータ・ファイルにDB_RECOVERY_FILE_DESTおよびDB_RECOVERY_FILE_DEST_SIZEパラメータを設定して、
高速リカバリ領域のデフォルトの場所を識別できるようにします。高速リカバリ領域には、次が格納されます。
    REDOログ・ファイルまたはその多重コピー
    制御ファイルまたはその多重コピー
    RMANバックアップ(データファイルのコピー、制御ファイルのコピー、バックアップ・ピース、制御ファイルの自動バックアップ)
    アーカイブ・ログ
    フラッシュバック・ログ

**① Flash_recovery_areaディレクトリ作成**

```shell-session
SYS@tokyodb SQL> host mkdir /u01/app/oracle/flash_recovery_area
SYS@tokyodb SQL> host ls /u01/app/oracle
    admin  audit  cfgtoollogs  checkpoints	crsdata  diag  flash_recovery_area  oradata  product  tfa
```

**② flash_recovery_area用パラメータ設定**

```shell-session
SYS@tokyodb SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE=10G;

    システムが変更されました。

SYS@tokyodb SQL> alter system set DB_RECOVERY_FILE_DEST='/u01/app/oracle/flash_recovery_area' scope=both;

    システムが変更されました。

SYS@tokyodb SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST = '/u01/app/oracle/oradata';

    システムが変更されました。
```

**③ BLOCK CHANGE TRACKING有効化**

```shell-session
SYS@tokyodb SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;

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

**④ DB停止**

```shell-session
SYS@tokyodb SQL> SHUTDOWN IMMEDIATE;
    データベースがクローズされました。
    データベースがディスマウントされました。
    ORACLEインスタンスがシャットダウンされました。
```

**⑤ DB MOUNT**

```shell-session
SYS@tokyodb SQL> STARTUP MOUNT;
    ORACLEインスタンスが起動しました。

    Total System Global Area 9428793296 bytes
    Fixed Size		    9144272 bytes
    Variable Size		 1476395008 bytes
    Database Buffers	 7918845952 bytes
    Redo Buffers		   24408064 bytes
    データベースがマウントされました。
```



**⑥ ARCHIVELOGモード有効化**

```shell-session
SYS@tokyodb SQL> ALTER DATABASE ARCHIVELOG;

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

**⑦ FLASHBACKモード有効化**

```shell-session
SYS@tokyodb SQL> ALTER DATABASE FLASHBACK ON;

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

**⑧ DB OPEN**

```shell-session
SYS@tokyodb SQL> ALTER DATABASE OPEN;

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


**⑨ Archive Log ModeとFlashback Database設定確認**

```shell-session
SYS@tokyodb SQL> select NAME,DB_UNIQUE_NAME,LOG_MODE,FLASHBACK_ON from v$database;

    NAME	  DB_UNIQUE_NAME		 LOG_MODE     FLASHBACK_ON
    --------- ------------------------------ ------------ ------------------
    TOKYODB   tokyodb			 ARCHIVELOG   YES
```

**⑩ BLOCK CHANGE TRACKING設定確認**

```shell-session
SYS@tokyodb SQL> col FILENAME format a100
SYS@tokyodb SQL> SELECT status, filename FROM V$BLOCK_CHANGE_TRACKING;

    STATUS	   FILENAME
    ---------- ----------------------------------------------------------------------------------------------------
    ENABLED    /u01/app/oracle/oradata/TOKYODB/changetracking/o1_mf_h3fj0p28_.chg

```


## ● Archive Log Mode動作確認
Log SwitchしてArchive Log が作成されることを確認

```shell-session
SYS@tokyodb SQL> host ls -la /u01/app/oracle/flash_recovery_area/TOKYODB/archivelog/2020_02_02
    total 153400
    drwxr-x---. 2 oracle dba      4096 Feb  2 05:08 .
    drwxr-x---. 3 oracle dba      4096 Feb  2 05:05 ..

SYS@tokyodb SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

    システムが変更されました。

SYS@tokyodb SQL> host ls -la /u01/app/oracle/flash_recovery_area/TOKYODB/archivelog/2020_02_02
    total 153400
    drwxr-x---. 2 oracle dba      4096 Feb  2 05:08 .
    drwxr-x---. 3 oracle dba      4096 Feb  2 05:05 ..
    -rw-r-----. 1 oracle dba 157072384 Feb  2 05:08 o1_mf_1_12_h3dp9vz1_.arc
```





# ■ Oracle＊Net設定
osakadbとtokyodb双方向でClient/Server接続できるよう設定します。
大阪リージョンと東京リージョン間では、デフォルトでDNS名前解決できないため、それぞれのインスタンス間で名前解決して、Oracle*Net接続できるようにします


## ● 名前解決設定
ここでは、対抗のDBホスト名をIPアドレスからホスト名で解決できるように/etc/hostsファイルを設定します。


・tokyodb

```shell-session
[root@tokyo-db-inst01 opc]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    10.5.0.101	osaka-db-inst01	osaka-db-inst01.publicsubnet01.vcn10500.oraclevcn.com
```

・osakadb

```shell-session
[root@osaka-db-inst01 opc]# cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    10.0.0.101	tokyo-db-inst01	tokyo-db-inst01.publicsubnet01.vcn10000.oraclevcn.com
```

## ● tnsnames.ora 
tokyodbとosakadbそれぞれ、双方向接続できるよう設定します。
また、OSAKADBがnomountでも接続できるように (UR = A) を設定しときます

```shell-session
[oracle@tokyo-db-inst01 admin]$ cat $ORACLE_HOME/network/admin/tnsnames.ora
    # tnsnames.ora Network Configuration File: /u01/app/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
    # Generated by Oracle configuration tools.

    TOKYODB =
    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = tokyo-db-inst01.publicsubnet01.vcn10000.oraclevcn.com)(PORT = 1521))
        (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = tokyodb)
        )
    )

    LISTENER_TOKYODB =
    (ADDRESS = (PROTOCOL = TCP)(HOST = tokyo-db-inst01.publicsubnet01.vcn10000.oraclevcn.com)(PORT = 1521))


    tokyodbpdb =
    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = tokyo-db-inst01)(PORT = 1521))
        (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = tokyodbpdb)
        )
    )

    OSAKADB =
    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = osaka-db-inst01.publicsubnet01.vcn10500.oraclevcn.com)(PORT = 1521))
        (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = osakadb)
        (UR = A)
        )
    )

    osakadbpdb =
    (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = osaka-db-inst01)(PORT = 1521))
        (CONNECT_DATA =
        (SERVER = DEDICATED)
        (SERVICE_NAME = TOKYODBPDB)
        )
    )

```


## ● Firewalld設定
OSのファイアーウォールfilrewalldは、1521が閉じられているため開けときます

**① 事前確認**

```shell-session
[root@osaka-db-inst01 opc]# firewall-cmd --list-all
    public
    target: default
    icmp-block-inversion: no
    interfaces:
    sources:
    services: dhcpv6-client ssh
    ports:
    protocols:
    masquerade: no
    forward-ports:
    source-ports:
    icmp-blocks:
    rich rules:
```

**② 1521/tcp Port設定**

```shell-session
[root@osaka-db-inst01 opc]# firewall-cmd --add-port=1521/tcp --zone=public --permanent
    success
```

**③ 設定反映**

```shell-session
[root@osaka-db-inst01 opc]# firewall-cmd --reload
    success
```

**④ 設定確認**

```shell-session
[root@osaka-db-inst01 opc]# firewall-cmd --list-all
    public
    target: default
    icmp-block-inversion: no
    interfaces:
    sources:
    services: dhcpv6-client ssh
    ports: 1521/tcp
    protocols:
    masquerade: no
    forward-ports:
    source-ports:
    icmp-blocks:
    rich rules:
```

## ● 疎通確認

**・tokyodb -> osakadb接続確認**
osakadbはDB作成されていないので、tnspingで設定確認しときます

```shell-session
[oracle@tokyo-db-inst01 admin]$ tnsping osakadbpdb

    TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 02-2月 -2020 05:48:47

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

    パラメータ・ファイルを使用しました:
    /u01/app/oracle/product/19c/dbhome_1/network/admin/sqlnet.ora


    エイリアスを解決するためにTNSNAMESアダプタを使用しました。
    (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = osaka-db-inst01)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = TOKYODBPDB)))に接続の試行中
    OK (20ミリ秒)
```

**・osakadb -> tokyodb接続確認**

```shell-session
[oracle@osaka-db-inst01 admin]$ sqlplus system/Ora_DB4U@tokyodb

    SQL*Plus: Release 19.0.0.0.0 - Production on 月 2月 3 06:50:01 2020
    Version 19.5.0.0.0

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

    最終正常ログイン時間: 日 2月  02 2020 07:50:50 +00:00


    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.5.0.0.0
    に接続されました。
SYSTEM@tokyodb SQL>
```



# ■ Data Guard設定

## ● 適切なロギング・モードの有効化 
プライマリ・データベースの準備の一部として、３種類あるData Guard構成の使用方法に適したロギング・モードを有効化する必要があります。
・参考: [適切なロギング・モードの有効化](https://docs.oracle.com/cd/E96517_01/sbydb/creating-oracle-data-guard-physical-standby.html#GUID-AE2B1237-57A1-4745-A04C-4246A831A963)
ここでは、 STANDBY NOLOGGING FOR DATA AVAILABILITYを設定します

    1) FORCELOGGING
    2) STANDBY NOLOGGING FOR DATA AVAILABILITY
    3) STANDBY NOLOGGING FOR LOAD PERFORMANCE

```shell-session
SYS@tokyodb SQL> ALTER DATABASE SET STANDBY NOLOGGING FOR DATA AVAILABILITY;

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


## ● REDOデータを受信するためのプライマリ・データベースの構成
STANDBY LOGFILEを作成し、REDOを受信するようにプライマリ・データベースを構成します
プライマリ・データベースは、スタンバイ・ロールに速やかに推移してREDOデータの受信を開始できるようになります。
ここでは、REDOと同じサイズでSTANDBY LOGFILEを３つ作成します

```shell-session
SYS@tokyodb SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/TOKYODB/slog1.rdo') SIZE 200M;

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

SYS@tokyodb SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/TOKYODB/slog2.rdo') SIZE 200M;

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

SYS@tokyodb SQL> ALTER DATABASE ADD STANDBY LOGFILE ('/u01/app/oracle/oradata/TOKYODB/slog3.rdo') SIZE 200M;

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


## ● プライマリ・データベースの初期化パラメータの設定 
プライマリ・データベースでは、データベースがプライマリ・ロールで動作している間のREDO転送サービスを制御する初期化パラメータを定義します。
また、プライマリ・データベースがスタンバイ・ロールに推移したときにREDOデータの受信と適用サービスを制御するパラメータを追加する必要があります。
次の例は、プライマリ・データベースでメンテナンスする、プライマリ・ロールの初期化パラメータを示しています。

    DB_NAME=tokyodb
    DB_UNIQUE_NAME=tokyodb
    LOG_ARCHIVE_CONFIG='DG_CONFIG=(tokyodb,osakadb)'
    LOG_ARCHIVE_DEST_1= 'LOCATION=USE_DB_RECOVERY_FILE_DEST   VALID_FOR=(ALL_LOGFILES,ALL_ROLES)  DB_UNIQUE_NAME=tokyodb'
    LOG_ARCHIVE_DEST_2= 'SERVICE=osakadb ASYNC  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)   DB_UNIQUE_NAME=osakadb'
    LOG_ARCHIVE_DEST_STATE_1=ENABLE
    LOG_ARCHIVE_DEST_STATE_2=ENABLE
    REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
    LOG_ARCHIVE_FORMAT='%t_%s_%r.arc'
    LOG_ARCHIVE_MAX_PROCESSES=2

次の例は、プライマリ・データベース上のその他のスタンバイ・ロールの初期化パラメータを示しています。
これらのパラメータは、プライマリ・データベースがスタンバイ・ロールに推移すると有効になります。

    FAL_SERVER=OSAKADB
    FAL_CLIENT=TOKYODB
    DB_FILE_NAME_CONVERT='OSAKADB','TOKYODB','osakadb','tokyodb'
    LOG_FILE_NAME_CONVERT='OSAKADB','TOKYODB','osakadb','tokyodb'
    STANDBY_FILE_MANAGEMENT=AUTO


**① Data Gaurd必要パラメータ設定**
 
```shell-session
SYS@tokyodb SQL> alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(tokyodb,osakadb)' scope=spfile;
SYS@tokyodb SQL> alter system set LOG_ARCHIVE_DEST_1= 'LOCATION=USE_DB_RECOVERY_FILE_DEST   VALID_FOR=(ALL_LOGFILES,ALL_ROLES)  DB_UNIQUE_NAME=tokyodb' scope=spfile;
SYS@tokyodb SQL> alter system set LOG_ARCHIVE_DEST_2= 'SERVICE=osakadb ASYNC  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)   DB_UNIQUE_NAME=osakadb' scope=spfile;
SYS@tokyodb SQL> alter system set LOG_ARCHIVE_DEST_STATE_1=ENABLE scope=spfile;
SYS@tokyodb SQL> alter system set LOG_ARCHIVE_DEST_STATE_2=ENABLE scope=spfile;
SYS@tokyodb SQL> alter system set REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE scope=spfile;
SYS@tokyodb SQL> alter system set LOG_ARCHIVE_FORMAT='%t_%s_%r.arc' scope=spfile;
SYS@tokyodb SQL> alter system set LOG_ARCHIVE_MAX_PROCESSES=2 scope=spfile;
SYS@tokyodb SQL> alter system set FAL_SERVER=OSAKADB scope=spfile;
SYS@tokyodb SQL> alter system set FAL_CLIENT=TOKYODB scope=spfile;
SYS@tokyodb SQL> alter system set DB_FILE_NAME_CONVERT='OSAKADB','TOKYODB','osakadb','tokyodb' scope=spfile;
SYS@tokyodb SQL> alter system set LOG_FILE_NAME_CONVERT='OSAKADB','TOKYODB','osakadb','tokyodb' scope=spfile;
SYS@tokyodb SQL> alter system set STANDBY_FILE_MANAGEMENT=AUTO scope=spfile;

    システムが変更されました。
```

**② 設定反映**
DBを再起動して設定を反映

```shell-session
SYS@tokyodb SQL> shutdown immediate
    データベースがクローズされました。
    データベースがディスマウントされました。
    ORACLEインスタンスがシャットダウンされました。

SYS@tokyodb SQL>
SYS@tokyodb SQL> startup
    ORACLEインスタンスが起動しました。

    Total System Global Area 9428793296 bytes
    Fixed Size		    9144272 bytes
    Variable Size		 1476395008 bytes
    Database Buffers	 7918845952 bytes
    Redo Buffers		   24408064 bytes
    データベースがマウントされました。
    データベースがオープンされました。
```

**③ 設定パラメーター確認**
設定されたパラメータを Create pfileで確認

```shell-session
SYS@tokyodb SQL> create pfile='/tmp/inittokyo2.ora' from spfile;

    ファイルが作成されました。

SYS@tokyodb SQL> host cat /tmp/inittokyo2.ora
    tokyodb.__data_transfer_cache_size=0
    tokyodb.__db_cache_size=7784628224
    tokyodb.__inmemory_ext_roarea=0
    tokyodb.__inmemory_ext_rwarea=0
    tokyodb.__java_pool_size=0
    tokyodb.__large_pool_size=33554432
    tokyodb.__oracle_base='/u01/app/oracle'#ORACLE_BASE set from environment
    tokyodb.__pga_aggregate_target=3154116608
    tokyodb.__sga_target=9428795392
    tokyodb.__shared_io_pool_size=134217728
    tokyodb.__shared_pool_size=1442840576
    tokyodb.__streams_pool_size=0
    tokyodb.__unified_pga_pool_size=0
    *.audit_file_dest='/u01/app/oracle/admin/tokyodb/adump'
    *.audit_trail='db'
    *.compatible='19.0.0'
    *.control_files='/u01/app/oracle/oradata/TOKYODB/control01.ctl','/u01/app/oracle/oradata/TOKYODB/control02.ctl'
    *.db_block_size=8192
    *.db_create_file_dest='/u01/app/oracle/oradata'
    *.db_file_name_convert='OSAKADB','TOKYODB','osakadb','tokyodb'
    *.db_name='tokyodb'
    *.db_recovery_file_dest_size=10737418240
    *.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
    *.diagnostic_dest='/u01/app/oracle'
    *.dispatchers='(PROTOCOL=TCP) (SERVICE=tokyodbXDB)'
    *.enable_pluggable_database=true
    *.fal_client='TOKYODB'
    *.fal_server='OSAKADB'
    *.filesystemio_options='setall'
    *.local_listener='LISTENER_TOKYODB'
    *.log_archive_config='DG_CONFIG=(tokyodb,osakadb)'
    *.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST   VALID_FOR=(ALL_LOGFILES,ALL_ROLES)  DB_UNIQUE_NAME=tokyodb'
    *.log_archive_dest_2='SERVICE=osakadb ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=osakadb'
    *.log_archive_dest_state_1='ENABLE'
    *.log_archive_dest_state_2='ENABLE'
    *.log_archive_format='%t_%s_%r.arc'
    *.log_archive_max_processes=2
    *.log_file_name_convert='OSAKADB','TOKYODB','osakadb','tokyodb'
    *.nls_language='JAPANESE'
    *.nls_territory='JAPAN'
    *.open_cursors=300
    *.pga_aggregate_target=2988m
    *.processes=320
    *.remote_login_passwordfile='EXCLUSIVE'
    *.sga_target=8964m
    *.standby_file_management='AUTO'
    *.undo_tablespace='UNDOTBS1'
```



# ■ フィジカル・スタンバイ・データベースの作成
ここからは、osakadbの設定をします。


## ● スタンバイ・データベース用の制御ファイルの作成 
tokyodbから、スタンバイ・データベース用の制御ファイルを作成し、これをosakadbの制御ファイルとして使用します

```shell-session
SYS@tokyodb SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/osakadb_ctlcontrol01.ctl';

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


[root@tokyo-db-inst01 ~]#  scp -i id_rsa /tmp/osakadb_ctlcontrol01.ctl opc@osaka-db-inst01:/tmp/
    osakadb_ctlcontrol01.ctl
```


## ● スタンバイ・データベース用のパラメータ・ファイルの作成 
作成したプライマリDBの初期化パラメータからスタンバイDB用初期化パラメータを作成します。

**① osakadb用初期化パラメーター作成**

```shell-session
SYS@tokyodb SQL> CREATE PFILE='/tmp/initosakadb.ora' FROM SPFILE;

    ファイルが作成されました。
```


**② osakadb用初期化パラメーター設定**

プライマリDB(tokyodb,TOKYODB) とスタンバイDB(osakadb,OSAKADB)の文字列を入れ替えます。
ただし、DB_NAME=tokyodb だけはそのままにしておきます

・変更前

```shell-session
[oracle@tokyo-db-inst01 TOKYODB]$ cat /tmp/initosakadb.ora
    *.audit_file_dest='/u01/app/oracle/admin/tokyodb/adump'
    *.audit_trail='db'
    *.compatible='19.0.0'
    *.control_files='/u01/app/oracle/oradata/TOKYODB/control01.ctl','/u01/app/oracle/oradata/TOKYODB/control02.ctl'
    *.db_block_size=8192
    *.db_file_name_convert='OSAKADB','TOKYODB','osakadb','tokyodb'
    *.db_name='tokyodb'
    *.db_recovery_file_dest_size=10737418240
    *.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
    *.diagnostic_dest='/u01/app/oracle'
    *.dispatchers='(PROTOCOL=TCP) (SERVICE=tokyodbXDB)'
    *.enable_pluggable_database=true
    *.fal_client='TOKYODB'
    *.fal_server='OSAKADB'
    *.filesystemio_options='setall'
    *.local_listener='LISTENER_TOKYODB'
    *.log_archive_config='DG_CONFIG=(tokyodb,osakadb)'
    *.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST   VALID_FOR=(ALL_LOGFILES,ALL_ROLES)  DB_UNIQUE_NAME=tokyodb'
    *.log_archive_dest_2='SERVICE=osakadb ASYNC  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)   DB_UNIQUE_NAME=osakadb'
    *.log_archive_dest_state_1='ENABLE'
    *.log_archive_dest_state_2='ENABLE'
    *.log_archive_format='%t_%s_%r.arc'
    *.log_archive_max_processes=2
    *.log_file_name_convert='OSAKADB','TOKYODB','osakadb','tokyodb'
    *.nls_language='JAPANESE'
    *.nls_territory='JAPAN'
    *.open_cursors=300
    *.pga_aggregate_target=2988m
    *.processes=320
    *.remote_login_passwordfile='EXCLUSIVE'
    *.sga_target=8964m
    *.standby_file_management='AUTO'
    *.undo_tablespace='UNDOTBS1'
```


・変更後
DB_UNIQUE_NAME='osakadb' を一番下に設定しておくと一番下のパラメータが有効化されるので２重登録しても間違えなくてすみます

```shell-session
[oracle@tokyo-db-inst01 TOKYODB]$ cat /tmp/initosakadb.ora
    *.audit_file_dest='/u01/app/oracle/admin/osakadb/adump'
    *.audit_trail='db'
    *.compatible='19.0.0'
    *.control_files='/u01/app/oracle/oradata/OSAKADB/control01.ctl','/u01/app/oracle/oradata/OSAKADB/control02.ctl'
    *.db_block_size=8192
    *.db_file_name_convert='TOKYODB','OSAKADB','tokyodb','osakadb'
    *.db_name='osakadb'
    *.db_recovery_file_dest_size=10737418240
    *.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
    *.diagnostic_dest='/u01/app/oracle'
    *.dispatchers='(PROTOCOL=TCP) (SERVICE=osakadbXDB)'
    *.enable_pluggable_database=true
    *.fal_client='OSAKADB'
    *.fal_server='TOKYODB'
    *.filesystemio_options='setall'
    *.local_listener='LISTENER_OSAKADB'
    *.log_archive_config='DG_CONFIG=(osakadb,tokyodb)'
    *.log_archive_dest_1='LOCATION=USE_DB_RECOVERY_FILE_DEST   VALID_FOR=(ALL_LOGFILES,ALL_ROLES)  DB_UNIQUE_NAME=osakadb'
    *.log_archive_dest_2='SERVICE=osakadb ASYNC  VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)   DB_UNIQUE_NAME=tokyodb'
    *.log_archive_dest_state_1='ENABLE'
    *.log_archive_dest_state_2='ENABLE'
    *.log_archive_format='%t_%s_%r.arc'
    *.log_archive_max_processes=2
    *.log_file_name_convert='TOKYODB','OSAKADB','tokyodb','osakadb'
    *.nls_language='JAPANESE'
    *.nls_territory='JAPAN'
    *.open_cursors=300
    *.pga_aggregate_target=2988m
    *.processes=320
    *.remote_login_passwordfile='EXCLUSIVE'
    *.sga_target=8964m
    *.standby_file_management='AUTO'
    *.undo_tablespace='UNDOTBS1'
    DB_NAME='tokyodb'
    DB_UNIQUE_NAME='osakadb'
```


**③ osakadbへ転送**

```shell-session
[root@tokyo-db-inst01 ~]#  scp -i id_rsa -p  /tmp/initosakadb.ora opc@osaka-db-inst01:/tmp/
    initosakadb.ora　　　   100% 1871   216.9KB/s   00:00
```



**④ スタンバイDB spfile作成**
転送したpfileをspfileへ変換して配置

```shell-session
SYS@osakadb SQL>  create spfile from pfile'/tmp/initosakadb.ora' ;
SYS@osakadb SQL>  host ls -la $ORACLE_HOME/dbs
    total 18332
    drwxr-xr-x.  2 oracle oinstall     4096 Feb  2 15:25 .
    drwxr-xr-x. 72 oracle oinstall     4096 Feb  2 15:15 ..
    -rw-r--r--.  1 oracle oinstall     3079 May 14  2015 init.ora
    -rw-r-----.  1 oracle oinstall     2048 Feb  2 11:31 orapwosakadb
    -rw-r-----.  1 oracle dba          4608 Feb  2 15:15 spfileosakadb.ora
```


**⑤ スタンバイDB 事前準備**

スタンバイDBを起動するには、事前に必要なディレクトリを作成しておきます。

・flash_recovery_areaディレクトリ作成

```shell-session
[oracle@osaka-db-inst01 ~]$ mkdir /u01/app/oracle/flash_recovery_area
```


**⑥ スタンバイDB Startup Nomount**

```shell-session
SYS@osakadb SQL> startup nomount ';
    ORACLEインスタンスが起動しました。

    Total System Global Area 9428793296 bytes
    Fixed Size		    9144272 bytes
    Variable Size		 1476395008 bytes
    Database Buffers	 7918845952 bytes
    Redo Buffers		   24408064 bytes
```


**⑥ リスナーへ起動DB情報登録**
リスナーへの起動DB情報はDB起動直後では登録されないため、手動登録しときます


```shell-session
SYS@osakadb SQL> alter system register;

    システムが変更されました。
```


**⑦ リスナー情報確認**

```shell-session
[oracle@osaka-db-inst01 admin]$ lsnrctl stat

    LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 02-2月 -2020 08:04:16

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

    (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=osaka-db-inst01.publicsubnet01.vcn10500.oraclevcn.com)(PORT=1521)))に接続中
    リスナーのステータス
    ------------------------
    別名                      LISTENER
    バージョン                TNSLSNR for Linux: Version 19.0.0.0.0 - Production
    開始日                    02-2月 -2020 08:01:43
    稼働時間                  0 日 0 時間 2 分 32 秒
    トレース・レベル          off
    セキュリティ              ON: Local OS Authentication
    SNMP                      OFF
    パラメータ・ファイル      /u01/app/oracle/product/19c/dbhome_1/network/admin/listener.ora
    ログ・ファイル            /u01/app/oracle/diag/tnslsnr/osaka-db-inst01/listener/alert/log.xml
    リスニング・エンドポイントのサマリー...
    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=osaka-db-inst01)(PORT=1521)))
    (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
    サービスのサマリー...
    サービス"osakadb"には、1件のインスタンスがあります。
    インスタンス"osakadb"、状態BLOCKEDには、このサービスに対する1件のハンドラがあります...
    コマンドは正常に終了しました。
```




## ● osakadb作成
tokyodbからRMANでosakadbのスタンバイDBを作成します

**① RMANでDB複製**

```shell-session
[oracle@tokyo-db-inst01 admin]$ rman target sys/Ora_DB4U@tokyodb auxiliary sys/Ora_DB4U@osakadb

    Recovery Manager: Release 19.0.0.0.0 - Production on 日 2月 2 09:20:24 2020
    Version 19.5.0.0.0

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

    ターゲット・データベース: TOKYODB (DBID=2384963737)に接続されました
    補助データベース: TOKYODBに接続されました(マウントされていません)

RMAN> duplicate target database for standby from active database;

    Duplicate Dbを20-02-02で開始しています
    リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
    チャネル: ORA_AUX_DISK_1が割り当てられました
    チャネルORA_AUX_DISK_1: SID=135 デバイス・タイプ=DISK

    メモリー・スクリプトの内容:
    {
    backup as copy reuse
    passwordfile auxiliary format  '/u01/app/oracle/product/19c/dbhome_1/dbs/orapwosakadb'   ;
    }
    メモリー・スクリプトを実行しています

    backupを20-02-02で開始しています
    チャネル: ORA_DISK_1が割り当てられました
    チャネルORA_DISK_1: SID=24 デバイス・タイプ=DISK
    backupを20-02-02で終了しました

    メモリー・スクリプトの内容:
    {
    restore clone from service  'tokyodb' standby controlfile;
    }
    メモリー・スクリプトを実行しています

    restoreを20-02-02で開始しています
    チャネルORA_AUX_DISK_1の使用

    チャネルORA_AUX_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
    チャネルORA_AUX_DISK_1: サービスtokyodbのネットワーク・バックアップ・セットを使用しています
    チャネルORA_AUX_DISK_1: 制御ファイルをリストア中です
    チャネルORA_AUX_DISK_1: リストアが完了しました。経過時間: 00:00:02
    出力ファイル名=/u01/app/oracle/oradata/OSAKADB/control01.ctl
    出力ファイル名=/u01/app/oracle/oradata/OSAKADB/control02.ctl
    restoreを20-02-02で終了しました

    メモリー・スクリプトの内容:
    {
    sql clone 'alter database mount standby database';
    }
    メモリー・スクリプトを実行しています

    SQL文: alter database mount standby database

    メモリー・スクリプトの内容:
    {
    set newname for tempfile  1 to
    "/u01/app/oracle/oradata/OSAKADB/temp01.dbf";
    set newname for tempfile  2 to
    "/u01/app/oracle/oradata/OSAKADB/pdbseed/temp012020-02-02_03-58-25-069-AM.dbf";
    set newname for tempfile  3 to
    "/u01/app/oracle/oradata/OSAKADB/tokyodbpdb/temp01.dbf";
    switch clone tempfile all;
    set newname for datafile  1 to
    "/u01/app/oracle/oradata/OSAKADB/system01.dbf";
    set newname for datafile  3 to
    "/u01/app/oracle/oradata/OSAKADB/sysaux01.dbf";
    set newname for datafile  4 to
    "/u01/app/oracle/oradata/OSAKADB/undotbs01.dbf";
    set newname for datafile  5 to
    "/u01/app/oracle/oradata/OSAKADB/pdbseed/system01.dbf";
    set newname for datafile  6 to
    "/u01/app/oracle/oradata/OSAKADB/pdbseed/sysaux01.dbf";
    set newname for datafile  7 to
    "/u01/app/oracle/oradata/OSAKADB/users01.dbf";
    set newname for datafile  8 to
    "/u01/app/oracle/oradata/OSAKADB/pdbseed/undotbs01.dbf";
    set newname for datafile  9 to
    "/u01/app/oracle/oradata/OSAKADB/tokyodbpdb/system01.dbf";
    set newname for datafile  10 to
    "/u01/app/oracle/oradata/OSAKADB/tokyodbpdb/sysaux01.dbf";
    set newname for datafile  11 to
    "/u01/app/oracle/oradata/OSAKADB/tokyodbpdb/undotbs01.dbf";
    set newname for datafile  12 to
    "/u01/app/oracle/oradata/OSAKADB/tokyodbpdb/users01.dbf";
    restore
    from  nonsparse   from service
    'tokyodb'   clone database
    ;
    sql 'alter system archive log current';
    }
    メモリー・スクリプトを実行しています

    実行コマンド: SET NEWNAME

    実行コマンド: SET NEWNAME

    実行コマンド: SET NEWNAME

    制御ファイルで一時ファイル1の名前を/u01/app/oracle/oradata/OSAKADB/temp01.dbfに変更しました
    制御ファイルで一時ファイル2の名前を/u01/app/oracle/oradata/OSAKADB/pdbseed/temp012020-02-02_03-58-25-069-AM.dbfに変更しました
    制御ファイルで一時ファイル3の名前を/u01/app/oracle/oradata/OSAKADB/tokyodbpdb/temp01.dbfに変更しました

    実行コマンド: SET NEWNAME

    実行コマンド: SET NEWNAME

    実行コマンド: SET NEWNAME

    実行コマンド: SET NEWNAME

    実行コマンド: SET NEWNAME

    実行コマンド: SET NEWNAME

    実行コマンド: SET NEWNAME

    実行コマンド: SET NEWNAME

    実行コマンド: SET NEWNAME

    実行コマンド: SET NEWNAME

    実行コマンド: SET NEWNAME

    restoreを20-02-02で開始しています
    チャネルORA_AUX_DISK_1の使用

    チャネルORA_AUX_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
    チャネルORA_AUX_DISK_1: サービスtokyodbのネットワーク・バックアップ・セットを使用しています
    チャネルORA_AUX_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
    チャネルORA_AUX_DISK_1: データファイル00001を/u01/app/oracle/oradata/OSAKADB/system01.dbfにリストアしています
    チャネルORA_AUX_DISK_1: リストアが完了しました。経過時間: 00:00:25
    チャネルORA_AUX_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
    チャネルORA_AUX_DISK_1: サービスtokyodbのネットワーク・バックアップ・セットを使用しています
    チャネルORA_AUX_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
    チャネルORA_AUX_DISK_1: データファイル00003を/u01/app/oracle/oradata/OSAKADB/sysaux01.dbfにリストアしています
    チャネルORA_AUX_DISK_1: リストアが完了しました。経過時間: 00:00:08
    チャネルORA_AUX_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
    チャネルORA_AUX_DISK_1: サービスtokyodbのネットワーク・バックアップ・セットを使用しています
    チャネルORA_AUX_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
    チャネルORA_AUX_DISK_1: データファイル00004を/u01/app/oracle/oradata/OSAKADB/undotbs01.dbfにリストアしています
    チャネルORA_AUX_DISK_1: リストアが完了しました。経過時間: 00:00:07
    チャネルORA_AUX_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
    チャネルORA_AUX_DISK_1: サービスtokyodbのネットワーク・バックアップ・セットを使用しています
    チャネルORA_AUX_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
    チャネルORA_AUX_DISK_1: データファイル00005を/u01/app/oracle/oradata/OSAKADB/pdbseed/system01.dbfにリストアしています
    チャネルORA_AUX_DISK_1: リストアが完了しました。経過時間: 00:00:03
    チャネルORA_AUX_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
    チャネルORA_AUX_DISK_1: サービスtokyodbのネットワーク・バックアップ・セットを使用しています
    チャネルORA_AUX_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
    チャネルORA_AUX_DISK_1: データファイル00006を/u01/app/oracle/oradata/OSAKADB/pdbseed/sysaux01.dbfにリストアしています
    チャネルORA_AUX_DISK_1: リストアが完了しました。経過時間: 00:00:03
    チャネルORA_AUX_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
    チャネルORA_AUX_DISK_1: サービスtokyodbのネットワーク・バックアップ・セットを使用しています
    チャネルORA_AUX_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
    チャネルORA_AUX_DISK_1: データファイル00007を/u01/app/oracle/oradata/OSAKADB/users01.dbfにリストアしています
    チャネルORA_AUX_DISK_1: リストアが完了しました。経過時間: 00:00:01
    チャネルORA_AUX_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
    チャネルORA_AUX_DISK_1: サービスtokyodbのネットワーク・バックアップ・セットを使用しています
    チャネルORA_AUX_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
    チャネルORA_AUX_DISK_1: データファイル00008を/u01/app/oracle/oradata/OSAKADB/pdbseed/undotbs01.dbfにリストアしています
    チャネルORA_AUX_DISK_1: リストアが完了しました。経過時間: 00:00:01
    チャネルORA_AUX_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
    チャネルORA_AUX_DISK_1: サービスtokyodbのネットワーク・バックアップ・セットを使用しています
    チャネルORA_AUX_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
    チャネルORA_AUX_DISK_1: データファイル00009を/u01/app/oracle/oradata/OSAKADB/tokyodbpdb/system01.dbfにリストアしています
    チャネルORA_AUX_DISK_1: リストアが完了しました。経過時間: 00:00:03
    チャネルORA_AUX_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
    チャネルORA_AUX_DISK_1: サービスtokyodbのネットワーク・バックアップ・セットを使用しています
    チャネルORA_AUX_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
    チャネルORA_AUX_DISK_1: データファイル00010を/u01/app/oracle/oradata/OSAKADB/tokyodbpdb/sysaux01.dbfにリストアしています
    チャネルORA_AUX_DISK_1: リストアが完了しました。経過時間: 00:00:04
    チャネルORA_AUX_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
    チャネルORA_AUX_DISK_1: サービスtokyodbのネットワーク・バックアップ・セットを使用しています
    チャネルORA_AUX_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
    チャネルORA_AUX_DISK_1: データファイル00011を/u01/app/oracle/oradata/OSAKADB/tokyodbpdb/undotbs01.dbfにリストアしています
    チャネルORA_AUX_DISK_1: リストアが完了しました。経過時間: 00:00:03
    チャネルORA_AUX_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
    チャネルORA_AUX_DISK_1: サービスtokyodbのネットワーク・バックアップ・セットを使用しています
    チャネルORA_AUX_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
    チャネルORA_AUX_DISK_1: データファイル00012を/u01/app/oracle/oradata/OSAKADB/tokyodbpdb/users01.dbfにリストアしています
    チャネルORA_AUX_DISK_1: リストアが完了しました。経過時間: 00:00:01
    restoreを20-02-02で終了しました

    SQL文: alter system archive log current

    メモリー・スクリプトの内容:
    {
    switch clone datafile all;
    }
    メモリー・スクリプトを実行しています

    データファイル1はデータファイル・コピーに切り替えられました
    入力データファイル・コピー レコードID=5 スタンプ=1031304112 ファイル名=/u01/app/oracle/oradata/OSAKADB/system01.dbf
    データファイル3はデータファイル・コピーに切り替えられました
    入力データファイル・コピー レコードID=6 スタンプ=1031304112 ファイル名=/u01/app/oracle/oradata/OSAKADB/sysaux01.dbf
    データファイル4はデータファイル・コピーに切り替えられました
    入力データファイル・コピー レコードID=7 スタンプ=1031304112 ファイル名=/u01/app/oracle/oradata/OSAKADB/undotbs01.dbf
    データファイル5はデータファイル・コピーに切り替えられました
    入力データファイル・コピー レコードID=8 スタンプ=1031304112 ファイル名=/u01/app/oracle/oradata/OSAKADB/pdbseed/system01.dbf
    データファイル6はデータファイル・コピーに切り替えられました
    入力データファイル・コピー レコードID=9 スタンプ=1031304112 ファイル名=/u01/app/oracle/oradata/OSAKADB/pdbseed/sysaux01.dbf
    データファイル7はデータファイル・コピーに切り替えられました
    入力データファイル・コピー レコードID=10 スタンプ=1031304112 ファイル名=/u01/app/oracle/oradata/OSAKADB/users01.dbf
    データファイル8はデータファイル・コピーに切り替えられました
    入力データファイル・コピー レコードID=11 スタンプ=1031304112 ファイル名=/u01/app/oracle/oradata/OSAKADB/pdbseed/undotbs01.dbf
    データファイル9はデータファイル・コピーに切り替えられました
    入力データファイル・コピー レコードID=12 スタンプ=1031304112 ファイル名=/u01/app/oracle/oradata/OSAKADB/tokyodbpdb/system01.dbf
    データファイル10はデータファイル・コピーに切り替えられました
    入力データファイル・コピー レコードID=13 スタンプ=1031304112 ファイル名=/u01/app/oracle/oradata/OSAKADB/tokyodbpdb/sysaux01.dbf
    データファイル11はデータファイル・コピーに切り替えられました
    入力データファイル・コピー レコードID=14 スタンプ=1031304112 ファイル名=/u01/app/oracle/oradata/OSAKADB/tokyodbpdb/undotbs01.dbf
    データファイル12はデータファイル・コピーに切り替えられました
    入力データファイル・コピー レコードID=15 スタンプ=1031304112 ファイル名=/u01/app/oracle/oradata/OSAKADB/tokyodbpdb/users01.dbf
    Duplicate Dbを20-02-02で終了しました
```



## ● スタンバイ制御ファイル作成
プライマリDBから、スタンバイ制御ファイルを作成し、スタンバイDBで使用するように配置します


**① スタンバイ制御ファイル作成**

```shell-session
RMAN> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/tokyo.ctl';

    文が処理されました
```


**② プライマリ・システムからスタンバイ・システムへファイルを転送**

```shell-session
[root@tokyo-db-inst01 tmp]# scp -i ~/id_rsa -p /tmp/tokyo.ctl opc@168.138.46.251:/tmp/
    tokyo.ctl　       100%   18MB  65.5MB/s   00:00

[root@osaka-db-inst01 oradata]# chown oracle:dba /tmp/tokyo.ctl
```


**③ スタンバイ制御ファイル配置**
初期化パラメータ control_filesと同じ数分、同じ場所へ配置します

```shell-session
[root@osaka-db-inst01 oradata]# cp -p /tmp/tokyo.ctl /u01/app/oracle/oradata/OSAKADB/control01.ctl
[root@osaka-db-inst01 oradata]# cp -p /tmp/tokyo.ctl /u01/app/oracle/oradata/OSAKADB/control02.ctl

[root@osaka-db-inst01 oradata]# ls -la /u01/app/oracle/oradata/OSAKADB/contro*
    -rw-r-----. 1 oracle dba 18726912  2月  2 11:36 /u01/app/oracle/oradata/OSAKADB/control01.ctl
    -rw-r-----. 1 oracle dba 18726912  2月  2 11:36 /u01/app/oracle/oradata/OSAKADB/control02.ctl
```


## ●フィジカル・スタンバイ・データベース起動 


**① osakadbをMOUNT**

```shell-session
[oracle@osaka-db-inst01 OSAKADB]$ sqlplus / as sysdba

    SQL*Plus: Release 19.0.0.0.0 - Production on 日 2月 2 11:44:54 2020
    Version 19.5.0.0.0

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

    Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
    Version 19.5.0.0.0
    に接続されました。

SYS@osakadb SQL> shutdown abort
    ORACLEインスタンスがシャットダウンされました。

SYS@osakadb SQL> startup mount
    ORACLEインスタンスが起動しました。

    Total System Global Area 9428793296 bytes
    Fixed Size		    9144272 bytes
    Variable Size		 1476395008 bytes
    Database Buffers	 7918845952 bytes
    Redo Buffers		   24408064 bytes
    データベースがマウントされました。
```


**② REDO Applyの開始**

```shell-session
SYS@osakadb SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;
    データベースが変更されました。
```



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


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

```shell-session
SYS@tokyodb 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
    gap manager			  1	    36 IDLE
    redo transport timer		  0	     0 IDLE
    archive local			  0	     0 IDLE
    async ORL multi 		  1	    36 WRITING
    heartbeat redo informer 	  0	     0 IDLE
    archive redo			  0	     0 IDLE
    FAL announce			  0	     0 IDLE
    archive redo			  1	    35 CLOSING
    controlfile update		  0	     0 IDLE

    11行が選択されました。
````

**② Log Switch 実行**

```shell-session
SYS@tokyodb SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

    システムが変更されました。

SYS@tokyodb SQL> /
    システムが変更されました。

SYS@tokyodb SQL> /
    システムが変更されました。

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

 SEQUENCE# FIRST_TI NEXT_TIM APPLIED
---------- -------- -------- ---------
	12 20-02-02 20-02-02 YES
	13 20-02-02 20-02-02 YES
	・・・
	38 20-02-02 20-02-02 YES
	38 20-02-02 20-02-02 YES
	39 20-02-02 20-02-02 YES
	39 20-02-02 20-02-02 YES
```


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

```shell-session
SYS@tokyodb 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
    gap manager			  1	    39 IDLE
    redo transport timer		  0	     0 IDLE
    archive local			  0	     0 IDLE
    async ORL multi 		  1	    39 WRITING
    heartbeat redo informer 	  0	     0 IDLE
    archive redo			  0	     0 IDLE
    archive redo			  1	    38 CLOSING
    controlfile update		  0	     0 IDLE

    10行が選択されました。
```

・スタンバイへ適用されているarchive redo SEQUENCE#をV$ARCHIVED_LOGで確認

```shell-session
SYS@osakadb SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

 SEQUENCE# FIRST_TI NEXT_TIM APPLIED
---------- -------- -------- ---------
	30 20-02-02 20-02-02 YES
	31 20-02-02 20-02-02 YES
	32 20-02-02 20-02-02 YES
	33 20-02-02 20-02-02 YES
	34 20-02-02 20-02-02 YES
	35 20-02-02 20-02-02 YES
	36 20-02-02 20-02-02 YES
	37 20-02-02 20-02-02 YES
	38 20-02-02 20-02-02 YES
	39 20-02-02 20-02-02 YES
````


**④ Log Switch 実行したときの Alert Log確認**
・tokyodb Alert Log

```shell-session
[oracle@tokyo-db-inst01 oracle]$ tail -f /u01/app/oracle/diag/rdbms/tokyodb/tokyodb/trace/alert_tokyodb.log
    ALTER SYSTEM ARCHIVE LOG
    2020-02-02T12:09:16.144759+00:00
    Thread 1 advanced to log sequence 37 (LGWR switch)
    Current log# 1 seq# 37 mem# 0: /u01/app/oracle/oradata/TOKYODB/redo01.log
    2020-02-02T12:09:16.214602+00:00
    NET  (PID:8796): Archived Log entry 31 added for T-1.S-36 ID 0x8e281599 LAD:1
    2020-02-02T12:09:16.347855+00:00
    TT02 (PID:8807): SRL selected for T-1.S-37 for LAD:2
    2020-02-02T12:09:17.291780+00:00
    ALTER SYSTEM ARCHIVE LOG
    2020-02-02T12:09:17.304383+00:00
    Thread 1 cannot allocate new log, sequence 38
    Checkpoint not complete
    Current log# 1 seq# 37 mem# 0: /u01/app/oracle/oradata/TOKYODB/redo01.log
    2020-02-02T12:09:18.925992+00:00
    Thread 1 advanced to log sequence 38 (LGWR switch)
    Current log# 2 seq# 38 mem# 0: /u01/app/oracle/oradata/TOKYODB/redo02.log
    2020-02-02T12:09:18.997710+00:00
    NET  (PID:8796): Archived Log entry 33 added for T-1.S-37 ID 0x8e281599 LAD:1
    2020-02-02T12:09:19.004989+00:00
    ALTER SYSTEM ARCHIVE LOG
    2020-02-02T12:09:19.053334+00:00
    Thread 1 advanced to log sequence 39 (LGWR switch)
    Current log# 3 seq# 39 mem# 0: /u01/app/oracle/oradata/TOKYODB/redo03.log
    2020-02-02T12:09:19.131073+00:00
    TT02 (PID:8807): SRL selected for T-1.S-39 for LAD:2
    2020-02-02T12:09:19.133549+00:00
    NET  (PID:8796): Archived Log entry 35 added for T-1.S-38 ID 0x8e281599 LAD:1
    2020-02-02T12:09:19.315747+00:00
    ARC1 (PID:8805): SRL selected for T-1.S-38 for LAD:2
```



・osakadb Alert Log

```shell-session
[root@osaka-db-inst01 trace]# tail -f /u01/app/oracle/diag/rdbms/osakadb/osakadb/trace/alert_osakadb.log
    020-02-02T12:09:16.343387+00:00
    rfs (PID:8816): Selected LNO:5 for T-1.S-37 dbid 2384963737 branch 1031284251
    2020-02-02T12:09:16.391802+00:00
    ARC0 (PID:8738): Archived Log entry 7 added for T-1.S-36 ID 0x8e281599 LAD:1
    2020-02-02T12:09:16.413934+00:00
    PR00 (PID:8769): Media Recovery Waiting for T-1.S-37 (in transit)
    2020-02-02T12:09:16.426051+00:00
    Recovery of Online Redo Log: Thread 1 Group 5 Seq 37 Reading mem 0
    Mem# 0: /u01/app/oracle/oradata/OSAKADB/slog2.rdo
    2020-02-02T12:09:19.126588+00:00
    rfs (PID:8816): Selected LNO:4 for T-1.S-39 dbid 2384963737 branch 1031284251
    2020-02-02T12:09:19.203522+00:00
    ARC0 (PID:8738): Archived Log entry 8 added for T-1.S-37 ID 0x8e281599 LAD:1
    2020-02-02T12:09:19.230324+00:00
    PR00 (PID:8769): Media Recovery Waiting for T-1.S-38
    2020-02-02T12:09:19.311491+00:00
    rfs (PID:8893): Selected LNO:5 for T-1.S-38 dbid 2384963737 branch 1031284251
    2020-02-02T12:09:19.457898+00:00
    ARC0 (PID:8738): Archived Log entry 9 added for T-1.S-38 ID 0x8e281599 LAD:1
    2020-02-02T12:09:20.378674+00:00
    PR00 (PID:8769): Media Recovery Log /u01/app/oracle/flash_recovery_area/OSAKADB/archivelog/2020_02_02/o1_mf_1_38_h3fgzhf4_.arc
    PR00 (PID:8769): Media Recovery Waiting for T-1.S-39 (in transit)
    2020-02-02T12:09:20.508528+00:00
    Recovery of Online Redo Log: Thread 1 Group 4 Seq 39 Reading mem 0
    Mem# 0: /u01/app/oracle/oradata/OSAKADB/slog1.rdo
```



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


**① スタンバイDBをOPENしてRedo Apply**

```shell-session
SYS@osakadb SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

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

SYS@osakadb SQL> ALTER DATABASE OPEN;

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

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

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

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

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


**② プライマリDBでテーブル作成**

```shell-session
SYS@tokyodb SQL> CREATE TABLE test_table1 (id number(3), name varchar2(10)) TABLESPACE USERS;
	Table created.

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

SYS@tokyodb SQL> select * from test_table1;

            ID NAME
    ---------- ----------
              1 AAA

```


**③ スタンバイDBでプライマリDBのトランザクション伝搬確認**
スタンバイDBをOPENして、プライマリDB側で作成したテーブルtest_table1が伝搬されてSELECTできることを確認

```shell-session
SYS@osakadb SQL> select * from test_table1;

        ID NAME
    ---------- ----------
        1 AAA
```





# ■ SWITCH OVER
WITCH OVERしてtokyodbがスタンバイDB,osakadbがプライマリDBになり、
osakadbからのトランザクションがtokyodbに伝搬されることを確認


**① プライマリDB(tokyodb)停止してMOUNT**

```shell-session
SYS@tokyodb SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
    SWITCHOVER_STATUS
    --------------------
    TO STANDBY

SYS@tokyodb SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY WITH SESSION SHUTDOWN;

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

SYS@tokyodb SQL> STARTUP MOUNT;
    ORACLEインスタンスが起動しました。

    Total System Global Area 9428793296 bytes
    Fixed Size		    9144272 bytes
    Variable Size		 1476395008 bytes
    Database Buffers	 7918845952 bytes
    Redo Buffers		   24408064 bytes
    データベースがマウントされました。
```



**② スタンバイDB(osakadb)でSwitch OverしプライマリDBへ移行**

```shell-session
SYS@osakadb SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;

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

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

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

SYS@osakadb SQL> ALTER DATABASE OPEN;

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


**③ スタンバイDB(tokyodb）をOPENしてRedo Apply**

```shell-session
SYS@tokyodb SQL> ALTER DATABASE OPEN;

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

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

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


**④ プライマリDB(osakadb)でトランザクション発行**

```shell-session
SYS@osakadb SQL> INSERT INTO test_table1  VALUES (2,'BBB');

    1行が作成されました。

SYS@osakadb SQL> commit;

    コミットが完了しました。

SYS@osakadb SQL> select * from test_table1;

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


**⑤ スタンバイDB(tokyodb)でプライマリDB(osakadb)のトランザクション伝搬確認**

```shell-session
SYS@tokyodb SQL> select * from test_table1;

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



# ■ Snapshot Standby Database
スナップショット・スタンバイ・データベースは完全に更新可能なスタンバイ・データベースです。これは、プライマリ・データベースからREDOデータを受信およびアーカイブしますが、適用はしません。
そのため、プライマリDBが切り離された状態であるため、検証用途として利用できます。復旧はスナップショット・スタンバイ・データベースからフィジカル・スタンバイ・データベースへ変更すると自動でFLASH BACK機能によりDB時間が戻り溜まったREDOを適用していきます。



## ● Snapshot Standby Database有効化

**① Redo Apply停止**

```shell-session
SYS@tokyodb SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

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


**② Snapshot Standby Database有効化**

```shell-session
SYS@tokyodb SQL> ALTER DATABASE CONVERT TO SNAPSHOT STANDBY;

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

SYS@tokyodb SQL> select database_role,open_mode from v$database;

    DATABASE_ROLE    OPEN_MODE
    ---------------- --------------------
    SNAPSHOT STANDBY MOUNTED
```


**③ Snapshot Standby Database READ WRITEモードでOPEN**

```shell-session
SYS@tokyodb SQL> ALTER DATABASE OPEN READ WRITE;

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

SYS@tokyodb SQL> select database_role,open_mode from v$database;

    DATABASE_ROLE    OPEN_MODE
    ---------------- --------------------
    SNAPSHOT STANDBY READ WRITE
```


**④ トランザクション発行テスト**

```shell-session
SYS@tokyodb SQL> select * from test_table1;

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

SYS@tokyodb SQL> INSERT INTO test_table1  VALUES (10,'OOO');

    1行が作成されました。

SYS@tokyodb SQL> INSERT INTO test_table1  VALUES (11,'PPP');

    1行が作成されました。

SYS@tokyodb SQL> INSERT INTO test_table1  VALUES (12,'QQQ');

    1行が作成されました。

SYS@tokyodb SQL> INSERT INTO test_table1  VALUES (13,'RRR');

    1行が作成されました。

SYS@tokyodb SQL> select * from test_table1;

        ID NAME
    ---------- ----------
        1 AAA
        2 BBB
        10 OOO
        11 PPP
        12 QQQ
        13 RRR

6行が選択されました。

SYS@tokyodb SQL> commit;

    コミットが完了しました。
```





## ● Snapshot Standby Databaseから Physical standby databaseへ変換
フィジカル・スタンバイ・データベースからスナップショット・スタンバイ・データベースへ戻します
※ RAC構成の場合は、１NodeのみMOUNTして、Physical standby databaseへ変換する必要があり、変更後Active Data Guardで全Node Openできます

**① スタンバイDB 停止**

```shell-session
SYS@tokyodb SQL> shutdown immediate
    データベースがクローズされました。
    データベースがディスマウントされました。
    ORACLEインスタンスがシャットダウンされました。
```


**② スタンバイDB MOUNT**

```shell-session
SYS@tokyodb SQL> STARTUP MOUNT
    ORACLEインスタンスが起動しました。

    Total System Global Area 9428793296 bytes
    Fixed Size		    9144272 bytes
    Variable Size		 1476395008 bytes
    Database Buffers	 7918845952 bytes
    Redo Buffers		   24408064 bytes
    データベースがマウントされました。
```


**③ Physical standby databaseへ変換**

```shell-session
SYS@tokyodb SQL> ALTER DATABASE CONVERT TO PHYSICAL STANDBY;

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

**④ Physical standby database起動**

```shell-session
SYS@tokyodb SQL> ALTER DATABASE OPEN;

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

**⑤ Redo Apply適用**

```shell-session
SYS@tokyodb SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

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

SYS@tokyodb SQL> select database_role,open_mode from v$database;

    DATABASE_ROLE    OPEN_MODE
    ---------------- --------------------
    PHYSICAL STANDBY READ ONLY WITH APPLY
```



**⑥ test_table1データ確認**
スナップショット・スタンバイ・データベース時に発行したトランザクションが初期化されていることを確認

```
SYS@tokyodb SQL> select * from test_table1;

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


# ■ Standby DB　の REDO適用遅延(LAG)確認
V$DATAGUARD_STATSは、スタンバイ・データベース上での問合せに対して、Oracle Data Guardメトリックに関する情報を示します。

```shell
SQL> select name,value,time_computed,unit from v$dataguard_stats;

	NAME				 VALUE								  TIME_COMPUTED 		 UNIT
	-------------------------------- ---------------------------------------------------------------- ------------------------------ ------------------------------
	transport lag			 +00 00:00:00							  02/02/2020 18:49:03		 day(2) to second(0) interval
	apply lag			 +00 00:00:00							  02/02/2020 18:49:03		 day(2) to second(0) interval
	apply finish time		 +00 00:00:00.000						  02/02/2020 18:49:03		 day(2) to second(3) interval
	estimated startup time		 22								  02/02/2020 18:49:03		 second
```


# ■ 参考
**● Market Place**
    ・[Oracle Database](https://cloudmarketplace.oracle.com/marketplace/en_US/listing/47726045)
    ・[Oracle Cloud Marketplace Home](https://cloudmarketplace.oracle.com/marketplace/en_US/homePage.jspx)
    
**● マニュアル**
    ・[Oracle Database Documentation](https://docs.oracle.com/en/database/oracle/oracle-database/index.html)
    ・[フィジカル・スタンバイ・データベースの作成](https://docs.oracle.com/cd/F19136_01/sbydb/creating-oracle-data-guard-physical-standby.html#GUID-B511FB6E-E3E7-436D-94B5-071C37550170)
    ・[SQL*Plus®ユーザーズ・ガイドおよびリファレンス](https://docs.oracle.com/cd/E57425_01/121/SQPUG/GUID-D6727C11-E4D9-4AB5-A7B8-9C6527A44A50.htm)
    ・[フィジカルおよびスナップショット・スタンバイ・データベースの管理](https://docs.oracle.com/cd/F19136_01/sbydb/managing-oracle-data-guard-physical-standby-databases.html#GUID-B140C38B-DE01-4252-8422-7154018DDFEC)

**● Data Guard**
・[Data Guard](https://www.oracle.com/jp/database/data-guard/#rc30p2)
・[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)