タスク3 - Oracle GoldenGateデプロイメントを格納する共有ファイル・システムの作成

Oracle GoldenGate Microservices Architectureの設計では、インストールとデプロイメントのディレクトリ構造が簡略化されています。

  • インストール・ディレクトリは、ソフトウェア・パッチ適用時の停止時間を最小限に抑えるために、各データベース・ノードのローカル記憶域に配置する必要があります。

  • デプロイメント・ディレクトリは、Oracle GoldenGate Configuration Assistant (oggca.sh)を使用したデプロイメントの作成時に作成されます。このディレクトリは、共有ファイル・システムに配置する必要があります。デプロイメント・ディレクトリには、構成、セキュリティ、ログ、パラメータ、証跡およびチェックポイントのファイルが含まれます。

DBFSまたはOracle Automatic Storage Management Cluster File System (ACFS)にデプロイメントを配置すると、システム障害の発生時に最高のリカバリ性とフェイルオーバー機能が得られます。クラスタ全体でチェックポイント・ファイルの可用性を確保することは、障害発生後にGoldenGateプロセスが最後に認識された位置から実行を継続できるようにするために不可欠です。

Oracle Data GuardとともにOracle GoldenGateを構成する場合、推奨のファイル・システムはDBFSです。DBFSはData Guardによって保護されるデータベースに格納され、XAGと完全に統合できます。Data Guardのロール・トランジションが発生した場合、このファイル・システムは新しいプライマリ・サーバーに自動的にマウントされ、その後でOracle GoldenGateが自動起動されます。ACFSはOracle Data Guard構成の一部ではないため、これは現時点ではできません。

ノート:

このドキュメントには、Oracle Data GuardとともにOracle GoldenGateを構成するステップは含まれていません。

Oracle Data Guardが存在しない場合、推奨のファイル・システムはACFSです。Oracle ACFSは、複数のプラットフォームに対応するスケーラブルなファイル・システムおよびストレージ管理のテクノロジです。このテクノロジにより、Oracle Automatic Storage Management (Oracle ASM)機能は、Oracle Databaseの外部に維持されているカスタマ・ファイルをサポートするように拡張されます。

ファイル・システムの要件に基づいて、次のいずれかのステップを実行して、このタスクを完了します。

  • ステップ3a - Oracle Database File System (DBFS)
  • ステップ3b - Oracle ASM Cluster File System (ACFS)

ステップ3a - Oracle Database File System (DBFS)

Oracle GoldenGateプロセスが接続されるデータベースと同じデータベース内にDBFS表領域を作成する必要があります。たとえば、Oracle GoldenGate統合ExtractプロセスがGGDBというデータベースから抽出される場合は、同じGGDBデータベースにDBFS表領域を配置します。

Oracle GoldenGateのデプロイメント・ファイルを格納するためのファイル・システムを作成します。最大12時間の証跡ファイルの格納を可能にするには、十分な証跡ファイルのディスク領域を割り当てる必要があります。そうすることで、新しい証跡ファイルを受信できないターゲット環境で問題が発生した場合に、証跡ファイルの生成に十分な領域を確保します。12時間に必要な領域の量は、実際の本番データで証跡ファイルの生成率をテストすることでのみ決定できます。

次のサブステップを実行して、このステップを完了します。

  • ステップ3a.1 - Oracle Exadata Database ServiceのDBFSの構成
  • ステップ3a.2 - DBFSリポジトリの作成
  • ステップ3a.3 - (CDBのみ) TNSNAMES内のエントリの作成
  • ステップ3a.4 - mount-dbfsスクリプトのダウンロードと編集
  • ステップ3a.5 - DBFSリソースのOracle Clusterwareへの登録
  • ステップ3a.6 - DBFSリソースの起動
