A DockerでのOracle Grid InfrastructureおよびOracle RACのインストールの例

Dockerをプロビジョニングしたら、この例を使用してOracle Grid InfrastructureおよびOracle Real Application Clusters (Oracle RAC)のインストール方法を確認します

クライアント・マシン構成

DockerコンテナへのOracle Real Application Clusters (Oracle RAC)のリモート・ベースのグラフィック・ユーザー・インタフェース(GUI)インストールに使用されるクライアント・マシンでは、この構成を使用しました。

  • クライアント: user-client-1
  • CPUコア: 1ソケット1コア、各コアに2つのスレッド。Intel®Xeon® Platinum 8167 M CPU (2.00 GHz)
  • メモリー
    • RAM: 8 GB
    • スワップ・メモリー: 8 GB
  • ネットワーク・カードおよびIP: ens310.0.20.57/24
  • Linuxオペレーティング・システム: Unbreakable Enterprise Kernel 5: 4.14.35-2047.501.2el7uek.x86_64を使用するOracle Linux 7.9 (Linux-x86-64)
  • パッケージ:
    • X Window System
    • Gnome

Oracle Grid InfrastructureおよびOracle RACのインストール

DockerコンテナでOracle Grid InfrastructureおよびOracle Real Application Clusters (Oracle RAC)を設定するには、次のステップを実行します。

Oracle Grid Infrastructureインストール用のDockerコンテナの設定

Oracle Real Application Clusters (Oracle RAC)を準備するには、Dockerコンテナで次のステップを実行します。

パスの作成と権限の変更

クラスタの必要に応じてディレクトリ・パスを作成して権限を変更するには、この一連のコマンドをDockerホストで実行します。

rootとして、次のコマンドをracnode1に対して実行します。

# docker exec racnode1 /bin/bash -c "mkdir -p /u01/app/oraInventory"
# docker exec racnode1 /bin/bash -c "mkdir -p /u01/app/grid"
# docker exec racnode1 /bin/bash -c "mkdir -p /u01/app/19c/grid"
# docker exec racnode1 /bin/bash -c "chown -R grid:oinstall /u01/app/grid"
# docker exec racnode1 /bin/bash -c "chown -R grid:oinstall /u01/app/19c/grid"
# docker exec racnode1 /bin/bash -c "chown -R grid:oinstall /u01/app/oraInventory"
# docker exec racnode1 /bin/bash -c "mkdir -p /u01/app/oracle"
# docker exec racnode1 /bin/bash -c "mkdir -p /u01/app/oracle/product/19c/dbhome_1"
# docker exec racnode1 /bin/bash -c "chown -R oracle:oinstall /u01/app/oracle"
# docker exec racnode1 /bin/bash -c "chown -R oracle:oinstall /u01/app/oracle/product/19c/dbhome_1"
次に、racnode2に対してコマンドを繰り返します。
# docker exec racnode2 /bin/bash -c "mkdir -p /u01/app/oraInventory"
# docker exec racnode2 /bin/bash -c "mkdir -p /u01/app/grid"
# docker exec racnode2 /bin/bash -c "mkdir -p /u01/app/19c/grid"
# docker exec racnode2 /bin/bash -c "chown -R grid:oinstall /u01/app/grid"
# docker exec racnode2 /bin/bash -c "chown -R grid:oinstall /u01/app/19c/grid"
# docker exec racnode2 /bin/bash -c "chown -R grid:oinstall /u01/app/oraInventory"
# docker exec racnode2 /bin/bash -c "mkdir -p /u01/app/oracle"
# docker exec racnode2 /bin/bash -c "mkdir -p /u01/app/oracle/product/19c/dbhome_1"
# docker exec racnode2 /bin/bash -c "chown -R oracle:oinstall /u01/app/oracle"
# docker exec racnode2 /bin/bash -c "chown -R oracle:oinstall /u01/app/oracle/product/19c/dbhome_1"
クラスタ用のSSHの構成

インストールを開始する前に、Oracle Real Application Clusters (Oracle RAC)ソフトウェア所有者(oracle)とOracle Grid Infrastructureソフトウェア所有者(grid)の両方のためにSSHを構成する必要があります。

