28 プロトコルを使用したリポジトリへのアクセス

Oracle XML DBリポジトリ・データには、FTPおよびHTTP(S)/WebDAVプロトコルを使用してアクセスできます。

28.1 Oracle XML DBプロトコル・サーバーの概要

Oracle XML DBは、Oracle XML DBプロトコル・サーバーも提供します。Oracle XML DBは、その階層リポジトリまたはファイル・システムにアクセスするための標準インターネット・プロトコルであるFTP、WebDAVおよびHTTP(S)をサポートします。HTTPSはOracle XML DBリポジトリへのセキュアなアクセスを提供します。

多くのユーザーは、これらのプロトコルによって、追加のソフトウェアをインストールせずに、Oracle XML DBに直接アクセスできます。プロトコルで使用するユーザー名およびパスワードは、SQL*Plusで使用するものと同じです。エンタープライズ・ユーザーもサポートされています。データベース管理者は、これらのプロトコルと、DBMS_XDB_REPOSなどのリソースAPIを使用して、リポジトリの仮想フォルダ/sys/asmにあるOracle Automatic Storage Management(Oracle ASM)のファイルとフォルダにアクセスすることができます。

Oracle XML DBを使用する前におよびOracle XML DBリポジトリ・データへのアクセスで説明したとおり、Oracle XML DBリポジトリは、XML用に設計された階層データ・リポジトリをデータベース内に提供します。Oracle XML DBリポジトリは、XMLTypeのデータベース・オブジェクトにパス名(またはURL)をマップし、これらのオブジェクトの管理機能を提供します。

関連項目:

リポジトリ情報へのアクセスとその場合の制限事項の詳細は、Oracle XML DBリポジトリ・データへのアクセスを参照してください。

注意:

  • Oracle XML DBプロトコルを使用して仮想フォルダ/sys/asmにアクセスする場合は、ロールDBAの権限を持っているSYS以外のユーザーとしてログインする必要があります。

  • Oracle XML DBのプロトコルは、EBCDICプラットフォームではサポートされません

28.1.1 セッション・プーリング

Oracle XML DBプロトコル・サーバーは、セッションの共有プールを保持します。各プロトコル接続は、このプールの1つのセッションに関連付けられます。接続のクローズ後、セッションは共有プールに戻され、その後の接続で使用できます。

セッション・プーリングでは、特に、リクエストごとに新しい接続が作成されるHTTP 1.0を使用する場合、セッション状態を再作成するコストが削減され、HTTP(S)のパフォーマンスが向上します。たとえば、データベース・セッションを作成する必要がある場合に、既存のHTTP/1.1接続でいくつかの小さいファイルを取り出すことができます。Oracle XML DBの構成ファイルxdbconfig.xmlでセッション・プール・サイズを設定することによってセッション数を調整したり、このプール・サイズを0 (ゼロ)に設定することによってセッションを使用禁止にできます。

セッション・プーリングは、Javaサーブレットを作成するユーザーに影響する可能性があります。これは、他のユーザーが別のユーザーの別のリクエストによって初期化されたセッションの状態を参照できるためです。そのため、サーブレットの作成者は、Java静的変数などのセッション・メモリーのみを使用して、特定のユーザーではなくアプリケーション全体に対するデータを保持する必要があります。セッションが1人のユーザーに対してのみ存在すると想定するのではなく、ユーザーごとの状態をデータベースまたは参照表に格納する必要があります。

図28-1に、Oracle XML DB プロトコル・サーバーのコンポーネント、およびそれらを使用してOracle XML DBリポジトリのファイルおよび他のデータにアクセスする方法を示します。この図では、リポジトリの関連するコンポーネントのみを示します。

図28-1 Oracle XML DBのアーキテクチャ: プロトコル・サーバー

図28-1の説明が続きます
「図28-1 Oracle XML DBのアーキテクチャ: プロトコル・サーバー」の説明

28.2 Oracle XML DBプロトコル・サーバーの構成管理

Oracle XML DBプロトコル・サーバーでは、ファイルxdbconfig.xmlに格納された構成パラメータを使用して、起動状態を初期化したり、セッション・レベルの構成を管理します。セッション・プール・サイズおよびタイムアウト・パラメータは動的に変更できません。変更内容を有効にするためには、データベースを再起動する必要があります。

28.2.1 プロトコル・サーバーの構成パラメータ

Oracle XML DBプロトコルの構成パラメータについて説明します。これには、すべてのプロトコルに共通するもの、FTPに固有のものおよびHTTP(S)/WebDAVに固有のものが含まれます。

表28-1に、すべてのプロトコルに共通のパラメータを示します。/xdbconfigで始まるパラメータを除き、これらすべてのパラメータ名は、Oracle XML DB構成スキーマの次のXPathに関連しています。

/xdbconfig/sysconfig/protocolconfig/common
  • FTP固有のパラメータ: 表28-2にFTP固有のパラメータを示します。これらは、Oracle XML DB構成スキーマの次のXPathに関連しています。

    /xdbconfig/sysconfig/protocolconfig/ftpconfig
    
  • サーブレット関連のパラメータ以外のHTTP(S)/WebDAV固有のパラメータ: 表28-3はHTTP(S)/WebDAV固有のパラメータを示します。これらのパラメータは、Oracle XML DB構成スキーマの次のXPathに関連しています。

    /xdbconfig/sysconfig/protocolconfig/httpconfig
    

これらのパラメータの使用例については、構成ファイル/xdbconfig.xmlを参照してください。

表28-1 共通プロトコルの構成パラメータ

パラメータ 説明

extension-mappings/mime-mappings

ファイル拡張子のマッピングをMIMEタイプに指定します。リソースがOracle XML DBリポジトリに格納され、そのMIMEタイプが指定されていない場合、このマッピング・リストを使用してそのMIMEタイプが設定されます。

extension-mappings/lang-mappings

ファイル拡張子のマッピングを言語に指定します。リソースがOracle XML DBリポジトリに格納され、その言語が指定されていない場合、このマッピング・リストを使用してその言語が設定されます。

extension-mappings/encoding-mappings

ファイル拡張子のマッピングをエンコーディングに指定します。リソースがOracle XML DBリポジトリに格納され、そのエンコーディングが指定されていない場合、このマッピング・リストを使用してそのエンコーディングが設定されます。

xml-extensions

Oracle XML DBによってXMLコンテンツとして処理されるファイル名の拡張子のリストを指定します。

session-pool-size

プロトコル・サーバーのセッション・プールに保持されるセッションの最大数を指定します。

/xdbconfig/sysconfig/call-timeout

接続がこの時間(100分の1秒単位)の間アイドル状態であった場合、接続を行っている共有サーバーは、他の接続のために解放されます。

session-timeout

プロトコル・サーバーがセッション(およびそれに対応する接続)を終了するまでの、接続のアイドル状態の経過時間(100分の1秒単位)を指定します。このパラメータは、特定のプロトコルのセッション・タイムアウトが構成に存在しない場合にのみ使用されます。

schemaLocation-mappings

指定された名前空間のデフォルトのスキーマの場所を指定します。このパラメータは、インスタンスのXML文書にxsi:schemaLocation属性が明示的に含まれていない場合に使用されます。

/xdbconfig/sysconfig/default-lock-timeout

リソースのWebDAVロックが無効になるまでの時間を指定します。これは、リソースをロックするクライアントが指定したタイムアウトでオーバーライドできます。

表28-2 FTP固有の構成パラメータ

パラメータ 説明

buffer-size

FTPのput操作でネットワークからデータを読み取るのに使用されるバッファのサイズ(バイト単位)。buffer-sizeを大きな値に設定すると、putのパフォーマンスが向上します。putのパフォーマンスとメモリー使用量の間にはトレードオフがあります。値の範囲は1024から1048496です。デフォルト値は8192です。

ftp-port

FTPサーバーがリスニングするポートを指定します。デフォルトではこれは0になっており、これはFTPが無効であることを意味します。FTPがデフォルトで無効なのは、FTP仕様ではパスワードをクリアテキストで送信することが要求されており、セキュリティ・ハザードになる可能性があるためです。FTPを有効にするには、このパラメータを使用するFTPポート(2100など)に設定します。

ftp-protocol

FTPサーバーを実行するプロトコルを指定します。デフォルトはtcpです。

ftp-welcome-message