ステップ3a.1 - Oracle Exadata Database ServiceのDBFSの構成
  1. opc OSユーザーとして、fuseグループにgridユーザーを追加します。
    [opc@exadb-node1]$ sudo -u grid $(grep ^crs_home /etc/oracle/olr.loc | cut -d= -f2)/bin/olsnodes > ~/dbs_group
    [opc@exadb-node1]$ dcli -g ~/dbs_group -l opc sudo usermod -a -G fuse grid
  2. opc OSユーザーとして、ファイル/etc/fuse.confが存在していることと、user_allow_otherオプションが含まれていることを確認します。
    [opc@exadb-node1]$ cat /etc/fuse.conf
    # mount_max = 1000
    # user_allow_other
  3. このステップは、すでにオプションuser_allow_other/etc/fuse.confファイル内にある場合はスキップします。

    それ以外の場合は、opc OSユーザーとして次のコマンドを実行してオプションを追加します。

    [opc@exadb-node1]$ dcli -g ~/dbs_group -l opc "echo user_allow_other | sudo tee -a /etc/fuse.conf"
  4. opc OSユーザーとして、DBFSファイル・システムのマウント・ポイントとして使用する空のディレクトリを作成します。
    [opc@exadb-node1]$ dcli -g ~/dbs_group -l opc sudo mkdir -p /mnt/dbfs
  5. opc OSユーザーとして、マウント・ポイント・ディレクトリの所有権を変更して、grid OSユーザーがアクセスできるようにします。
    [opc@exadb-node1]$ dcli -g ~/dbs_group -l opc sudo chown oracle:oinstall /mnt/dbfs
ステップ3a.2 - DBFSリポジトリの作成

ターゲット・データベース内にDBFSリポジトリを作成します。リポジトリを作成するには、DBFSオブジェクトを保持するターゲットPDB内に新しい表領域を作成して、そのオブジェクトを所有するデータベース・ユーザーを作成します。

ノート:

Oracleマルチテナント・データベースを使用する場合は、プラガブル・データベース(PDB)内にDBFS表領域を作成する必要があります。GoldenGate ExtractまたはReplicatプロセスの接続先と同じPDBを使用することをお薦めします。これにより、DBFSがデータベースの依存関係に前のステップで作成したものと同じデータベース・サービスを使用できるようになります。

  1. oracle OSユーザーとして、データベースに表領域を作成します。
    [opc@exadb-node1]$ sudo su - oracle
    [oracle@exadb-node1]$ source DB_NAME.env
    [oracle@exadb-node1]$ sqlplus / as sysdba
    SQL> alter session set container=<pdb_name>;
    SQL> create bigfile tablespace dbfstb1 datafile size 32g autoextend on next 8g
     maxsize 300g NOLOGGING EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE
     MANAGEMENT AUTO;
    SQL> create user dbfs_user identified by "<dbfs_user_password>"
     default tablespace dbfstb1 quota unlimited on dbfstb1;
    SQL> grant connect, create table, create view, create procedure,
     dbfs_role to dbfs_user;
  2. oracle OSユーザーとして、DBFSを保持するデータベース・オブジェクトを作成します。このスクリプトには、2つの引数を指定します。
    • dbfstb1: DBFSデータベース・オブジェクトの表領域
    • goldengate: ファイル・システム名 - 任意の文字列を指定可能で、マウント・ポイントの下のディレクトリとして表示されます
     [oracle@exadb-node1]$ sqlplus dbfs_user/"<dbfs_user_password>"@<db_name>_dbfs
    SQL> start $ORACLE_HOME/rdbms/admin/dbfs_create_filesystem dbfstb1 goldengate     

ステップ3a.3 - (CDBのみ) TNSNAMES内のエントリの作成

  1. oracle OSユーザーとして、データベース・ドメイン名を検索します。
    [opc@exadb-node1]$ sudo su - oracle
    [oracle@exadb-node1]$ source DB_NAME.env
    [oracle@exadb-node1]$ sqlplus / as sysdba
    SQL> show parameter db_domain
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_domain                            string      <db_domain_name>
  2. oracle OSユーザーとして、$TNS_ADMIN/tnsnames.oraファイルに接続エントリを追加します。
    [oracle@exadb-node1]$ vi $TNS_ADMIN/tnsnames.ora
    dbfs =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY=LISTENER))
          (CONNECT_DATA =
            (SERVICE_NAME = <pdb_service_name>.<db_domain_name> )
           )
        )
  3. oracle OSユーザーとして、残りのノードに$TNS_ADMIN/tnsnames.oraファイルを配布します。
    [oracle@exadb-node1 ~]$ /usr/local/bin/dcli -l oracle -g ~/dbs_group
     -f $TNS_ADMIN/tnsnames.ora -d $TNS_ADMIN/