SSHは、gridoracle用に個別に構成します。

DockerホストからOracle RACコンテナにログインし、gridユーザーとoracleユーザーのパスワードをリセットします。

# docker exec -i -t racnode1 /bin/bash
# passwd grid
# passwd oracle
# docker exec -i -t racnode2 /bin/bash
# passwd grid
# passwd oracle

クラスタ・ノードでのSSHの構成の詳細は、Oracle Grid Infrastructureインストレーションおよびアップグレード・ガイドfor Linuxを参照して、コンテナ内でgridユーザーとoracleユーザーに対してユーザー等価を設定する方法を確認してください。

インストールのためのリモート・ディスプレイの構成

Oracle Grid InfrastructureおよびOracle Real Application Clusters (Oracle RAC)のリモート・ディスプレイをインストールに使用するには、次の構成ステップを実行する必要があります。

Dockerブリッジを使用している場合は、IPアドレスを使用してDockerホストからOracle RACコンテナに到達できます。ただし、MACVLAN Dockerネットワーク・ブリッジを使用している場合は、同じサブネットを使用している他のクライアント・マシンを使用して、コンテナに接続できます。

sshd_configの変更

DockerでOracle Real Application Clusters (Oracle RAC)のインストールを実行するには、X11転送が有効になるように構成ファイルsshd_configを変更する必要があります。

racnode1でのみ次を実行します。

sshd構成ファイル/etc/ssh/sshd_configをVIMエディタを使用して開き、次のパラメータを設定します。

X11Forwarding yes
X11UseLocalhost no
X11DisplayOffset 10

これらの変更を含むsshd_configファイルを保存します。

sshdを再起動します。

# systemctl daemon-reload
# systemctl restart sshd
Oracle RACのインストールは単一のノードから実行されるため、racnode2でこれらのステップを繰り返す必要はありません。
リモート・ディスプレイの有効化

クライアントでインストール・ウィンドウを表示できるようにするには、Docker環境でOracle Real Application Clusters (Oracle RAC)のリモート・ディスプレイ制御を有効にする必要があります。

この例では、クライアントからDockerホストへのリモート・ディスプレイを有効にし、Gridユーザーとしてログインします。
  1. クライアント・マシンから、xhostを起動します(ここではuser-client-1)。

    # hostname
    # xhost + 10.0.20.150

    ノート:

    10.0.20.150は、1つ目のOracle RACコンテナ(racnode1)のIPアドレスです。このIPアドレスは、クライアント・マシンから到達可能です。
  2. クライアントからSSHを使用して、gridユーザーとしてOracle RACコンテナ(racnode1)にログインします。

    # ssh -X grid@10.0.20.150
  3. パスワードの入力を求められたら、gridユーザーのパスワードを指定し、racnode1コンテナ内のディスプレイをクライアントにエクスポートします(display_computerはクライアント・システム、portはディスプレイ用のポートです)。

    $ export DISPLAY=display_computer:port

    ノート:

    クライアントのプライベートIPアドレスは、DISPLAYのエクスポート・ターゲットとしてのみ使用できます。

Oracle Grid Infrastructureインストーラの実行

Oracle Grid InfrastructureをDockerにインストールするには、次の手順を実行します。

Oracle Grid Infrastructureファイルの抽出

gridユーザーとしてDockerコンテナへのクライアント接続から、Oracle Grid Infrastructureイメージ・ファイルをOracle RACコンテナの1つのGridホームに抽出します。

また、2021年10月以降の最新リリース更新(RU)をダウンロードして抽出します。例: Grid Infrastructureリリース更新19.16 (パッチ34130714)。

