このモジュールでは、Oracle HTTP ServerにPerlインタプリタが埋め込まれます。これに より、起動時のオーバーヘッドが排除され、モジュールをPerlで記述できます。
関連項目 関連項目関連項目 関連項目:
■ 『Oracle Application Server 10gセキュリティ・ガイド』
■ 10-10ページ「ユーザー認証のためのmod_osslの使用」
関連項目関連項目関連項目
関連項目: 『Oracle Application Server Single Sign-Onアプリケーション
開発者ガイド』
注意注意注意
注意: Oracle Application Serverに付属しているこのモジュールのデモ・
スクリプトは、本番環境では無効にする必要があります。このスクリプト は、インストールの成功を確認するためにのみ付属しています。
関連項目関連項目関連項目
関連項目: mod_perl Guide
mod_perl
Oracle HTTP Serverのモジュール 8-41
データベース使用上の注意 データベース使用上の注意 データベース使用上の注意 データベース使用上の注意
この項では、データベースを使用するmod_perlユーザー向けに、ローカル・データベース 接続をテストし、文字構成を設定する方法について説明します。
Perl を使用したデータベース・アクセス を使用したデータベース・アクセス を使用したデータベース・アクセス を使用したデータベース・アクセス
次の項では、Perlを使用したデータベース・アクセスについて説明します。Perlスクリプト
は、Oracle用のDBI/DBDドライバを使用してデータベースにアクセスします。DBI/DBD
ドライバはOracle Application Serverに含まれています。このドライバは、Oracle Call
Interface(OCI)をコールしてデータベースにアクセスします。
DBIが機能するには、httpd.confでDBIが有効である必要があります。これには次の手 順を実行します。
1. テキスト・エディタを使用してhttpd.confを編集します。
2. "PerlModule Apache: :DBI"を検索します。
3. "PerlModule Apache: :DBI"という行のコメントを解除します。
4. Oracle HTTP Serverを再起動します。
ファイルがORACLE_HOME/Apache/Apache/cgi-binにコピーされます。
例 例例
例 8-7 Perlを使用したデータベース・アクセスを使用したデータベース・アクセスを使用したデータベース・アクセスを使用したデータベース・アクセス
#!<ORACLE_HOME>perl/bin/perl -w use DBI;
my $dataSource = "host=<hostname.domain>;sid=<orclsid>;port=1521";
my $userName = "scott";
my $password = "tiger";
my $dbhandle = DBI->connect("dbi:Oracle:$dataSource", $userName, $password) or die "Can't connect to the Oracle Database: $DBI::errstr¥n";
print "Content-type: text/plain¥n¥n";
print "Database connection successful.¥n";
### Now disconnect from the database $dbhandle->disconnect
or warn "Database disconnect failed; $DBI::errstr¥n";
exit;
関連項目関連項目関連項目 関連項目:
■ 1-7ページ「Application Server Controlコンソール」
■ 1-10ページ「Oracle HTTP Serverの再起動」
mod_perl
DBIスクリプトには次の場所からアクセスできます。
http://<hostname.domain>:<port>/cgi-bin/<scriptname>
http://<hostname.domain>:<port>/perl/<scriptname>
スクリプトに"use DBI"ではなく"use Apache::DBI"と指定されている場合、このスク リプトを実行できるのは、http://<hostname.domain>:<port>/perl/<scriptname>から のみです。
データベース接続のテスト データベース接続のテスト データベース接続のテスト データベース接続のテスト
ローカル・シード・データベースのデータベース接続をテストするPerlスクリプトの例を次 に示します。このスクリプトを使用して別のデータベース接続をテストするには、
scott/tigerをターゲット・データベースのユーザー名とパスワードに置き換える必要が あります。
例 例例
例 8-8 ローカル・シード・データベースの接続テスト用サンプルローカル・シード・データベースの接続テスト用サンプルローカル・シード・データベースの接続テスト用サンプルローカル・シード・データベースの接続テスト用サンプルPerlスクリプトスクリプトスクリプトスクリプト
##### Perl script start ######
use DBI;
print "Content-type: text/plain¥n¥n";
$dbh = DBI->connect("dbi:Oracle:", "scott/tiger", "") || die $DBI::errstr;
$stmt = $dbh->prepare("select * from emp order by empno")|| die $DBI::errstr;
$rc = $stmt->execute() || die $DBI::errstr;
while (($empno, $name) = $stmt->fetchrow()) { print "$empno $name¥n"; } warn $DBI::errstr if $DBI::err;
die "fetch error: " . $DBI::errstr if $DBI::err;
$stmt->finish() || die "can't close cursor";
$dbh->disconnect() || die "cant't log off Oracle";
##### Perl script End ######
SQL NCHAR データ型の使用 データ型の使用 データ型の使用 データ型の使用
SQLNCHARデータ型はOracle9i でさらに改良され、信頼性の高いUnicodeデータ型と呼ば れています。NCHAR、NVARCHAR2およびNCLOBなどのSQL NCHARデータ型を使用すると、
あらゆるUnicode文字をデータベースのキャラクタ・セットに関係なく格納できます。これ
らのデータ型のキャラクタ・セットは、各国語キャラクタ・セット、つまりAL16UTF-16ま たはUTF8で指定します。
関連項目 関連項目関連項目
関連項目: SQLNCHARデータ型の詳細は、Oracle9iのマニュアルを参照
mod_perl
Oracle HTTP Serverのモジュール 8-43 例例例
例 8-9 SQLNCHARデータにアクセスするためのサンプル・スクリプトデータにアクセスするためのサンプル・スクリプトデータにアクセスするためのサンプル・スクリプトデータにアクセスするためのサンプル・スクリプト
# declare to use the constants for character forms use DBD::Oracle qw(:ora_forms);
# connect to the database and get the database handle
$dbh = DBI->connect( ... );
# prepare the statement and get the statement handle
$sth = $dbh->prepare( 'SELECT * FROM TABLE_N WHERE NCOL1 = :nchar1' );
# bind the parameter of a NCHAR type
$sth->bind_param( ':nchar1', $param_1 );
# set the character form to NCHAR
$sth->func( { ':nchar1' => ORA_NCHAR } , 'set_form' );
$sth->execute;
前述したように、set_formファンクションはプライベート・ファンクションとして提供さ れており、標準のDBI func()メソッドで起動できます。このファンクションは、どのプ レースホルダをどの文字構成に関連付けるかを指定する匿名ハッシュを取ります。文字構成 の有効値は、ORA_IMPLICITまたはORA_NCHARのいずれかです。文字構成をORA_
IMPLICITに設定すると、アプリケーションのバインド・データはデータベースのキャラク タ・セットに変換され、ORA_NCHARに設定すると各国語キャラクタ・セットに変換されま す。デフォルト構成はORA_IMPLICITです。
デフォルトのキャラクタ・セット構成を指定できるように、次のようにもう1つのファンク ションも用意されています。
# specify the default form to be NCHAR
$dbh->func( ORA_NCHAR, 'set_default_form' );
このコールの後は、set_formのコールで特に指定しないかぎり、すべてのパラメータの構 成がORA_NCHARになります。set_formファンクションとは異なり、これはデータベー ス・ハンドルのファンクションであるため、指定したデフォルト形式を持つデータベース・
ハンドルの各文には、デフォルトで選択した形式があることに注意してください。
set_form このファンクションでは、パラメータの文字構成を設定します。有効な構成は、
ORA_IMPLICIT(デフォルト)またはORA_NCHARです。この定数は、DBD::Oracle内で
: ora_formsとして使用できます。
例例例
例 8-10 set_formのサンプルのサンプルのサンプルのサンプル
# a declaration example for the constants ORA_IMPLICIT and ORA_NCHAR use DBD::Oracle qw(:ora_forms);
# set the character form for the placeholder :nchar1 to NCHAR
$sth->func( { ':nchar1' => ORA_NCHAR } , 'set_form' );
# set the character form using the positional index
$sth->func( { 2 => ORA_NCHAR } , 'set_form' );
# set the character form for multiple placeholders at once
$sth->func( { 1 => ORA_NCHAR, 2 => ORA_NCHAR } , 'set_form' );