この章では、FTP、HTTP(S)およびWebDAVプロトコルを使用してOracle XML DBリポジトリにアクセスする方法を説明します。
この章の内容は次のとおりです。
第2章「Oracle XML DBを使用する前に」および第21章「Accessing Oracle XML DBリポジトリのデータへのアクセス」で説明したとおり、Oracle XML DBリポジトリは、XML用に設計された階層データ・リポジトリをデータベース内に提供します。Oracle XML DBリポジトリは、XMLType
のデータベース・オブジェクトにパス名(またはURL)をマップし、これらのオブジェクトの管理機能を提供します。
Oracle XML DBは、Oracle XML DBプロトコル・サーバーも提供します。Oracle XML DBは、その階層リポジトリまたはファイル・システムにアクセスするための標準インターネット・プロトコルであるFTP、WebDAVおよびHTTP(S)をサポートします。HTTPSはOracle XML DBリポジトリへのセキュアなアクセスを提供します。
多くのユーザーは、これらのプロトコルによって、追加のソフトウェアをインストールせずに、Oracle XML DBに直接アクセスできます。プロトコルで使用するユーザー名およびパスワードは、SQL*Plusで使用するものと同じです。エンタープライズ・ユーザーもサポートされています。データベース管理者は、これらのプロトコルと、DBMS_XDB
などのリソースAPIを使用して、リポジトリの仮想フォルダ/sys/asm
にあるAutomatic Storage Management(ASM)のファイルとフォルダにアクセスすることができます。
注意:
|
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リポジトリのファイルおよび他のデータにアクセスする方法を示します。この図では、リポジトリの関連するコンポーネントのみを示します。
Oracle XML DBプロトコル・サーバーは、/xdbconfig.xml
に格納された構成パラメータを使用して、起動状態の初期化およびセッション・レベルの構成を管理します。次の項では、Oracle XML DB構成ファイルで構成可能な、プロトコル固有の構成パラメータについて説明します。セッション・プール・サイズおよびタイムアウト・パラメータは動的に変更できません。変更内容を有効にするためには、データベースを再起動する必要があります。
図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
注意: Real Application Cluster(RAC)のポートは、各ノード個別に構成するか、1つのノードについて構成してから他のノード上でデータベース・インスタンスを再起動する必要があります。「xdbconfig.xmlを使用したOracle XML DBの構成」を参照してください。 |
関連項目:
|
これらのパラメータの使用例については、構成ファイル/xdbconfig.xml
を参照してください。
表28-1 共通プロトコルの構成パラメータ
パラメータ | 説明 |
---|---|
|
ファイル拡張子のマッピングをMIMEタイプに指定します。リソースがOracle XML DBリポジトリに格納され、そのMIMEタイプが指定されていない場合、このマッピング・リストを使用してそのMIMEタイプが設定されます。 |
|
ファイル拡張子のマッピングを言語に指定します。リソースがOracle XML DBリポジトリに格納され、その言語が指定されていない場合、このマッピング・リストを使用してその言語が設定されます。 |
|
ファイル拡張子のマッピングをエンコーディングに指定します。リソースがOracle XML DBリポジトリに格納され、そのエンコーディングが指定されていない場合、このマッピング・リストを使用してそのエンコーディングが設定されます。 |
|
Oracle XML DBによってXMLコンテンツとして処理されるファイル名の拡張子のリストを指定します。 |
|
プロトコル・サーバーのセッション・プールに保持されるセッションの最大数を指定します。 |
|
接続がこの時間(100分の1秒単位)の間アイドル状態であった場合、接続を行っている共有サーバーは、他の接続のために解放されます。 |
|
プロトコル・サーバーがセッション(およびそれに対応する接続)を終了するまでの、接続のアイドル状態の経過時間(100分の1秒単位)を指定します。このパラメータは、特定のプロトコルのセッション・タイムアウトが構成に存在しない場合にのみ使用されます。 |
|
指定された名前空間のデフォルトのスキーマの場所を指定します。このパラメータは、インスタンスのXML文書に |
|
リソースのWebDAVロックが無効になるまでの時間を指定します。これは、リソースをロックするクライアントが指定したタイムアウトでオーバーライドできます。 |
パラメータ | 説明 |
---|---|
|
FTPの |
|
FTPサーバーがリスニングするポートを指定します。デフォルトではこれは |
|
FTPサーバーを実行するプロトコルを指定します。デフォルトは |
|
FTPクライアントがサーバーに接続したときに表示される、ユーザー定義のウェルカム・メッセージ。このパラメータが空または欠落している場合は、「Unauthorized use of this FTP server is prohibited and may be subject to civil and criminal prosecution.」(このFTPサーバーの不正使用は禁じられており、民事および刑事訴追の対象となる場合があります。)というデフォルト・ウェルカム・メッセージが表示されます。 |
|
プロトコル・サーバーがFTP接続を終了するまでの、接続のアイドル状態の経過時間(100分の1秒単位)を指定します。 |
表28-3 HTTP(S)またはWebDAV固有の構成パラメータ(サーブレット・パラメータを除く)
パラメータ | 説明 |
---|---|
|
HTTP(S)またはWebDAVサーバーがプロトコル このパラメータは、空であるかどうかに関係なく、存在する必要があります。存在しない場合、XML Schema |
|
HTTP(S)またはWebDAVサーバーがプロトコル このパラメータはオプションですが、存在する場合は、 |
|
ポート このパラメータは存在する必要があります。存在しない場合、XML Schema |
|
ポート このパラメータはオプションですが、存在する場合は、 |
|
プロトコル・サーバーがHTTP(S)セッション(およびそれに対応する接続)を終了するまでの、接続のアイドル状態の経過時間(100分の1秒単位)を指定します。 |
|
HTTP(S)ヘッダーの最大サイズ(バイト単位)を指定します。 |
|
HTTP(S) Request Bodyの最大サイズ(バイト単位)を指定します。 |
|
「ウェルカム・ファイル」とみなされるファイル名のリストを指定します。サーバーは、コンテナに対するHTTP(S) |
|
受信URLがUTF-8またはリクエストのContent-TypeフィールドのCharsetパラメータに指定されたキャラクタ・セットでエンコードされていない場合に、HTTP(S)プロトコル・サーバーは、受信URLがこのキャラクタ・セットでエンコードされていると想定します。 |
ロック解除された |
Oracle XML DBリポジトリによるセキュアHTTP接続(HTTPS)の使用を有効にするには、DBAがデータベースを適切に構成する必要があります。パラメータhttp2-port
およびhttp2-protocol
を構成し、HTTP ListenerによるSSL使用を有効にし、TCPS Dispatcherの起動を有効にします。それが完了したら、DBAがデータベースおよびリスナーを停止して再起動する必要があります。
DBAは次の手順を実行して、SSLに対してHTTP Listenerを構成する必要があります。
サーバー用のウォレットを作成し、証明書をインポートします。Oracle Wallet Managerを使用して次の操作を行います。
サーバー用のウォレットを作成します。
サーバーの識別名(DN)を持つ有効な証明書がない場合は、証明書リクエストを作成して認証局に送信します。有効な証明書を認証局から取得します。
サーバーの識別名(DN)を持つ有効な証明書をサーバーにインポートします。
新しいウォレットを不明瞭化した形式で保存し、パスワードなしで開けるようにします。
関連項目: ウォレットの作成方法の詳細は、『Oracle Database Advanced Security管理者ガイド』を参照してください。 |
ウォレットの場所をサーバーに対して指定します。Oracle Net Managerで行います。構成がディスクに保存されたことを確認します。この手順により、ファイルsqlnet.ora
およびlistener.ora
が更新されます。
サーバー側でのクライアント認証を無効にします。大部分のWebクライアントには証明書がないからです。Oracle Net Managerを使用します。この手順により、ファイルsqlnet.ora
が更新されます。
TCP/IPをSSLで使用するリスニング・エンド・ポイントを作成します。Oracle Net Managerを使用します。この手順により、ファイルlistener.ora
が更新されます。
DBAは、データベースのpfile
を編集して、データベース起動時のTCPS Dispatcherの起動を有効にする必要があります。ファイルに次の行を追加します。ここで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
プロトコル仕様のRFC 959(FTP)、RFC 2616(HTTP)およびRFC 2518(WebDAV)では、暗黙的にサーバー側の抽象的な階層ファイル・システムを想定しています。これはOracle XML DBリポジトリにマッピングされます。リポジトリにより実現されるものは次のとおりです。
名前解決。
アクセス制御リスト(ACL)に基づいたセキュリティ。ACLは、指定されたリソースへのアクセス権を持つプリンシパルを決定するアクセス制御エントリのリストです。第27章「リポジトリ・リソースのセキュリティ」も参照してください。
任意のコンテンツを格納し、取り出す機能。リポジトリは、FTPを介したバイナリ・データ入力と、XML Schemaに基づく文書の両方を格納できます。
Oracle XML DBプロトコル・サーバーは、挿入中のXML文書がOracle XML DBリポジトリに登録されたXML Schemaに基づいているかどうかを常に確認することによって、プロトコルを拡張します。
受信するXML文書がXML Schemaを指定する場合、使用するOracle XML DB記憶域はそのXML Schemaによって決定されます。この機能は、SQL文を使用するのではなく、FTPやWebDAVなどの単純なプロトコルを使用して、XML文書をオブジェクト・リレーショナル形式でデータベースに格納する必要がある場合に有効です。
受信するXML文書がXML Schemaに基づいていない場合は、バイナリ・ドキュメントとして格納されます。
次の項では、Oracle XML DBでサポートされているFTP機能について説明します。
ファイル転送プロトコル(FTP)は、インターネット上で最も古く、最も一般的なプロトコルの1つです。FTPはRFC959で規定され、異機種間のファイル・システムへの均一な方法でのアクセスを提供します。FTPは、クライアントとサーバー間で通信するための定義済のコマンド(メソッド)を提供することによって動作します。1回の接続でコマンド・メッセージの転送とステータスの取得が実行されます。ただし、データ転送用に、クライアントとサーバー間で新しい接続がオープンされます。HTTP(S)を使用すると、1回の接続でコマンドとデータが転送されます。
FTPは、オペレーティング・システムの専用クライアント、ファイル・システムのエクスプローラ・クライアントおよびブラウザで実装されています。FTPは、一般的にセッション指向であり、明示的なログインによってユーザー・セッションが作成され、ファイルまたはディレクトリがダウンロードおよび参照された後、接続がクローズされます。
注意: セキュリティ上の理由で、FTPはデフォルトで無効になっています。IETF FTPプロトコルの仕様ではパスワードをクリアテキストで送信することが要求されているためです。無効化は、FTPサーバーのポートをゼロ(0)にすることで実現しています。FTPを有効にするには、ftp-port パラメータを、使用するFTPポート(2100など)に設定します。 |
関連項目:
|
Oracle XML DBは、RFC 959で定義されたFTPを実装しますが、次のオプション機能はサポートされません。
レコード指向のファイル、たとえば、STRU
メソッドは、FILE
構造のみサポートされています。これは、ファイルの転送に最も広範囲に使用されている構造です。これは、仕様で指定されているデフォルトでもあります。構造マウントはサポートされません。
追加。
割当て。ファイル転送の前に領域を事前に割り当てます。
アカウント。安全性の低いTelnetプロトコルを使用します。
強制終了。
リポジトリにアクセスするために、Oracle XML DBは次のFTPクライアント・メソッドをサポートしています。
cdup
: 作業ディレクトリを親ディレクトリに変更します。
cwd
: 作業フォルダを変更します。
dele
: ファイルを削除します(ディレクトリは対象外)。
list
、nlst
: 作業ディレクトリのファイルをリストします。
mkd
: ディレクトリを作成します。
noop
: 何もしません(接続のタイムアウト・カウンタはリセットされます)。
pasv
、port
: TCPデータ接続を確立します。
pwd
: 作業フォルダを取得します。
quit
: 接続を閉じてFTPセッションを終了します。
retr
: 確立された接続を使用してデータを取得します。
rmd
: ディレクトリを削除します。
rnfr
、rnto
: ファイル名を変更します(2ステップ・プロセス: ファイルから、ファイルへ)。
stor
: 確立された接続を使用してデータを格納します。
syst
: システムのバージョンを取得します。
type
: データ型を変更します。ascii
またはimage
バイナリ型のみが可能です。
user
、pass
: ユーザーのログインです。
Oracle Databaseは、Oracle XML DBに直接情報を提供するFTP quote
メソッドを複数サポートしています。
rm_r
: ファイルまたはフォルダ<resource_name>
を削除します。フォルダの場合、<resource_name>
に含まれるすべてのファイルとフォルダを再帰的に削除します。
quote rm_r
<resource_name>
rm_f
: リソースを強制的に削除します。
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_locale
がNULL
または設定されていない場合、こデータベース・キャラクタ・セットが使用されます。
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キャラクタ・セットが使用されます。
自動ストレージ管理(ASM)を使用すると、データベース・ファイルはディスク・グループに整理され、管理が簡潔になるとともに、データベースのミラー化やI/Oバランシングなどの利用が可能になります。データベース管理者は、Oracle XML DBリポジトリの仮想フォルダ/sys/asm
でプロトコルやリソースAPIを使用できます。/sys/asm
にあるファイルはすべてバイナリです。
一般的な用途は、ASMのファイルやフォルダに対するリスト表示、コピー、移動、作成、および削除です。例28-1はASMの仮想フォルダのナビゲートとサブフォルダ内のファイルのリスト表示の例です。
例28-1 ASMフォルダのナビゲート
ASM仮想フォルダ/sys/asm
の構造は、第21章「Oracle XML DBリポジトリのデータへのアクセス」で説明しています。この例では、ディスク・グループがDATA
およびRECOVERY
、データベース名がMFG
、エイリアス用に作成されたディレクトリがdbs
およびtmp
です。この例はサブフォルダにナビゲートし、ファイルをリストし、ファイルの1つをローカルのファイル・システムにコピーしています。
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
この例では、データベースmyhost
に接続およびログインし(最初の3行)、FTPメソッドcd
およびls
を使用して、それぞれフォルダをナビゲートおよびリスト表示しています。フォルダ/sys/asm/DATA/dbs
内でFTPコマンドget
を使用して、ファイルt_db1.f
およびt_ax1.f
がローカルのファイル・システムの現行のフォルダにコピーします。続いてFTPコマンドput
を使用して、ファイルmy_db2.f
をローカルのファイル・システムからフォルダ/sys/asm/DATA/dbs
にコピーしています。
データベース管理者はASMファイルをデータベース・サーバー間でコピーしたり、データベースとローカルのファイル・システムの間でコピーできます。例28-2は2つのデータベース間でのコピーを示しています。この場合、proxy
FTPクライアント・メソッドを使用できます。proxy
メソッドを使用すると、2つの異なるリモートFTPサーバーに直接接続できます。
例28-2では、ASMファイルをデータベース間でコピーしています。接尾辞1
が付いた語はデータベースserver1
に、接尾辞2
が付いた語はデータベースserver2
に対応しています。一部のFTPクライアントでは、入力したパスワードが画面に表示されることがあります。パスワードが他人の目に触れないよう、十分注意してください。
例28-2 FTP proxyメソッドによる、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
この例では、次のようになります。
1行目でOracle XML DB FTPサーバーserver1
へのFTP制御接続を開きます。
2〜4行目で、DBAがUSERNAME1
としてserver1
にログインします。
5行目でserver1
の/sys/asm/DATAFILE/MFG/DATAFILE
にナビゲートします。
6行目で第2のデータベース・サーバーserver2
へのFTP制御接続を開きます。この時点で、FTPコマンドproxy ?
を発行して、第2の接続で利用できるFTPコマンドを参照することができます。(これは表示されていません。)
7〜9行目で、DBAがUSERNAME2
としてserver2
にログインします。
10行目でserver2
の/sys/asm/DATAFILE/MFG/DATAFILE
にナビゲートします。
11行目で、ASMファイルdbs2.f
を、server2
から、server1
上のASMファイルtmp1.f
にコピーします。
12行目で、ASMファイルdbs1.f
を、server1
から、server2
上のASMファイルtmp2.f
にコピーします。
Oracle XML DBの構成ファイル/xdbconfig.xml
を使用して、任意のポートでリスニングするようにFTPを構成できます。FTPはデフォルトで、非標準の保護されないポートでリスニングを行います。標準ポート21でFTPを使用するには、DBAが次のことを実行する必要があります。
(UNIXのみ)このシェル・コマンドを使用して、実行可能ファイルtnslsnr
の所有者とグループが必ずroot
になるようにします。
% chown root:root $ORACLE_HOME/bin/tnslsnr
(UNIXのみ)リスナー・ファイルLISTENER.ora
に次のエントリを追加します。ここで、hostname
は使用するホスト名です。
(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = hostname) (PORT = 21)) (PROTOCOL_STACK = (PRESENTATION = FTP) (SESSION = RAW)))
(UNIXのみ)次のシェル・コマンドを使用して、リスナーを停止して再起動します。ここで、user_id
およびgroup_id
は、コマンド実行者の、それぞれUNIXユーザー識別子およびグループ識別子です。
% lsnrctl stop % tnslsnr LISTENER -user user_id -group group_id &
2番目のコマンドをバックグラウンドで実行するにはアンパサンド(&
)を使用します。リスナーを起動するためにlsnrctl start
を使用しないでください。
次のようにSYS as SYSDBA
でPL/SQLプロシージャDBMS_XDB.setftpport
を使用して、Oracle XML DB構成ファイル/xdbconfig.xml
でFTPポート番号を21に設定します。
SQL> exec DBMS_XDB.setFTPPort(21);
次のSQL文を使用してデータベースが必ずリスナーとともに登録されるようにします。
SQL> ALTER SYSTEM REGISTER;
このシェル・コマンドを使用して、リスナーが適切に構成されていることを確認します。
% lsnrctl status
関連項目:
|
Oracle XML DBプロトコル・サーバーは、FTPプロトコルのセッション管理も提供します。FTPは、新しいコマンドの入力をショート・ウェイトした後、プロトコル・レイヤーに戻ります。共有サーバーは他の接続のために解放されます。このショート・ウェイト時間は、Oracle XML DB構成ファイルのcall-timeOut
パラメータを変更することによって構成できます。通信量が多いサイトでは、call-timeout
を短くし、より多くの接続を確立できるようにする必要があります。接続で新しいデータが受信されると、FTPサーバーは最新のデータを使用して再起動されます。そのため、FTPが長時間実行する性質を持っていても、プロトコル・サーバーに確立可能な接続の数には影響しません。
頻繁にサーバーから切断され、次の操作を実行する前に、再接続してディレクトリ全体を検索する必要がある場合は、FTPセッションに対するデフォルトのタイムアウト値を変更する必要がある可能性があります。この時間の経過後もセッションがアイドル状態である場合、そのセッションは切断されます。タイムアウトの値(デフォルト= 6000センチセカンド)を大きくするには、次のように構成ドキュメントを変更した後、データベースを再起動します。
Listener.ora
でHOSTNAME
がlocalhost
または127.0.0.1
と構成されているサーバーにリモートから接続する場合、FTPをパッシブ・モードで使用しないでください。サーバー・ファイルListener.ora
で指定されているHOSTNAME
がlocalhost
または127.0.0.1
の場合、サーバーはローカルでの使用専用に構成されています。FTPをパッシブ・モードで使用してサーバーにリモートから接続しようとすると、FTPクライアントに障害が発生します。これはサーバーがIPアドレス127.0.0.1
(HOSTNAME
から導出)をクライアントに渡すためで、これによりクライアントはサーバーでなく自分自身に接続しようとしてしまいます。
Oracle XML DBは、RFC2616仕様に定義されているHyperText Transfer Protocol(HTTP)のHTTP 1.1を実装します。
Oracle XML DBプロトコル・サーバーのOracle XML DB HTTPコンポーネントは、次のオプション機能を除いて、RFC2616仕様を実装します。
gzip
および圧縮転送エンコーディング
バイト範囲ヘッダー
TRACE
メソッド(プロキシ・エラーのデバッグに使用します。)
キャッシュ制御ディレクティブ(コンテンツの期限日を指定する必要があります。一般には使用されません。)
TE、Trailer、VaryおよびWarningヘッダー
弱いエンティティ・タグ
Web共通ログ・フォーマット
マルチホームWebサーバー
Digest認証(RFC 2617)はサポートされません。Oracle XML DBはBasic認証をサポートします。この認証では、クライアントが、ユーザー名およびパスワードをAuthorizationヘッダーにクリアテキストで送信します。
リポジトリにアクセスするために、Oracle XML DBは次のHTTP(S)クライアント・メソッドをサポートしています。
OPTIONS
: 利用できる通信オプションについての情報を取得します。
GET
: 文書/データ(ヘッダーとも)を取得します。
HEAD
: 文書の本文なしで、ヘッダーのみを取得します。
PUT
: データをリソースに格納します。
DELETE
: リソースを削除します。
これらのHTTP(S)メソッドのセマンティクスはWebDAVに従っています。サーブレットとWebサービスは、POST
などこの他のHTTP(S)メソッドをサポートする場合があります。
Oracle XML DBの構成ファイル/xdbconfig.xml
を使用して、任意のポートでリスニングするようにHTTP(S)を構成できます。HTTP(S)はデフォルトで、非標準の保護されないポートでリスニングを行います。HTTPまたはHTTPSを標準ポート(HTTPでは80、HTTPSでは443)で使用するには、DBAが次のことを実行する必要があります。
(UNIXのみ)このシェル・コマンドを使用して、実行可能ファイルtnslsnr
の所有者とグループが必ずroot
になるようにします。
% chown root:root $ORACLE_HOME/bin/tnslsnr
(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)))
(UNIXのみ)次のシェル・コマンドを使用して、リスナーを停止して再起動します。ここで、user_id
およびgroup_id
は、コマンド実行者の、それぞれUNIXユーザー識別子およびグループ識別子です。
% lsnrctl stop % tnslsnr LISTENER -user user_id -group group_id &
2番目のコマンドをバックグラウンドで実行するにはアンパサンド(&
)を使用します。リスナーを起動するためにlsnrctl start
を使用しないでください。
次のようにSYS as SYSDBA
でPL/SQLプロシージャDBMS_XDB.sethtpport
を使用して、Oracle XML DB構成ファイル/xdbconfig.xml
でHTTP(S)ポート番号をport_number
に設定します。ここでport_number
は、80
(HTTP)または443
(HTTPS)です。
SQL> exec DBMS_XDB.setHTTPPort(port_number);
次のSQL文を使用してデータベースが必ずリスナーとともに登録されるようにします。
SQL> ALTER SYSTEM REGISTER;
リスナーが正しく構成されていることを確認します。
% lsnrctl status
関連項目:
|
正しく構成すれば、Oracle XML DBリポジトリにHTTPSを使用してセキュアにアクセスできます。構成情報については「セキュアHTTP(HTTPS)の構成」を参照してください。
注意: Oracle DatabaseをMicrosoft Windows XP Service Pack 2(SP2)にインストールしている場合、Oracle XML DBリポジトリへのWebDAVアクセスには、HTTPSを使用するか、Windows XPのレジストリを適切に変更する必要があります。レジストリ変更に関する情報は、http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/sp2netwk.mspx#XSLTsection129121120120 を参照してください。 |
構成パラメータallow-repository-anonymous-access
は、ロック解除されたANONYMOUS
ユーザー・アカウントを使用した、Oracle XML DBリポジトリ・データへの匿名HTTPアクセスが許容されるかどうかを示します。デフォルト値はfalse
で、これはリポジトリ・データへの非認証アクセスがブロックされることを意味します。リポジトリへのHTTPアクセスを許可するには、このパラメータをtrue
に設置して、ANONYMOUS
ユーザー・アカウントをロック解除する必要があります。
注意: リポジトリへの匿名アクセスを許可することには、潜在的なセキュリティ・リスクがあります。 |
パラメータallow-repository-anonymous-access
は、サーブレットを使用したリポジトリへの匿名アクセスは制御しません。各サーブレットには、アクセスを制御する独自のsecurity-role-ref
パラメータ値があります。
関連項目:
|
Oracle XML DBは、Javaサーブレットをサポートします。Javaサーブレットを使用するには、その動作をカスタマイズするパラメータとともに、Oracle XML DBの構成ファイルに一意の名前で登録する必要があります。それをコンパイルして、データベースにロードする必要があります。最後に、そのサーブレット名をパターンに関連付ける必要があります。このパターンは、JavaサーブレットApplication Program Interface(API)バージョン2.2に記述されているとおり、*.jsp
などの拡張子または/a/b/c
や/sys/*
などのパス名になります。
HTTP(S)リクエストの処理中、そのリクエストに対するパス名は登録済のパターンと一致します。一致する場合、プロトコル・サーバーは適切な初期化パラメータを使用して対応するサーブレットを起動します。Javaサーブレットの場合、既存のJava仮想マシン(JVM)インフラストラクチャが使用されます。これによって、必要に応じてJVMが起動され、Javaメソッドが実行されて、サーブレットの初期化、レスポンスの作成、オブジェクトのリクエストが実行され、それらがサーブレットに渡されて実行されます。
PL/SQLゲートウェイを使用して、WebアプリケーションをPL/SQLに完全に実装できます。PL/SQLゲートウェイには2種類の実装があります。
mod_plsql: HTTP(S)を使用してPL/SQLストアド・プロシージャを起動できる、Oracle HTTP Serverのプラグインです。Oracle HTTP Serverは、Oracle Application ServerおよびOracle Databaseのコンポーネントです。Oracle XML DBプロトコル・サーバーのHTTPコンポーネントとは混同しないでください。
埋込みPL/SQLゲートウェイ: Oracle XML DB HTTPリスナーで実行されるゲートウェイの実装です。
PL/SQLゲートウェイ(どちらか一方の実装)を使用して、ストアド・プロシージャを識別し、それにパラメータ値を与えるURL形式で、Webブラウザから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
のプロシージャを使用する方法をお薦めします。
関連項目:
|
クライアントが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
のキャラクタ・セットを送信しない表記方法に従っていないクライアントが使用されていないかぎり、このパラメータを設定する必要はありません。
関連項目:
|
HTTPサーバーに渡されるURLにASCII以外の文字が含まれている場合は、UTF-8
に変換し、%
HH
フォーマットでエスケープする必要があります。HH
は、バイト値の16進文字列です。柔軟性を得るために、Oracle XML DBプロトコル・サーバーは、受信URLを解析するときに、そのURLが次のいずれかのキャラクタ・セットでエンコードされているかどうかを、記載されている順序どおりにテストします。
UTF-8
リクエストのContent-Type
フィールドのCharsetパラメータ(指定されている場合)
default-url-charset
構成パラメータのキャラクタ・セット(指定されている場合)
データベースのキャラクタ・セット
次の項では、HTTP(S)を使用して転送されるデータのキャラクタ・セットの制御方法について説明します。
HTTP(S) Request Bodyのキャラクタ・セットは、次のアルゴリズムを使用して決定されます。
Content-Typeヘッダーを評価します。Content-Typeヘッダーにcharset値が指定されている場合は、指定されたcharsetを使用します。
ドキュメントのMIMEタイプを次のように評価します。
MIMEタイプが*/xml
の場合、キャラクタ・セットは次のように決定されます。
- BOMが存在する場合は、UTF-16
を使用します。
- エンコーディング宣言が存在する場合は、指定されたエンコーディングを使用します。
- BOMもエンコーディング宣言も存在しない場合は、UTF-8
を使用します。
MIMEタイプがテキストの場合は、ISO8859-1
を使用します。
MIMEタイプが、*/xml
でもtext
でもない場合は、データベース・キャラクタ・セットを使用します。
HTTP(S)とSQL間またはHTTP(S)とFTP間では処理が異なります。テキスト・ドキュメントの場合、IETF.org RFC 2616: HTTP 1.1プロトコル仕様で指定されているとおり、デフォルトはISO8859-1です。
Web Distributed Authoring and Versioning(WebDAV)は、ユーザーに、インターネット上でOracle XML Repositoryへのファイル・システム・インタフェースを提供するために使用されるIETF標準のプロトコルです。WebDAVサーバー・フォルダにアクセスする最も一般的な方法は、Microsoft Windows 2000またはWindows NTの「Webフォルダ」を使用する方法です。
WebDAVはHTTP 1.1プロトコルの拡張で、HTTPサーバーをファイル・サーバーとして使用することを可能にします。WebDAVを使用すると、クライアントは、メソッド、ヘッダー、Request BodyフォーマットおよびResponse Bodyフォーマットの一貫したセットを介して、リモートWebコンテンツのオーサリングを実行できます。たとえば、DAV対応のエディタは、ファイル・システムとまったく同様にHTTP/WebDAVサーバーと対話できます。WebDAVは、リソースの格納および取出し、リソース・コレクションのコンテンツの作成およびリスト、同時アクセスに対するリソースの調整式ロックおよびリソース・プロパティの設定および取出しを行う操作を提供します。
Oracle XML DBは、次のWebDAV機能をサポートします。
フォルダリング(RFC2518で指定済)
アクセス制御
WebDAVは、HTTP(S)プロトコルへの拡張機能のセットで、リモートWebサーバーのファイルを編集または管理できます。たとえば、WebDAVを使用して、次の操作を実行できます。
インターネット上でのドキュメントの共有
インターネット上でのコンテンツの編集
Oracle XML DBは、RFC2518の内容をサポートしますが、次の例外があります。
ロックNULL
リソースは、長さが0(ゼロ)のリソースをファイル・システムに作成します。ロックNULLリソースは、フォルダには変換できません。
COPY
、MOVE
およびDELETE
の各メソッドは、インターネット・ドラフト「Binding Extensions to WebDAV」の第2項に準拠しています。
無限の深さのロックはサポートされません。
Basic認証のみサポートされます。
リポジトリにアクセスするために、Oracle XML DBは次のHTTP(S)/WebDAVクライアント・メソッドをサポートしています。
PROPFIND
(WebDAV固有): リソースのプロパティを取得します。
PROPPATCH
(WebDAV固有): リソースのプロパティを設定または削除します。
LOCK
(WebDAV固有): リソースをロックします(ロックの作成またはリフレッシュ)。
UNLOCK
(WebDAV固有): リソースをロック解除します(ロックの削除)。
COPY
(WebDAV固有): リソースをコピーします。
MOVE
(WebDAV固有): リソースを移動します。
MKCOL
(WebDAV固有): フォルダ・リソース(コレクション)を作成します。
Oracle DatabaseをMicrosoft Windows XP Service Pack 2(SP2)にインストールしている場合、Oracle XML DBリポジトリへのWebDAVアクセスには、セキュアな接続(HTTPS)を使用するか、Windows XPのレジストリを適切に変更する必要があります。
関連項目:
|
Windows 2000でWebフォルダを作成するには、次の手順を実行します。
「スタート」→「マイ ネットワーク」.
「ネットワーク プレースの追加」をダブルクリックします。
「次へ」をクリックします。
フォルダの場所を入力します。次に例を示します。
http://Oracle_server_name:HTTP_port_number
図28-2を参照してください。
「次へ」をクリックします。
このWebフォルダを識別する任意の名前を入力します。
「完了」をクリックします。
これで、Windowsフォルダへのアクセスと同様に、Oracle XML DBリポジトリにアクセスできます。
脚注の凡例
脚注1: BOMとは、後続のバイト・ストリームの順序を示すUnicode標準のシグネチャです。