2.3.2 True Cacheの手動作成

True Cacheを手動で作成するには、次のステップに従います。

2.3.2.1 True Cacheおよびプライマリ・データベースのtnsnames.oraファイルの編集

True Cacheとプライマリ・データベースの両方でtnsnames.oraファイルを編集して、データベース・ネットワーク接続を構成します。

ほとんどのLinuxプラットフォームでは、tnsnames.oraファイルは$ORACLE_HOME/network/adminディレクトリにあります。

このファイルは、手動で、またはOracle Net Configuration Assistant (NETCA)を使用して作成できます。

情報がまだ存在しない場合は、すべてのプライマリ・データベースおよびTrue Cache tnsnames.oraファイルに次の情報を追加します:

  • プライマリ・データベースおよびすべてのTrue Cacheのネットワーク名。これらは、REDOをTrue Cacheに送信するために必要であり、データベース・アプリケーション・サービスがまだ作成されていない場合でもREDO送信が機能することを可能にします。
  • すべてのプライマリ・データベースおよびTrue Cacheデータベース・アプリケーション・サービス名。1つのTrue Cacheは、同時に起動される複数のデータベース・アプリケーション・サービスをサポートできます。
  • リモート・リスナーを使用している場合は、すべての参加リスナー・ネットワークの別名。

True Cacheおよびプライマリ・データベースのtnsnames.oraファイルのエントリの例を次に示します:

# True Cache network name

tcdb1i =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = true_cache_host)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = tcdb1i)
    )
  )


# True Cache database application service name

sales_tc =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = true_cache_host)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = sales_tc)
    )
  )


# Primary database network name

primdb1i =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = primary_database_host)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = primdb1i)
    )
  )


# Primary database application service name

sales =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = primary_database_host)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = sales)
    )
  )


listener_primary =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = primary_database_host)(PORT=1521))
  )


listener_true_cache =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = true_cache_host)(PORT=1521))
  )

2.3.2.2 True Cacheノードでのローカル・リスナーの構成および起動

ローカル・リスナーを構成して起動し、True Cacheノードがプライマリ・データベースからREDOを受信できるようにします。

  1. listener.oraファイルを手動で、またはNETCAを使用して作成します。
    True Cacheノードのlistener.oraの例を次に示します:
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = tcdb1i)
          (ORACLE_HOME = local_oracle_home_on_true_cache)
        (SID_NAME = tcdb1i)
        )
      )
    
    LISTENER =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = true_cache_host)(PORT = 1521))
      )
  2. コマンド・ウィンドウで、ORACLE_HOMEおよびORACLE_SID環境変数が正しく設定されていることを確認します。
  3. $ORACLE_HOME/binディレクトリがPATH 環境変数に含まれていることを確認します。
  4. リスナーを起動し、リスナーが正しく起動したことを確認します。
    lsnrctl start
    lsnrctl status

2.3.2.3 プライマリ・データベースからTrue Cacheノードへのパスワード・ファイルまたはウォレットのコピー

REDO転送セッションの認証を指定するには、プライマリ・データベースのパスワード・ファイルまたはウォレットをTrue Cacheノードにコピーします。

True Cacheでは、Oracle Netを使用してTrue Cache構成のメンバー間でREDOデータを転送し、メッセージを制御します。これらのREDO転送セッションはパスワード・ファイルを使用して認証されるため、構成内のすべてのTrue Cacheにはプライマリ・データベースからのパスワード・ファイルの最新のコピーが必要です。

プライマリ・データベースのパスワード・ファイルをTrue Cacheノードの適切なディレクトリにコピーします。パスワード・ファイルはV$PASSWORDFILE_INFOビューで見つけることができ、Linuxでは通常、ファイルは$ORACLE_HOME/dbs/orapwSIDにあります。

このドキュメントの例では、プライマリ・データベースのパスワード・ファイルは$ORACLE_HOME/dbs/orapwprimdb1iで、True Cacheノードにコピーして名前を$ORACLE_HOME/dbs/orapwtcdb1iに変更します。

