Oracle HTTP ServerにPerlインタプリタが埋め込まれます。これにより、起動時のオーバー
ヘッドが排除され、モジュールをPerlで記述できます。Oracle Application Serverでは、Perl バージョン5.6.1を使用します。
データベース使用上の注意 データベース使用上の注意 データベース使用上の注意 データベース使用上の注意
この項では、データベースを使用する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. Application Server Controlコンソールまたは次のコマンドを使用して、Oracle HTTP
Serverを再起動します。
関連資料 関連資料 関連資料 関連資料:
■ 『Oracle Application Serverセキュリティ・ガイド』
■ 9-7ページの「ユーザー認証のためのmod_osslの使用」
■ 第10章「Oracle HTTP ServerでのSSLの有効化」
関連資料 関連資料 関連資料
関連資料: 強制認証の詳細は、『Oracle Identity Managementアプリケーショ ン開発者ガイド』を参照してください。
シングル・サインオンの詳細は、『Oracle Application Server Single Sign-On 管理者ガイド』を参照してください。
関連資料 関連資料 関連資料
関連資料:『Apache mod_perl Guide』
mod_perl
例例
例例7-5 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;
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 をターゲット・データベースのユーザー名とパスワードに置き換える必要があります。
例 例 例
例7-6 ローカル・シード・データベースの接続テスト用サンプルローカル・シード・データベースの接続テスト用サンプルローカル・シード・データベースの接続テスト用サンプルローカル・シード・データベースの接続テスト用サンプル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 ######
mod_perl
SQL NCHAR データ型の使用 データ型の使用 データ型の使用 データ型の使用
SQL NCHARデータ型は、Oracle9i以降さらに改良され、信頼性の高いUnicodeデータ型と呼ば れています。NCHAR、NVARCHAR2およびNCLOBなどのSQLNCHARデータ型を使用すると、
あらゆるUnicode文字をデータベースのキャラクタ・セットに関係なく格納できます。これら
のデータ型のキャラクタ・セットは、各国語キャラクタ・セット、つまりAL16UTF-16または UTF8で指定します。
このリリースのDBD::OracleはSQLNCHARデータ型をサポートしており、データ・バインド 用の文字構成を指定できるようにドライバ拡張機能が用意されています。次のスクリプトに、
SQLNCHARデータへのアクセス例を示します。
例 例 例
例7-7 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;
例7-7に示すように、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として使用できます。
例 例 例
例7-8 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 関連資料関連資料
関連資料関連資料: SQL NCHARデータ型の詳細は、Oracle9iのマニュアルを参照し てください。
mod_plsql
set_default_form このファンクションでは、データベース・ハンドルのデフォルトの文字構成を 設定します。
例例
例例7-9 データベース・ハンドルのデフォルトの文字構成データベース・ハンドルのデフォルトの文字構成データベース・ハンドルのデフォルトの文字構成データベース・ハンドルのデフォルトの文字構成
$dbh->func( ORA_NCHAR , 'set_default_form' );