ステップ3a.4 - mount-dbfsスクリプトの編集

  1. zipファイルを解凍し、mount-dbfs.conf内の変数設定を環境に応じて編集します。

    ファイルのコメントは、該当する変数の値を確認するために役立ちます。

    • DBNAME: echo $ORACLE_UNQNAME
    • MOUNT_POINT: /mnt/dbfs/goldengate
    • ORACLE_HOME (RDBMS ORACLE_HOMEディレクトリ): echo $ORACLE_HOME
    • GRID_HOME (GRID INFRASTRUCTURE HOMEディレクトリ): echo $(grep ^crs_home /etc/oracle/olr.loc | cut -d= -f2)
    • DBFS_PASSWD (WALLET=falseの場合にのみ使用します)
    • DBFS_PWDFILE_BASE (WALET=falseの場合にのみ使用します)
    • WALLET (trueまたはfalseにします)
    • TNS_ADMIN (WALLET=trueまたはPDBの場合にのみ使用します): echo $TNS_ADMIN
    • DBFS_LOCAL_TNSALIAS (WALLET=trueの場合にのみ使用します)
    • IS_PDB (PDBを使用する場合はtrueに設定します)
    • PDB (該当する場合はPDB名): PDB name
    • PDB_SERVICE (該当する場合はステップ2.3で作成したデータベース・サービス): PDB_SERVICE_NAME
    • MOUNT_OPTIONS: allow_other,direct_io,failover,nolock
      • failoverオプションは、すべてのファイル書込みをIMMEDIATE WAITモードでDBFSデータベースにコミットすることを強制します。これにより、データベースまたはノードの障害時にデータがdbfs_clientキャッシュに書き込まれていても、まだデータベースに書き込まれていない場合に、データの損失を防止できます。
      • nolockマウント・オプションは、Oracle Database 18c以降のバージョンを使用する場合に必要になります。これは、ファイルが現在ロックされているときにOracle RACノードの障害が発生するとGoldenGateプロセスに問題が発生する可能性があるDBFSファイルのロックが変更されたためです。
  2. grid OSユーザーとして、mount-dbfs-<version>.zipを解凍して、構成ファイルmount-dbfs.confを編集します。
    [opc@exadb-node1]$ sudo su - grid
    [grid@exadb-node1]$ cd /u02/app_acfs/goldengate
    [grid@exadb-node1]$ unzip mount-dbfs-<version>.zip
    [grid@exadb-node1]$ vi mount-dbfs.conf

    mount-dbfs.confの例:

    
    DBNAME=<DB_UNIQUE_NAME>
    MOUNT_POINT=/mnt/dbfs/goldengate
    DBFS_USER=dbfs_user
    GRID_HOME=$(grep ^crs_home /etc/oracle/olr.loc | cut -d= -f2)
    if [ -z "${GRID_HOME}" ]; then
        echo "GRID_HOME is unset or set to the empty string"
    fi
    ORACLE_HOME=$($GRID_HOME/bin/srvctl config database -d $DBNAME |grep 'Oracle home:' | cut -d: -f2 |sed 's/ //g')
    if [ -z "${ORACLE_HOME}" ]; then
        echo "ORACLE_HOME is unset or set to the empty string"
    fi
    LOGGER_FACILITY=user
    MOUNT_OPTIONS=allow_other,direct_io,failover,nolock
    PERL_ALARM_TIMEOUT=14
    DBFS_PASSWD=<DBFS_USER_PASSWORD>
    DBFS_PWDFILE_BASE=/tmp/.dbfs-passwd.txt
    WALLET=false
    TNS_ADMIN=$ORACLE_HOME/network/admin/<DB_NAME>
    IS_PDB=true
    PDB=<PDB_NAME>
    PDB_SERVICE=<PDB_SERVICE_NAME>
  3. grid OSユーザーとして、CRSリソースが停止したときにDBFSが強制的にアンマウントされるようにmount-dbfs.shスクリプトを変更します。
    [grid@exadb-node1]$ vi /u02/app_acfs/goldengate/mount-dbfs.sh
    
    # Change two occurrences of:
    $FUSERMOUNT -u $MOUNT_POINT
    # To the following:
    $FUSERMOUNT -uz $MOUNT_POINT
  4. opc OSユーザーとして、mount-dbfs.confをデータベース・ノードの/etc/oracleディレクトリにコピー(必要に応じて名前を変更)して、適切な権限を設定します。
    [opc@exadb-node1]$ sudo -u grid $(grep ^crs_home /etc/oracle/olr.loc | cut
     -d= -f2)/bin/olsnodes > ~/dbs_group
    [opc@exadb-node1]$ /usr/local/bin/dcli -g ~/dbs_group -l opc -d /tmp
     -f /u02/app_acfs/goldengate/mount-dbfs.conf
    [opc@exadb-node1]$ /usr/local/bin/dcli -g ~/dbs_group -l opc sudo
     cp /u02/app_acfs/goldengate/mount-dbfs.conf /etc/oracle
    [opc@exadb-node1]$ /usr/local/bin/dcli -g ~/dbs_group -l opc sudo
     chown grid:oinstall /etc/oracle/mount-dbfs.conf
    [opc@exadb-node1]$ /usr/local/bin/dcli -g ~/dbs_group -l opc sudo
     chmod 660 /etc/oracle/mount-dbfs.conf
  5. opc OSユーザーとして、mount-dbfs.shをデータベース・ノードの適切なディレクトリ($GI_HOME/crs/script)にコピー(必要に応じて名前を変更)し、適切な権限を設定します。
    [opc@exadb-node1]$ /usr/local/bin/dcli -g ~/dbs_group -l opc sudo
     mkdir $(grep ^crs_home /etc/oracle/olr.loc | cut -d= -f2)/crs/script
    [opc@exadb-node1]$ /usr/local/bin/dcli -g ~/dbs_group -l opc sudo chown
     grid:oinstall $(grep ^crs_home /etc/oracle/olr.loc | cut -d= -f2)/crs/script
    [opc@exadb-node1]$ /usr/local/bin/dcli -g ~/dbs_group -l grid
     -d $(grep ^crs_home /etc/oracle/olr.loc | cut -d= -f2)/crs/script
     -f /u02/app_acfs/goldengate/mount-dbfs.sh
    [opc@exadb-node1]$ /usr/local/bin/dcli -g ~/dbs_group -l grid chmod 770
     $(grep ^crs_home /etc/oracle/olr.loc | cut -d= -f2)/crs/script/mount-dbfs.sh