FTPクライアントがサーバーに接続したときに表示される、ユーザー定義のウェルカム・メッセージ。このパラメータが空または欠落している場合は、「Unauthorized use of this FTP server is prohibited and may be subject to civil and criminal prosecution.」(このFTPサーバーの不正使用は禁じられており、民事および刑事訴追の対象となる場合があります。)というデフォルト・ウェルカム・メッセージが表示されます。

host-name

ホスト・システムへのアクセスに使用する名前。値は、IPアドレスまたはホスト・ネーミング(例: Linuxの場合は/etc/hostsファイル)を使用してIPアドレスにマップされる名前です。Oracle Database Net Servicesリファレンスを参照してください。デフォルトでは、オペレーティング・システムが戻したIPアドレスを使用します。

session-timeout

プロトコル・サーバーがFTP接続を終了するまでの、接続のアイドル状態の経過時間(100分の1秒単位)を指定します。

表28-3 HTTP(S)またはWebDAV固有の構成パラメータ(サーブレットを除く)

パラメータ 説明

http-port

HTTP(S)またはWebDAVサーバーがプロトコルhttp-protocolを使用してリスニングするポート。デフォルトではこれは0になっており、これはHTTPが無効であることを意味します。このパラメータが空の場合は(<http-port/>)、デフォルトの0が適用されます。パラメータを空にしておくことはお薦めしません

このパラメータは、空であるかどうかに関係なく、存在する必要があります。存在しない場合、XML Schema xdbconfig.xsdに対するxdbconfig.xmlの検証は失敗します。値はhttp2-portの値と異なっている必要があります。そうでない場合は、エラーが発生します。

http2-port

HTTP(S)またはWebDAVサーバーがプロトコルhttp2-protocolを使用してリスニングするポート。

このパラメータはオプションですが、存在する場合は、http2-protocolが存在する必要があります。そうでない場合は、エラーが発生します。値はhttp-portの値と異なっている必要があります。そうでない場合は、エラーが発生します。パラメータ(<http2-port/>)が空の場合もエラーが発生します。

http-protocol

ポートhttp-port上でHTTP(S)またはWebDAVサーバーを実行するプロトコル。TCPまたはTCPSである必要があります。

このパラメータは存在する必要があります。存在しない場合、XML Schema xdbconfig.xsdに対するxdbconfig.xmlの検証は失敗します。パラメータ(<http-protocol/>)が空の場合もエラーが発生します。

http2-protocol

ポートhttp2-port上でHTTP(S)またはWebDAVサーバーを実行するプロトコル。TCPまたはTCPSである必要があります。このパラメータが空の場合は(<http2-protocol/>)、デフォルトのTCPが適用されます。(パラメータを空にしておくことはお薦めしません。)

このパラメータはオプションですが、存在する場合は、http2-portが存在する必要があります。そうでない場合は、エラーが発生します。

session-timeout

プロトコル・サーバーがHTTP(S)セッション(およびそれに対応する接続)を終了するまでの、接続のアイドル状態の経過時間(100分の1秒単位)を指定します。

max-header-size

HTTP(S)ヘッダーの最大サイズ(バイト単位)を指定します。

max-request-body

HTTP(S) Request Bodyの最大サイズ(バイト単位)を指定します。

webappconfig/welcome-file-list

「ウェルカム・ファイル」とみなされるファイル名のリストを指定します。サーバーは、コンテナに対するHTTP(S) getリクエストを受信すると、これらのいずれかの名前を持つコンテナのリソースが存在するかどうかを最初に確認します。そのようなリソースが存在する場合、コンテナ内のリソースのリストではなく、そのファイルのコンテンツが送信されます。

default-url-charset

受信URLがUTF-8またはリクエストのContent-TypeフィールドのCharsetパラメータに指定されたキャラクタ・セットでエンコードされていない場合に、HTTP(S)プロトコル・サーバーは、受信URLがこのキャラクタ・セットでエンコードされていると想定します。

allow-repository-anonymous-access

ロック解除されたANONYMOUSユーザー・アカウントを使用した、Oracle XML DBリポジトリ・データへの匿名HTTPアクセスが許容されるかどうかを示します。デフォルト値はfalseで、これはリポジトリ・データへの非認証アクセスがブロックされることを意味します。HTTPを使用したOracle XML DBリポジトリへの匿名アクセスを参照してください。

authentication

HTTP認証メカニズムを使用できます。HTTPの認証メカニズムの構成および管理を参照してください。

expire

URLの期限切れ日時を指定するHTTPヘッダー。URL有効期限の制御を参照してください。

注意:

FTPポート番号またはHTTPポート番号を設定または変更する場合は、PL/SQLパッケージDBMS_XDB_CONFIGのサブプログラムを使用することをお薦めします。構成ファイルxdbconfig.xmlを直接編集してポートを設定しないでください

関連項目:

28.2.2 セキュアHTTP(HTTPS)の構成

リポジトリによるセキュアHTTP接続(HTTPS)の使用を有効にするには、データベース管理者(DBA)がデータベースを適切に構成する必要があります。パラメータhttp2-portおよびhttp2-protocolを構成し、HTTPリスナーでSSLを使用できるようにして、TCPS Dispatcherの起動を有効にします。次に、DBAはデータベースとリスナーを停止および再起動する必要があります。

28.2.2.1 HTTP ListenerによるSSLの使用の有効化

SSLに対してHTTPリスナーを構成するには、データベース管理者(DBA)はサーバー用のウォレットを作成して証明書をインポートし、サーバーにウォレットの場所を指定して、クライアント認証を無効にし、SSL_DH_anon暗号スイートをSSL_CIPHER_SUITESに追加して、TCP/IPをSSLで使用するリスニング・エンド・ポイントを作成する必要があります。

つまり、DBAは次のステップを実行して、SSLに対してHTTPリスナーを構成する必要があります。

  1. サーバー用のウォレットを作成し、証明書をインポートします。Oracle Wallet Managerを使用して次の操作を行います。

    1. サーバー用のウォレットを作成します。

    2. サーバーの識別名(DN)を持つ有効な証明書がない場合は、証明書リクエストを作成して認証局に送信します。有効な証明書を認証局から取得します。

    3. サーバーの識別名(DN)を持つ有効な証明書をサーバーにインポートします。

    4. 新しいウォレットを不明瞭化した形式で保存し、パスワードなしで開けるようにします。

    関連項目:

    ウォレットの作成方法の詳細は、Oracle Databaseエンタープライズ・ユーザー・セキュリティ管理者ガイドを参照してください。

  2. ウォレットの場所をサーバーに対して指定します。Oracle Net Managerで行います。構成がディスクに保存されたことを確認します。このステップにより、ファイルsqlnet.oraおよびlistener.oraが更新されます。

  3. サーバー側でのクライアント認証を無効にします。大部分のWebクライアントには証明書がないからです。Oracle Net Managerを使用します。このステップにより、ファイルsqlnet.oraが更新されます。

  4. SSL_DH_anon暗号スイートをSSL_CIPHER_SUITES追加します(次のいずれかを使用してください)。

    • SSL_DH_anon_WITH_3DES_EDE_CBC_SHA

    • SSL_DH_anon_WITH_RC4_128_MD5

    • SSL_DH_anon_WITH_DES_CBC_SHA

    このステップにより、ファイルsqlnet.oraが更新されます。

  5. TCP/IPをSSLで使用するリスニング・エンド・ポイントを作成します。Oracle Net Managerを使用します。このステップにより、ファイルlistener.oraが更新されます。

関連項目:

ステップ1から5の詳細は、Oracle Databaseセキュリティ・ガイドを参照してください。

28.2.2.2 TCPS Dispatcherの有効化

データベース起動中のTCPS Dispatcherの起動を有効にするには、データベース管理者(DBA)はデータベースpfileを編集する必要があります。

pfileに次の行を追加する必要があります。ここで、SIDはデータベースのSIDです。

dispatchers=(protocol=tcps)(service=SIDxdb)

データベースのpfileの場所はオペレーティング・システムにより異なります。次を参照してください。

  • MS Windows - PARENT/admin/orcl/pfile。ここで、PARENTはフォルダORACLE_HOMEの親フォルダです

  • UNIX、Linux: $ORACLE_HOME/admin/$ORACLE_SID/pfile

28.2.3 リスナー・ステータスを使用したポート構成の確認

TNS Listenerコマンドlsnrctl statusを使用して、HTTP(S)およびFTPサポートが有効かどうかを検証できます。このことの例を示します。

