タスク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の構成
- スタンバイ・システムの
opc
OSユーザーとして、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
- スタンバイ・システムの
opc
OSユーザーとして、ファイル/etc/fuse.conf
が存在していることと、user_allow_other
オプションが含まれていることを確認します。[opc@exastb-node1 ~]$ cat /etc/fuse.conf # mount_max = 1000 user_allow_other
- スタンバイ・システムの
opc
OSユーザーとして、このステップをスキップします(オプション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”
- スタンバイ・システムの
opc
OSユーザーとして、DBFSファイルシステムのマウント・ポイントとして使用する空のディレクトリを作成します。ノート:
マウント・ポイントがプライマリ・システムのマウント・ポイントと同じであることが重要です。これは、Oracle GoldenGateデプロイメントの物理的な場所がデプロイメント構成ファイルに含まれているためです。[opc@exastb-node1 ~]$ dcli -g ~/dbs_group -l opc sudo mkdir -p /mnt/dbfs
- スタンバイ・システムの
opc
OSユーザーとして、マウント・ポイント・ディレクトリの所有権を変更して、grid
OSユーザーがアクセスできるようにします。[opc@exastb-node1 ~]$ dcli -g ~/dbs_group -l opc sudo chown oracle:oinstall /mnt/dbfs
ステップ3.2 - (PDBのみ) TNSNAMESでのエントリの作成
- スタンバイ・システムの
oracle
OSユーザーとして、$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> ) ) )
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/
ステップ3.3 - プライマリ・システムからのmount-dbfsスクリプトのコピーと編集
- プライマリ・システムの
root
OSユーザーとして、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%)
- スタンバイ・システムの
opc
OSユーザーとして、プライマリ・システムからスタンバイ・システムにmount-dbfs.zip
ファイルをコピーします。[opc@exastb-node1 ~]$ scp exapri-node1.oracle.com:/tmp/mount-dbfs.zip /tmp
- スタンバイ・システムの
opc
OSユーザーとして、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
ファイルの次のパラメータを変更する必要があります。DBNAME
TNS_ADMIN
PDB_SERVICE
- スタンバイ・システムの
opc
OSユーザーとして、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
- スタンバイ・システムの
opc
OSユーザーとして、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のサービス名を使用してください。
- スタンバイ・システムの
grid
OSユーザーとして、前の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