ステップ3a.5 - DBFSリソースのOracle Clusterwareへの登録

このリソースは、Oracle Clusterwareに登録するときにはcluster_resourceとして作成します。

cluster_resourceを使用する理由は、ファイル・システムを一度に1つのノードにのみマウントできるようにして、同時ファイル書込みの可能性が生じ、ファイル破損問題の原因になるDBFSの同時ノードのマウントを防止するためです。

  1. grid OSユーザーとして、前のDBFSサービス依存関係についてのステップで作成したデータベース・サービスのリソース名を検索します。
    [opc@exadb-node1]$ sudo su - grid
    [grid@exadb-node1]$ crsctl stat res |grep <PDB_NAME>
    NAME=ora.<DB_UNIQUE_NAME>.<SERVICE_NAME>.svc
  2. oracle OSユーザーとして、次のスクリプトを実行してClusterwareリソースを登録します。
    [opc@exadb-node1]$ sudo su - oracle
    [oracle@exadb-node1]$ vi /u02/app_acfs/goldengate/add-dbfs-resource.sh
    
    ##### start script add-dbfs-resource.sh
    #!/bin/bash
    ACTION_SCRIPT=$(grep ^crs_home /etc/oracle/olr.loc | cut -d= -f2)/crs/script/mount-dbfs.sh
    RESNAME=dbfs_mount
    DEPNAME=ora.<DB_UNIQUE_NAME>.<SERVICE_NAME>.svc
    ORACLE_HOME=$(grep ^crs_home /etc/oracle/olr.loc | cut -d= -f2)
    PATH=$ORACLE_HOME/bin:$PATH
    export PATH ORACLE_HOME
    crsctl add resource $RESNAME \
      -type cluster_resource \
      -attr "ACTION_SCRIPT=$ACTION_SCRIPT, \
             CHECK_INTERVAL=30,RESTART_ATTEMPTS=10, \
             START_DEPENDENCIES='hard($DEPNAME)pullup($DEPNAME)',\
             STOP_DEPENDENCIES='hard($DEPNAME)',\
             SCRIPT_TIMEOUT=300"
    ##### end script add-dbfs-resource.sh
    
    [oracle@exadb-node1]$ sh /u02/app_acfs/goldengate/add-dbfs-resource.sh