たとえば:

  1. Gridユーザーが、Oracle RACノード1コンテナのソフトウェア・ステージ・ホーム(この例では/software/stage)で読取り/書込み/実行権限を持っていることを確認します。
  2. Oracle Grid InfrastructureおよびOracle Databaseリリース19c (19.3)に必要なファイルの他、パッチ・ファイルをダウンロードしてステージングしていることを確認します。Oracle RACノード1コンテナ内のパス/software/stage下にステージングされたOracle Grid InfrastructureおよびOracle Real Application Clusters (Oracle RAC)ソフトウェアを確認できる必要があります。

    $ ls -l /software/stage/*.zip
    -rw-r--r--. 1 root 1001 3059705302 Feb 3 09:29 /software/stage/LINUX.X64_193000_db_home.zip
    -rw-r--r--. 1 root 1001 2889184573 Feb 3 09:30 /software/stage/LINUX.X64_193000_grid_home.zip
    -rw-r--r--. 1 root root 1006462657 Jul 29 20:36 /software/stage/p32869666_1916000ACFSRU_Linux-x86-64.zip
    -rw-r--r--. 1 root root 2814622872 Jul 28 09:13 /software/stage/p34130714_190000_Linux-x86-64.zip
    -rw-r--r--. 1 root root 275787541 Jul 28 19:52 /software/stage/p34339952_1916000OCWRU_Linux-x86-64.zip
    -rw-r--r--. 1 root 1001 124109254 Jun 3 01:46 /software/stage/p6880880_190000_Linux-x86-64.zip
  3. gridユーザーとして、目的の場所でファイルを解凍します。たとえば:

    $ cd /u01/app/19c/grid
    $ unzip -q /software/stage/LINUX.X64_193000_grid_home.zip
    $ cd /software/stage
    $ unzip -q p34130714_190000_Linux-x86-64.zip
    $ unzip -q p34339952_1916000OCWRU_Linux-x86-64.zip
    $ unzip -q p32869666_1916000ACFSRU_Linux-x86-64.zip
    
    
  4. gridユーザーとして、Oracle Grid Infrastructureホームで新しいOPatchバージョンを解凍して、既存のバージョンを置き換えます。たとえば、OPATCH-patch-zip-fileはOPatch zipファイルです。

    $ cd /u01/app/19c/grid
    $ mv OPatch OPatch_19.3
    $ unzip -q /software/stage/OPATCH-patch-zip-file

    たとえば、製品Oracle Global Lifecycle Management OPatchユーティリティのOPatch 12.2.0.1.32 for DB 19.0.0.0.0 (Jul 2022)の場合、次のようにします。

    $ cd /u01/app/19c/grid
    $ mv OPatch OPatch_19.3
    $ unzip -q /software/stage/p6880880_190000_Linux-x86-64.zip

OPatch zipファイルを解凍したら、OPatch_19.3ディレクトリを削除できます。

Oracle Grid Infrastructureインストーラの起動

この手順を使用して、Oracle Grid Infrastructureインストーラを起動し、構成に関する情報を指定します。

ノート:

パッチ・ノート『Oracle Database Patch 34130714 - GI Release Update 19.16.0.0.220719』の指示には、opatchautoを使用してパッチをインストールするよう記載されています。ただし、このパッチは、Oracle Grid Infrastructureインストーラで-applyRU引数を使用して適用する必要があります
  1. racnode1のGridユーザーとしてDockerコンテナへのクライアント接続から、次のコマンドを使用してインストーラを起動します。

    /u01/app/19c/grid/gridSetup.sh -applyRU /software/stage/34130714 \
    -applyOneOffs /software/stage/34339952,/software/stage/32869666
    
  2. 新しいクラスタ用のグリッド・インフラストラクチャの構成オプションを選択して、「次へ」をクリックします。

    「クラスタ構成の選択」ウィンドウが表示されます。

  3. 「Oracleスタンドアロン・クラスタの構成」オプションを選択し、「次へ」をクリックします。
  4. 「クラスタ名」フィールドと「SCAN名」フィールドに、エンタープライズ・ネットワーク全体で一意のクラスタの名前およびクラスタの単一クライアント・アクセス名(SCAN)の名前を入力します。この例では、次の名前を使用しました。

    • クラスタ名: raccluster01
    • SCAN名: racnode-scan
    • SCANポート: 1521
  5. GNSの仮想IPアドレス名の解決に送信するようにドメイン・ネーム・サーバー(DNS)を構成している場合、「サブドメインGNSサーバー用のGNSリクエストの構成」を選択できます。「次へ」をクリックします。

  6. クラスタ・ノードの表の「パブリック・ホスト名」列で、次の値が設定されていることを確認します。

    • パブリック・ホスト名:
      • racnode1.example.info
      • racnode2.example.info
    • 仮想ホスト名:
      • racnode1-vip.example.info
      • racnode2-vip.example.info
  7. 「SSH接続」をクリックし、racnode1racnode2の間にSSHを設定します。

    SSHが構成されている場合は、「次へ」をクリックします。

  8. 「ネットワーク・インタフェースの使用方法」ウィンドウで、次を選択します。
    • パブリック・ネットワークの場合、eth0 10.0.20.0
    • 1つ目のOracle ASMおよびプライベート・ネットワークの場合、eth1 192.168.17.0
    • 2つ目のOracle ASMおよびプライベート・ネットワークの場合、eth2 192.168.18.0

    これらの選択が完了したら、「次へ」をクリックします。

  9. 「記憶域オプション」ウィンドウで、「Oracle Flex ASMを記憶域として使用」を選択し、「次へ」をクリックします。
  10. 「GIMRオプション」ウィンドウで、デフォルトの選択のままにして(「いいえ」)、「次」をクリックします。
  11. 「ASMディスク・グループの作成」ウィンドウで、「検出パスの変更」をクリックし、「ディスク検出パス」の値を/dev/asm*に設定し、「OK」をクリックします。次の値を入力します。
    • ディスク・グループ名: DATA
    • 冗長性: 外部
    • デフォルトの「割当て単位サイズ」を選択します。
    • 「ディスク」を選択し、次の値を指定します。
      • /dev/asm-disk1
      • /dev/asm-disk2

    これらの値を入力したら、次をクリックします。「次へ」

  12. 「ASMパスワード」ウィンドウで、SYSユーザーおよびASMSNMPユーザーのパスワードを指定し、「次へ」をクリックします。
  13. 「障害の分離」ウィンドウでデフォルトを選択し、「次へ」をクリックします。
  14. 「管理オプション」ウィンドウでデフォルトを選択し、「次へ」をクリックします。
  15. 「オペレーティング・システム・グループ」ウィンドウでデフォルトを選択し、「次へ」をクリックします。
  16. 「インストール場所」ウィンドウの「Oracleベース」で、パス/u01/app/gridを入力し、「次へ」をクリックします。
  17. Oracle Inventoryウィンドウの「インベントリ・ディレクトリ」で、/u01/app/oraInventoryと入力し、「次へ」をクリックします。
  18. 「rootスクリプトの実行構成」ウィンドウで、「構成スクリプトを自動的に実行」の選択を解除したまま、「次」をクリックします。
  19. 「前提条件のチェック」ウィンドウの「検証の結果」に、Systemdステータス警告が表示される場合があります。この警告は無視して、続行してかまいません。

    予期しない警告が表示された場合は、My Oracle Support ID 2488326.1の既知の問題を参照してください。

  20. 「前提条件のチェック」ウィンドウで、cvuqdisk-1.0.10-1がないことを示す警告が表示され、失敗メッセージ「"ASMのデバイス・チェック"に失敗しました」が表示される可能性があります。この警告が表示された場合は、両方のコンテナにパッケージcvuqdisk-1.0.10-1をインストールする必要があります。この場合は、次のようにします。
    • 「修正および再チェック」ボタンが無効になっているので、パッケージを手動でインストールする必要があります。次のステップを実行します。
      1. 端末を開き、rootとしてracnode1 /bin/bashにログインします。

      2. 次のコマンドを実行してcvuqdisk RPMパッケージをインストールします。

        rpm -ivh /tmp/GridSetupActions*/CVU_*/cvuqdisk-1.0.10-1.rpm
      3. 「再チェック」をクリックします。

      4. ステップaおよびbを繰り返して、RPMをracnode2にインストールします。

      これ以上の警告または失敗メッセージは表示されません。インストーラは自動的に次のウィンドウに進みます。

  21. 「インストール」をクリックします。

  22. プロンプトが表示されたら、racnode1およびracnode2orainstRoot.shroot.shを実行します。

  23. インストールが完了したら、CRSスタックが稼働していることを確認します。
    $ORACLE_HOME/bin/crsctl stat res -t