例28-1 FTPおよびHTTP(S)プロトコルがサポートされているリスナーの状態

LSNRCTL for 32-bit Windows: Version 11.1.0.5.0 - Production on 20-AUG-2007 16:02:34
 
Copyright (c) 1991, 2007, Oracle.  All rights reserved.
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) STATUS of the LISTENER
--------------------------------------------------------------------------------------------
Alias                          LISTENER
Version                        TNSLSNR for 32-bit Windows: Version 11.1.0.5.0 - Beta
Start Date                     20-JUN-2007 15:35:40
Uptime                         0 days 16 hr. 47 min. 42 sec
Trace Level                    off
Security                       ON: Local OS Authentication
SNMP                           OFF
Listener Parameter File        C:\oracle\product\11.1.0\db_1\network\admin\listener.ora
Listener Log File              c:\oracle\diag\tnslsnr\quine-pc\listener\alert\log.xml
 
Listening Endpoints Summary... 
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=quine-pc.example.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=quine-pc.example.com)
             (PORT=21))(Presentation=FTP)(Session=RAW))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=quine-pc.example.com)
             (PORT=443))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "orcl.example.com" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB.example.com" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl_XPT.example.com" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

28.2.4 データベース統合後のプロトコル・ポート・パラメータの構成

マルチテナント・コンテナ・データベース(CDB)では、プロトコル・サーバーのポート番号によって、接続されたプラガブル・データベース(PDB)を識別します。そのため、このようなデータベースにはそれぞれ一意のポート番号が必要です。データベース管理者(DBA)は、PDBで使用される各ポート番号が一意であることを確認する必要があります。

ポートの競合を避け、統合によって発生する可能性のあるポートの競合を解決するには、データベース管理者は次の手順を実行する必要があります。

  1. PL/SQL関数DBMS_XDB_CONFIG.usedPortを使用して、同じCDB内で別のPDBが使用しているポート番号を取得します。
  2. PL/SQLサブプログラムDBMS_XDB_CONFIG.setFTPPortまたはDBMS_XDB_CONFIG.setHTTPPortを(必要に応じて)使用し、競合しているポート番号をそれぞれ一意の番号に変更します。

注意:

PDBのプラグインまたはクローン操作後、Oracle XML DBが完全に初期化されるまでの間、構成ファイルxdbconfig.xmlのポート・パラメータ設定は未定義となる可能性があります。DBMS_XDB_CONFIGサブプログラムgetFTPPortgetHTTPPortgetHTTPSPortsetFTPPortsetHTTPPortまたはsetHTTPSPortを使用して、ポート値を取得または変更することをお薦めします。

28.2.5 HTTPの認証メカニズムの構成および管理

構成ファイルxdbconfig.xmlに要素authentication(要素httpconfigの子)を設定することにより、Oracle XML DBリポジトリへのHTTPアクセスを許可するよう、認証メカニズムを構成します。

12c リリース1 (12.1.0.1)以降、Oracle Databaseでは、Basic認証だけでなくDigestアクセス認証もサポートしています。

ユーザー資格証明は大文字と小文字が区別されます。具体的には、認証を受けるにはユーザー名が作成された名前と正確に一致する必要があります(デフォルトでは、すべて大文字)。

Digestアクセス認証(Digest認証とも呼ばれる)では、完全なデータ暗号化に伴うオーバーヘッドを発生させることなく、ユーザーの資格証明(ユーザー名、パスワードなど)の暗号化を行います。

注意:

デフォルトでは、ユーザーの作成時に新規ユーザーのダイジェスト認証は有効になりません。ユーザーの作成時にダイジェスト認証を有効にするには、SQL文CREATE USERDIGEST ENABLE句を使用して、ユーザーのパスワードを指定します。

既存ユーザーのダイジェスト認証を有効にすることもできます。これを行うには、SQL文ALTER USERDIGEST ENABLEを使用します。これによってダイジェスト認証用のユーザー・パスワードが初期化されますが、ダイジェスト認証は直接有効になりません。ユーザーのダイジェスト認証が有効になるのは、ユーザーがそのパスワードを使用して次回ログインしたときです。

使用する認証メカニズムは、構成ファイルxdbconfig.xmlに要素authentication(要素httpconfigの子)を設定することにより構成できます。要素authenticationはオプションです。存在しない場合は、Basic認証のみが使用されます。

要素authenticationには、次の2つの子要素を使用できます。

  • 要素allow-mechanismでは、使用可能なメカニズム(basicdigestまたはcustom)を指定します。許可するメカニズムごとに、個別のallow-mechanism要素を指定してください。

  • 要素digest-authはオプションです。Digestメカニズムの情報を指定します。子要素nonce-timeoutでは、指定されたnonceの有効期限を秒数で指定します。デフォルト値は300秒です。

    digestが指定されたallow-mechanismはあるがdigest-auth要素がない場合は、デフォルト値が使用されます。digestが指定されたallow-mechanismがない場合、digest-auth要素は無視されます。

HTTPリクエストは、指定されたallow-mechanismごとに受け付けられます。認証チャレンジは、指定されたallow-mechanismタイプの順に提示されます。たとえば、digestbasicの両方がこの順番で存在する場合は、Digestチャレンジ、Basicチャレンジの順に提示されます。常に強力な認証を弱い認証よりも優先させることをお薦めします(Digest認証はBasic認証よりも強力)。

関連項目:

28.2.5.1 Digest認証のnonce

Digest認証では、unauthorizedレスポンスが発行されるたびに、サーバーによりnonceが生成されます。クライアントでは、サーバーへのリクエストにnonceを含めます。サーバーでは、クライアントから受信したnonceをチェックし、クライアント認証を拒否する必要があるかどうかを確認します。クライアントでは、同じ方法でサーバーを認証できます。

nonceは、サーバーがHTTPレスポンス401 (unauthorized)を発行するたびに生成される一意の文字列です。クライアントでは、サーバーに送信する後続のリクエストにnonceを含めます。サーバーでは、クライアントから受信したnonceを確認します。不正であったり、nonce-timeoutの期限が切れている場合、サーバーはただちに認証を拒否できます

(クライアントは独自のnonceを生成できるので、サーバーの認証に同じメカニズムの使用が可能です。クライアントとサーバーの両方がこのクライアント側のnonceを使用することで、特定のプレーン・テキスト攻撃を防止できます)。

サーバーがクライアントにDigestチャレンジを送信するたびに、新しいnonceが生成されます。nonceはnonceキーに基づいています。最初のnonceキーは、データベースのインストールまたはアップグレード時にランダムに生成されます。

Digest認証を使用する場合は、新しいnonceキーを定期的に作成して、キーの整合性を確保することもお薦めします。これを行うには、PL/SQLプロシージャDBMS_XDB_ADMIN.createNonceKeyを使用します。

28.2.6 Oracle XML DBリポジトリおよびファイルシステムのリソース

IETFプロトコル仕様のRFC 959 (FTP)、RFC 2616 (HTTP)およびRFC 2518 (WebDAV)では、暗黙的にサーバー側の抽象的な階層ファイル・システムを想定しています。これはOracle XML DBリポジトリにマッピングされます。リポジトリでは、名前解決、ACLベースのセキュリティおよび任意のコンテンツを格納したり取得する機能が提供されます。

リポジトリは、FTPを介したバイナリ・データ入力と、XML Schemaに基づく文書を格納できます。

28.2.7 プロトコル・サーバーによるXML Schemaに基づくXML文書または基づかないXML文書の処理

Oracle XML DBプロトコル・サーバーでは、常に、挿入される文書が、Oracle XML DBリポジトリで登録されているXML Schemaに基づいているかどうかがチェックされます。基づいている場合、使用するXMLType記憶域モデルは、該当するXML Schemaによって決定されます。基づいていない場合、文書はBLOBとして格納されます。

28.2.8 イベントベース・ロギング

プロトコル・サーバーによって受信されたリクエストと送信されたレスポンスをログに記録するには、イベント番号31098をレベル2に設定します。

このイベントを設定するには、次の行をinit.oraファイルに追加し、データベースを再起動します。

event="31098 trace name context forever, level 2"

28.3 FTPおよびOracle XML DBプロトコル・サーバー

RFC959で規定されているファイル転送プロトコル(FTP)は、最も古く、最も一般的なプロトコルの1つです。これにより、異機種間のファイル・システムへの均一な方法でのアクセスが可能となります。FTPを使用すると、Oracle XML DBリポジトリに格納されたデータにアクセスして更新できます。

