DBMS_XMLSCHEMA
パッケージは、XML Schemaを管理するプロシージャを提供します。このパッケージは、Oracle Databaseのインストール中に、スクリプトdbmsxsch.sql
によって作成されます。
関連項目: 『Oracle XML DB開発者ガイド』 |
この章では、次の項目について説明します。
概要
推奨されないサブプログラム
セキュリティ・モデル
定数
ビュー
使用上の注意
この項では、DBMS_XMLSCHEMA
パッケージの使用に関連する項目について説明します。
このパッケージは、次の処理を行うサブプログラムを提供します。
XML Schemaの登録
登録済XML Schemaの削除
登録済XML Schemaの再コンパイル
XML Schemaの生成
XML Schemaの進化
新しいアプリケーションでは、推奨されないサブプログラムは使用しないことをお薦めします。推奨されない機能は、下位互換性を維持する目的のみでサポートされています。
Oracle Database 12cでは、次のサブプログラムの使用は推奨されていません。
DBMS_XMLSCHEMA
パッケージは、XDB
が所有しているため、SYS
またはXDB
によって作成される必要があります。EXECUTE
権限は、PUBLIC
に付与されます。このパッケージ内のサブプログラムは、現行のユーザーの権限を使用して実行されます。
DBMS_XMLSCHEMA
パッケージでは、次の表に示す定数が使用されます。
表197-1 DBMS_XMLSCHEMAの定数: 削除オプション
定数 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
XML Schemaに依存する表またはXML Schemaが存在する場合は、そのXML Schemaを削除できません。 |
|
|
|
XML Schemaに依存している表またはXML Schemaが存在する場合でも、そのXML Schemaを削除できます。依存しているすべての表およびスキーマが無効化されます。 |
|
|
|
XML Schemaを削除すると、そのXML Schemaに関連するすべてのSQLタイプおよびデフォルトの表も削除されます。SQLタイプは、XML Schemaの登録時に |
|
|
|
このオプションは、 |
表197-2 DBMS_XMLSCHEMAの定数: 階層の有効化
定数 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
そのスキーマの登録時に作成された表に対して、 |
|
|
|
スキーマ登録時に |
|
|
|
スキーマ登録時に |
表197-3 DBMS_XMLSCHEMAの定数: CSIDの登録
定数 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
スキーマがメタデータを使用するために(登録時にパラメータ |
|
|
|
|
DBMS_XMLSCHEMA
パッケージでは、表197-4に示すビューが使用されます。これらのビューの列の詳細は、『Oracle Databaseリファレンス』を参照してください。
表197-4 DBMS_XMLSCHEMAで使用されるビューの要約
スキーマ | 説明 |
---|---|
|
ユーザーが所有するすべての登録済XML Schema。 |
|
現行ユーザーが使用できるすべての登録済XML Schema。 |
|
データベース内のすべての登録済XML Schema。 |
|
システム内のすべての |
|
現行ユーザーが所有するすべての |
|
現行ユーザーが使用できるすべての |
|
システム内のすべての |
|
現行ユーザーが所有する表内のすべての |
|
現行ユーザーが使用できる表内のすべての |
|
システム内のすべての |
|
現行ユーザーが所有するすべての |
|
現行ユーザーが使用できるすべての |
|
システム内のすべての |
|
現行ユーザーが所有するビュー内のすべての |
|
現行ユーザーが使用できるビュー内のすべての |
インプレースXMLスキーマの進化の使用に関するガイドライン
インプレースXMLスキーマの進化を実行する前に、次の準備ステップに従う必要があります。
進化させるXMLスキーマの既存のすべてのデータ(インスタンス文書)のバックアップを作成します。
トレースのみを使用してドライ・ランを実行し(つまり、実際にXMLスキーマを進化させたり、いずれかのインスタンス文書を更新することなく)、進化中に実行される更新操作のトレースを生成します。そのためには、フラグ・パラメータ値をINPLACE_TRACE
にのみ設定します。INPLACE_EVOLVE
も使用しないでください。ドライ・ランを実行した後にトレース・ファイルを調べ、一覧表示されたDDL操作が実際に意図したDDL操作であることを検証します。
表197-5 DBMS_XMLSCHEMAパッケージのサブプログラム
メソッド | 説明 |
---|---|
|
登録済のXML Schemaを再コンパイルします。これは、無効な状態のスキーマを有効な状態にする場合に役立ちます。 |
|
登録済のスキーマを進化させ、既存のXMLインスタンスの有効性を維持します。 |
|
データベースからスキーマを削除します。 |
|
Oracleのタイプ名からXML Schemaを生成します。 |
|
Oracleのタイプ名から複数のXML Schemaを生成します。 |
|
スキーマの変更をオブジェクト・タイプおよび表に転送して、登録済スキーマを進化させます。 |
|
XMLスキーマを削除します。 |
|
Oracleで使用する指定のスキーマを登録します。このスキーマは、このスキーマに準拠するドキュメントを格納するために使用できます。 |
|
URI名で指定したXML Schemaを登録します。 |
このプロシージャは、登録済のXML Schemaを再コンパイルするために使用できます。これは、無効な状態のスキーマを有効な状態にする場合に役立ちます。ORA-31001
例外「リソース・ハンドルまたはパス名が無効です」が発生する場合があります。
このプロシージャは、登録済のスキーマを進化させ、既存のXMLインスタンスの有効性を維持します。
このプロシージャの処理は、基本的には次の順序で完了します(代替アクションは、プロシージャのパラメータで制御します)。
スキーマ・ベースのXMLType
表のデータを、一時表の記憶域にコピーします。
古い表を削除します。
古いスキーマを削除します。
スキーマを新規登録します。
XMLType
表を新規作成します。
一時記憶域のデータを新規の表に移入します。制約、トリガー、索引などの補助構造は保存されません。
一時表を削除します。
関連項目:
|
構文
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);
パラメータ
表197-7 COPYEVOLVEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
進化させるすべてのスキーマのURLの |
|
新規スキーマ・ドキュメントの |
|
スキーマ・ベースのドキュメントに適用される変換XSLドキュメントの |
|
デフォルトは |
|
スキーマの進化中に永続表から一時表へのマッピングを実施する、表の名前を指定します。有効な列は次のとおりです。
|
|
デフォルトは
|
|
デフォルトは
|
|
スキーマ所有者の名前の |
|
進化のデータ・コピー段階に |
|
現在サポートされているオプションは、 |
使用上の注意
COPYEVOLVEプロシージャでは、準拠するすべてのドキュメントを削除してからスキーマを進化させるため、このプロシージャを起動する場合はあらかじめスキーマとドキュメントをすべてバックアップしてください。
このプロシージャは、URLで指定したXML Schemaを削除します。
構文
DBMS_XMLSCHEMA.DELETESCHEMA( schemaurl IN VARCHAR2, delete_option IN PLS_INTEGER := DELETE_RESTRICT);
関連項目: 『Oracle XML DB開発者ガイド』のXMLSCHEMAの格納と問合せの基本に関する章を参照してください。 |
パラメータ
表197-8 DELETESCHEMAプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
削除するスキーマを識別するURL。 |
|
次の削除オプションがあります。
|
注意: このサブプログラムの使用は、Oracle Database 12cでは推奨されていません。 |
このファンクションは、Oracleのタイプ名からXML Schemaを生成します。1つのスキーマ(XMLType
)にすべてインラインします。
関連項目: 『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;
パラメータ
表197-10 GENERATESCHEMAファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
タイプを含むデータベース・スキーマの名前。 |
|
Oracleタイプの名前。 |
|
XML Schema内のトップレベル要素の名前。デフォルトは |
|
指定したタイプで参照されるすべてのタイプのスキーマを生成するかどうかを指定します。 |
|
XML SchemaにSQL注釈を設定するかどうかを指定します。 |
|
コレクションを参照するタイプにコレクションを埋め込むか、または |
注意: このサブプログラムの使用は、Oracle Database 12cでは推奨されていません。 |
このファンクションは、Oracleのタイプ名からXML Schemaを生成します。XMLType
のコレクションを戻し、データベース・スキーマごとに1つのXML Schemaドキュメントになります。
関連項目: 『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;
パラメータ
表197-12 GENERATESCHEMASファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
タイプを含むデータベース・スキーマの名前。 |
|
Oracleタイプの名前。 |
|
XML Schema内のトップレベル要素の名前。デフォルトは |
|
インポート文のトップレベル・スキーマに必要な、スキーマの格納先となるベースURLを指定します。 |
|
XML SchemaにSQL注釈を設定するかどうかを指定します。 |
|
コレクションを参照するタイプにコレクションを埋め込むか、または |
このプロシージャは、スキーマの変更をオブジェクト・タイプおよび表に転送して、登録済スキーマを進化させます。
パラメータ
表197-14 INPLACEEVOLVEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
進化させるスキーマのURL。 |
|
スキーマに適用する変更。 |
|
このパラメータに次のビットを設定して、このプロシージャの動作を制御できます。
つまり、各ビットは新しいXMLスキーマを構成して検証し、インスタンス文書の基礎となるディスク構造の進化に必要なステップを判別します。また、次の処理も行われます。
|
例外
このプロシージャでは、次の場合に例外が発生します。
xdiffスキーマに準拠しない無効な式XPATH
とXDIFF
文書に対して、エラーが発生します。
構文的に正しいものの、スキーマ文書内の無効ノードの原因となるパス式では、エラーが発生します。
スキーマの変更によってスキーマが不適切なXML文書または無効なXMLスキーマになった場合、エラーが発生します。
CREATE
TYPE
、ALTER
TYPE
および同様のコマンドによって発生したすべてのエラーで、エラー・メッセージが生成されます。
使用上の注意
インプレース進化ではロールバックが行われないため、この操作を行う前にデータのバックアップを作成しておいてください。
進化させるスキーマのURLとは異なるスキーマURLで、REGISTERSCHEMAプロシージャおよびREGISTERURIプロシージャを使用して、データベースが含まれている新しいXMLスキーマを登録する必要があります。新しいスキーマの登録が成功し、使用可能になった場合にのみ、このサブプログラムを使用して既存スキーマを新しいスキーマへ進化させる必要があります。新しいスキーマの登録が成功した場合、古いスキーマURLにあるスキーマを進化させる前に、このスキーマ(およびそのすべての依存オブジェクト)を削除する必要があります。
このプロシージャはXMLスキーマを削除します。
関連項目: 『Oracle XML DB開発者ガイド』のXMLSCHEMAの格納と問合せの高度なトピックに関する章を参照してください。 |
このプロシージャは、データベースで使用する指定のスキーマを登録します。このプロシージャはオーバーロードされています。複数の機能を構文形式ごとに、定義とともに示します。
注意: 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);
パラメータ
表197-16 REGSITERSCHEMAプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマ・ドキュメントを一意に識別するURL。この値は、データベース階層内のスキーマ・ドキュメントのパス名を導出するために使用します。XML Schemaインポート要素の |
|
有効なXML Schemaドキュメント。 |
|
スキーマがローカルかグローバルか。
スキーマをグローバルとして登録するには、ディレクトリに対する書込み権限が必要です。 |
|
スキーマ・コンパイラがオブジェクト・タイプを生成するかどうかを判別します。デフォルトは |
|
スキーマ・コンパイラがJava Beansを生成するかどうかを判別します。デフォルトは |
|
スキーマ・コンパイラがデフォルトの表を生成するかどうかを判別します。デフォルトは |
|
このパラメータを |
|
このパラメータは、XML Schemaオブジェクトを所有するデータベース・ユーザーの名前を指定します。デフォルトでは、スキーマを登録したユーザーがXML Schemaオブジェクトを所有します。このパラメータを使用すると、別のデータベース・ユーザーが所有するXML Schemaを登録できます。 |
|
入力スキーマ・ドキュメントのキャラクタ・セットを識別します。この値が |
|
|
|
スキーマの登録方法を指定する追加オプション。様々なオプションが整数のビットとして表現され、optionsパラメータは、目的のビットの
|
このプロシージャは、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);
パラメータ
表197-17 REGISTERURIプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
スキーマ・ドキュメントを一意に識別します。XML Schemaインポート要素の |
|
スキーマ・ドキュメントの物理的な位置に対応するパス名(URI)。URIパスは、HTTP、FTP、DBまたはOracle XML DBプロトコルに基づく場合があります。このプロシージャは、 |
|
スキーマがローカルかグローバルかを判別します。デフォルトでは、すべてのスキーマはローカル・スキーマとして、 |
|
コンパイラがオブジェクト・タイプを生成するかどうかを判別します。デフォルトは |
|
コンパイラがJava Beansを生成するかどうかを判別します。デフォルトは |
|
コンパイラがデフォルトの表を生成するかどうかを判別します。デフォルトは |
|
|
|
このパラメータは、XML Schemaオブジェクトを所有するデータベース・ユーザーの名前を指定します。デフォルトでは、スキーマを登録したユーザーがXML Schemaオブジェクトを所有します。このパラメータを使用すると、別のデータベース・ユーザーが所有するXML Schemaを登録できます。 |
|
スキーマの登録方法を指定する追加オプション。様々なオプションが整数のビットとして表現され、optionsパラメータは、目的のビットの
|