Oracle RACデータベース・インストーラの実行

Oracle Real Application Clusters (Oracle RAC)をインストールするには、Oracle RACインストーラを実行します。

Oracle Real Application Clustersファイルの抽出

インストールの準備をするには、Oracleソフトウェア所有者アカウント(oracle)としてracnode1にログインし、ソフトウェアを抽出します。

  1. クライアントからSSHを使用して、oracleユーザーとしてOracle RACコンテナ(racnode1)にログインします。

    # ssh -X oracle@10.0.20.150
  2. パスワードの入力を求められたら、oracleユーザーのパスワードを指定し、racnode1コンテナ内のディスプレイをクライアントにエクスポートします(display_computerはクライアント・システム、portはディスプレイ用のポートです)。

    $ export DISPLAY=display_computer:port
  3. 次のコマンドを使用して、Oracle Databaseファイルを解凍します。

    
    $ cd /u01/app/oracle/product/19c/dbhome_1
    $ unzip -q /software/stage/LINUX.X64_193000_db_home.zip
  4. Oracleユーザーとして、Oracle Database (Oracleホーム)で新しいOPatchバージョンを解凍して、既存のバージョンを置き換えます。たとえば、OPATCH-patch-zip-fileはOPatch zipファイルです。

    $ cd /u01/app/oracle/product/19c/dbhome_1
    $ mv OPatch OPatch_19.3
    $ unzip -q /software/stage/OPATCH-patch-zip-file

    たとえば、製品Oracle Global Lifecycle Management OPatchユーティリティのOPatch 12.2.0.1.32 for DB 19.0.0.0.0 (Jul 2022)の場合、次のようにします。

    $ cd /u01/app/oracle/product/19c/dbhome_1
    $ mv OPatch OPatch_19.3
    $ unzip -q /software/stage/p6880880_190000_Linux-x86-64.zip

    OPatch zipファイルを解凍したら、OPatch_19.3ディレクトリを削除できます。

