Oracle の ST_Geometry にアクセスするための extproc の構成
Oracle の ST_Geometry SQL 関数が使用する共有ライブラリーには、Oracle が Oracle の外部プロシージャ エージェント (extproc) を経由してアクセスします。 次に示す操作を実行するには、Oracle の外部プロシージャ フレームワークから物理 ST_SHAPELIB ライブラリー ファイルにアクセスする必要があります。
SQL クライアントから SQL 関数 ST_Geometry を実行する。
ST_Geometry 列で SQL 関数を実行するクエリー レイヤーを定義する。
ArcGIS Pro でビン フィーチャ レイヤーに対するクエリーを実行する。
Oracle データベースのデータを参照する Web レイヤーを公開する。
空間検索 ジオプロセシング ツールを 交差する (DBMS) オプションを使用して実行します。
準備作業
各オペレーティング システム専用の ST_Geometry ライブラリーが作成されています。 My Esri にサイン インし、Oracle を実行しているオペレーティング システムと、使用している ArcGIS クライアント バージョンに固有のライブラリー ファイルをダウンロードします。
Oracle インスタンスが ST_Geometry ライブラリーにアクセス可能でなければなりません。 Oracle インスタンスがアクセス可能な Oracle コンピューター上のディレクトリーにこのライブラリーを配置します。
Oracle extproc ファイルを構成する前に、次の手順を実行します。
My Esri から ST_Geometry ライブラリーをダウンロードして、Oracle コンピューター上のディレクトリーに配置します。
注意:
使用している Oracle のオペレーティング システムに対応する正しいライブラリーをダウンロードするかコピーします。
Microsoft Windows サーバー上に配置された場合、ST_Geometry ライブラリーには Microsoft Visual C++ 再頒布可能パッケージ (x64) が必要となります。 必要となるパッケージ バージョンについては、「Oracle を使用するための ArcGIS の要件」をご参照ください。 このパッケージが Oracle サーバー上に存在しない場合は、Microsoft のサイトからダウンロードしてインストールしてください。
空間タイプの作成 ジオプロセシング ツールを実行して Oracle データベース内の ST_Geometry を有効にするか、エンタープライズ ジオデータベースの作成 または エンタープライズ ジオデータベースの有効化 ジオプロセシング ツールを実行してジオデータベースを作成すると、ST_SHAPELIB ライブラリーのデフォルト パスが設定されます。
sde ユーザーとして SQL クライアントから Oracle インスタンスに接続した後、次の SQL を実行し、ツールによって設定されたパスと ST_Geometry ライブラリーの場所が一致していることを確認します。
SELECT file_spec FROM user_libraries WHERE library_name = 'ST_SHAPELIB';この結果として返されたパスが ST_Geometry ライブラリー ファイルの場所と一致しない場合は、extproc を構成した後でライブラリーを再作成する必要があります。
extproc の構成
ST_Geometry ライブラリー ファイルの場所を参照するように Oracle extproc.ora ファイルを構成します。 Oracle SQL 構文については Oracle のドキュメントをご参照ください。
extproc.oraファイルのバックアップを Oracle サーバーに作成します。テキスト エディターで
extproc.oraファイルを開き、st_shapelib.dllライブラリー (Windows) またはlibst_shapelib.soライブラリー (Linux または UNIX) の場所を参照するように変更します。extproc.oraファイルを保存して閉じます。extproc.oraファイル内の変更を識別するために、Oracle インスタンスの再起動が必要になる場合があります。ST_Geometry ライブラリー ファイルの場所をデフォルトの場所から変更した場合や場所が設定されていない場合は、Oracle データベース内に ST_SHAPELIB ライブラリーを作成または再作成します。
ST_Geometry ライブラリーを作成または再作成するには、sde ユーザーとしてデータベースに接続する必要があります。
ライブラリーを再作成した場合は、
sde.st_geometry_shapelib_pkgパッケージを再コンパイルします。ライブラリー (Web サービスを含む) にアクセスする必要のあるすべてのクライアントは、データベースに再接続する必要があります。
extproc 構成の検証
ST_Geometry ライブラリに対してクエリーを実行することで、extproc がこのライブラリーにアクセスできることを確認することができます。
Oracle SQL クライアントにサイン インします。
次のクエリーを実行します。
SELECT sde.ST_AsText( SDE.ST_Geometry('POINT (10 10)', 0) ) FROM dual;extproc が適切に構成されている場合、このクエリーでは以下が返されます。
SDE.ST_ASTEXT(SDE.ST_GEOMETRY('POINT(1010)',0)) ------------------------------------------- POINT (10.00000000 10.00000000)extproc が適切に構成されていない場合、次のエラー メッセージのうち 1 つ以上がクエリーから返されます。
ORA-06520: PL/SQL: Error loading external library
ORA-06522: Unable to load DLL
ORA-06512: at "SDE.ST_GEOMETRY_SHAPELIB_PKG", line 0
ORA-06512: at "SDE.ST_GEOMETRY_OPERATORS", line 68
アップグレードと ST_Geometry ライブラリー
Oracle のジオデータベースをアップグレードする場合、または Oracle データベースで ST_Geometry タイプをアップグレードする必要がある場合に、新しいバージョンのライブラリーに含まれている修正および改善を取得するには、このファイルをダウンロードまたはコピーする必要があります。
ライブラリが置き換えられた場合や Oracle インスタンスをアップグレードした場合、Oracle でライブラリーが無効になることがあります。 Oracle では、オブジェクトがクライアントによって参照されるときに無効なデータベース オブジェクトが自動的に再コンパイルされることがありますが、自動的にコンパイルされないこともあります。
ST_Geometry ライブラリーは sde ユーザーによって所有されます。 このライブラリー (および sde ユーザーによって所有されるすべてのファイル) のステータスを確認するには、sde ユーザーとして SQL クライアントにサイン インして次のステートメントを実行します。
SELECT object_name, object_type
FROM USER_OBJECTS
WHERE STATUS = 'INVALID';
無効なオブジェクトのリストで sde.st_geometry_shapelib_pkg パッケージ本体が返された場合は、上記の「extproc の構成」のステップ 5 に記載のとおり、パッケージを再コンパイルしてください。
複数のオブジェクトが無効な場合は、同じスキーマのすべてのオブジェクトを再コンパイルできます。 オブジェクトを再コンパイルするために必要な権限と手順については、Oracle のドキュメントをご参照ください。