ノート:

$RESNAMEリソースの作成後、$RESNAMEリソースがONLINEのときに$DBNAMEデータベースを停止するには、srvctlの使用時にforceフラグを指定します。

例: srvctl stop database -d fsdb -f

ステップ3a.6 - DBFSリソースの起動

grid OSユーザーとして、リソースを起動します。

 [opc@exadb-node1]$ sudo su - grid
[grid@exadb-node1]$ crsctl start res dbfs_mount -n `hostname`
CRS-2672: Attempting to start 'dbfs_mount' on 'exadb-node1'
CRS-2676: Start of 'dbfs_mount' on 'exadb-node1' succeeded

[grid@exadb-node1]$ crsctl stat res dbfs_mount -t

--------------------------------------------------------------------------------
Name           Target  State        Server                   State details      
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
dbfs_mount
      1        ONLINE  ONLINE       exadb-node1              STABLE
--------------------------------------------------------------------------------  

ノート:

共有ファイル・システムは、マウントされたままにします。これは、今後のステップでOracle GoldenGateデプロイメントを作成するために必要です。

ステップ3b - Oracle ASM Cluster File System (ACFS)

Oracle ACFSは、Oracle RAC構成の共有Oracle GoldenGateファイルのためのDBFSの代替です。Oracleのデプロイメント・ファイルを格納するための単一のACFSファイル・システムを作成します。

最大12時間の証跡ファイルの格納を可能にするために、十分な証跡ファイルのディスク領域を割り当てることをお薦めします。そうすることで、新しい証跡ファイルを受信できないターゲット環境で問題が発生した場合に、証跡ファイルの生成に十分な領域を確保します。12時間に必要な領域の量は、実際の本番データで証跡ファイルの生成率をテストすることでのみ決定できます。

次のサブステップを実行して、このステップを完了します。

  • ステップ3b.1 - ASMファイル・システムの作成
  • ステップ3b.2 - ファイル・システムの作成
  • ステップ3b.3 - Cluster Ready Services (CRS)リソースの作成
  • ステップ3b.4 - 現在構成されているACFSファイル・システムの検証
  • ステップ3b.5 - ACFSリソースの起動とステータスの確認
  • ステップ3b.6- GoldenGate ACFSディレクトリの作成

ステップ3b.1 - ASMファイル・システムの作成

grid OSユーザーとして、asmcmdを使用してボリュームを作成します。

[opc@exadb-node1 ~]$ sudo su - grid
[grid@exadb-node1 ~]$ asmcmd volcreate -G DATAC1 -s 1200G ACFS_GG

ノート:

決定したサイズ要件に応じて、ファイル・システムのサイズを変更します。

ステップ3b.2 - ファイル・システムの作成

  1. grid OSユーザーとして、asmcmdを使用して"ボリューム・デバイス"を確認します。
    [grid@exadb-node1 ~]$ asmcmd volinfo -G DATAC1 ACFS_GG

    次に、ACFSボリューム・デバイスの出力例を示します。

    Diskgroup Name: DATAC1
             Volume Name: ACFS_GG
             Volume Device: /dev/asm/acfs_gg-151
             State: ENABLED
             Size (MB): 1228800
             Resize Unit (MB): 64
             Redundancy: MIRROR
             Stripe Columns: 8
             Stripe Width (K): 1024
             Usage:
             Mountpath:
  2. grid OSユーザーとして、次のmkfsコマンドを使用して、ファイル・システムを作成します。
    [grid@exadb-node1 ~]$ /sbin/mkfs -t acfs /dev/asm/acfs_gg-151