次の場合は、パスワード・ファイルを再コピーする必要があります:

  • 管理権限(SYSDGSYSOPERSYSDBAなど)が付与または取り消された場合
  • 管理権限を持つユーザーのパスワードが変更された後

次の場合は、パスワード・ファイルのかわりにウォレットをコピーします:

  • プライマリ・データベースがパスワード・ファイルのかわりにTLS証明書認証を使用する場合
  • プライマリ・データベースが透過的データ暗号化(TDE)を構成している場合。True Cache用のコピーには、プライマリ・データベースから送信される暗号化されたREDOを復号化するために使用されるROOTコンテナのマスター・キーのみを含めます。

    ノート:

    TDEウォレットを使用する場合、True Cacheの自動ログイン・ウォレットまたはローカル自動ログイン・ウォレットを構成することをお薦めします。自動ログイン・ウォレットの場合、プライマリ・データベースにウォレットを作成し、パスワード・ウォレット(ewallet.p12)と自動ログイン・ウォレット(cwallet.sso)の両方をTrue Cacheにコピーします。ローカル自動ログイン・ウォレットはホスト固有であるため、別のノードにコピーできません。かわりに、ローカルの自動ログイン・ウォレットの場合は、パスワード・ウォレットをTrue Cacheにコピーし、True Cacheで開き、ウォレット・パスワードを使用してローカル自動ログイン・ウォレットを作成します。ローカルの自動ログイン・ウォレットは、ウォレット・パスワードを知らないとウォレットをコピーして使用できないため、セキュリティが向上します。ウォレット・タイプの詳細は、Oracle Databaseウォレットについての説明を参照してください。ウォレット・タイプの詳細は、Oracle Databaseウォレットについての説明を参照してください

2.3.2.4 True CacheのPFILEの準備

True Cacheごとに、次のパラメータを使用してPFILEを準備します。

表2-3 初期化パラメータ

パラメータ 説明
TRUE_CACHE=TRUE これがTrue Cacheであることをサーバーに知らせます。
DB_NAME プライマリ・データベースのものと同じ値を入力します。
DB_UNIQUE_NAME このTrue Cacheに一意の名前を指定します。
DB_FILES プライマリ・データベースのものと同じ値を入力します。
SGA_TARGET このTrue CacheのSGAメモリー・サイズを入力します。
REMOTE_LISTENER

プライマリ・データベース・リスナーを入力します。これはCREATE TRUE CACHEコマンドには必要ありませんが、JDBCを使用するために必要です。

ノート: Oracle RACプライマリ・データベースの場合、REMOTE_LISTENERパラメータをSCAN:portに設定します。

ノート: 登録に対する有効ノード・チェック(VNCR)がリスナーに構成されているかどうかを確認します。その場合は、リモート・リスナーのlistener.oraファイルのREGISTRATION_INVITED_NODES_LISTENERパラメータにTrue Cacheを追加します。(この表の次の例では、これはプライマリ・データベースのlistener.oraファイルです。)

ノート:構成を簡略化し、接続の問題を回避するには、REMOTE_LISTENERLOCAL_LISTENERを別々に指定するかわりにLISTENER_NETWORKSパラメータを使用します。同じnetwork_name内のすべてのリスナーが相互登録されます。例:

LISTENER_NETWORKS='((NAME=network_name)(LOCAL_LISTENER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=true_cache_host)(PORT=1521))))(REMOTE_LISTENER=primary_database_host:1521))'

詳細は、「共通構成でのロード・バランシングに関するベスト・プラクティス」を参照してください。

FAL_SERVER

プライマリ・データベースのネットワーク名を入力します。

ノート: Oracle RACプライマリ・データベースの場合、FAL_SERVERパラメータをSCAN:port/service_nameに設定します。

プライマリ・スタンバイ・スイッチオーバーの後にプライマリになる可能性があるスタンバイ・データベースがある場合は、True Cacheにより、その既存のスタンバイ・データベースが自動的にFAL_SERVERリストに追加されます。ただし、True Cacheの構成後に新しいスタンバイ・データベースを追加した場合は、True CacheのFAL_SERVERパラメータにその新しいスタンバイ・データベースを追加する必要があります。これを行うには、データベースのカンマ区切りリストを指定して次のコマンドを使用します:

