この章では、Oracle XML DBを管理する方法について説明します。Oracle XML DBのインストール、アップグレードおよび構成に関する情報を示します。
この章の内容は次のとおりです。
関連項目: XLinkおよびXIncludeを使用するためのOracle XML DBリポジトリ・リソースの構成の詳細は、「XLinkおよびXIncludeのためのリソースの構成」を参照してください。 |
Database Configuration Assistant(DBCA)の有無にかかわらず、Oracle XML DBの新規インストールを実行できます。既存のインストールをアップグレードする場合、DBCAを使用せずに手動でOracle XML DBをインストールする必要があります。
注意: XMLType データを含むデータベースのOracle XML DBをアンインストールする場合は、必ずOracleサポートにご相談ください。 |
Oracle XML DBはシード・データベースの一部であり、デフォルトで、Database Configuration Assistant(DBCA)によってインストールされます。Oracle XML DBのインストールに、他の手順は必要ありません。
ただし、データベースの拡張構成を選択した場合は、Oracle XML DBリポジトリ用のSYSAUX
表領域と、FTP、HTTP、HTTPS、WebDAVプロトコルのポート番号を構成できます。
デフォルトでは、DBCAによって次のタスクがインストール中に実行されます。
Oracle XML DBリポジトリ用の表領域SYSAUX
を作成します。
すべてのプロトコル・アクセスを有効にします。
表領域SYSAUX
には、Oracle XML DBリポジトリに格納されるデータが保持されます。次のものを使用して格納されるデータが含まれます。
SQL(RESOURCE_VIEW
、PATH_VIEW
などを使用)
FTP、HTTP、HTTPSおよびWebDAVなどのプロトコル
この表領域外の表にデータを格納し、このデータに対するREF
をこの表領域内の表に格納することにより、Oracle XML DBリポジトリを介してこのデータにアクセスできます。
Oracle XML DBのインストールでは、FTP、HTTPおよびHTTPSサービスがローカル・リスナーに動的に登録されます。lsnrctl
を使用して、開始、停止および問合せを実行できます。次に例を示します。
開始: lsnrctl
start
停止: lsnrctl
stop
問合せ: lsnrctl
status
FTP、HTTPおよびHTTPSのポート番号を変更するには、Oracle XML DBリポジトリの/xdbconfig.xml
ファイル内の要素<ftp-port>
、<http-port>
と<http2-port>
を更新します。
ポート番号を更新すると、動的プロトコル登録によって更新前のポート番号のFTP、HTTPまたはHTTPSサービスが自動的に停止され、ローカル・リスナーが起動されている場合は、新しいポート番号でFTP、HTTPまたはHTTPSサービスが開始されます。ローカル・リスナーが起動されていない場合は、ポート番号を更新した後、リスナーを再起動します。
注意: Real Application Cluster(RAC)のポートは、各ノード個別に構成するか、1つのノードについて構成してから他のノード上でデータベース・インスタンスを再起動する必要があります。「xdbconfig.xmlを使用したOracle XML DBの構成」を参照してください。 |
Oracle XML DBでは、動的プロトコル登録を使用して、FTPおよびHTTPリスナー・サービスがローカル・リスナーに設定されます。Oracle XML DBプロトコルにアクセスする場合は、リスナーが起動されていることを確認してください。
注意: リスナーが標準ポート(例: 1521)以外で起動中の場合、プロトコルを正しいリスナーに登録するには、init.ora ファイルにlocal_listener エントリを含める必要があります。これによって、正しいリスナーを指すTNSNAME エントリが参照されます。init.ora パラメータの編集後、CREATE SPFILE を使用してSPFILE エントリを再生成する必要があります。 |
Oracle XML DBは、catqm
SQLスクリプトをディレクトリrdbms/admin
でデータベース・ユーザーSYS
として実行することで、手動でインストールできます。スクリプトを実行する前に、データベースをインストールする必要があります。また、Oracle XML DBリポジトリに大量のデータが格納されることが予想される場合は、Oracle XML DB用に個別の表領域を作成することをお薦めします。
catqm
の構文と各要素の意味を次に示します。
xdb_password
はパスワードです。
xdb_ts_name
は、Oracle XML DBに使用する表領域です。
temp_ts_name
は一時表領域です。
catqm.sql xdb_password xdb_ts_name temp_ts_name
次に例を示します。
catqm.sql change_on_install SYSAUX TEMP
注意: データベースがOracle9iリリース2(9.2.0)以上で起動されていること、およびJava仮想マシン(JVM)がインストール済であることを確認してください。 |
次の考慮事項は、Oracle Database 11gへのすべてのアップグレードに適用されます。
通常どおり、スクリプトcatproc.sql
を実行します。
アップグレード後の手順として、Oracle XML DB機能が必要である場合、「DBCAを使用しない手動でのOracle XML DBのインストール」で説明されているとおりに、Oracle XML DBを手動でインストールする必要があります。
ACLセキュリティ: Oracle Database 11gリリース1より前のリリースでは、同じプリンシパルと同じ権限に対するACE間の競合は、先行するACEが子grant
を持っていなくても、子deny
を持つACEを優先させることで解決していました。つまり、ACEの順序は関係ありません。Oracle Database 11gでは、このdeny-trumps-grant
の動作も使用できますが、デフォルトの動作ではありません。
アクセス制御リスト(ACL)の文書は、表XDB$ACL
に格納されています。Oracle XML DBの構成ファイルxdbconfig.xml
は、表XDB$CONFIG
に格納されています。Oracle Database 11gリリース1以降、これらの表では事後解析(バイナリXML)記憶域モデルを使用します。これは、ACL文書および構成ファイルが、各XML Schemaに対して完全に検証されることを意味します。検証は、既存のACL文書と構成ファイル、および既存の対応するXML Schemaを使用してアップグレード時に行われます。
アップグレード時にACL文書の検証に失敗した場合、その文書は表XDB$INVALID_ACL
に移動されます。
アップグレード時に構成ファイルxdbconfig.xml
の検証に失敗した場合、そのファイルは表XDB$INVALID_CONFIG
に格納され、デフォルトの構成ファイルが表XDB$CONFIG
内でそれを置換し、データベースのXDB
コンポーネントは無効としてマークされます。その後、データベースを通常モードで起動し、データベースを使用する前にXDB
コンポーネントを修正する必要があります。
XDB
コンポーネントを修正するには、無効なファイルを修正して有効にし、PL/SQLプロシージャRecoverUpgrade
をコールします。検証後、このプロシージャは修正済のファイルを表XDB$ACL
および表XDB$CONFIG
に移動し、XDB
コンポーネントを有効としてマークします。
オプションとして、パラメータuse_default
をTRUE
に設定してプロシージャRecoverUpgrade
をコールし、無効なファイルを破棄できます。この場合、有効なファイルは表XDB$ACL
および表XDB$CONFIG
に移動され、残った無効なファイルはすべて削除されます。無効なファイルのかわりにデフォルト・ファイルが使用されます。ACLにはデフォルトのACL文書が使用され、構成ファイルにはデフォルトのxdbconfig.xml
が使用されます(ここではACEの順序が関係します)。
注意: 無効な古いACLファイルまたは構成ファイルが確実に必要でない場合にのみ、パラメータuse_default にTRUE の値を使用します。これらのファイルは削除されます。 |
Oracle Enterprise ManagerはOracle Database付属のグラフィカル・ツールで、データベース管理タスクの容易な実行を可能にします。このツールを使用して、Oracle XML DBに関連する次のタスクを実行できます。
Oracle XML DBの構成Oracle XML DBの構成ファイル/xdbconfig.xml
のパラメータを表示または編集します。
Oracle Enterprise Managerを使用しないOracle XML DBの構成の詳細は、「xdbconfig.xmlを使用したOracle XML DBの構成」を参照してください。
Oracle XML DBリポジトリのリソース、およびその関連アクセス制御リスト(ACL)を検索、作成、編集およびごみ箱から元に戻します。
Oracle Enterprise Managerを使用しないリソースの作成および管理の詳細は、第V部「Oracle XML DBリポジトリ」を参照してください。
XMLType
表およびビューを検索、作成、編集および削除します。
XML Schemaを検索、作成、登録および削除します。
Oracle Enterprise Managerを使用しないXML Schemaの操作の詳細は、第6章「XML Schemaの格納と問合せ: 基本」を参照してください。
XPath式に基づくファンクション索引の作成
Oracle Enterprise Managerを使用しないファンクション索引の作成の詳細は、第5章「XMLTypeデータの索引付け」を参照してください。
関連項目: Oracle Enterprise Managerを使用した、これらのタスクの実行の詳細は、Oracle Enterprise Manager付属のオンライン・ヘルプを参照してください。 |
Oracle XML DBは、Oracle XML DBリポジトリにリソースとして格納された構成ファイルの/xdbconfig.xml
を介して内部管理できます。Oracle Enterprise Managerを使用してOracle XML DBを構成するかわりに、Oracle XML DB構成ファイルを使用して直接構成できます。
構成ファイルは実行時に変更できます。構成ファイルを更新すると、このリポジトリ・リソースの新しいバージョンが作成されます。セッションが開始されると、現行のバージョンの構成ファイルがそのセッションにバインドされます。最新のバージョンにセッションをリフレッシュするように明示的にコールしないかぎり、このセッション中は、このバージョンの構成ファイルが使用されます。
Oracle XML DBの構成ファイルは、Oracle XML DB構成XML Schemaであるhttp://xmlns.oracle.com/xdb/xdbconfig.xsd
に準拠するOracle XML DBリポジトリ・リソースの/xdbconfig.xml
で定義および格納されます。Oracle XML DBを構成または再構成するには、/xdbconfig.xml
ファイルを更新します。その構造については、次の項で説明します。/xdbconfig.xml
ファイルにアクセスするには、管理者権限が必要です。
要素<xdbconfig>
は、最上位の要素です。その構造は次のとおりです。
<xdbconfig> <sysconfig> ... </sysconfig> <userconfig> ... </userconfig> </xdbconfig>
要素<sysconfig>
は、システム固有の組込みパラメータを定義します。要素<userconfig>
を使用すると、新しいカスタム・パラメータを格納できます。
要素<sysconfig>
は、<xdbconfig>
の子です。その構造は次のとおりです。
<sysconfig>
general parameters
<protocolconfig> ... </protocolconfig>
</sysconfig>
要素<sysconfig>
には、アクセス制御リスト(ACL)の最大存続期間、Oracle XML DBで大/小文字が区別されるかどうかなど、すべてのOracle XML DBに適用されるいくつかの一般的なパラメータが含まれます。子<protocolconfig>
には、プロトコル固有のパラメータが含まれます。
要素<protocolconfig>
は、<sysconfig>
の子です。その構造は次のとおりです。
<protocolconfig> <common> ... </common> <ftpconfig> ... </ftpconfig> <httpconfig> ... </httpconfig> </protocolconfig>
<common>
には、MIMEタイプについての情報など、すべてのプロトコルに適用されるパラメータがOracle Databaseによって格納されます。FTP、HTTPおよびHTTPSプロトコルに固有のパラメータは、要素<ftpconfig>
と<httpconfig>
にそれぞれ含まれます。
要素<httpconfig>
は、<protocolconfig>
の子です。その構造は次のとおりです。
<httpconfig> ... <webappconfig> ... <servletconfig> ... <servlet-list> <servlet> ... </servlet> ... </servlet-list> </servletconfig> </webappconfig> ... <plsql> ... </plsql> </httpconfig>
要素<httpconfig>
には、次の子要素、およびその他の子要素が含まれます。
<webappconfig>
: Webベースのアプリケーションの構成に使用します。これには、アイコン名、アプリケーションの表示名およびサーブレットのリストなど、Webベースのアプリケーション固有のパラメータが含まれます。
要素<servletconfig>
は、サーブレットの定義に使用される<webappconfig>
の子です。<servlet>
を子に持つ子<servlet-list>
を含んでいます(「<servlet>(<httpconfig>の子)」を参照してください)。
<plsql>
脚注1 埋込みPL/SQLゲートウェイを構成する際、グローバル構成パラメータを定義するために使用されます。各グローバル・パラメータは、<plsql>
の子要素を使用して定義されます。要素名は、グローバル・パラメータ名と同じで、要素のコンテンツは、パラメータ値と同じです。
埋込みPL/SQLゲートウェイの構成方法としては、ファイルxdbconfig.xml
を編集するのではなく、PL/SQLパッケージDBMS_EPG
のプロシージャを使用する方法をお薦めします。
関連項目:
|
<servlet>
の子であるオプションの要素<plsql>
は、埋込みPL/SQLゲートウェイ・サーブレットを構成します。ただし、埋込みゲートウェイの構成方法としては、ファイルxdbconfig.xml
を編集するのではなく、PL/SQLパッケージDBMS_EPG
のプロシージャを使用する方法をお薦めします。
要素<plsql>
は、埋込みPL/SQL DAD属性ごとに子要素を持っています脚注2。埋込みゲートウェイの構成に必要です。これらの子はすべてオプションです。要素名は、DAD属性名と同じで、要素のコンテンツは、DAD属性値と同じです。
要素<servlet>
は、<httpconfig>
の子です。詳細は、「<httpconfig>(<protocolconfig>の子)」を参照してください。Javaサーブレットおよび埋込みPL/SQLゲートウェイ・サーブレットなど、サーブレットの構成に使用します。
関連項目:
|
次に、Oracle XML DBの構成ファイルの例を示します。
例34-1 Oracle XML DBの構成ファイル
<xdbconfig xmlns="http://xmlns.oracle.com/xdb/xdbconfig.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/xdb/xdbconfig.xsd http://xmlns.oracle.com/xdb/xdbconfig.xsd"> <sysconfig> <acl-max-age>900</acl-max-age> <acl-cache-size>32</acl-cache-size> <invalid-pathname-chars>,</invalid-pathname-chars> <case-sensitive>true</case-sensitive> <call-timeout>300</call-timeout> <max-link-queue>65536</max-link-queue> <max-session-use>100</max-session-use> <persistent-sessions>false</persistent-sessions> <default-lock-timeout>3600</default-lock-timeout> <xdbcore-logfile-path>/sys/log/xdblog.xml</xdbcore-logfile-path> <xdbcore-log-level>0</xdbcore-log-level> <resource-view-cache-size>1048576</resource-view-cache-size> <protocolconfig> <common> <extension-mappings> <mime-mappings> <mime-mapping> <extension>au</extension> <mime-type>audio/basic</mime-type> </mime-mapping> <mime-mapping> <extension>avi</extension> <mime-type>video/x-msvideo</mime-type> </mime-mapping> <mime-mapping> <extension>bin</extension> <mime-type>application/octet-stream</mime-type> </mime-mapping> </mime-mappings> <lang-mappings> <lang-mapping> <extension>en</extension> <lang>english</lang> </lang-mapping> </lang-mappings> <charset-mappings> </charset-mappings> <encoding-mappings> <encoding-mapping> <extension>gzip</extension> <encoding>zip file</encoding> </encoding-mapping> <encoding-mapping> <extension>tar</extension> <encoding>tar file</encoding> </encoding-mapping> </encoding-mappings> </extension-mappings> <session-pool-size>50</session-pool-size> <session-timeout>6000</session-timeout> </common> <ftpconfig> <ftp-port>2100</ftp-port> <ftp-listener>local_listener</ftp-listener> <ftp-protocol>tcp</ftp-protocol> <logfile-path>/sys/log/ftplog.xml</logfile-path> <log-level>0</log-level> <session-timeout>6000</session-timeout> <buffer-size>8192</buffer-size> </ftpconfig> <httpconfig> <http-port>8080</http-port> <http-listener>local_listener</http-listener> <http-protocol>tcp</http-protocol> <max-http-headers>64</max-http-headers> <session-timeout>6000</session-timeout> <server-name>XDB HTTP Server</server-name> <max-header-size>16384</max-header-size> <max-request-body>2000000000</max-request-body> <logfile-path>/sys/log/httplog.xml</logfile-path> <log-level>0</log-level> <servlet-realm>Basic realm="XDB"</servlet-realm> <webappconfig> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> </welcome-file-list> <error-pages> </error-pages> <servletconfig> <servlet-mappings> <servlet-mapping> <servlet-pattern>/oradb/*</servlet-pattern> <servlet-name>DBURIServlet</servlet-name> </servlet-mapping> </servlet-mappings> <servlet-list> <servlet> <servlet-name>DBURIServlet</servlet-name> <display-name>DBURI</display-name> <servlet-language>C</servlet-language> <description>Servlet for accessing DBURIs</description> <security-role-ref> <role-name>authenticatedUser</role-name> <role-link>authenticatedUser</role-link> </security-role-ref> </servlet> </servlet-list> </servletconfig> </webappconfig> </httpconfig> </protocolconfig> <xdbcore-xobmem-bound>1024</xdbcore-xobmem-bound> <xdbcore-loadableunit-size>16</xdbcore-loadableunit-size> </sysconfig> </xdbconfig>
Oracle XML DB構成ファイルxdbconfig.xml
には、層内の他のXML Schemaに基づくリソースと同様にアクセスできます。このConfiguration APIは、FTP、HTTP、HTTPS、WebDAV、Oracle Enterprise Manager、Java DOM API、PL/SQL DOM API、C(OCI) DOM API、Resource API for Java、Resource API for PL/SQL、Resource API for C(OCI)などを使用して、アクセスできます。
利便性を考慮して、構成アクセスにPL/SQLパッケージDBMS_XDB
を使用することができます。これにより、次の関数とプロシージャが公開されます。
cfg_get
: 現在のセッションの構成情報を表示します。
cfg_refresh
: 現在の構成ファイルを使用して、セッション構成情報をリフレッシュします。典型的なcfg_refresh
の使用例には、次のものがあります。
構成の変更後、セッションで最新バージョンの構成情報を取得する必要がある場合。
セッションの実行が長時間におよび、同時セッションによって構成が変更され、現行のセッションで最新バージョンの構成情報を取得する必要がある場合。
cfg_update
: 構成ファイルを書き込み、構成情報を更新します。COMMIT
が実行されます。
例34-2 CFG_UPDATEおよびCFG_GETを使用した構成ファイルの更新
この例では、構成ファイル内のftp-port
およびhttp-port
パラメータを更新します。
DECLARE v_cfg XMLType; BEGIN SELECT updateXML(DBMS_XDB.cfg_get(), '/xdbconfig/descendant::ftp-port/text()', '2121', '/xdbconfig/descendant::http-port/text()', '19090') INTO v_cfg FROM DUAL; DBMS_XDB.cfg_update(v_cfg); COMMIT; END; /
多くのパラメータを更新する場合、FTP、HTTP、HTTPSまたはOracle Enterprise Managerを使用すると、より簡単に構成を更新できます。
関連項目: 『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』 |
Oracle XML DBでは入力XML文書を事前解析して、XML Schemaに基づくXMLType
インスタンスを識別します。適切なxsi:schemaLocation
属性またはxsi:noNamespaceSchemaLocation
属性が検出された場合は、指定されたスキーマの場所を示すURLを使用して、登録済スキーマが参照されます。適切なxsi:
属性が検出されない場合、そのXML文書は、XML Schemaに基づかない文書とみなされます。Oracle XML DBは、デフォルトのスキーマの場所のマッピングを構成するメカニズムを提供します。適切なxsi:
属性がXML文書に指定されていない場合、デフォルトのスキーマの場所のマッピングが使用されます。Oracle XML DB構成XML Schemaであるxdbconfig.xsd
の要素schemaLocation-mappings
を使用して、名前空間と要素の組合せとそのデフォルトのスキーマの場所との間のマッピングを指定できます。要素の値が空の場合、マッピングは指定した名前空間内のすべてのグローバル要素に適用されます。名前空間の値が空の場合は、NULLの名前空間に対応します。
要素schemaLocation-mappings
の定義は、次のとおりです。
<element name="schemaLocation-mappings" type="xdbc:schemaLocation-mapping-type" minOccurs="0"/> <complexType name="schemaLocation-mapping-type"><sequence> <element name="schemaLocation-mapping" minOccurs="0" maxOccurs="unbounded"> <complexType><sequence> <element name="namespace" type="string"/> <element name="element" type="string"/> <element name="schemaURL" type="string"/> </sequence></complexType> </element></sequence> </complexType>
使用されるスキーマの場所は、Oracle XML DB構成ファイル内の使用される名前空間と文書のルート要素のマッピングによって異なります。たとえば、文書にスキーマの場所を示す適切なxsi:
属性がないと想定します。名前空間Nに文書のルート要素Rがあると仮定します。デフォルトのスキーマの場所を識別するアルゴリズムは次のようになります。
Oracle XML DB構成ファイルにNとRのマッピングが指定されている場合は、対応するスキーマの場所が使用されます。
XDB構成ファイルにNのマッピングが指定されていて、Rのマッピングが指定されていない場合、Nのスキーマの場所が使用されます。
ドキュメント・ルートRにいずれの名前空間も指定されていない場合は、Rのスキーマの場所が使用されます。
たとえば、Oracle XML DB構成ファイルに次のマッピングが含まれているとします。
<schemaLocation-mappings> <schemaLocation-mapping> <namespace>http://www.oracle.com/example</namespace> <element>root</element> <schemaURL>http://www.oracle.com/example/sch.xsd</schemaURL> </schemaLocation-mapping> <schemaLocation-mapping> <namespace>http://www.oracle.com/example2</namespace> <element></element> <schemaURL>http://www.oracle.com/example2/sch.xsd</schemaURL> </schemaLocation-mapping> <schemaLocation-mapping> <namespace></namespace> <element>specialRoot</element> <schemaURL>http://www.oracle.com/example3/sch.xsd</schemaURL> </schemaLocation-mapping> </schemaLocation-mappings>
次のスキーマの場所が使用されます。
名前空間 = http://www.oracle.com/example
ルート要素 = root
スキーマURL = http://www.oracle.com/example/sch.xsd
このマッピングは、インスタンス・ドキュメントによる指定が次の場合に使用されます。
<root xmlns="http://www.oracle.com/example">
名前空間 = http://www.oracle.com/example2
ルート要素 = null
(名前空間内の任意のグローバル要素)スキーマURL = http://www.oracle.com/example2/sch.xsd
このマッピングは、インスタンス・ドキュメントによる指定が次の場合に使用されます。
<root xmlns="http://www.oracle.example2">
名前空間 = null
(NULLの名前空間)ルート要素 = specialRoot
スキーマURL = http://www.oracle.com/example3/sch.xsd
このマッピングは、インスタンス・ドキュメントによる指定が次の場合に使用されます。
<specialRoot>
注意: この機能はXMLがサーバー上で解析される場合にサーバー側でのみ使用できます。XMLがクライアント側で解析される場合は、適切なxsi: 属性も必要になります。 |
Oracle XML DBリポジトリは、特定のファイルをそのファイル拡張子に基づいてXML文書として処理します。このようなファイルがリポジトリに挿入されると、Oracle XML DBはそのファイルを事前解析し、スキーマの場所を識別(またはデフォルトのマッピングがある場合はそれを使用)して、文書を適切なデフォルト表に挿入します。デフォルトでは、xml
、xsd
、xsl
、xlt
などの拡張子がXMLファイル拡張子とみなされます。さらに、Oracle XML DBは、各アプリケーションに対して、その他のファイル拡張子をXMLファイル拡張子として指定できるメカニズムを提供します。xml-extensions
要素は、構成スキーマのhttp://xmlns.oracle.com/xdb/xdbconfig.xsd
で次のように定義されます。
<element name="xml-extensions" type="xdbc:xml-extension-type" minOccurs="0"/> <complexType name="xml-extension-type"><sequence> <element name="extension" type="xdbc:exttype" minOccurs="0" maxOccurs="unbounded"> </element></sequence> </complexType>
たとえば、Oracle XML DB構成ファイルxdbconfig.xml
の次のフラグメントは、拡張子vsd
、vml
およびsvgl
を持つファイルをXMLファイルとして処理することを指定しています。
<xml-extensions> <extension>vsd</extension> <extension>vml</extension> <extension>svgl</extension> </xml-extensions>
脚注の凡例
脚注1: 埋込みPL/SQLゲートウェイの構成に使用される<plsql>
要素には、2つの異なるものがあります。1つは<httpconfig>
の子で、グローバル・パラメータを定義します。もう1つは<servlet>
の子で、DAD属性を定義します。