Oracle RACインストーラの実行

Oracle Real Application Clusters (Oracle RAC)インストーラの画面ワークフローを進むには、インストーラを実行し、プロンプトに従って質問に答えます。

  1. 次のコマンドを使用してインストーラを実行します。
    $ /u01/app/oracle/product/19c/dbhome_1/runInstaller -applyRU /software/stage/34130714
  2. 「ソフトウェアのみの設定」を選択し、「次へ」をクリックします。
  3. 「Oracle Real Application Clustersデータベースのインストール」を選択して「次へ」をクリックします。
  4. racnode1ノードとracnode2ノードの両方が選択されていることを確認し、「SSH接続」をクリックします。
  5. 「SSH接続」でSSHパスワードを指定し、「設定」をクリックします。SSH設定を完了したら「OK」をクリックし、「次へ」をクリックします。
  6. 「Enterprise Edition」を選択し、「次へ」をクリックします。
  7. Oracleベース・パスを/u01/app/oracleに設定し、「次へ」をクリックします。
  8. 「オペレーティング・システム・グループ」でデフォルトを選択し、「次へ」をクリックします。
  9. 「rootスクリプトの実行」でデフォルトを選択し、「次へ」をクリックします。
  10. 「インストール」をクリックします。
  11. プロンプトが表示されたら、両方のノードでroot.shを実行します。
  12. インストールが完了したら、「閉じる」をクリックしてインストーラを終了します。

DBCAを使用したOracle RACデータベースの作成

コンテナでOracle Real Application Clusters (Oracle RAC)データベースを作成するには、Database Configuration Assistant (DBCA)を使用して次のステップを実行します。