ALTER SYSTEM SET FAL_SERVER='existing_databases,new_standby_database' SCOPE=BOTH
FAL_CLIENT True Cacheネットワークの名前を入力します。True Cacheを起動すると、プライマリ・データベースがオンラインREDOログ・ブロックの送信先を認識できるように、対応するプライマリ・データベースのLOG_ARCHIVE_DEST_n初期化パラメータにそのネットワーク名が自動的に追加されます。
DB_CREATE_FILE_DEST

内部True Cacheファイル(制御ファイルや一時ファイルなど)を格納するディレクトリを入力します。

True CacheでOracle Automatic Storage Management (ASM)ストレージまたはOracle Exadata Exascaleストレージ・ボールトが使用される場合は、パスにASMディスク・グループ名またはExascaleボールト名の接頭辞を付けます

ノート:

ディレクトリに、プライマリ・データベースの一時ファイルを保持するのに十分な領域と、ブロック・サイズおよびスレッドごとの最大オンラインREDOログ・サイズの4倍を足した領域があることを確認します。たとえば、プライマリに2つのREDOログ・スレッドがあり、各スレッドに512バイト・ブロックの2つの2GBのオンラインREDOログ、512バイト・ブロックの2つの4GBのオンラインREDOログ、4KBブロックの3つの8GBのオンラインREDOログがある場合、次の式を使用します: 2スレッドx (4GB x 2 (512バイト・ブロックの大きい方)) + (8KB x 3 (4KBブロック))
DB_DOMAIN これは、プライマリ・データベースでDB_DOMAINも設定される場合に必要になることがあります。True Cacheノードが存在するドメインに設定します。
WALLET_ROOTおよびTDE_CONFIGURATION プライマリ・データベースが推奨されるWALLET_ROOTおよびTDE_CONFIGURATIONパラメータを使用してTDEを構成する場合は、このTrue Cacheで適宜構成します。

たとえば、次のPFILEinit_tcdb1i.oraという名前で、True Cacheノードの$ORACLE_HOME/dbs/ディレクトリに格納されます:

true_cache=true
db_name=primaryd
db_unique_name=tcdb1
db_files=200
sga_target=20G
fal_server=primdb1i
fal_client=tcdb1i
instance_name=tcdb1i
db_create_file_dest=local_directory_on_true_cache_node
local_listener=listener
remote_listener=listener_primary

前述の例では、プライマリ・データベースのDB_UNIQUE_NAME初期化パラメータがprimarydbに設定され、DB_FILES200に設定されていることを想定しています。

2.3.2.5 True Cacheの作成および開始

True Cacheを初めて作成して開始するには、次のステップに従います。

  1. SQL*Plusを使用して、True CacheをNOMOUNTモードで起動します。

    export ORACLE_SID=tcdb1i
    sqlplus / as SYSDBA
    STARTUP NOMOUNT PFILE=$ORACLE_HOME/dbs/init_tcdb1i.ora;
  2. パスワード・ファイルが正しいファイルを指していることを確認します

    SELECT file_name FROM v$passwordfile_info;
    
    FILE_NAME
    ----------------------------------------------------
    /u01/example/oracle/product/main/db_1/dbs/orapwtcdb1i
  3. True Cacheを作成して起動します

    CREATE TRUE CACHE;
  4. True Cacheが動作していることを確認するには、「True Cacheが想定どおりに動作していることの確認」を参照してください。

True Cacheを作成すると、作成した最初のPFILEに基づいて、適切なサイズのスタンバイREDOログ、制御ファイル、一時ファイル(必要な場合)および内部SPFILEが自動的に作成されます。このSPFILEは、PFILE値を指定しなくても、後のSTARTUPコマンドで自動的に使用されます。

この時点で、アプリケーションはプライマリ・データベースとTrue Cacheへの個別の物理接続を使用し、読取りか書込みかに基づいて使用する接続を選択できます。

JDBC ThinドライバでTrue Cacheを使用するには、次のトピックに進み、True Cacheのデータベース・アプリケーション・サービスを構成します。