202 DBMS_XMLSCHEMA
DBMS_XMLSCHEMA
パッケージは、XML Schemaを管理するプロシージャを提供します。
このパッケージは、Oracle Databaseのインストール中に、スクリプトdbmsxsch.sql
によって作成されます。
この章のトピックは、次のとおりです:
202.1 DBMS_XMLSCHEMAの概要
DBMS_XMLSCHEMA
パッケージは、XML索スキーマを管理するサブプログラムを使用します。
これらのサブプログラムは、次のXMLスキーマ管理を提供します。
-
XML Schemaの登録
-
登録済XML Schemaの削除
-
登録済XML Schemaの再コンパイル
-
XML Schemaの生成
-
XML Schemaの進化
202.2 DBMS_XMLSCHEMAの推奨されないサブプログラム
Oracle Database 12cでは、次のサブプログラムの使用は推奨されていません。
新しいアプリケーションでは、推奨されないサブプログラムは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。
202.3 DBMS_XMLSCHEMAのセキュリティ・モデル
DBMS_XMLSCHEMA
パッケージは、XDB
が所有しているため、SYS
またはXDB
によって作成される必要があります。EXECUTE
権限は、PUBLIC
に付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。
202.4 DBMS_XMLSCHEMAの定数
DBMS_XMLSCHEMA
パッケージは、パラメータ値の指定時に使用するいくつかの定数を定義します。
表202-1 DBMS_XMLSCHEMAの定数 - 削除オプション
定数 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
XML Schemaに依存する表またはXML Schemaが存在する場合は、そのXML Schemaを削除できません。 |
|
|
|
XML Schemaに依存している表またはXML Schemaが存在する場合でも、そのXML Schemaを削除できます。依存しているすべての表およびスキーマが無効化されます。 |
|
|
|
XML Schemaを削除すると、そのXML Schemaに関連するすべてのSQLタイプおよびデフォルトの表も削除されます。SQLタイプは、XML Schemaの登録時に |
|
|
|
このオプションは、 |
表202-2 DBMS_XMLSCHEMAの定数 - 階層の有効化
定数 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
そのスキーマの登録時に作成された表に対して、 |
|
|
|
スキーマ登録時に |
|
|
|
スキーマ登録時に |
表202-3 DBMS_XMLSCHEMAの定数 - CSIDの登録
定数 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
スキーマがメタデータを使用するために(登録時にパラメータ |
|
|
|
|
202.5 ビュー
次の表に、DBMS_XMLSCHEMA
パッケージで使用されるビューを示します。
これらのビューの列の詳細は、『Oracle Databaseリファレンス』を参照してください。
表202-4 DBMS_XMLSCHEMAで使用されるビューの要約
スキーマ | 説明 |
---|---|
ユーザーが所有するすべての登録済XML Schema。 |
|
現行ユーザーが使用できるすべての登録済XML Schema。 |
|
データベース内のすべての登録済XML Schema。 |
|
システム内のすべての |
|
現行ユーザーが所有するすべての |
|
現行ユーザーが使用できるすべての |
|
システム内のすべての |
|
現行ユーザーが所有する表内のすべての |
|
現行ユーザーが使用できる表内のすべての |
|
システム内のすべての |
|
現行ユーザーが所有するすべての |
|
現行ユーザーが使用できるすべての |
|
システム内のすべての |
|
現行ユーザーが所有するビュー内のすべての |
|
現行ユーザーが使用できるビュー内のすべての |
202.6 DBMS_XMLSCHEMAの操作上のノート
インプレースXMLスキーマの進化の使用に関するガイドラインがあります。
インプレースXMLスキーマの進化を実行する前に、次の準備ステップに従う必要があります。
-
進化させるXMLスキーマの既存のすべてのデータ(インスタンス文書)のバックアップを作成します。
-
トレースのみを使用してドライ・ランを実行し(つまり、実際にXMLスキーマを進化させたり、いずれかのインスタンス文書を更新することなく)、進化中に実行される更新操作のトレースを生成します。そのためには、フラグ・パラメータ値を
INPLACE_TRACE
にのみ設定します。INPLACE_EVOLVE
も使用しないでください。ドライ・ランを実行した後にトレース・ファイルを調べ、一覧表示されたDDL操作が実際に意図したDDL操作であることを検証します。
202.7 DBMS_XMLSCHEMAサブプログラムの要約
この表は、DBMS_XMLSCHEMA
サブプログラムを示し、簡単に説明しています。
表202-5 DBMS_XMLSCHEMAパッケージのサブプログラム
メソッド | 説明 |
---|---|
登録済のXML Schemaを再コンパイルします。これは、無効な状態のスキーマを有効な状態にする場合に役立ちます。 |
|
登録済のスキーマを進化させ、既存のXMLインスタンスの有効性を維持します。 |
|
データベースからスキーマを削除します。 |
|
Oracleのタイプ名からXML Schemaを生成します。 |
|
Oracleのタイプ名から複数のXML Schemaを生成します。 |
|
スキーマの変更をオブジェクト・タイプおよび表に転送して、登録済スキーマを進化させます。 |
|
XMLスキーマを削除します。 |
|
Oracleで使用する指定のスキーマを登録します。このスキーマは、このスキーマに準拠するドキュメントを格納するために使用できます。 |
|
URI名で指定したXML Schemaを登録します。 |
202.7.1 COMPILESCHEMAプロシージャ
このプロシージャは、登録済のXML Schemaを再コンパイルするために使用できます。これは、無効な状態のスキーマを有効な状態にする場合に役立ちます。ORA-31001
例外「リソース・ハンドルまたはパス名が無効です」が発生する場合があります。
構文
DBMS_XMLSCHEMA.COMPILESCHEMA( schemaurl IN VARCHAR2);
パラメータ
表202-6 COMPILESCHEMAプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマを識別するURL。 |
202.7.2 COPYEVOLVEプロシージャ
このプロシージャは、登録済のスキーマを進化させ、既存のXMLインスタンスの有効性を維持します。
このプロシージャの処理は、基本的には次の順序で完了します(代替アクションは、プロシージャのパラメータで制御します)。
-
スキーマ・ベースの
XMLType
表のデータを、一時表の記憶域にコピーします。 -
古い表を削除します
-
古いスキーマを削除します
-
新しいスキーマを登録します
-
XMLType
表を新規作成します。 -
一時記憶域のデータを新規の表に移入します。制約、トリガー、索引などの補助構造は保存されません。
-
一時表を削除します
参照:
-
既存のスキーマを進化させる方法の例については、『Oracle XML DB開発者ガイド』のXML Schemaの拡張に関する章を参照してください。
-
スキーマの進化に固有の例外(ORA-30142からORA-30946)については、『Oracle Databaseエラー・メッセージ』を参照してください。
-
構文
DBMS_XMLSCHEMA.COPYEVOLVE( schemaurls IN XDB$STRUBG_LIST_T, newschemas IN XMLSequenceType, transforms IN XMLSequenceType :=NULL, preserveolddocs IN BOOLEAN :=FALSE, maptablename IN VARCHAR2 :=NULL, generatetables IN BOOLEAN :=TRUE, force IN BOOLEAN :=FALSE, schemaowners IN XDB$STRING_LIST_T :=NULL parallelDegree IN PLS_INTEGER := 0, options IN PLS_INTEGER := 0);
パラメータ
表202-7 COPYEVOLVEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
進化させるすべてのスキーマのURLの |
|
新規スキーマ・ドキュメントの |
|
スキーマ・ベースのドキュメントに適用される変換XSLドキュメントの |
|
デフォルトは |
|
スキーマの進化中に永続表から一時表へのマッピングを実施する、表の名前を指定します。有効な列は次のとおりです。
|
|
デフォルトは
|
|
デフォルトは
|
|
スキーマ所有者の名前の |
|
進化のデータ・コピー段階に |
|
現在サポートされているオプションは、 |
使用上のノート
COPYEVOLVEプロシージャでは、準拠するすべてのドキュメントを削除してからスキーマを進化させるため、このプロシージャを起動する場合はあらかじめスキーマとドキュメントをすべてバックアップしてください。
202.7.3 DELETESCHEMAプロシージャ
このプロシージャは、URLで指定したXML Schemaを削除します。
構文
DBMS_XMLSCHEMA.DELETESCHEMA( schemaurl IN VARCHAR2, delete_option IN PLS_INTEGER := DELETE_RESTRICT);
参照:
『Oracle XML DB開発者ガイド』 のXMLSCHEMAの格納と問合せの基本に関する章を参照してください。
パラメータ
表202-8 DELETESCHEMAプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除するスキーマを識別するURL。 |
|
次の削除オプションがあります。
|
例外
表202-9 DELETESCHEMAプロシージャの例外
例外 | 説明 |
---|---|
|
リソース・ハンドルまたはパス名が無効です。 |
202.7.4 GENERATESCHEMAファンクション
この推奨されないファンクションは、Oracleのタイプ名からXML Schemaを生成します。1つのスキーマ(XMLType
)にすべてインラインします。
ノート:
このサブプログラムの使用は、Oracle Database 12cでは推奨されていません。
参照:
『Oracle XML DB開発者ガイド』 のXMLSCHEMAの格納と問合せの高度なトピックに関する章を参照してください。
構文
DBMS_XMLSCHEMA.GENERATESCHEMA( schemaname IN VARCHAR2, typename IN VARCHAR2, elementname IN VARCHAR2 := NULL, recurse IN BOOLEAN := TRUE, annotate IN BOOLEAN := TRUE, embedcoll IN BOOLEAN := TRUE) RETURN SYS.XMLTYPE;
パラメータ
表202-10 GENERATESCHEMAファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
タイプを含むデータベース・スキーマの名前。 |
|
Oracleタイプの名前。 |
|
XML Schema内のトップレベル要素の名前。デフォルトは |
|
指定したタイプで参照されるすべてのタイプのスキーマを生成するかどうかを指定します。 |
|
XML SchemaにSQL注釈を設定するかどうかを指定します。 |
|
コレクションを参照するタイプにコレクションを埋め込むか、または |
例外
表202-11 GENERATESCHEMAファンクションの例外
例外 | 説明 |
---|---|
|
リソース・ハンドルまたはパス名が無効です。 |
202.7.5 GENERATESCHEMASファンクション
この推奨されないファンクションは、Oracleのタイプ名からXML Schemaを生成します。XMLType
のコレクションを戻し、データベース・スキーマごとに1つのXML Schemaドキュメントになります。
ノート:
このサブプログラムの使用は、Oracle Database 12cでは推奨されていません。
参照:
『Oracle XML DB開発者ガイド』 のXMLSCHEMAの格納と問合せの高度なトピックに関する章を参照してください。
構文
DBMS_XMLSCHEMA.GENERATESCHEMAS( schemaname IN VARCHAR2, typename IN VARCHAR2, elementname IN VARCHAR2 := NULL, schemaurl IN VARCHAR2 := NULL, annotate IN BOOLEAN := TRUE, embedcoll IN BOOLEAN := TRUE ) RETURN SYS.XMLTYPE;
パラメータ
表202-12 GENERATESCHEMASファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
タイプを含むデータベース・スキーマの名前。 |
|
Oracleタイプの名前。 |
|
XML Schema内のトップレベル要素の名前。デフォルトは |
|
インポート文のトップレベル・スキーマに必要な、スキーマの格納先となるベースURLを指定します。 |
|
XML SchemaにSQL注釈を設定するかどうかを指定します。 |
|
コレクションを参照するタイプにコレクションを埋め込むか、または |
例外
表202-13 GENERATESCHEMASファンクションの例外
例外 | 説明 |
---|---|
|
リソース・ハンドルまたはパス名が無効です。 |
202.7.6 INPLACEEVOLVEプロシージャ
このプロシージャは、スキーマの変更をオブジェクト・タイプおよび表に転送して、登録済スキーマを進化させます。
構文
DBMS_XMLSCHEMA.INPLACEEVOLVE( schemaURL IN VARCHAR2, diffXML IN XMLType, flags IN NUMBER);
パラメータ
表202-14 INPLACEEVOLVEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
進化させるスキーマのURL。 |
|
スキーマに適用する変更。 |
|
このパラメータに次のビットを設定して、このプロシージャの動作を制御できます。
つまり、各ビットは新しいXMLスキーマを構成して検証し、インスタンス文書の基礎となるディスク構造の進化に必要なステップを判別します。さらに、次の処理が実行されます。
|
例外
このプロシージャでは、次の場合に例外が発生します。
-
xdiffスキーマに準拠しない無効な式
XPATH
とXDIFF
文書に対して、エラーが発生します。 -
構文的に正しいものの、スキーマ文書内の無効ノードの原因となるパス式では、エラーが発生します。
-
スキーマの変更によってスキーマが不適切なXML文書または無効なXMLスキーマになった場合、エラーが発生します。
-
CREATE
TYPE
、ALTER
TYPE
および同様のコマンドによって発生したすべてのエラーで、エラー・メッセージが生成されます。
使用上のノート
-
インプレース進化ではロールバックが行われないため、この操作を行う前にデータのバックアップを作成しておいてください。
-
進化させるスキーマのURLとは異なるスキーマURLで、REGISTERSCHEMAプロシージャおよびREGISTERURIプロシージャを使用して、データベースが含まれている新しいXMLスキーマを登録する必要があります。新しいスキーマの登録が成功し、使用可能になった場合にのみ、このサブプログラムを使用して既存スキーマを新しいスキーマへ進化させる必要があります。新しいスキーマの登録が成功した場合、古いスキーマURLにあるスキーマを進化させる前に、このスキーマ(およびそのすべての依存オブジェクト)を削除する必要があります。
202.7.7 PURGESCHEMAプロシージャ
このプロシージャはXMLスキーマを削除します。
参照:
『Oracle XML DB開発者ガイド』 のXMLSCHEMAの格納と問合せの高度なトピックに関する章を参照してください。
構文
DBMS_XMLSCHEMA.PURGESCHEMA( schemaid IN RAW);
パラメータ
表202-15 PURGESCHEMAプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
パージするスキーマのID。 |
使用上のノート
-
スキーマは、最初にバイナリ・エンコーディング用に登録し、
HIDE
モードで削除しておく必要があります。 -
スキーマを
HIDE
モードで削除すると、そのスキーマはXML DBディクショナリに存続し、すでにエンコードされた文書のデコードに使用されます。このスキーマを使用してエンコードされたインスタンスが格納されていない場合は、このインタフェースを呼び出します。 -
スキーマをパージすると、そのスキーマによって使用されるすべての領域が再要求され、そのスキーマを使用してエンコードされた文書をデコードしようとした場合はエラーが発生します。
-
スキーマIDはカタログ・ビューから取得できます。
202.7.8 REGISTERSCHEMAプロシージャ
このプロシージャは、データベースで使用する指定のスキーマを登録します。
このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。
ノート:
Oracle Database 11gリリース2(11.2)では、genbean
パラメータの使用は推奨されていません。新しいアプリケーションでは、このパラメータは使用しないことをお薦めします。この機能は、下位互換性を維持する目的のみでサポートされています。
参照:
『Oracle XML DB開発者ガイド』 のXMLSCHEMAの格納と問合せの基本に関する章を参照してください。
構文
VARCHAR2
として指定したスキーマを登録します。
DBMS_XMLSCHEMA.REGISTERSCHEMA( schemaurl IN VARCHAR2, schemadoc IN VARCHAR2, local IN BOOLEAN := TRUE, gentypes IN BOOLEAN := TRUE, genbean IN BOOLEAN := FALSE, gentables IN BOOLEAN := TRUE, force IN BOOLEAN := FALSE, owner IN VARCHAR2 := NULL, enablehierarchy IN PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS, options IN PLS_INTEGER := 0);
BFILE
として指定したスキーマを登録します。スキーマ・ドキュメントの内容が、データベース文字セット内に存在する必要があります。
DBMS_XMLSCHEMA.REGISTERSCHEMA( schemaurl IN VARCHAR2, schemadoc IN BFILE, local IN BOOLEAN := TRUE, gentypes IN BOOLEAN := TRUE, genbean IN BOOLEAN := FALSE, force IN BOOLEAN := FALSE, owner IN VARCHAR2 := NULL, enablehierarchy IN PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS, options IN PLS_INTEGER := 0);
BFILE
として指定したスキーマを登録し、そのスキーマ・ドキュメントの文字セットIDを識別します。
DBMS_XMLSCHEMA.REGISTERSCHEMA( schemaurl IN VARCHAR2, schemadoc IN BFILE, local IN BOOLEAN := TRUE, gentypes IN BOOLEAN := TRUE, genbean IN BOOLEAN := TRUE, gentables IN BOOLEAN := TRUE, force IN BOOLEAN := TRUE, owner IN VARCHAR2 := '', csid IN NUMBER, enablehierarchy IN PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS, options IN PLS_INTEGER := 0);
BLOB
として指定したスキーマを登録します。スキーマ・ドキュメントの内容が、データベース文字セット内に存在する必要があります。
DBMS_XMLSCHEMA.REGISTERSCHEMA( schemaurl IN VARCHAR2, schemadoc IN BLOB, local IN BOOLEAN := TRUE, genTypes IN BOOLEAN := TRUE, genBean IN BOOLEAN := FASLE, force IN BOOLEAN := FALSE, owner IN VARCHAR2 := NULL, enablehierarchy IN PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS, options IN PLS_INTEGER := 0);
BLOB
として指定したスキーマを登録し、そのスキーマ・ドキュメントの文字セットIDを識別します。
DBMS_XMLSCHEMA.REGISTERSCHEMA( schemaurl IN VARCHAR2, schemadoc IN BLOB, local IN BOOLEAN := TRUE, gentypes IN BOOLEAN := TRUE, genbean IN BOOLEAN := TRUE, gentables IN BOOLEAN := TRUE, force IN BOOLEAN := TRUE, owner IN VARCHAR2 := '', csid IN NUMBER, enablehierarchy IN PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS, options IN PLS_INTEGER := 0);
CLOB
として指定したスキーマを登録します。
DBMS_XMLSCHEMA.REGISTERSCHEMA( schemaurl IN VARCHAR2, schemadoc IN CLOB, local IN BOOLEAN := TRUE, gentypes IN BOOLEAN := TRUE, genbean IN BOOLEAN := FALSE, force IN BOOLEAN := FALSE, owner IN VARCHAR2 := NULL, options IN PLS_INTEGER := 0);
XMLTYPE
として指定したスキーマを登録します。
DBMS_XMLSCHEMA.REGISTERSCHEMA( schemaurl IN VARCHAR2, schemadoc IN SYS.XMLTYPE, local IN BOOLEAN := TRUE, gentypes IN BOOLEAN := TRUE, genbean IN BOOLEAN := FALSE, force IN BOOLEAN := FALSE, owner IN VARCHAR2 := NULL, enablehierarchy IN PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS, options IN PLS_INTEGER := 0);
BLOB
として指定したスキーマを登録します。スキーマ・ドキュメントの内容が、データベース文字セット内に存在する必要があります。
DBMS_XMLSCHEMA.REGISTERSCHEMA( schemaurl IN VARCHAR2, schemadoc IN SYS.URIType, local IN BOOLEAN := TRUE, gentypes IN BOOLEAN := TRUE, genbean IN BOOLEAN := FALSE, force IN BOOLEAN := FALSE, owner IN VARCHAR2 := NULL, enablehierarchy IN PLS_INTEGER := DBMS_XMLSCHEMA.ENABLE_CONTENTS, options IN PLS_INTEGER := 0);
パラメータ
表202-16 REGSITERSCHEMAプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマ・ドキュメントを一意に識別するURL。この値は、データベース階層内のスキーマ・ドキュメントのパス名を導出するために使用します。XML Schemaインポート要素の |
|
有効なXML Schemaドキュメント。 |
|
スキーマがローカルかグローバルか。
スキーマをグローバルとして登録するには、ディレクトリに対する書込み権限が必要です。 |
|
スキーマ・コンパイラがオブジェクト・タイプを生成するかどうかを判別します。デフォルトは |
|
スキーマ・コンパイラがJava Beansを生成するかどうかを判別します。デフォルトは |
|
スキーマ・コンパイラがデフォルトの表を生成するかどうかを判別します。デフォルトは |
|
このパラメータを |
|
このパラメータは、XML Schemaオブジェクトを所有するデータベース・ユーザーの名前を指定します。デフォルトでは、スキーマを登録したユーザーがXML Schemaオブジェクトを所有します。このパラメータを使用すると、別のデータベース・ユーザーが所有するXML Schemaを登録できます。 |
|
入力スキーマ・ドキュメントの文字セットを識別します。この値が |
|
|
|
スキーマの登録方法を指定する追加オプション。様々なオプションが整数のビットとして表現され、optionsパラメータは、目的のビットの
|
202.7.9 REGISTERURIプロシージャ
このプロシージャは、URI名で指定したXML Schemaを登録します。
ノート:
Oracle Database 11gリリース2(11.2)では、genbean
パラメータの使用は推奨されていません。新しいアプリケーションでは、このパラメータは使用しないことをお薦めします。この機能は、下位互換性を維持する目的のみでサポートされています。
構文
DBMS_XMLSCHEMA.REGISTERURI( schemaurl IN VARCHAR2, schemadocuri IN VARCHAR2, local IN BOOLEAN := TRUE, gentypes IN BOOLEAN := TRUE, genbean IN BOOLEAN := FALSE, gentables IN BOOLEAN := TRUE, force IN BOOLEAN := FALSE, owner IN VARCHAR2 := NULL, options IN PLS_INTEGER := 0);
パラメータ
表202-17 REGISTERURIプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマ・ドキュメントを一意に識別します。XML Schemaインポート要素の |
|
スキーマ・ドキュメントの物理的な位置に対応するパス名(URI)。URIパスは、HTTP、FTP、DBまたはOracle XML DBプロトコルに基づく場合があります。このプロシージャは、 |
|
スキーマがローカルかグローバルかを判別します。デフォルトでは、すべてのスキーマはローカル・スキーマとして、 |
|
コンパイラがオブジェクト・タイプを生成するかどうかを判別します。デフォルトは |
|
コンパイラがJava Beansを生成するかどうかを判別します。デフォルトは |
|
コンパイラがデフォルトの表を生成するかどうかを判別します。デフォルトは |
|
|
|
このパラメータは、XML Schemaオブジェクトを所有するデータベース・ユーザーの名前を指定します。デフォルトでは、スキーマを登録したユーザーがXML Schemaオブジェクトを所有します。このパラメータを使用すると、別のデータベース・ユーザーが所有するXML Schemaを登録できます。 |
|
スキーマの登録方法を指定する追加オプション。様々なオプションが整数のビットとして表現され、optionsパラメータは、目的のビットの
|