28.3.1 Oracle XML DBプロトコル・サーバー: FTP機能

ファイル転送プロトコル(FTP)は、オペレーティング・システムの専用クライアント、ファイル・システムのエクスプローラ・クライアントおよびブラウザで実装されています。FTPは、一般的にセッション指向であり、明示的なログインによってユーザー・セッションが作成され、ファイルまたはディレクトリがダウンロードおよび参照された後、接続がクローズされます。

1回の接続でコマンド・メッセージの転送とステータスの取得が実行されます。ただし、データ転送用に、クライアントとサーバー間で新しい接続がオープンされます。一方、HTTP(S)を使用すると、1回の接続でコマンドとデータが転送されます。

注意:

セキュリティ上の理由のため、FTPはデフォルトでOracle Databaseに対して無効になっています。IETF FTPプロトコルの仕様ではパスワードをクリアテキストで送信することが要求されているためです。無効化は、FTPサーバーのポートをゼロ(0)にすることで実現しています。FTPを有効にするには、ftp-portパラメータを、使用するFTPポート(2100など)に設定します。

28.3.1.1 サポートされていないFTPの機能

Oracle XML DBでサポートされていないFTP機能には、レコード指向のファイルや追加、割当て、アカウントおよび中断の操作があります。

Oracle XML DBは、RFC 959で定義されたFTPを実装しますが、次のオプション機能は除きます

  • レコード指向のファイル、たとえば、STRUメソッドは、FILE構造のみサポートされています。これは、ファイルの転送に最も広範囲に使用されている構造です。これは、仕様で指定されているデフォルトでもあります。構造マウントはサポートされません。

  • 追加。

  • 割当て。ファイル転送の前に領域を事前に割り当てます。

  • アカウント。安全性の低いTelnetプロトコルを使用します。

  • 中断。

28.3.1.2 サポートされているFTPクライアント・メソッド

Oracle XML DBでは、Oracle XML DBリポジトリにアクセスするための複数のFTPクライアント・メソッドがサポートされています。

  • cdup: 作業ディレクトリを親ディレクトリに変更します。

  • cwd: 作業フォルダを変更します。

  • dele: ファイルを削除します(ディレクトリは対象外)。

  • listnlst: 作業ディレクトリのファイルをリストします。

  • mkd: ディレクトリを作成します。

  • noop: 何もしません(接続のタイムアウト・カウンタはリセットされます)。

  • pasvport: TCPデータ接続を確立します。

  • pwd: 作業フォルダを取得します。

  • quit: 接続を閉じてFTPセッションを終了します。

  • retr: 確立された接続を使用してデータを取得します。

  • rmd: ディレクトリを削除します。

  • rnfrrnto: ファイル名を変更します(2ステップ・プロセス: ファイルから、ファイルへ)。

  • stor: 確立された接続を使用してデータを格納します。

  • syst: システムのバージョンを取得します。

  • type: データ型を変更します。asciiまたはimageバイナリ型のみが可能です。

  • userpass: ユーザーのログインです。

関連項目:

28.3.1.3 FTP Quoteメソッド

Oracle Databaseは、Oracle XML DBに直接情報を提供するFTP quoteメソッドを複数サポートしています。

  • rm_r - ファイルまたはフォルダ<resource_name>を削除します。フォルダの場合、<resource_name>に含まれるすべてのファイルとフォルダを再帰的に削除します。

    quote rm_r <resource_name>
    
  • rm_f – Forcibly remove a resource.
    quote rm_f <resource_name>
    
  • rm_rf - rm_rおよびrm_fを組み合せます。ファイルとフォルダを強制的かつ再帰的に削除します。

    quote rm_rf <resource_name>
    
  • set_nls_locale - FTPメソッドでファイル名やディレクトリ名に使用する(メソッド・レスポンスでの名前を含む)キャラクタ・セット・エンコーディングを指定します(<charset_name>)。

    quote set_nls_locale {<charset_name> | NULL} 
    

    <charset_name>に対して指定できるのは、IANAキャラクタ・セット名のみです。nls_localeNULLまたは設定されていない場合、こデータベース・キャラクタ・セットが使用されます。

  • set_charset - サーバーに送信されるデータのキャラクタ・セットを指定します。

    quote set_charset  {<charset_name> | NULL}
    

    set_charsetメソッドは、構成ファイルxdbconfig.xmlで定義されているMIMEタイプへのファイル拡張子マッピングで決定されているとおり、テキスト・ファイルのみに適用され、バイナリ・ファイルには適用されません。

    set_charsetに提供されているパラメータが<charset_name> (NULLではない)場合、これによってデータのキャラクタ・セットが指定されます。

    set_charsetに提供されているパラメータがNULLの場合や、set_charsetコマンドが指定されていない場合は、データのMIMEタイプによって、そのデータのキャラクタ・セットが決定されます。

    • MIMEタイプがtext/xmlない場合は、データはXMLとは仮定されません。データベース・キャラクタ・セットが使用されます。

    • MIMEタイプがtext/xmlである場合、データはXML文書を表します。

      XML文書内にバイト・オーダー・マーク脚注1 (BOM)がある場合、それによってデータのキャラクタ・セットが決定されます。

      BOMが ない場合、次のようになります。

      • XML文書にエンコーディング宣言がある場合、それによりデータのキャラクタ・セットが決定されます。

      • エンコーディング宣言がない場合、UTF-8キャラクタ・セットが使用されます。

28.3.1.4 FTPを使用したOracle XML DBリポジトリへのコンテンツのアップロード

標準のコマンドラインFTPツールで文書をOracle XML DBリポジトリにロードするときに発行されるコマンドと、生成された出力の例を示します。

図28-3および例28-2で示されている要点は、Windows ExplorerおよびFTPツールのいずれもがOracle XML DBの操作を認識していないことです。このようなツールおよびOracle XML DBの両方でオープン・インターネット・プロトコルがサポートされているため、最初から相互に使用できます。

WebDAVまたはFTPプロトコルを認識するツールを使用すると、Oracle XML DBリポジトリで管理されるコンテンツを作成できます。クライアントまたは中間層に追加のソフトウェアをインストールする必要はありません。

Windows ExplorerやFTPなどのツールを使用してフォルダのコンテンツを表示すると、そのフォルダに格納されたXML Schemaに基づく文書のサイズはゼロ(0)バイトと表示されます。このように設計されているのは、次の2つの理由からです。

  • 文書のサイズが明確でありません。文書に関連するサイズには、文書を出力して生成されたCLOBインスタンスのサイズ、文書をデータベース内に永続的に保持するために使用するオブジェクトの格納に必要なバイト数などがあります。

  • 選択された定義に関係なく、この情報を計算して保持するにはコストがかかります。

例28-2 FTPを使用したリポジトリへのコンテンツのアップロード

