Openflow Connector for Oracle:Oracleデータベースを構成する¶
注釈
このコネクタは、 Snowflakeコネクタ規約 に従うものとします。
注釈
|OracleOFC|には、標準のコネクタ利用規約以外の追加利用規約も適用されます。詳しくは、`Openflow Connector for Oracle Addendum<https://www.snowflake.com/en/legal/optional-offerings/offering-specific-terms/openflow-oracle-terms/>`_を参照してください。
このトピックでは、|OracleOFC|のOracleデータベースを設定する方法について説明します。
注釈
Oracleデータベースの設定は、組織のセキュリティポリシーとデータベースアーキテクチャによって異なります。たとえば、テーブルがコンテナデータベース(CDB)、プラガブルデータベース(PDB)、複数のPDBs、またはその組み合わせに存在する場合です。
このトピックで説明するステップは例のみです。環境に応じて変更します。
Oracleデータベース管理者として、ソースデータベースに対して次の手順を実行します。
(オプション):ref:
label-configure_ssl_connections
注釈
このトピックのステップは、コンテナデータベース(CDB)および1つ以上のプラガブルデータベース(PDB)を使用するマルチテナントアーキテクチャ用に記述されています。Oracleデータベースがシングルテナントアーキテクチャを使用している場合は、:ref:`label-setup_xstream_single_tenant`を参照してください。
アーカイブREDOログの保持期間を設定する¶
変更データが複製に利用できるようにするには、``ARCHIVELOG``モードを有効にする必要があります。
OracleでAWS RDSを使用する場合は、アーカイブREDOログの保持期間も設定する必要があります。ソースデータベースの変更量とストレージ容量に基づいて、この期間を決定します。
保持期間を設定するには(例:24時間)、以下の表の手順に従います。
データベースバージョン |
プロシージャ |
|---|---|
AWS RDS(標準) |
次を実行します。 詳しくは、`アーカイブREDOログの保持<https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.RetainRedoLogs.html>`_を参照してください。 |
AWS RDSカスタム |
詳しくは、`OracleインスタンスのRDSカスタムの復元<https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-backup.pitr.html>`_を参照してください。 |
XStreamと補足ログを有効にする¶
注釈
XStreamはOracle Databaseに含まれており、追加のソフトウェアは必要ありません。
変更データをキャプチャしてストリームするようにXStreamの複製を有効にして構成するには、以下のコマンドを実行します。
XStream複製を有効にする
注釈
Snowflakeは、ストリームのプールサイズを2.5GBに設定することをお勧めします。この割り当ては、次をカバーします。
キャプチャの1GB
適用の1GB
追加の25%のバッファー
REDOログが論理複製に必要な情報を確実にキャプチャするように補足ログを有効にするには、次のコマンドを実行します。
次の例に示すように、データベースがARCHIVELOGモードであることを確認します。
Snowflakeでは、データベースまたはテーブルスペースレベルでのログを強制することを推奨します。
コンテナをルートコンテナに設定し、データベースに補足ログを追加します。
あるいは、次の例に示すように、特定のテーブルでのみログを有効にすることもできます。
XStream管理者ユーザーを作成する¶
アウトバウンドサーバーの作成と変更を含む、XStreamコンポーネントを管理するには、XStream管理者ユーザーが必要です。必要なXStream管理権限が付与されていれば、この目的のための専用ユーザーを作成することも、既存のユーザーを使用することもできます(次のセクションを参照)。
次の例では、CDBのルートコンテナにおける専用のXStream管理者ユーザーの設定について詳しく説明します。
注釈
次の例では、データベースに、複製されるテーブルを含むPDBもあることを想定しています。
SYSDBA、または適切な権限を持つユーザーとして接続し、次のコマンドを実行します。
XStream管理者権限を付与する¶
Oracle Databaseバージョンに基づいて、必要な権限をXStream管理者ユーザーに付与します。
Oracle Database 19cおよび21c
SYSDBA、または適切な権限を持つユーザーとして接続します。
次のコマンドを実行して、必要なシステム権限をXStream管理者に付与します。
Oracle Database 23c
SYSDBA、または適切な権限を持つユーザーとして接続します。
次のコマンドを実行して、Oracle Database 23cに必要なシステム権限とXStreamロールを付与します。
XStreamサーバーの接続ユーザーを設定する¶
Snowflake Openflow Connectorでは、専用の接続ユーザーを利用してXStreamアウトバウンドサーバーへの接続を確立し、変更データを受信します。このユーザーには、複製を容易にするための特定の権限が必要です。
XStreamアウトバウンドサーバーからの読み取り:ユーザーは、構成されたXStreamアウトバウンドサーバーから変更データストリームにアクセスできる必要があります。
データディクショナリビューからの選択:接続ユーザーは、さまざまなデータディクショナリビューへのSELECTアクセスを必要とします。これは、SELECT_CATALOG_ROLEまたはSELECT ANY DICTIONARYを付与することで実現できます。会社のポリシーによりSELECT ANY DICTIONARYを付与することが望ましくない場合、ユーザーには特に次のビューへのSELECTアクセスが必要です。
ALL_USERS
ALL_TABLES
ALL_TAB_COLS
ALL_CONS_COLUMNS
ALL_CONSTRAINTS
V$DATABASE
ソーステーブルからの選択:ユーザーには、複製を目的とするすべてのテーブルに対するSELECT権限が必要です。
以下は、CDBのルートコンテナでそのようなユーザーを設定する方法の例です。この例では、データベースに、複製されるテーブルを含むPDBもあることを前提としています。
XStreamアウトバウンドサーバーを作成する¶
XStreamアウトバウンドサーバーは、Openflow Connectorで利用するために、REDOログから変更内容をキャプチャします。複製するスキーマまたはテーブルを定義します。詳しくは、`DBMS_XSTREAM_ADM.CREATE_OUTBOUNDドキュメント<https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_XSTREAM_ADM.html#GUID-A602ED86-0F5A-4A27-92A0-55D5ADC0AF0D>`_を参照してください。
複製範囲に関する重要な考慮事項:
テーブルがXStreamアウトバウンドフィルタリングルールコマンドに含まれている場合、そのテーブルは複製されません。
ここに含まれるテーブルまたはスキーマは、複製されるためにコネクタパラメーターでも定義されている必要があります。サーバーフィルタリングルールにスキーマ全体を含めておき、後でコネクタパラメーターにおいて、そのスキーマ内の特定のテーブルのみを複製対象として指定することができます。
注釈
XStreamアウトバウンドサーバーは、ルートコンテナからのみ作成できます。ただし、Oracle Databaseバージョン23aiからは、PDBレベルで作成することもできます。
CPUやネットワークへの大きな影響を回避し、キューが無関係なデータでいっぱいになるのを防ぐためには、きめ細かいアプローチを使用することが不可欠です。これを行うには、DBMS_XSTREAM_ADM.ADD_TABLE_RULESプロシージャを使用するのが最適です。これにより、必要な特定のテーブルのみを選択できます。
次の例は、さまざまな複製のニーズに基づいてXStreamアウトバウンドサーバーを設定する方法を示しています。実際には、実稼働環境でXStreamアウトバウンドサーバーを設定する際、キャプチャする変更を慎重に選択する必要があります。すべてをキャプチャすると、データベースのパフォーマンスとリソースの使用量に重大な影響を与える可能性があります。
XStreamアウトバウンドサーバーを構成する方法について詳しくは、`XStream Outの構成<https://docs.oracle.com/en/database/oracle/oracle-database/19/xstrm/configuring-xstream-out.html#GUID-A1C8430E-565B-4F66-8E00-495F283AAAFB>`_を参照してください。
例1: ルートコンテナおよびPDBsのすべてのスキーマからすべてのテーブルをキャプチャする
例2: プラガブルデータベース(PDB)の単一のスキーマからすべてのテーブルをキャプチャする
XStreamアウトバウンドサーバー接続ユーザーを設定する¶
XStreamアウトバウンドサーバーで接続ユーザーを設定します。これにより、以前に作成された接続ユーザーがXStreamアウトバウンドサーバー(XOUT1)に関連付けられ、変更データを受信できるようになります。
注釈
次の例では、接続ユーザーがc##connectuserであると想定しています。
XStreamアウトバウンドサーバーキャプチャユーザーを設定する¶
注釈
サーバーを作成したユーザー(管理者)と同じユーザーによってデータをキャプチャする場合は、このセクションをスキップしてください。
別のキャプチャユーザーを設定した場合は、そのユーザーとして実行するようにXStreamアウトバウンドサーバーを構成します。これにより、専用のキャプチャユーザーがXStreamアウトバウンドサーバー(XOUT1)に関連付けられ、そのユーザーが変更データをキャプチャできるようになります。
シングルテナントデータベースのXStreamを設定する¶
Oracle 12c以降のデフォルトアーキテクチャは、コンテナデータベース(CDB)および1つ以上のプラガブルデータベース(PDB)を使用するマルチテナントアーキテクチャです。
Oracleデータベースがシングルテナントアーキテクチャを使用している場合は、XStreamを設定する際の次の違いに注意してください。
``ALTER SESSION SET CONTAINER``コマンドは使用しないでください。シングルテナントデータベースにはインスタンスが1つしかないため、コンテナの切り替えは適用されません。
``xstream_adm_tbs``テーブルスペースは1つのみ作成します。PDBに2番目のテーブルスペースを作成しないでください。
ユーザー名に``C##``プレフィックスを使用しないでください。たとえば、``c##xstreamadmin``の代わりに``xstreamadmin``を、``c##connectuser``の代わりに``connectuser``を作成します。``C##``プレフィックスはマルチテナント環境でのみ必要です。
どのコマンドにも``CONTAINER=ALL``または``container => 'ALL'``を含めないでください。これらの句は、複数のコンテナにまたがる権限を付与するものであり、シングルテナントのデータベースには適用されません。
SSL接続を構成する(オプション)¶
|OracleOFC|は、TCPS(SSLを使用したTCP)プロトコルを使用した、Oracleデータベースへの暗号化されたSSL接続をサポートします。SSLが有効な場合、データベース接続とXStream接続の両方で暗号化通信が使用されます。
SSLを使用するには、次を行う必要があります。
OracleデータベースでTCPSを有効にします¶
TCPSプロトコルを使用して接続を受け入れるように、Oracleデータベースを構成する必要があります。データベース環境の手順に従ってください。
オンプレミス / OCI¶
サーバー証明書を含むSSLサーバーウォレットを作成します。
TCPSエンドポイント(デフォルトポート2484)を含めるように``listener.ora``を構成します。
サーバーウォレットを参照するように``sqlnet.ora``を構成します。
リスナーを再起動します。
詳しくは、`トランスポート層セキュリティ暗号化の構成<https://docs.oracle.com/en/database/oracle/oracle-database/23/dbseg/configuring-transport-layer-security-encryption.html>`_を参照してください。
AWS RDS(標準)¶
DBインスタンスに関連付けられたオプショングループにOracle SSLオプションを追加します。
SSLポート(例:2484)を指定します。
詳しくは、`Oracle Secure Sockets Layer<https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.SSL.html>`_を参照してください。
クライアントウォレットを作成する¶
データベースでTCPSを有効にした後、サーバーの信頼できる証明書を含むOracleオートログインウォレット(cwallet.sso)を作成します。このウォレットは、SSLハンドシェイク中にサーバーを確認できるようにコネクタに提供されます。
Oracleデータベースサーバーからサーバー証明書をPEMファイルとしてエクスポートします。
Oracle ``orapki``ユーティリティを使用してクライアントウォレットを作成し、サーバー証明書をインポートします。
生成された``cwallet.sso``ファイルをOpenflowランタイムからアクセス可能な場所にコピーします。
注釈
AWS RDSの場合、データベースサーバーからエクスポートする代わりにAWSからルート証明書をダウンロードしてください。詳しくは、`SSLを使用したRDS for Oracle DBインスタンスへの接続<https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.Options.SSL.Connecting.html>`_を参照してください。
詳しくは、`orapki ユーティリティを使用したPKI要素の管理<https://docs.oracle.com/en/database/oracle/oracle-database/23/dbseg/using-the-orapki-utility-to-manage-pki-elements.html>`_を参照してください。