MDSYS.SDO_GEOR_ADMINパッケージには、GeoRasterに関連する管理操作を行うためのサブプログラム(ファンクションおよびプロシージャ)が含まれています。この章では、そのサブプログラムのリファレンス情報を、例を使用して説明します。
構文
SDO_GEOR_ADMIN.checkSysdataEntries() RETURN SDO_STRING2_ARRAY;
説明
USER_SDO_GEOR_SYSDATAビューで無効なエントリがあるかどうかを確認します。
パラメータ
なし
使用上の注意
このファンクションは、無効なGeoRasterシステム・データ・エントリのカンマ区切りリストの配列を戻します。このファンクションでは次のようなエラーを確認します。
RDT名が一意でない。
GeoRaster表が存在しない。
GeoRaster列が存在しない。
GeoRasterオブジェクトが存在しない。
GeoRasterオブジェクトが空または空白ではないが、RDTが存在しない。
GeoRasterオブジェクトが重複して存在する(RDTとラスターIDの一意ではない組合せが1つ以上存在する)。
MDSYSユーザーとして接続してこのファンクションをコールすると、USER_SDO_GEOR_METADATAビューのかわりにALL_SDO_GEOR_SYSDATAビューのエントリを確認します。
USER_SDO_GEOR_DATAビューおよびALL_SDO_GEOR_SYSDATAビューの詳細は、2.4項を参照してください。
例
次の例では、USER_SDO_GEOR_SYSDATAビューで無効なエントリがあるかどうかを確認します。
SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.checkSysdataEntries FROM DUAL); COLUMN_VALUE -------------------------------------------------------------------------------- The RDT name "RDT1" is not unique The GeoRaster object GEOR_TEST1.TABLE1.GEOR: RDT=RDT2 RID=3 is associated with a non-existing RDT table! The specification of GeoRaster column GEOR_TEST1.TABLE1.c1 is not correct. The GeoRaster object GEOR_TEST1.TABLE1.geor: RDT=dt3 RID=2 doesn't exist! The GeoRaster table GEOR_TEST1.t1 doesn't exist!
構文
SDO_GEOR_UTL.isRDTNameUniquer(
rdtName VARCHAR2)
RETURN VARCHAR2;
説明
指定したラスター・データ表(RDT)の名前が、データベース内で一意のRDT名であるかどうかを確認します。
パラメータ
一意かどうかを確認する名前を指定します。
使用上の注意
このファンクションを使用すると、指定しようとしているRDT名が一意かどうか、RDTを作成する前に確認できます。
このファンクションは、名前が一意の場合は文字列TRUE
を戻し、名前が一意でない場合は文字列FALSE
を戻します。
例
次の例では、MY_RDT
が一意の名前かどうかを確認します。
SELECT SDO_GEOR_ADMIN.IsRDTNameUnique('MY_RDT') FROM DUAL; SDO_GEOR_ADMIN.ISRDTNAMEUNIQUE('MY_RDT') -------------------------------------------------------------------------------- TRUE
構文
SDO_GEOR_ADMIN.isUpgradeNeeded() RETURN SDO_STRING2_ARRAY;
説明
現行のスキーマのGeoRasterシステム・データ・エントリおよびGeoRasterデータを確認します。
パラメータ
なし
使用上の注意
このファンクションは、無効なGeoRasterシステム・データ・エントリ、無効なGeoRaster列および無効なGeoRasterオブジェクトのカンマ区切りリストの配列を戻します。このファンクションでは次のようなエラーを報告します。
システム・データ・エントリ・エラー: RDT名が一意でない。
システム・データ・エントリ・エラー: RDTとRIDのペアが一意でない。
システム・データ・エントリ・エラー: GeoRaster表が存在しない。
システム・データ・エントリ・エラー: GeoRaster列が存在しない。
システム・データ・エントリ・エラー: GeoRasterオブジェクトが存在しない。
GeoRasterオブジェクトが空または空白ではないが、RDTが存在しない。
GeoRasterオブジェクトが重複して存在する(RDTとラスターIDの一意ではない組合せが1つ以上存在する)。
(GeoRaster列、GeoRasterオブジェクト)のペアで、登録されていないものがある。
MDSYSユーザーとして接続してこのファンクションをコールすると、データベース全体のGeoRasterシステム・データ・エントリおよびGeoRasterデータを確認します。
例
次の例では、GeoRasterシステム・データ・エントリおよびGeoRasterデータを確認します。MDSYSユーザーとして接続していることを想定しています。
SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.isUpgradeNeeded FROM DUAL); COLUMN_VALUE -------------------------------------------------------------------------------- The following GeoRaster columns aren't registered: SCHEMA:GEOR_TEST TABLE:TABLE1 COLUMN:GEOR The following GeoRaster objects aren't registered: SCHEMA:GEOR_TEST TABLE:TABLE1 COLUMN:GEOR RDT:RDT RID:3 SCHEMA:GEOR_TEST TABLE:TABLE1 COLUMN:GEOR RDT:RDT RID:4
構文
SDO_GEOR_ADMIN.listGeoRasterColumns() RETURN SDO_STRING2_ARRAYSET;
説明
現行のスキーマに定義されているGeoRaster列を示します。
パラメータ
なし
使用上の注意
このファンクションは、GeoRaster列とその登録ステータスのカンマ区切りリストの配列を戻します。このリストの内容は次のとおりです。
スキーマ名(MDSYSユーザーとして接続している場合のみ)
GeoRaster表の名前
GeoRaster列の名前
ステータス: registered(登録済: GeoRaster列にDMLトリガーが作成されている)またはunregistered(未登録: GeoRaster列にDMLトリガーが作成されていない)
MDSYSユーザーとして接続してこのファンクションをコールすると、データベースに定義されているすべてのGeoRaster列が示されます。
例
次の例では、現行のスキーマに定義されているGeoRaster列を示します。
SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.listGeoRasterColumns FROM DUAL); COLUMN_VALUE --------------------------------------------------------------------------------- SDO_STRING2_ARRAY('TEST_TABLE1', 'GEOR', 'registered') SDO_STRING2_ARRAY('TEST_TABLE2', 'GEOR', 'registered')
構文
SDO_GEOR_ADMIN.listGeoRasterObjects() RETURN SDO_STRING2_ARRAYSET;
説明
現行のスキーマに定義されているGeoRasterオブジェクトを示します。
パラメータ
なし
使用上の注意
このファンクションは、GeoRasterオブジェクトとその登録ステータスのカンマ区切りリストの配列を戻します。このリストの内容は次のとおりです。
スキーマ名(MDSYSユーザーとして接続している場合のみ)
GeoRaster表の名前
GeoRaster列の名前
RDTの名前
ラスターID
ステータス: registered(GeoRasterオブジェクトがSYSDATA表に登録されている)またはunregistered(GeoRasterオブジェクトがSYSDATA表に登録されていない)
MDSYSユーザーとして接続してこのファンクションをコールすると、データベースに定義されているすべてのGeoRasterオブジェクトが示されます。
例
次の例では、現行のスキーマに定義されているGeoRasterオブジェクトを示します。
SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.listGeoRasterObjects FROM DUAL); COLUMN_VALUE --------------------------------------------------------------------------------- SDO_STRING2_ARRAY('TEST_TABLE1', 'GEOR', 'RDT_REGULAR_01', '1', 'registered') SDO_STRING2_ARRAY('TEST_TABLE2', 'GEOR', 'RDT_REGULAR_01', '2', 'registered')
構文
SDO_GEOR_ADMIN.listGeoRasterTables() RETURN SDO_STRING2_ARRAYSET;
説明
現行のスキーマに定義されているGeoRaster表を示します。
パラメータ
なし
使用上の注意
このファンクションは、GeoRaster表のカンマ区切りリストの配列を戻します。このリストの内容は次のとおりです。
スキーマ名(MDSYSユーザーとして接続している場合のみ)
GeoRaster表の名前
MDSYSユーザーとして接続してこのファンクションをコールすると、データベースに定義されているすべてのGeoRaster表が示されます。
例
次の例では、データベースに定義されているGeoRaster表を示します。MDSYSユーザーとして接続していることを想定しています。
SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.listGeoRasterTables FROM DUAL); COLUMN_VALUE --------------------------------------------------------------------------------- SDO_STRING2_ARRAY('GEOR_TEST', 'TEST_TABLE1') SDO_STRING2_ARRAY('GEOR_TEST', 'TEST_TABLE2')
構文
SDO_GEOR_ADMIN.listDanglingRasterData() RETURN SDO_STRING2_ARRAYSET;
説明
GeoRasterシステム・データ・エントリおよびGeoRasterデータを確認し、すべてのダングリング・ラスター・データを示します。
パラメータ
なし
使用上の注意
ラスター・データ表(RDT)には、存在しないGeoRasterオブジェクトまたはSYSDATA表で参照されないGeoRasterオブジェクトに対する行が存在することがあります。このような行に関連付けられたラスター・ブロックを、ダングリング・ブロックといいます。ダングリング・ラスター・ブロックが存在すると、RDTに必要な主キーが定義されているかぎり問題は発生しませんが、RDTのディスク領域が無駄に消費されます。 現行のスキーマ内またはすべてのスキーマ内にあるダングリング・ブロックを検索するには、SDO_GEOR_ADMIN.listDanglingRasterDataファンクションをコールします。
このファンクションをコールする前に、SDO_GEOR_ADMIN.registerGeoRasterObjectsをコールしてすべての既存のGeoRasterオブジェクトを登録する必要があります。
ダングリング・ラスター・ブロック・データをRDTから削除するには、SDO_GEOR_ADMIN.listDanglingRasterDataファンクションによって検出された問題に関連する行を削除します。
このファンクションは、ダングリング・ラスター・データのカンマ区切りリストの配列を戻します。このリストの内容は次のとおりです。
スキーマ名(MDSYSユーザーとして接続している場合のみ)
RDTの名前
ラスターID
MDSYSユーザーとして接続してこのファンクションをコールすると、データベース内のすべてのダングリング・ラスター・データが示されます。
例
次の例では、現行のスキーマにあるすべてのダングリング・ラスター・データを示します。
SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.listDanglingRasterData FROM DUAL); COLUMN_VALUE -------------------------------------------------------------------------------- SDO_STRING2_ARRAY('RDT11', '3')
構文
SDO_GEOR_ADMIN.listRDT() RETURN SDO_STRING2_ARRAYSET;
説明
現行のスキーマに定義されているラスター・データ表(RDT)を示します。
パラメータ
なし
使用上の注意
このファンクションは、RDTのカンマ区切りリストの配列を戻します。このリストの内容は次のとおりです。
スキーマ名(MDSYSユーザーとして接続している場合のみ)
RDTの名前
MDSYSユーザーとして接続してこのファンクションをコールすると、データベースに定義されているすべてのRDTが示されます。
例
次の例では、現行のスキーマに定義されているRDTを示します。
SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.listRDT FROM DUAL); COLUMN_VALUE --------------------------------------------------------------------------------- SDO_STRING2_ARRAY('RDT_REGULAR_01') SDO_STRING2_ARRAY('RDT_REGULAR_02')
構文
SDO_GEOR_ADMIN.listRegisteredRDT() RETURN SDO_STRING2_ARRAYSET;
説明
現行のスキーマに定義されている登録済のラスター・データ表(RDT)を示します。SYSDATA表内の1つ以上のエントリから参照されていれば、RDTは登録済です。
パラメータ
なし
使用上の注意
このファンクションは、RDTのカンマ区切りリストの配列を戻します。このリストの内容は次のとおりです。
スキーマ名(MDSYSユーザーとして接続している場合のみ)
RDTの名前
MDSYSユーザーとして接続してこのファンクションをコールすると、データベースに定義されているすべての登録済のRDTが示されます。
例
次の例では、現行のスキーマに定義されている登録済のRDTを示します。
SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.listRegisteredRDT FROM DUAL); COLUMN_VALUE --------------------------------------------------------------------------------- SDO_STRING2_ARRAY('RDT1_REGULAR_01')
構文
SDO_GEOR_ADMIN.listUnregusteredRDT() RETURN SDO_STRING2_ARRAYSET;
説明
現行のスキーマに定義されている未登録のラスター・データ表(RDT)を示します。SYSDATA表内のエントリから参照されていない場合、RDTは未登録です。
パラメータ
なし
使用上の注意
このファンクションは、RDTのカンマ区切りリストの配列を戻します。このリストの内容は次のとおりです。
スキーマ名(MDSYSユーザーとして接続している場合のみ)
RDTの名前
MDSYSユーザーとして接続してこのファンクションをコールすると、データベースに定義されているすべての未登録のRDTが示されます。
例
次の例では、現行のスキーマに定義されている未登録のRDTを示します。
SELECT * FROM THE (SELECT SDO_GEOR_ADMIN.listUnregisteredRDT FROM DUAL); COLUMN_VALUE --------------------------------------------------------------------------------- SDO_STRING2_ARRAY('RDT_REGULAR_02')
構文
SDO_GEOR_ADMIN.maintainSysdataEntries() RETURN SDO_STRING2_ARRAY;
説明
USER_SDO_GEOR_SYSDATAビューで無効なエントリを確認し、必要に応じて修正処理を行います。
パラメータ
なし
使用上の注意
このファンクションはSDO_GEOR_ADMIN.checkSysdataEntriesファンクションと同じ確認を実行し、(該当する修正処理がある場合は)適切な修正処理を行います。次の各エラーについて、このファンクションでは次の修正処理を行います。
RDT名が一意でない。MDSYS以外のユーザーとして接続している場合は何も処理が行われません。ユーザーMDSYSとして接続している場合は、RDT名が一意になるように、重複しているRDTの名前が変更されます。
GeoRaster表が存在しない。エントリが削除されます。
GeoRaster列が存在しない。エントリが削除されます。
GeoRasterオブジェクトが存在しない。エントリが削除されます。
GeoRasterオブジェクトが空または空白ではないが、RDTが存在しない。エントリが削除されます。
GeoRasterオブジェクトが重複して存在する(RDTとラスターIDの一意ではない組合せが1つ以上存在する)。エントリが削除されます。
MDSYSユーザーとして接続してこのファンクションをコールすると、USER_SDO_GEOR_METADATAビューのかわりにALL_SDO_GEOR_SYSDATAビューのエントリを確認します。
USER_SDO_GEOR_DATAビューおよびALL_SDO_GEOR_SYSDATAビューの詳細は、2.4項を参照してください。
例
次の例では、USER_SDO_GEOR_SYSDATAビューで無効なエントリを確認し、必要に応じて修正処理を行います。
DECLARE ret SDO_STRING2_ARRAY; BEGIN ret:=sdo_geor_admin.MAINTAINSYSDATAENTRIES; for i in 1..ret.count loop dbms_output.put_line(ret(i)); end loop; END; / The RDT name GEOR_TEST1.RDT2 is renamed to GEOR_TEST1.RDT1! The sysdata entry (SCHEMA=GEOR_TEST1 RDT=dt1 RID=1) is deleted! PL/SQL procedure successfully completed.
構文
SDO_GEOR_ADMIN.registerGeoRasterColumns;
説明
現行のスキーマに定義されているすべてのGeoRaster列にDMLトリガーを作成します。
パラメータ
なし
使用上の注意
通常、このプロシージャを実行する必要はありません。なんらかのエラーまたは他の条件により、GeoRaster列とDMLトリガーとの関連付けが失われた場合のみ、このプロシージャを実行するようにしてください。
MDSYSユーザーとして接続してこのプロシージャを実行すると、すべてのスキーマに定義されているすべてのGeoRaster列にDMLトリガーが作成されます。
例
この例では、現行のスキーマに定義されているすべてのGeoRaster列にDMLトリガーを作成します。
EXECUTE sdo_geor_admin.registerGeoRasterColumns;
構文
SDO_GEOR_ADMIN.registerGeoRasterObjects;
説明
現行のスキーマに定義されているすべてのGeoRasterオブジェクトを登録します。
パラメータ
なし
使用上の注意
MDSYSユーザーとして接続してこのプロシージャを実行すると、すべてのスキーマに定義されているすべてのGeoRasterオブジェクトが登録されます。
例
次の例では、現行のスキーマに定義されているすべてのGeoRasterオブジェクトを登録します。
EXECUTE sdo_geor_admin.registerGeoRasterObjects;
構文
SDO_GEOR_ADMIN.upgradeGeoRaster() RETURN SDO_STRING2_ARRAY;
説明
現行のスキーマのGeoRasterシステム・データ・エントリおよびGeoRasterデータを確認し、必要に応じて修正処理を実行します。
パラメータ
なし
使用上の注意
このファンクションはSDO_GEOR_ADMIN.isUpgradeNeededファンクションと同じ確認を実行し、次のエラーに対して(該当する修正処理がある場合は)適切な修正処理を行います。
システム・データ・エントリ・エラー: RDT名が一意でない。
システム・データ・エントリ・エラー: RDTとRIDのペアが一意でない。
システム・データ・エントリ・エラー: GeoRaster表が存在しない。
システム・データ・エントリ・エラー: GeoRaster列が存在しない。
システム・データ・エントリ・エラー: GeoRasterオブジェクトが存在しない。
GeoRasterオブジェクトが空または空白ではないが、RDTが存在しない。
GeoRasterオブジェクトが重複して存在する(RDTとラスターIDの一意ではない組合せが1つ以上存在する)。
(GeoRaster列、GeoRasterオブジェクト)のペアで、登録されていないものがある。
MDSYSユーザーとして接続してこのファンクションをコールすると、データベース全体のGeoRasterシステム・データ・エントリおよびGeoRasterデータを確認し、適切な修正処理を行います。
例
次の例では、現行のスキーマのGeoRasterシステム・データ・エントリおよびGeoRasterデータを確認し、必要に応じて修正処理を実行します。
SELECT SDO_GEOR_ADMIN.upgradeGeoRaster FROM DUAL;