タスク3 - Oracle Database File Systemの構成
Oracle Data GuardでOracle GoldenGateを構成する場合、お薦めするソリューションはDatabaseファイル・システム(DBFS)のみです。
データベース内のDBFSユーザー、表領域およびファイル・システムは、「Cloud: Oracle Exadata Database ServiceでのOracle GoldenGate Microservices Architectureの構成のベスト・プラクティス」で説明されているように、事前にプライマリ・データベースに作成されています。
このタスクを完了するには、次のステップを実行します。
- ステップ3.1 - Oracle Exadata Database ServiceのDBFSの構成
 - ステップ3.2 - (PDBのみ) TNSNAMESでのエントリの作成
 - ステップ3.3 - プライマリ・システムからのmount-dbfsスクリプトのコピーと編集
 - ステップ3.4 - DBFSリソースのOracle Clusterwareへの登録
 
ステップ3.1 - Oracle Exadata Database ServiceのDBFSの構成
- スタンバイ・システムの
opcOSユーザーとして、fuseグループにgridユーザーを追加します。[opc@exastb-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 - スタンバイ・システムの
opcOSユーザーとして、ファイル/etc/fuse.confが存在していることと、user_allow_otherオプションが含まれていることを確認します。[opc@exastb-node1 ~]$ cat /etc/fuse.conf # mount_max = 1000 user_allow_other - スタンバイ・システムの
opcOSユーザーとして、このステップをスキップします(オプションuser_allow_otherがすでに/etc/fuse.confファイルにある場合)。それ以外の場合は、次に示すコマンドを実行して、オプションを追加します。[opc@exastb-node1 ~]$ dcli -g ~/dbs_group -l opc “echo user_allow_other | sudo tee -a /etc/fuse.conf” - スタンバイ・システムの
opcOSユーザーとして、DBFSファイルシステムのマウント・ポイントとして使用する空のディレクトリを作成します。ノート:
マウント・ポイントがプライマリ・システムのマウント・ポイントと同じであることが重要です。これは、Oracle GoldenGateデプロイメントの物理的な場所がデプロイメント構成ファイルに含まれているためです。[opc@exastb-node1 ~]$ dcli -g ~/dbs_group -l opc sudo mkdir -p /mnt/dbfs - スタンバイ・システムの
opcOSユーザーとして、マウント・ポイント・ディレクトリの所有権を変更して、gridOSユーザーがアクセスできるようにします。[opc@exastb-node1 ~]$ dcli -g ~/dbs_group -l opc sudo chown oracle:oinstall /mnt/dbfs 
ステップ3.2 - (PDBのみ) TNSNAMESでのエントリの作成
- スタンバイ・システムの
oracleOSユーザーとして、$TNS_ADMIN/tnsnames.oraファイルに接続エントリを追加します。ステップ2.3で作成したPDBサービス名を使用します。[oracle@exadb-node1 ~]$ vi $TNS_ADMIN/tnsnames.ora dbfs = (DESCRIPTION = (ADDRESS = (PROTOCOL = IPC)(KEY=LISTENER)) (CONNECT_DATA = (SERVICE_NAME = <PDB_SERVICE_NAME> ) ) ) oracleOSユーザーとして、残りのノードに$TNS_ADMIN/tnsnames.oraファイルを配布します。[oracle@exadb-node1 ~]$ /usr/local/bin/dcli -l oracle -g ~/dbs_group -f $TNS_ADMIN/tnsnames.ora -d $TNS_ADMIN/
ステップ3.3 - プライマリ・システムからのmount-dbfsスクリプトのコピーと編集
- プライマリ・システムの
rootOSユーザーとして、mount-dbfs.confファイルとmount-dbfs.shファイルを含むzipファイルを作成します。[opc@exapri-node1 ~]$ sudo su - [root@exapri-node1 ~]# zip -j /tmp/mount-dbfs.zip $(grep ^crs_home /etc/oracle/olr.loc | cut -d= -f2)/crs/script/mount-dbfs.sh /etc/oracle/mount-dbfs.conf adding: mount-dbfs.sh (deflated 67%) adding: mount-dbfs.conf (deflated 58%) - スタンバイ・システムの
opcOSユーザーとして、プライマリ・システムからスタンバイ・システムにmount-dbfs.zipファイルをコピーします。[opc@exastb-node1 ~]$ scp exapri-node1.oracle.com:/tmp/mount-dbfs.zip /tmp - スタンバイ・システムの
opcOSユーザーとして、mount-dbfs.zipファイルを解凍し、構成ファイルmount-dbfs.confを編集します。[opc@exastb-node1 ~]$ unzip /tmp/mount-dbfs.zip -d /tmp Archive: /tmp/mount-dbfs.zip inflating: /tmp/mount-dbfs.sh inflating: /tmp/mount-dbfs.conf [opc@exastb-node1 ~]$ vi /tmp/mount-dbfs.confこれらをプライマリ・システムと同じディレクトリに配置することをお薦めします。スタンバイ・データベースと一致するように、
mount-dbfs.confファイルの次のパラメータを変更する必要があります。DBNAMETNS_ADMINPDB_SERVICE
 - スタンバイ・システムの
opcOSユーザーとして、mount-dbfs.confをデータベース・ノードの/etc/oracleディレクトリにコピーして、適切な権限を設定します。[opc@exastb-node1 ~]$ /usr/local/bin/dcli -g ~/dbs_group -l opc -d /tmp -f /tmp/mount-dbfs.conf [opc@exastb-node1 ~]$ /usr/local/bin/dcli -g ~/dbs_group -l opc sudo cp /tmp/mount-dbfs.conf /etc/oracle [opc@exastb-node1 ~]$ /usr/local/bin/dcli -g ~/dbs_group -l opc sudo chown oracle:oinstall /etc/oracle/mount-dbfs.conf [opc@exastb-node1 ~]$ /usr/local/bin/dcli -g ~/dbs_group -l opc sudo chmod 660 /etc/oracle/mount-dbfs.conf - スタンバイ・システムの
opcOSユーザーとして、mount-dbfs.shをデータベース・ノードの$GI_HOME/crs/scriptディレクトリにコピーして、適切な権限を設定します。[opc@exastb-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@exastb-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@exastb-node1 ~]$ /usr/local/bin/dcli -g ~/dbs_group -l grid -d $(grep ^crs_home /etc/oracle/olr.loc | cut -d= -f2)/crs/script -f /tmp/mount-dbfs.sh [opc@exastb-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 
ステップ3.3 - DBFSリソースのOracle Clusterwareへの登録
このリソースをOracle Clusterwareに登録するときには、必ずcluster_resourceとして作成します。cluster_resourceを使用する理由は、ファイル・システムを一度に1つのノードにのみマウントするようにして、同時ファイル書込みの可能性が生じ、ファイル破損問題の原因になるDBFSの同時ノードのマウントを防止するためです。
Oracle Multitenantを使用する場合は、プライマリ・データベースで作成されたDBFSリポジトリを含む、同じPDBのサービス名を使用してください。
- スタンバイ・システムの
gridOSユーザーとして、前のDBFSサービス依存関係についてのステップで作成したデータベース・サービスのリソース名を検索します。[opc@exastb-node1 ~]$ sudo su - grid [grid@exastb-node1 ~]$ crsctl stat res |grep <PDB_NAME> NAME=ora.<DB_UNIQUE_NAME>.<PDB_SERVICE_NAME>.svc - スタンバイ・システムのoracle OSユーザーとして、次のスクリプトを実行してClusterwareリソースを登録します。
[opc@exadb-node1 ~]$ sudo su - oracle [oracle@exadb-node1 ~]$ vi 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>.<PDB_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 add-dbfs-resource.sh 
ノート:
$RESNAMEリソースの作成後、$RESNAMEリソースがONLINEのときに$DBNAMEデータベースを停止するために、srvctlの使用時にforceフラグを指定する必要があります。 
                     
例: srvctl stop database -d $ORACLE_UNQNAME -f