$ ftp mdrake-sun 2100
Connected to mdrake-sun.
220 mdrake-sun FTP Server (Oracle XML DB/Oracle Database 10g Enterprise Edition
Release 10.1.0.1.0 - Beta) ready.
Name (mdrake-sun:oracle10): QUINE
331 Password required for QUINE
Password: password
230 QUINE logged in
ftp> cd /source/schemas
250 CWD Command successful
ftp> mkdir PurchaseOrders
257 MKD Command successful
ftp> cd PurchaseOrders
250 CWD Command successful
ftp> mkdir 2002
257 MKD Command successful
ftp> cd 2002
250 CWD Command successful
ftp> mkdir "Apr"
257 MKD Command successful
ftp> put "Apr/AMCEWEN-20021009123336171PDT.xml"
"Apr/AMCEWEN-20021009123336171PDT.xml"
200 PORT Command successful
150 ASCII Data Connection
226 ASCII Transfer Complete
local: Apr/AMCEWEN-20021009123336171PDT.xml remote:
Apr/AMCEWEN-20021009123336171PDT.xml
4718 bytes sent in 0.0017 seconds (2683.41 Kbytes/s)
ftp> put "Apr/AMCEWEN-20021009123336271PDT.xml"
"Apr/AMCEWEN-20021009123336271PDT.xml"
200 PORT Command successful
150 ASCII Data Connection
226 ASCII Transfer Complete
local: Apr/AMCEWEN-20021009123336271PDT.xml remote:
Apr/AMCEWEN-20021009123336271PDT.xml
4800 bytes sent in 0.0014 seconds (3357.81 Kbytes/s)
.....
ftp> cd "Apr"
250 CWD Command successful
ftp> ls -l
200 PORT Command successful
150 ASCII Data Connection
-rw-r--r1 QUINE oracle 0 JUN 24 15:41 AMCEWEN-20021009123336171PDT.xml
-rw-r--r1 QUINE oracle 0 JUN 24 15:41 AMCEWEN-20021009123336271PDT.xml
-rw-r--r1 QUINE oracle 0 JUN 24 15:41 EABEL-20021009123336251PDT.xml
-rw-r--r1 QUINE oracle 0 JUN 24 15:41 PTUCKER-20021009123336191PDT.xml
-rw-r--r1 QUINE oracle 0 JUN 24 15:41 PTUCKER-20021009123336291PDT.xml
-rw-r--r1 QUINE oracle 0 JUN 24 15:41 SBELL-20021009123336231PDT.xml
-rw-r--r1 QUINE oracle 0 JUN 24 15:41 SBELL-20021009123336331PDT.xml
-rw-r--r1 QUINE oracle 0 JUN 24 15:41 SKING-20021009123336321PDT.xml
-rw-r--r1 QUINE oracle 0 JUN 24 15:41 SMCCAIN-20021009123336151PDT.xml
-rw-r--r1 QUINE oracle 0 JUN 24 15:41 SMCCAIN-20021009123336341PDT.xml
-rw-r--r1 QUINE oracle 0 JUN 24 15:41 VJONES-20021009123336301PDT.xml
226 ASCII Transfer Complete
remote: -l
959 bytes received in 0.0027 seconds (349.45 Kbytes/s)
ftp> cd ".."
250 CWD Command successful
....
ftp> quit
221 QUIT Goodbye.
$
28.3.1.5 Oracle ASMファイルに対するFTPの使用

Oracle Automatic Storage Management(Oracle ASM)を使用すると、データベース・ファイルはディスク・グループに整理され、管理が簡潔になるとともに、データベースのミラー化やI/Oバランシングなどの利用が可能になります。プロトコルおよびリソースAPIを使用して、リポジトリのvirtual folder /sys/asm内のOracle ASMファイルにアクセスできます。/sys/asmにあるファイルはすべてバイナリです。

一般的な用途は、Oracle ASMのファイルやフォルダに対するリスト表示、コピー、移動、作成、および削除です。例28-3はOracle ASMの仮想フォルダのナビゲートとサブフォルダ内のファイルのリスト表示の例です。

Oracle ASM仮想フォルダ/sys/asmの構造は、Oracle XML DBリポジトリ・データへのアクセスで説明しています。例28-3では、ディスク・グループがDATAおよびRECOVERY、データベース名がMFG、エイリアス用に作成されたディレクトリがdbsおよびtmpです。この例はサブフォルダにナビゲートし、ファイルをリストし、ファイルの1つをローカルのファイル・システムにコピーしています。

例28-3では、データベースmyhostに接続およびログインし(最初の4行)、FTPメソッドcdおよびlsを使用して、それぞれフォルダをナビゲートおよびリスト表示しています。フォルダ/sys/asm/DATA/dbs内でFTPコマンドgetを使用して、ファイルt_db1.fおよびt_ax1.fがローカルのファイル・システムの現行のフォルダにコピーします。続いてFTPコマンドputを使用して、ファイルmy_db2.fをローカルのファイル・システムからフォルダ/sys/asm/DATA/dbsにコピーしています。

データベース管理者はOracle Automatic Storage Management(Oracle ASM)ファイルをデータベース・サーバー間でコピーしたり、データベースとローカルのファイル・システムの間でコピーできます。例28-4は2つのデータベース間でのコピーを示しています。この場合、proxy FTPクライアント・メソッドを使用できます。proxyメソッドを使用すると、2つの異なるリモートFTPサーバーに直接接続できます。

例28-4では、Oracle ASMファイルをデータベース間でコピーしています。接尾辞1が付いた語はデータベースserver1に対応しています。接尾辞2が付いた語はデータベースserver2に対応しています。一部のFTPクライアントでは、入力したパスワードが画面に表示されることがあります。パスワードが他人の目に触れないよう、十分注意してください。

例28-4の内容:

  • 1行目でOracle XML DB FTPサーバーserver1へのFTP制御接続を開きます。

  • 2から4行目で、データベース管理者がUSERNAME1としてserver1にログインします。

  • 5行目でserver1/sys/asm/DATAFILE/MFG/DATAFILEにナビゲートします。

  • 6行目で第2のデータベース・サーバーserver2へのFTP制御接続を開きます。この時点で、FTPコマンドproxy ?を発行して、第2の接続で利用できるFTPコマンドを参照することができます。(これは表示されていません。)

  • 7から9行目で、データベース管理者がUSERNAME2としてserver2にログインします。

  • 10行目でserver2/sys/asm/DATAFILE/MFG/DATAFILEにナビゲートします。

  • 11行目で、Oracle ASMファイルdbs2.fを、server2から、server1上のOracle ASMファイルtmp1.fにコピーします。

  • 12行目で、Oracle ASMファイルdbs1.fを、server1から、server2上のOracle ASMファイルtmp2.fにコピーします。

例28-3 Oracle ASMフォルダのナビゲート

ftp> open myhost 7777
ftp> user system
Password required for SYSTEM
Password: password
ftp> cd /sys/asm
ftp> ls
DATA
RECOVERY
ftp> cd DATA
ftp> ls
dbs
MFG
ftp> cd dbs
ftp> ls
t_dbl.f
t_axl.f
ftp> binary
ftp> get t_dbl.f, t_axl.f
ftp> put my_db2.f

例28-4 FTP proxyメソッドによる、Oracle ASMファイルのデータベース間転送

 1 ftp> open server1 port1
 2 ftp> user username1
 3 Password required for USERNAME1
 4 Password: password-for-username1
 5 ftp> cd /sys/asm/DATAFILE/MFG/DATAFILE
 6 ftp> proxy open server2 port2
 7 ftp> proxy user username2
 8 Password required for USERNAME2
 9 Password: password-for-username2
10 ftp> proxy cd /sys/asm/DATAFILE/MFG/DATAFILE
11 ftp> proxy put dbs2.f tmp1.f
12 ftp> proxy get dbs1.f tmp2.f
28.3.1.6 Oracle XML DBのデフォルト・ポートでなく標準ポート上でのFTP使用

Oracle XML DBの構成ファイルxdbconfig.xmlを使用して、任意のポートでリスニングするようにFTPを構成できます。FTPはデフォルトで、非標準の保護されないポートでリスニングを行います。

標準ポート21でFTPを使用するには、データベース管理者が次のことを実行する必要があります。

  1. (UNIXのみ)このシェル・コマンドを使用して、実行可能ファイルtnslsnrの所有者とグループが必ずrootになるようにします。
    % chown root:root $ORACLE_HOME/bin/tnslsnr
    
  2. (UNIXのみ)リスナー・ファイルlistener.oraに次のエントリを追加します。ここで、hostnameは使用するホスト名です。
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP) (HOST = hostname) (PORT = 21))
      (PROTOCOL_STACK = (PRESENTATION = FTP) (SESSION = RAW)))
    
  3. (UNIXのみ)シェル・コマンドidを使用して、Oracle Databaseのインストールに使用されたuser_idおよびgroup_idを特定します。oracle_installation_userは、データベースをインストールしたユーザーの名前です。
    % id oracle_installation_user
    uid=user_id(oracle_installation_user) gid=group_id(dba)
    
  4. (UNIXのみ)次のシェル・コマンドを使用して、リスナーを停止して再起動します。ここで、user_idおよびgroup_idは、ステップ3で取得したUNIXユーザー識別子およびグループ識別子です。
    % lsnrctl stop
    % tnslsnr LISTENER -user user_id -group group_id &
    

    2番目のコマンドをバックグラウンドで実行するにはアンパサンド(&)を使用します。リスナーを起動するためにlsnrctl startを使用しないでください。

  5. 次のようにSYS as SYSDBAでPL/SQLプロシージャDBMS_XDB_CONFIG.setFTPPortを使用して、Oracle XML DB構成ファイルxdbconfig.xmlでFTPポート番号を21に設定します。
    SQL> exec DBMS_XDB_CONFIG.setFTPPort(21);
    
  6. 次のSQL文を使用してデータベースが必ずリスナーとともに登録されるようにします。
    SQL> ALTER SYSTEM REGISTER;
    
  7. このシェル・コマンドを使用して、リスナーが適切に構成されていることを確認します。
    % lsnrctl status

