Autonomous DatabaseでProxySQLを有効にして効率的な文ルーティングを使用
ProxySQLは、DMLおよび問合せの文をルーティングすることで、複数のAutonomous Databasesへの統合アクセスを可能にし、すべてのデータを1つのデータベースに物理的に統合する必要性を排除します。
トピック
- Autonomous Database上のProxySQLを使用した効率的な文のルーティングについて
Autonomous Database上のProxySQLを使用すると、複数のAutonomous Databaseインスタンスを使用でき、1つの場所に格納されたかのように、データへのアクセスおよび分析が容易になります。 - 文のルーティングの有効化およびスキーマ・マッピングの定義
この項では、メイン・ルーターから1つ以上のターゲット・データベース・インスタンスへの自動文ルーティングのProxySQLを設定する方法について説明します。 - ProxySQLによる文の発行
自動文のルーティングを利用するには、ProxySQLによって管理されるルーター・インスタンスに接続して文を発行する必要があります。 - ターゲット・インスタンスへの文のルーティングの停止
ターゲットAutonomous Databaseで次のステップを実行して、ProxySQLルーターからのルーティングされた文の受け入れを停止させます。 - ルーター・インスタンスからのスキーマまたはオブジェクト・マッピングの削除
ProxySQLによって管理されるルーター・データベースから特定のマッピングを削除するステップを示します。 - 文のルーティングの無効化
ProxySQLを無効にして、文のルーティングを自動化するステップを示します。 - ProxySQLによる自動文ルーティングに関するノート
ProxySQLが有効な場合の自動文ルーティングに関する制限事項および重要なノートを示します。
Autonomous DatabaseでのProxySQLを使用した効率的な文のルーティングについて
Autonomous Database上のProxySQLを使用すると、複数のAutonomous Databaseインスタンスを使用でき、1つの場所に格納されたかのように、データに簡単にアクセスして分析できます。
ProxySQLは、複数のAutonomous Databasesを含む大規模な設定で作業する必要がある場合に使用できます。ProxySQLを使用すると、様々なデータベースへの統合アクセスが可能になり、データを1つの場所に物理的に移動する必要がなくなります。
ProxySQLを有効にすると、1つのAutonomous Databaseインスタンスをルーター・インスタンスとして指定し、1つ以上のAutonomous Databaseインスタンスがターゲット・インスタンスになります。ルーター・インスタンスには、文を1つ以上のターゲット・インスタンスに分散(マップ)する方法を決定するルーティング表が含まれます。ターゲット・インスタンスには、受入れ表が含まれます。受入れテーブルはルーティングテーブルに似ており、インスタンスがルーターからのステートメントリダイレクトを受け入れることを指定するエントリが含まれています。
選択したルーティング方法に応じて、ステートメントはルーターインスタンスから1つ以上のターゲットインスタンスに自動的にマップされます。アプリケーションはルーター・インスタンスに接続し、ルーター・インスタンスで実行し、Autonomous Databaseは文を1つ以上のターゲット・インスタンスにリダイレクトします。
1つの非常に大きなAutonomous Databaseを使用する場合と比較して、ProxySQLを有効にする利点の一部を次に示します:
-
ProxySQLは、ライフサイクル管理や管理タスクなどの操作のためのデータベースの自律性と独立性を提供します。たとえば、ProxySQLを使用すると、バックアップとリストアなどのデータベース操作、およびAutonomous Data Guardなどの機能は、各Autonomous Databaseインスタンスで個別に管理されます。
-
ProxySQLを使用すると、複数のAutonomous Databaseインスタンスにデータを分割して、非常に大規模なデータベースを効率的に管理できます。
ProxySQLの操作時に知っておく必要がある用語がいくつかあります。
ルーター・インスタンス: ProxySQLを有効にすると、ルーター・インスタンスが指定されます。ルーティング表は、文を1つ以上のターゲット・インスタンスに分散(マップ)する方法を決定します。指定されたルーティング方法に応じて、ルーターインスタンスからのステートメントは自動的に1つ以上のターゲットインスタンスにマッピングされます。
ターゲット・インスタンス: ターゲット・インスタンスは、ルーター・インスタンスでマッピングを作成するときに指定されます。各ターゲット・インスタンスに受入れ表が追加されます。
ルーティング表: ルーティング表には、文が自動的にルーティングされるインスタンスを指定するターゲット・マッピング・エントリが含まれます。
受入れ表: 受入れ表には、インスタンスがルーターからの文リダイレクトを受け入れることを指定するエントリが含まれます。
ProxySQLを使用するための要件
ProxySQLの要件は次のとおりです。
-
ProxySQLの有効化は、エラスティック・プールにあるAutonomous Databaseインスタンスでのみサポートされています。ルーター・インスタンスとすべてのターゲット・インスタンスは、同じエラスティック・プールのメンバーである必要があります。
-
ルーター・インスタンスとすべてのターゲット・インスタンスが同じリージョンにある必要があります。
-
ルーティングするオブジェクトのメタデータは、ルーター・インスタンスとターゲット・インスタンスで一致する必要があります。アプリケーション設計者は、ターゲット・インスタンスに存在するオブジェクトのメタデータもルーター・インスタンスに存在する必要があります。たとえば、ターゲット・インスタンスに
EMPLOYEES
という名前の表がある場合、ルーター・インスタンスにEMPLOYEES
という名前の一致するメタデータを持つ表も必要です。ルーター・インスタンスの表は、空である必要はありません(メタデータのみ)。
ProxySQLを有効にするための推奨事項
ルーターおよびターゲットとして追加するインスタンスは、任意のAutonomous Databaseワークロード・タイプにできます。ルーティング(マッピング)表にエントリがある場合、それらのエントリで指定されたオブジェクトに対する文は、ターゲットのワークロード・タイプに関係なく、対応するターゲット・インスタンスにルーティングされます。Oracleでは、すべてのtheAutonomousデータベース・インスタンスでデータ・ウェアハウスのワークロード・タイプを使用することをお薦めします。
ProxySQLを有効にした自動文ルーティング
ProxySQLを使用すると、サポートされているルーティング方法のいずれかを使用して、ターゲット間で文を分散できます。
使用するルーティング方法(マッピング)に関係なく、ターゲット・インスタンスに配置されたオブジェクトのメタデータがルーター・インスタンスでも使用可能になるようにするのは、アプリケーション・スキーマ設計者の責任です。たとえば、ターゲット・インスタンスに
EMPLOYEES
という名前の表がある場合、ルーター・インスタンスにEMPLOYEES
という名前の一致するメタデータを持つ表も必要です。ルーターインスタンス内のテーブルは空である必要はありません。
-
スキーマ・レベルのルーティング: スキーマのすべてのオブジェクトが単一のターゲット・インスタンスにマップされます。複数のスキーマを単一のターゲット・インスタンスにマッピングできます。ただし、1つのスキーマの文は複数のターゲット・インスタンス間でマップできません。つまり、同じスキーマをスキーマ・ルーティングとオブジェクト・ルーティングの両方に使用することはできません。
スキーマ・レベルのルーティングを指定するには、
object_name
パラメータの値を"*"に設定してDBMS_PROXY_SQL.ADD_MAPPING
プロシージャをコールします。この例では、スキーマAのオブジェクトのメタデータは、ターゲットAutonomous Database 1とルーター・インスタンスの両方に存在し、スキーマBのオブジェクトのメタデータは、ターゲットAutonomous Database 2とルーター・インスタンスの両方に存在します。
-
オブジェクト・レベルのルーティング: スキーマ内のオブジェクトは、複数のターゲット・インスタンス間でマップされます。
オブジェクト・レベル・ルーティングを指定するには、
object_name
パラメータを表名に設定してDBMS_PROXY_SQL.ADD_MAPPING
プロシージャをコールします。この例では、表Aのメタデータがターゲット1とルーター・インスタンスの両方に存在し、表Bのメタデータがターゲット2とルーター・インスタンスの両方に存在します。
-
ハイブリッド・ルーティング: スキーマ・レベルのルーティングとオブジェクト・レベルのルーティングの組合せを使用して、スキーマのオブジェクトがルーティングされます。
この例では、スキーマAのメタデータはターゲットAutonomous Database 1とルーター・インスタンスの両方に存在し、表Bのメタデータ(スキーマB)はターゲットAutonomous Database 2とルーター・インスタンスの両方に存在します。
ProxySQLが有効な場合の自動文ルーティングによるサービス・マッピング
ルーティングテーブルがターゲットデータベースへのマッピングを示している場合、ルータデータベースに接続しているサービスと同じサービスがターゲットデータベースのデータアクセスに使用されます。
たとえば、セッションがルーター・インスタンスのHIGHサービスに接続されている場合、ターゲット・インスタンスにルーティングされる文または文のフラグメントもHIGHサービスを使用します。同様に、ルーター・インスタンス上のMEDIUMサービスにセッションが接続されている場合、ターゲット・インスタンスにルーティングされる文はMEDIUMサービスを使用します。
ルーター・インスタンスでの接続に使用されるサービスがターゲット・インスタンスで使用できない場合、ターゲット・インスタンスにルーティングされる文または文のフラグメントはMEDIUMサービスを使用します(使用可能なサービスはAutonomous Databaseワークロード・タイプによって異なります)。
文のルーティングの有効化およびスキーマ・マッピングの定義
この項では、メイン・ルーターから1つ以上のターゲット・データベース・インスタンスへの自動文ルーティング用にProxySQLを設定する方法について説明します。
- 文ルーティングの有効化およびルーターからターゲット・インスタンスへのオブジェクト・マッピングの定義
文ルーティングを設定するには、ルーター・インスタンスでProxySQLを有効にし、文がターゲット・データベースにマップ(送信)されるスキーマを定義します。 - ターゲット・インスタンスでの文のルーティングの受入れ
ルーター・インスタンスからのマッピングを許可するには、ターゲット・インスタンスでの文のルーティングを受け入れる必要があります。
明細書ルーティングの有効化およびルーターからターゲット・インスタンスへのオブジェクト・マッピングの定義
文のルーティングを設定するには、ルーター・インスタンスでProxySQLを有効にし、文がターゲット・データベースにマップ(送信)されるスキーマを定義します。
自動明細書送付を有効にするための前提条件は次のとおりです。
-
ルーター・インスタンスに使用する予定のAutonomous Databaseインスタンスを作成するか、既存のAutonomous Databaseインスタンスをルーター・インスタンスとして識別します。
-
ターゲット・インスタンスを作成するか、既存のAutonomous Databaseインスタンスからターゲット・インスタンスを識別します。
-
ルーター・インスタンスと、問合せをリダイレクトするターゲット・インスタンスに、ルーターからターゲットにマッピングするオブジェクトと一致するメタデータがあることを確認します。
使用するルーティング方法(マッピング)に関係なく、ターゲット・インスタンスに配置されたオブジェクトのメタデータもルーター・インスタンスで使用できるようにするのは、アプリケーション・スキーマ設計者の責任です。たとえば、ターゲット・インスタンスに
EMPLOYEES
という名前の表がある場合、ルーター・インスタンスにEMPLOYEES
という名前の一致するメタデータを持つ表も必要です。ルーターインスタンス内のテーブルは空である必要はありません。 -
使用可能な選択肢から、使用する文ルーティングのタイプ(スキーマ・レベル・ルーティング、オブジェクト・レベル・ルーティングまたはハイブリッド・ルーティング)を決定します。
自動取引明細書送付を有効にし、ターゲット・マッピング・エントリをルーティング表に追加するには:
DBA_PROXY_SQL_MAPPINGS
ビューを問い合せて、ルーティング表のレコードをリストできます。詳細は、DBA_PROXY_SQL_MAPPINGSビューを参照してください。
親トピック: 文のルーティングの有効化およびスキーマ・マッピングの定義
ターゲット・インスタンスでの文書ルーティングの受入
ルーター・インスタンスからのマッピングを許可するには、ターゲット・インスタンスで文ルーティングを受け入れる必要があります。
ルーター・インスタンスからターゲット・インスタンスへの(accept)文のリダイレクトを許可するには:
親トピック: 文のルーティングの有効化およびスキーマ・マッピングの定義
ProxySQLを使用した文の発行
自動文ルーティングを利用するには、ProxySQLによって管理されるルーター・インスタンスに接続し、文を送信する必要があります。
ProxySQLを有効にしてDML文を含む問合せを送信する場合、自動文ルーティングを利用するには、ルーター・インスタンスに接続する必要があります。
ターゲット・インスタンスへの文のルーティングの停止
ターゲットAutonomous Databaseで次のステップを実行して、ProxySQLルーターからのルーティングされた文の受入れを停止させます。
詳細は、REJECT_MAPPINGプロシージャを参照してください。
取引明細書送付の無効化
ProxySQLを無効にして文を自動ルーティングするステップを示します。
ルーター・インスタンスでDBMS_PROXY_SQL.DISABLE_ROUTING
を実行して、ProxySQLを無効にし、ターゲット・インスタンスへの自動文ルーティングを無効にします。
たとえば:
BEGIN
DBMS_PROXY_SQL.DISABLE_ROUTING
;
END;
/
これにより、ProxySQLが無効になり、ルーターの自動文ルーティングが無効になります。
ProxySQLを無効にしても、ルーター・インスタンスのルーティング表にある文マッピング・エントリは削除されません。これは、ProxySQLを再度有効にし、ルーティング表に既存のエントリがある場合、自動文ルーティングによって、ルーティング表に指定されたとおりに文がターゲット・インスタンスにルーティングされることを意味します。ProxySQLを再度有効にする前に既存のルーティング表エントリを削除する場合は、プロシージャDBMS_PROXY_SQL.REMOVE_MAPPING
を使用します。
詳細は、DISABLE_ROUTINGプロシージャを参照してください。
ProxySQLノートによる自動文ルーティング
ProxySQLが有効な場合の自動文のルーティングに関する制限事項と重要なノートを示します。
-
ADMIN
ユーザーには、ProxySQLを管理する権限があります。別のユーザーを有効にする場合は、次の権限を付与する必要があります。-
DBMS_PROXY_SQL
パッケージに対するEXECUTE
権限。 -
DBA_PROXY_SQL_MAPPINGS
ビューに対するREAD
権限。 -
DBA_PROXY_SQL_ACCEPTED_MAPPINGS
ビューに対するREAD
権限。
-
-
自動明細書送付は、次の場合にシームレスに再開されます。
-
ターゲットAutonomous Databaseインスタンスは、ローカルのAutonomous Data Guardスタンバイにフェイルオーバーします。
-
ターゲットAutonomous DatabaseインスタンスのローカルAutonomous Data Guardスタンバイへのスイッチオーバーを実行します。
ただし、クロスリージョンAutonomous Data Guardスタンバイ・データベースへのフェイルオーバーまたはスイッチオーバー後、自動文のルーティングは停止します。
-