18.1 シャード・データベースでのOracle Text PL/SQL APIの実行

Oracle Globally Distributed Databaseを使用すると、複数の独立したOracleデータベースにデータを水平にパーティション化できます。このような構成内の各物理データベースをシャードと呼びます。シャーディング固有のPL/SQLプロシージャSYS.EXEC_SHARD_PLSQLを使用して、特定のOracle Text CTXSYSプロシージャをすべてのシャードに伝播できます。

SYS.EXEC_SHARD_PLSQLラッパーを使用して、シャード・データベース構成でDDL文が実行されるのと同じ方法で、すべてのシャードでターゲット・プロシージャを実行します。これらのプロシージャは、すべてのシャードに伝播され、カタログによって追跡され、新しいシャードが構成に追加されるたびに実行されます。

SYS.EXEC_SHARD_PLSQLラッパーを使用せずにターゲット・プロシージャを実行すると、そのプロシージャはシャード・カタログでのみ実行され、すべてのシャードに伝播されません。

SYS.EXEC_SHARD_PLSQLプロシージャは、単一のCLOB引数を取ります。これは、完全修飾プロシージャ名とその引数を指定する文字列です。

たとえば、すべてのシャードでCTXSYS.CTX_DDL.CREATE_PREFERENCEを実行するには:

exec sys.exec_shard_plsql('ctxsys.ctx_ddl.create_preference(
    preference_name => "mylexer", 
    object_name => "BASIC_LEXER")');

次の点に注意してください:

  • ある種のPL/SQLプロシージャにはラッパーが必要であり、その他のプロシージャには必要ではありません。許可されるPL/SQLプロシージャの詳細なリストは、「シャード・データベースでサポートされるAPI」を参照してください。

  • コールの指定自体はSYS.EXEC_SHARD_PLSQLの文字列パラメータであるため、ターゲット・プロシージャ・コールの指定内で二重引用符(")を使用する必要があります。

  • SYS.EXEC_SHARD_PLSQLプロシージャを完全修飾名(CTXSYS.CTX_DDL.CREATE_PREFERENCEなど)を指定せずに実行すると、エラーが発生します。