関連項目:

28.3.1.7 FTPでのIPv6 IPアドレスの使用

11gリリース2 (11.2)以降のOracle Databaseでは、(Internet Protocol Version 4に加えて) Internet Protocol Version 6 (IPv6)がサポートされています。

例28-5に、FTPでIPv6アドレス2001::0db8:ffff:ffff:ffffに接続する方法を示します。

関連項目:

IPv6の詳細はOracle Database Net Servicesリファレンスを参照してください。

例28-5 IPv6を使用したFTP接続

ftp> open 2001::0db8:ffff:ffff:ffff 1521
Connected to 2001::0db8:ffff:ffff:ffff.
220- xmlhost.example.com
Unauthorized use of this FTP server is prohibited and may be subject to civil
and criminal prosecution.
220- xmlhost.example.com FTP server (Oracle XML DB/Oracle Database) ready.
User (2001::0db8:ffff:ffff:ffff:(none)): username
331 pass required for USERNAME
Password: password-for-username
230 USERNAME logged in
ftp>
28.3.1.8 FTPサーバーのセッション管理

Oracle XML DBプロトコル・サーバーでは、FTPのセッション管理も提供します。FTPは、新しいコマンドの入力をショート・ウェイトした後、プロトコル・レイヤーに戻ります。

このショート・ウェイト時間は、Oracle XML DB構成ファイルのcall-timeoutパラメータを変更することによって構成できます。通信量が多いサイトでは、call-timeoutを短くし、より多くの接続を確立できるようにする必要があります。接続で新しいデータが受信されると、FTPサーバーは最新のデータを使用して再起動されます。そのため、FTPが長時間実行する性質を持っていても、プロトコル・サーバーに確立可能な接続の数には影響しません。

28.3.1.9 エラーの処理421。FTPセッションのデフォルトのタイムアウト値の変更

頻繁にサーバーから切断され、次の操作を実行する前に、再接続してディレクトリ全体を検索する必要がある場合は、FTPセッションに対するデフォルトのタイムアウト値を変更する必要がある可能性があります。この時間の経過後もセッションがアイドル状態である場合、そのセッションは切断されます。

タイムアウトの値(デフォルト= 6000センチセカンド)を大きくするには、次のように構成ドキュメントを変更した後、データベースを再起動します。

例28-6 FTPセッションのデフォルトのタイムアウト値の変更

DECLARE
  newconfig XMLType;
BEGIN
SELECT XMLQuery('copy $i := $p1 modify
                   (for $j in $i/xdbconfig/sysconfig/protocolconfig/ftpconfig/session-timeout
                    return replace value of node $j with $p2)
                 return $i'
                PASSING DBMS_XDB_CONFIG.cfg_get() AS "p1", 123456789 AS "p2" RETURNING CONTENT)
  INTO newconfig FROM DUAL;
  DBMS_XDB_CONFIG.cfg_update(newconfig);
END;/
COMMIT;
28.3.1.10 パッシブ・モードでのFTPクライアントの障害

listener.oraHOSTNAMElocalhostまたは127.0.0.1.と構成されているサーバーにリモートから接続する場合、FTPをパッシブ・モードで使用しないでください。

サーバー・ファイルlistener.oraで指定されているHOSTNAMElocalhostまたは127.0.0.1の場合、サーバーはローカルでの使用専用に構成されています。FTPをパッシブ・モードで使用してサーバーにリモートから接続しようとすると、FTPクライアントに障害が発生します。これはサーバーがIPアドレス127.0.0.1(HOSTNAMEから導出)をクライアントに渡すためで、これによりクライアントはサーバーでなく自分自身に接続しようとしてしまいます。

28.4 HTTP(S)およびOracle XML DBプロトコル・サーバー

Oracle XML DBは、RFC2616仕様に定義されているHyperText Transfer Protocol(HTTP)のHTTP 1.1を実装します。

28.4.1 Oracle XML DBプロトコル・サーバー: HTTP(S)機能

Oracle XML DBプロトコル・サーバーのOracle XML DB HTTP(S)コンポーネントは、いくつかのオプション機能を除いて、IETF RFC2616仕様を実装します。

サポートされていないオプションのHTTP(S)機能は、次のとおりです。

  • gzipおよび圧縮転送エンコーディング

  • バイト範囲ヘッダー

  • TRACEメソッド(プロキシ・エラーのデバッグに使用します。)

  • キャッシュ制御ディレクティブ(コンテンツの期限日を指定する必要があります。一般には使用されません。)

  • TE、Trailer、VaryおよびWarningヘッダー

  • 弱いエンティティ・タグ

  • Web共通ログ・フォーマット

  • マルチホームWebサーバー

28.4.1.1 サポートされているHTTP(S)クライアント・メソッド

Oracle XML DBでは、Oracle XML DBリポジトリにアクセスするための複数のHTTP(S)クライアント・メソッドがサポートされています。

  • OPTIONS: 利用できる通信オプションについての情報を取得します。

  • GET: 文書/データ(ヘッダーとも)を取得します。

  • HEAD: 文書の本文なしで、ヘッダーのみを取得します。

  • PUT: データをリソースに格納します。

  • DELETE: リソースを削除します。

これらのHTTP(S)メソッドのセマンティクスはWebDAVに従っています。サーブレットとWebサービスは、POSTなどこの他のHTTP(S)メソッドをサポートする場合があります。

関連項目:

WebDAVに関係する、サポートされているHTTP(S)クライアント・メソッドは、Oracle XML DBによってサポートされるWebDAVクライアント・メソッドを参照してください。

28.4.1.2 Oracle XML DBのデフォルト・ポートでなく標準ポート上でのHTTP(S)使用

Oracle XML DBの構成ファイルxdbconfig.xmlを使用して、任意のポートでリスニングするようにHTTP(S)を構成できます。HTTP(S)はデフォルトで、非標準の保護されないポートでリスニングを行います。

HTTPまたはHTTPSを標準ポート(HTTPでは80、HTTPSでは443)で使用するには、データベース管理者が次のことを実行する必要があります。

  1. (UNIXのみ)このシェル・コマンドを使用して、実行可能ファイルtnslsnrの所有者とグループが必ずrootになるようにします。
    % chown root:root $ORACLE_HOME/bin/tnslsnr
    
  2. (UNIXのみ)リスナー・ファイルlistener.oraに次のエントリを追加します。ここで、hostnameは使用するホスト名、port_numberは、HTTPでは80、HTTPSでは443です。
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP) (HOST = hostname) (PORT = port_number))
      (PROTOCOL_STACK = (PRESENTATION = HTTP) (SESSION = RAW)))
    
  3. (UNIXのみ)シェル・コマンドidを使用して、Oracle Databaseのインストールに使用されたuser_idおよびgroup_idを特定します。oracle_installation_userは、データベースをインストールしたユーザーの名前です。
    % id oracle_installation_user
    uid=user_id(oracle_installation_user) gid=group_id(dba)
    
  4. (UNIXのみ)次のシェル・コマンドを使用して、リスナーを停止して再起動します。ここで、user_idおよびgroup_idは、ステップ3で取得したUNIXユーザー識別子およびグループ識別子です。
    % lsnrctl stop
    % tnslsnr LISTENER -user user_id -group group_id &
    

    2番目のコマンドをバックグラウンドで実行するにはアンパサンド(&)を使用します。リスナーを起動するためにlsnrctl startを使用しないでください。

  5. 次のようにSYS as SYSDBAでPL/SQLプロシージャDBMS_XDB_CONFIG.setHTTPPortを使用して、Oracle XML DB構成ファイルxdbconfig.xmlでHTTP(S)ポート番号をport_numberに設定します(ここでport_numberは、80 (HTTP)または443 (HTTPS)です)。
    SQL> exec DBMS_XDB_CONFIG.setHTTPPort(port_number);
    
  6. 次のSQL文を使用してデータベースが必ずリスナーとともに登録されるようにします。
    SQL> ALTER SYSTEM REGISTER;
    
  7. リスナーが正しく構成されていることを確認します。
    % lsnrctl status

関連項目:

28.4.1.3 HTTP(S)でのIPv6 IPアドレスの使用

11gリリース2 (11.2)以降のOracle Databaseでは、(Internet Protocol Version 4に加えて) Internet Protocol Version 6 (IPv6)がサポートされています。URL内のIPv6アドレスは、大カッコ([])で囲みます。