ステップ3b.3 - Cluster Ready Services (CRS)リソースの作成
  1. opc OSユーザーとして、ACFSマウント・ポイントを作成します。
    [opc@exadb-node1 ~]$ dcli -l opc -g ~/dbs_group sudo mkdir -p /mnt/acfs_gg
    [opc@exadb-node1 ~]$ dcli -l opc -g ~/dbs_group sudo chown
     oracle:oinstall /mnt/acfs_gg
  2. rootユーザーとして、ファイル・システム・リソースを作成します。

    ACFSの分散ファイル・ロックの実装により、DBFSとは異なり、一度に複数のOracle RACノードにACFSをマウントできます。

  3. root OSユーザーとして、新しいACFSファイル・システムのためのACFSリソースを作成します。
    [opc@exadb-node1 ~]$ sudo su -
    [root@exadb-node1 ~]# $(grep ^crs_home /etc/oracle/olr.loc | cut -d= -f2)/bin/srvctl
     add filesystem -device /dev/asm/acfs_gg-151 -volume ACFS_GG -diskgroup DATAC1
     -path /mnt/acfs_gg -user oracle

ステップ3b.4 - 現在構成されているACFSファイル・システムの検証

grid OSユーザーとして、次のコマンドを使用して、ファイル・システムの詳細を表示します。

[opc@exadb-node1 ~]$ sudo su - grid
[grid@exadb-node1 ~]$ srvctl config filesystem -volume ACFS_GG -diskgroup DATAC1

Volume device: /dev/asm/acfs_gg-151
Diskgroup name: datac1
Volume name: acfs_gg
Canonical volume device: /dev/asm/acfs_gg-151
Accelerator volume devices:
Mountpoint path: /mnt/acfs_gg
Mount point owner: oracle
Mount point group: oinstall
Mount permissions: owner:oracle:rwx,pgrp:oinstall:r-x,other::r-x
Mount users: grid
Type: ACFS
Mount options:
Description:
ACFS file system is enabled
ACFS file system is individually enabled on nodes:
ACFS file system is individually disabled on nodes:

ステップ3b.5 - ACFSリソースの起動とステータスの確認

grid OSユーザーとして、次のコマンドを使用して、ファイル・システムを起動および確認します。

[grid@exadb-node1 ~]$ srvctl start filesystem -volume ACFS_GG
 -diskgroup DATAC1 -node `hostname`
[grid@exadb-node1 ~]$ srvctl status filesystem -volume ACFS_GG -diskgroup DATAC1

ACFSファイル・システム/mnt/acfs_ggは、ノードexadb-node1にマウントされます

作成したCRSリソースには、ora.diskgroup_name.volume_name.acfsという形式を使用した名前が付けられます。前述のファイル・システムの例を使用すると、CRSリソースの名前はora.datac1.acfs_gg.acfsになります。

現在存在しているすべてのACFSファイル・システムのCRSリソースを表示するには、次のコマンドを使用します。

[grid@exadb-node1 ~]$ crsctl stat res -w "((TYPE = ora.acfs.type) OR (TYPE = ora.acfs_cluster.type))"

NAME=ora.datac1.acfs_gg.acfs
TYPE=ora.acfs.type
TARGET=ONLINE                   , OFFLINE
STATE=ONLINE on exadb-node1, OFFLINE
NAME=ora.datac1.acfsvol01.acfs
TYPE=ora.acfs.type
TARGET=ONLINE                   , ONLINE
STATE=ONLINE on exadb-node1, ONLINE on exadb-node2

ステップ3b.6- GoldenGate ACFSディレクトリの作成

grid OSユーザーとして、Oracle GoldenGateデプロイメントを格納するディレクトリを作成します。

[opc@exadb-node1 ~]$ sudo su - oracle
[oracle@exadb-node1 ~]$ mkdir -p /mnt/acfs_gg/deployments

ACFSの詳細は、『Oracle Automatic Storage Management Cluster File System管理者ガイド』を参照してください。

ノート:

共有ファイル・システムは、マウントされたままにします。これは、今後のステップでOracle GoldenGateデプロイメントを作成するために必要です。