DBCAユーティリティは通常、ORACLE_HOME/binディレクトリにあります。

  1. ディレクトリを$ORACLE_HOME/binに変更し、コマンドdbcaを入力します。
  2. 「データベース操作」ウィンドウで、「データベースの作成」を選択し、「次へ」をクリックします。
  3. 「拡張構成」を選択し、「次へ」をクリックします。
  4. 「データベース・デプロイメント・タイプの選択」ウィンドウで、使用するデータベース管理ポリシーを「構成タイプ」リストから選択します。
    • 管理者管理型 (デフォルト)

      管理者管理デプロイメントは、Oracle Database 11gリリース2 (11.2)の前に存在していたOracle RACデプロイメント・タイプに基づき、クラスタ内の特定のノードで実行されるように各データベース・インスタンスを静的に構成する必要があり、また、preferredおよびavailable指定を使用して、特定のデータベースに属する特定のインスタンスで実行されるようにデータベース・サービスを構成する必要があります。

    • ポリシー管理型

      ポリシー管理デプロイメントはサーバー・プールに基づいており、データベース・サービスは、サーバー・プール内でシングルトンまたは均一として、サーバー・プール内のすべてのサーバーにわたって実行されます。データベースは1つ以上のサーバー・プールにデプロイされ、サーバー・プールのサイズによってデプロイメント内のデータベース・インスタンスの数が決まります。

    管理ポリシーを選択したら、「次へ」をクリックします。
  5. racnoderacnode2の両方を選択し、「次へ」をクリックします。
  6. 「データベース識別情報」ウィンドウで、次のフィールドに値を入力します。
    • グローバル・データベース名: orclcdb.example.infoと入力します
    • SID接頭辞: orclcdbと入力します
    • 「PDB用のローカルUNDO表領域の使用」を選択します。
    • 「1つ以上のPDBを含むコンテナ・データベースの作成」を選択します。
    • 「PDBの数」を選択します。
    • 「PDB名」に、orclpdbと入力します。
    「次へ」をクリックします。
  7. 「記憶域オプション」ウィンドウで、次のオプションを選択します。
    • データベース・ファイルの位置: +DATA/{DB_UNIQUE_NAME}と入力します。
    • 「Oracle Managed Filesの使用(OMF)」を選択します。
    選択が完了したら、「次へ」をクリックします。
  8. 「高速リカバリ・オプション」ウィンドウで、次を選択します。
    • 「高速リカバリ領域」を選択し、+DATAと入力します
    • 「アーカイブ有効化」を選択し、デフォルト・オプションを選択します
    選択が完了したら、「次へ」をクリックします。
  9. 「Data Vaultオプション」ウィンドウでデフォルトを選択し、「次へ」をクリックします。
  10. 「構成オプション」ウィンドウの「メモリー」タブで、次の値を入力します。
    • SGAサイズ: 3G
    • PGAサイズ: 2G

    ウィンドウの残りのフィールドでデフォルト値を選択し、「次へ」をクリックします。

    コンテナの使用可能なメモリーは、コンテナに対する合計割当てメモリーとみなされます。ただし、メモリーがコンテナに割り当てられていない場合は、ホスト・メモリーが、使用可能なメモリーとみなされます。cgroupsでは、物理メモリーより多くのメモリーをコンテナに割り当てることができるため、CVUでは、より少ないまたは最大のホスト・メモリーのみが受け入れられます。

    DBCAによって計算されたSGAおよびPGAの値は、ホスト・メモリーに正しく基づいていません。詳細は、My Oracle SupportのドキュメントID 2885873.1を参照してください。コンテナに割り当てたメモリーに基づいて、SGAおよびPGAを割り当てます。ここでは、SGAに3G、PGAに2Gを与えました。

    SGAおよびPGAのメモリー容量値について、SGAには3GB、PGAには2GBを手動で入力し、ポップアップ・ウィンドウで「はい」を確定し、続行します。

  11. 「管理オプションの指定」ウィンドウで、デフォルトを選択します。
  12. 「データベース・ユーザー資格証明の指定」ウィンドウで、パスワードを指定します
  13. 「データベース作成オプションの選択」ウィンドウでデフォルトを選択し、「次へ」をクリックします。
  14. 「前提条件チェック」ウィンドウが表示されます。前提条件がエラーなしで完了していることを確認します。インストール・ウィンドウにリダイレクトされます。
  15. 「終了」をクリックして、インストールを開始します。

データベースが作成されたら、アプリケーションを使用してデータベースに接続するか、ポート1521でSCAN racnode-scan.example.infoを使用してSQL*Plusに接続します。