次はその例です。

http://[2001::0db8:ffff:ffff:ffff]:8080/

関連項目:

IPv6の詳細はOracle Database Net Services管理者ガイドを参照してください。

28.4.1.4 HTTPS: セキュアHTTPのサポート

正しく構成すれば、Oracle XML DBリポジトリにHTTPSを使用してセキュアにアクセスできます。

構成情報はセキュアHTTP (HTTPS)の構成を参照してください。

注意:

Oracle XML DBリポジトリへのWebDAVアクセスにDigest認証を使用することをお薦めします。Digest認証は、Oracle Database 12cリリース1 (12.1.0.1)以降でサポートされています。データベースがMicrosoft Windowsにインストールされていて、Digest認証を使用できない場合は、Basic認証の構成方法についてWebDAVとMicrosoft Windowsを参照してください。

28.4.1.5 URL有効期限の制御

オプションの構成パラメータexpireでは、HTTP Expiresヘッダーを指定します。このヘッダーは、HTTPクライアントへのディレクティブとして機能し、URLの期限切れ日時を指定します。

URLのターゲット文書は、キャッシュされている場合、この期限切れ日時が経過するまで、サーバーからでなくクライアント・キャッシュからフェッチできます。この日時を過ぎると、キャッシュ・コピーは期限切れとなり、ソース(サーバー)から新しいコピーを取得する必要があります。

expire構成要素で使用されるExpiresヘッダー用のThe Oracle XML DB構文は、 Apacheモジュールmod_expiresExpiresDefaultディレクティブ用に定義されている代替構文のサブセットです。

Oracle XML DBでは、ExpiresDefault構文に対して次の制限があります。

  • <base>としてaccessを使用できません。nowおよびmodificationのみ使用が許可されます。

  • <type>値は、期間の経過順に指定する必要があります。たとえば、1年は1か月よりも期間が長いため、yearmonthの後ろではなく、前に指定する必要があります。

  • 異なる<type>値は、それぞれ最大1回使用できます。たとえば、複数のyearエントリや複数のdayを指定することはできません。

関連項目:

mod_expiresディレクティブExpiresDefaultについては、「代替期間指定構文」を参照してください。

28.4.1.6 HTTPを使用したOracle XML DBリポジトリへの匿名アクセス

オプションの構成パラメータallow-repository-anonymous-accessは、ロック解除されたANONYMOUSユーザー・アカウントを使用した、Oracle XML DBリポジトリ・データへの匿名HTTPアクセスが許容されるかどうかを示します。デフォルト値はfalseで、これはリポジトリ・データへの非認証アクセスがブロックされることを意味します。

リポジトリへのHTTPアクセスを許可するには、このパラメータをtrueに設置して、ANONYMOUSユーザー・アカウントをロック解除する必要があります。

注意:

リポジトリへの匿名アクセスを許可することには、潜在的なセキュリティ・リスクがあります。

パラメータallow-repository-anonymous-accessは、サーブレットを使用したリポジトリへの匿名アクセスは制御しません。各サーブレットには、アクセスを制御する独自のsecurity-role-refパラメータ値があります。

注意:

ユーザー・アカウントANONYMOUSがマルチテナント・コンテナ・データベース(CDB)に対してロックされている場合、そのCDBにプラグインされているプラガブル・データベース(PDB)に対してANONYMOUSをロックまたはロック解除しても、ANONYMOUSによるPDBへのアクセスには、影響を及ぼしません

関連項目:

28.4.1.7 HTTP(S)によるJavaサーブレットの使用

Oracle XML DBでは、Javaサーブレットの使用がサポートされています。その動作をカスタマイズするパラメータとともに、Oracle XML DBの構成ファイルに一意の名前でそれぞれ登録する必要があります。それをコンパイルして、データベースにロードする必要があります。そのサーブレット名をパターンに関連付ける必要があります。

このパターンは、JavaサーブレットApplication Program Interface (API)バージョン2.2に記述されているとおり、*.jspなどの拡張子または/a/b/c/sys/*などのパス名になります。

HTTP(S)リクエストの処理中、そのリクエストに対するパス名は登録済のパターンと照合されます。一致する場合、プロトコル・サーバーは適切な初期化パラメータを使用して対応するサーブレットを起動します。Java仮想マシン(JVM)が起動され、これによりJavaメソッドが起動されて、サーブレットの初期化、レスポンス・オブジェクトとリクエスト・オブジェクトの作成、サーブレットへのこれらの受渡しが行われて、サーブレットが実行されます。

28.4.1.8 埋込みPL/SQLゲートウェイ

埋込みPL/SQLゲートウェイを使用して、WebアプリケーションをPL/SQLに完全に実装できます。これは、Oracle XML DB HTTPリスナーで実行されます。

埋込みPL/SQLゲートウェイを使用して、WebブラウザからURL形式のHTTP(S)リクエストが送信され、この中では、ストアド・プロシージャが識別され、それにパラメータ値が与えられます。ゲートウェイはURLを変換し、ストアド・プロシージャをパラメータ値とともに呼び出し、出力(通常はHTML)をWebブラウザ・クライアントに戻します。

埋込みPL/SQLゲートウェイを使用すると、PL/SQLベースのWebアプリケーションのインストール、構成、および管理が簡略化されます。埋込みゲートウェイは、Oracle HTTP ServerではなくOracle XML DBプロトコル・サーバーを使用します。構成は、Oracle XML DBの構成ファイルxdbconfig.xmlで定義されます。ただし、埋込みゲートウェイの構成方法としては、xdbconfig.xmlファイルを編集するのではなく、PL/SQLパッケージDBMS_EPGのプロシージャを使用する方法をお薦めします

注意:

現在、HTTP(S)を使用してPL/SQLストアド・プロシージャを起動できるOracle HTTP Serverのプラグインのmod_plsqlを使用している場合は、かわりに埋込みPL/SQLゲートウェイの使用に移行することをお薦めします。

関連項目:

28.4.1.9 クライアントからのマルチバイト・データの送信

クライアントがURLにマルチバイト・データを含めて送信する場合、RFC 2718では、クライアントが%HHフォーマット(HHはUTF-8エンコーディングでのそのバイト値の16進文字列)を使用してURLを送信する必要があることが規定されています。

次に、HTTP(S)またはWebDAVコンテキストでOracle XML DBに送信可能なURLの例を示します。

http://urltest/xyz%E3%81%82%E3%82%A2 
http://%E3%81%82%E3%82%A2 
http://%E3%81%82%E3%82%A2/abc%E3%81%86%E3%83%8F.xml

Oracle XML DBは、リクエストされたURL、IFヘッダー内のすべてのURL、DESTINATIONヘッダー内のすべてのURL、およびマルチバイト・データを含むREFERREDヘッダー内のすべてのURLを処理します。

default-url-charset構成パラメータを使用すると、ASCII以外の文字を含む、非準拠形式のURLを使用したクライアントからのリクエストも受け入れることができます。そうした文字を含むリクエストが失敗する場合は、この値をクライアント環境のネイティブなキャラクタ・セットに設定してみます。このようなURLフィールドで使用されるキャラクタ・セットは、IANAキャラクタ・セット名で指定する必要があります。

default-url-charsetは、表記方法に従っていないURLのエンコーディングを制御します。Content-Typeのキャラクタ・セットを送信しない表記方法に従っていないクライアントが使用されていないかぎり、このパラメータを設定する必要はありません。

28.4.1.10 URL内の非ASCII文字

HTTPサーバーに渡されるURLに含まれるASCII以外の文字をUTF-8に変換し、%HHフォーマットを使用してエスケープします。ここで、HHは、バイト値の16進数文字列です。

柔軟性を得るために、Oracle XML DBプロトコル・サーバーは、受信URLを解析するときに、そのURLが次のいずれかのキャラクタ・セットでエンコードされているかどうかを、ここに示す順序のとおりにテストします。

  • UTF-8

  • リクエストのContent-TypeフィールドのCharsetパラメータ(指定されている場合)

  • default-url-charset構成パラメータのキャラクタ・セット(指定されている場合)

  • データベースのキャラクタ・セット

28.4.1.11 HTTP(S)のキャラクタ・セット

HTTP(S)を使用して転送されるデータで使用されるキャラクタ・セットを制御できます。

28.4.1.11.1 HTTP(S)リクエストのキャラクタ・セット

HTTP(S) Request Bodyのキャラクタ・セットは、簡単ですが多少複雑なアルゴリズムを使用して決定されます。

  1. Content-Typeヘッダーを評価します。Content-Typeヘッダーにcharset値が指定されている場合は、指定されたcharsetを使用します。

  2. ドキュメントのMIMEタイプを次のように評価します。

    1. MIMEタイプが*/xmlの場合、キャラクタ・セットは次のように決定されます。

      1. BOMもエンコーディング宣言も存在しない場合は、UTF-8を使用します。

      2. BOMが存在する場合は、UTF-16を使用します。

      3. エンコーディング宣言が存在する場合は、指定されたエンコーディングを使用します。

    2. MIMEタイプがtextの場合は、ISO8859-1を使用します。

    3. MIMEタイプが、*/xmlでもtextでもない場合は、データベース・キャラクタ・セットを使用します。

HTTP(S)とSQL間またはHTTP(S)とFTP間では処理が異なります。テキスト・ドキュメントの場合、IETF.org RFC 2616: HTTP 1.1プロトコル仕様で指定されているとおり、デフォルトはISO8859-1です。

28.4.1.11.2 HTTP(S)レスポンスのキャラクタ・セット

Oracle XML DB HTTP Serverで生成されるレスポンスは、リクエストのAccept-Charsetフィールドに指定されているキャラクタ・セットです。

Accept-Charsetには、キャラクタ・セットのリストを指定できます。Oracle XML DBは、q値に基づいて、変換が不要なキャラクタ・セットのいずれかを選択します。選択されるキャラクタ・セットが、最大のq値を持つキャラクタ・セットではない場合があります。変換が不要なものが見つからない場合、Oracle XML DBでは、最大のq値に基づいて変換を行います。

28.5 WebDAVとOracle XML DB

Web Distributed Authoring and Versioning (WebDAV)は、インターネットを経由したOracle XML Repositoryへのファイル・システム・インタフェースをユーザーに提供するために、Oracle XML DBによって使用されるIETF標準のプロトコルです。WebDAVサーバー・フォルダにアクセスする最も一般的な方法は、Microsoft Windowsを使用して「Webフォルダ」を使用する方法です。

WebDAVはHTTP 1.1プロトコルの拡張で、HTTPサーバーをファイル・サーバーとして使用することを可能にします。WebDAVを使用すると、クライアントは、メソッド、ヘッダー、Request BodyフォーマットおよびResponse Bodyフォーマットの一貫したセットを介して、リモートWebコンテンツのオーサリングを実行できます。たとえば、DAV対応のエディタは、ファイル・システムとまったく同様にHTTP/WebDAVサーバーと対話できます。WebDAVは、リソースの格納および取出し、リソース・コレクションのコンテンツの作成およびリスト、同時アクセスに対するリソースの調整式ロックおよびリソース・プロパティの設定および取出しを行う操作を提供します。

28.5.1 Oracle XML DB WebDAVの機能

Oracle XML DBでは、WebDAVのフォルダリングおよびアクセス制御機能がサポートされます。フォルダリングはRFC2518で規定されています。

WebDAVは、HTTP(S)プロトコルへの拡張機能のセットで、リモートWebサーバーのファイルを共有、編集および管理できます。

関連項目:

RFC 2518: WebDAVプロトコル仕様(WebDAVプロトコル仕様(IETF RFC2518))

28.5.1.1 Oracle XML DBによってサポートされないWebDAV機能

Oracle XML DBでは、いくつかの機能を除いてRFC2518仕様がサポートされます。メソッドCOPYMOVEおよびDELETEについては、RFC5842仕様で説明するように、リソースのバインディングもサポートされます。

Oracle XML DBでサポートされないRFC2518からのWebDAV機能は、次のとおりです。

  • 書込みがロックされたnullリソース(ロックnullリソース)の名前をフォルダ名として使用すると、ファイル・システムで長さがゼロのリソースとして表現されるため、このようにすることはサポートされていません。これはオプション機能です。

  • メソッドLOCKについては、深さに無限を指定して、リソースとそのすべての子孫を同時にロックすることはできません。この機能はオプションではありませんが、Oracle XML DBではサポートされていません。

さらに、メソッドCOPYMOVEおよびDELETEについては、RFC5842のセクション2、「Binding Extensions to Web Distributed Authoring and Versioning (WebDAV)」で説明されているように、Oracle XML DBでリソースのバインディングがサポートされます。バインディングは、指定されたフォルダのリソースに対するURIのマッピングです。

関連項目:

28.5.1.2 Oracle XML DBによってサポートされるWebDAVクライアント・メソッド

Oracle XML DBでは、Oracle XML DBリポジトリにアクセスするための複数のHTTP(S)/WebDAVクライアント・メソッドがサポートされています。

  • PROPFIND(WebDAV固有): リソースのプロパティを取得します。

  • PROPPATCH(WebDAV固有): リソースのプロパティを設定または削除します。

  • LOCK(WebDAV固有): リソースをロックします(ロックの作成またはリフレッシュ)。

  • UNLOCK(WebDAV固有): リソースをロック解除します(ロックの削除)。

  • COPY(WebDAV固有): リソースをコピーします。

  • MOVE(WebDAV固有): リソースを移動します。

  • MKCOL(WebDAV固有): フォルダ・リソース(コレクション)を作成します。

関連項目:

サポートされているその他のHTTP(S)クライアント・メソッドは、サポートされているHTTP(S)クライアント・メソッドを参照してください。

28.5.2 WebDAVとMicrosoft Windows

Microsoft Windows (XP Service Pack 2 SP2以降のWindowsシステム)の場合、Oracle XML DBリポジトリへのWebDAVアクセスにダイジェスト認証を使用します(可能な場合)。Digest認証を使用できない場合は、Basic認証を使用するために、Windows XPレジストリを適切に変更する必要があります。

Oracle Databaseでは、Oracle Database 12cリリース1 (12.1.0.1)以降、Digest認証がサポートされています。

Basic認証を使用する必要がある場合、Windowsレジストリ・キーのBasicAuthLevel値を1または2に設定します。値1はSecure Sockets Layer (SSL)を使用することを意味し、この設定をお薦めします。値2はSSLを使用しないことを意味します。

,

28.5.3 Oracle XML DBリポジトリで使用するためのMicrosoft WindowsでのWebフォルダの作成

Windows 2000でWebフォルダを作成して、Oracle XML DBリポジトリで使用します。

Windows 2000でWebフォルダを作成します。

  1. 「スタート」「マイ ネットワーク」を選択します。
  2. 「ネットワーク プレースの追加」をダブルクリックします。
  3. 「次へ」をクリックします。
  4. フォルダの場所を入力します。次に例を示します。
    http://Oracle_server_name:HTTP_port_number
    

    図28-2を参照してください。

  5. 「次へ」をクリックします。
  6. このWebフォルダを識別する任意の名前を入力します。
  7. 「終了」をクリックします。

これで、Windowsフォルダへのアクセスと同様に、Oracle XML DBリポジトリにアクセスできます。

図28-2 Microsoft WindowsでのWebフォルダの作成

図28-2の説明が続きます
「図28-2 Microsoft WindowsでのWebフォルダの作成」の説明
28.5.3.1 ファイルをOracle XML DBリポジトリにコピーする際のWindows ExplorerでのWebDAVの使用

Windows Explorerを使用して、ローカルのハード・ドライブからOracle Databaseにフォルダを挿入できます。

図28-3では、これを説明しています。

Windows Explorerは、WebDAVプロトコルをサポートしています。WebDAVはHTTP標準の拡張で、HTTPサーバーがファイル・サーバーとして機能できる動詞が追加されています。

Windows Explorerのコピー操作やFTPの入力コマンドを使用して、多数の文書をOracle XML DBリポジトリに転送する場合、それぞれのputまたはpostコマンドは、個別の基本操作として扱われます。これにより、ファイル転送のうちのいずれかが失敗してもクライアントに混乱が生じません。また、プロトコルを介して文書に加えられた変更は、リクエストが処理されるとすぐに、他のユーザーも参照できます。

図28-3 Oracle XML DBリポジトリへのファイルのコピー

図28-3の説明が続きます
「図28-3 Oracle XML DBリポジトリへのファイルのコピー」の説明


脚注の説明

脚注1:

BOMとは、後続のバイト・ストリームの順序を示すUnicode標準のシグネチャです。