6
Database Access Descriptor( ( ( (DAD) ) ) )
この章では、Database Access Descriptor(DAD)の概要と、作成および設定手順について 説明します。
内容 内容 内容 内容
■ DADとは
■ DADの作成
■ DADの設定
DAD
DAD DAD DAD
DAD の作成 の作成 の作成 の作成
DADを作成するには、次のステップを実行します。
1. 接続文字列を作成します。
リモート・ホスト上のデータベースにアクセスするDADの場合は、接続文字列を指定 する必要があります。データベースがOracle Application Serverと同じホストにインス トールされていても、それが別のORACLE_HOMEに存在する場合は、リモート・デー タベースと見なされます。
接続文字列は、次のファイルに存在する必要があります。
■ (NT) %ORACLE_HOME%¥net80¥admin¥tnsnames.ora
■ (UNIX) $ORACLE_HOME/network/admin/tnsnames.ora
ORACLE_HOMEはOracle Application ServerのORACLE_HOMEを指します。
例6-1に、tnsnames.oraファイル内のdemoという接続文字列を示します。
注意 注意注意
注意: PL/SQLカートリッジとともにDADを使用する例は、『Oracle
Application Server PL/SQLアプリケーション開発者ガイド』の「PL/SQL
カートリッジの概要」を参照してください。
注意 注意注意
注意: この手順では、データベースおよびデータベース・リスナーが稼 動していることを前提としています。 接続文字列、ユーザー名、
tnsnames.oraファイル、SIDなどの詳細は、データベースのドキュメント
を参照してください。
例 例例
例6-1 tnsnames.oraファイルのサンプルファイルのサンプルファイルのサンプルファイルのサンプル
# Installation Generated Net8 Configuration
# Version Date: Nov-19-98
# Filename: Tnsnames.ora demo =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(Host = db_machine)(Port= 1521)) (CONNECT_DATA = (SID = orcl))
)
この例から次のことがわかります。
■ 接続名またはサービス名はdemo
■ プロトコルはTCP
■ データベース・ホスト(マシン名)はdb_machine
■ 接続するデータベースのポートは1521
■ データベース名またはインスタンスはorcl
2. (UNIXユーザーの場合)作成したtnsnames.oraファイルを指すようにTNS_ADMIN 変数を設定します。次のコマンドを使用して確認します。
echo $TNS_ADMIN
3. $ORACLE_HOME/bin/tnsping ユーティリティを使用してデータベースの接続をテス トします(ORACLE_HOMEはOracle Application Server のORACLE_HOMEを指し ています)。
tnsping demo
次のメッセージのようなメッセージが返されます。
TNS Ping Utility for Solaris: Version 8.0.5.0.0 - Production on 14-APR-99 11:10:41
(c) Copyright 1997 Oracle Corporation. All rights reserved.
Attempting to contact (ADDRESS=(PROTOCOL=TCP) (Host=db_machine)(Port=1521)) OK (20 msec)
4. 「Welcome」ページで「OAS Manager」をクリックします。
5. 設定するサイト(デフォルトでは「website40」)のフォルダを拡張します。
6. 「Oracle Application Server」フォルダを拡張します。
7. 「DB Access Descriptor」をクリックします。
8. 右フレームで「追加」アイコン( )をクリックします。
「DAD:追加」フォームが表示されます。
図図図
図6-1 「「「「Database Access Descriptor((((DAD))))」フォーム」フォーム」フォーム」フォーム
9. このフォームの次のフィールドに値を入力します。
注意注意注意
注意: 一部のユーティリティ・フォームでは、フォームの下に「新規 DADの作成」ボタンが表示され、これを使用してDADを作成できます。
このボタンをクリックすると「DAD:追加」フォーム(図6-1)に直接ア クセスできます。
フィールド フィールド フィールド
フィールド 説明説明説明説明
DAD名 作成するDADの名前を入力します。DAD名には大/小文字の区別があ り、任意の英数字および"_"文字の組合せを使用できます。
データベース・
ユーザー
新規DADのデータベース・ユーザーIDを入力します。
新規データベース・ユーザーの作成(推奨)
新規データベース・ユーザーの作成(推奨)
新規データベース・ユーザーの作成(推奨)
新規データベース・ユーザーの作成(推奨)
このフォームに名前とパスワードを入力し、フォームの下の「新規デー タベース・ユーザーを作成する」を選択することにより、新規ユーザー を作成できます。
既存のデータベース・ユーザーの使用 既存のデータベース・ユーザーの使用 既存のデータベース・ユーザーの使用 既存のデータベース・ユーザーの使用
既存のデータベース・ユーザーを使用する場合は、追加作業を実行する 必要があります。PL/SQL Toolkitをインストールした後で、SYSユー ザーとして次の権限を付与します。
SQL> grant ows_standard_role to <user>
SQL> grant all on websys.owa_content to <user>
これにより、<user>にPL/SQLプロシージャのコンパイルおよび実行の 権限が付与されます。
注意 注意 注意
注意: Oracle Application Serverでは、Operating System Authentication
(ops$)アカウントの使用をサポートしていません。
データベース・
ユーザーの パスワード
データベース・ユーザーのログイン・パスワードを入力します。既存の パスワードを入力するか、フォームの下の「データベースのパスワード を変更する」を選択してここでパスワードを変更することもできます。
パスワードの確認 ログイン・パスワードが正確に入力されたことを確認するために再入力 します。
データベースの 場所(ホスト)
データベースが存在するマシン名を指定します。
データベース名
(ORACLE_SID)
データベース名/インスタンスを入力します。
データベースがOracle Application Serverのプライマリ・ノードと同じ マシンにインストールされている場合のみ、このフィールドに値を入力
します。 データベースが別のマシンに存在する場合は、接続文字列パラ
メータを使用します。
接続文字列 ステップ 1で作成した接続文字列の名前を入力します。この例では、接 続文字列はdemoです。
トランザクションを使用可能なDADの場合、ご使用のデータベースが ローカルかリモートかにかかわらず、DADの接続文字列を指定する必要 があります。
新規データベース・
ユーザーを 作成する
新規データベース・ユーザーを作成する場合は、このチェック・ボック スをクリックします。このリリースでPL/SQL Toolkitをインストールし た場合、新規ユーザーには、コンテンツ・サービス・データベース・オ ブジェクトへのアクセスも許可されます。
フィールド フィールド フィールド
フィールド 説明説明説明説明
10.「適用」をクリックします。
データベースがリモートの場合は、「DBAアカウント情報」フォームが表示されます。
図 図図
図6-2 「「「「DBAアカウント情報」フォームアカウント情報」フォームアカウント情報」フォームアカウント情報」フォーム
11. SYSユーザーのパスワードを入力し、「適用」をクリックします。
12. すべての情報が正しければ、「成功」ウィンドウが表示されます。
データベースの パスワードを 変更する
「データベース・ユーザーのパスワード」フィールドで指定したパスワー ドを変更するには、このチェック・ボックスをチェックします。
ユーザー名と パスワードを DADに保管する
ユーザー名とパスワードをDatabase Access Descriptorに保存するには、
このチェック・ボックスをチェックします。これを選択すると、データ ベースに接続するたびにデータベース・ユーザー名とパスワードの入力 を求めるプロンプトは表示されません。
これをトランザクションのDADにする場合、ユーザーが同じPL/SQL カートリッジ/DADの組合せを使用して異なるスキーマにログインでき るようにするには、このオプションが選択されていないことを確認しま す。
フィールド フィールド フィールド
フィールド 説明説明説明説明
図図図
図6-3 「成功「成功「成功「成功!」」」」
エラーが表示された場合は、次のことを確認します。
■ データベースが稼動していること
■ データベース・リスナーが起動されていること
■ SIDが正しいこと
■ 接続文字列がtnsnames.oraファイルで入力した名前と一致すること
■ TNS_ADMIN変数が、Oracle Application Serverの$ORACLE_HOME/network/
adminフォルダのtnsnames.ora ファイルを指していること
■ 変更したtnsnames.oraファイルがデータベースのORACLE_HOMEではなく、
Oracle Application ServerのORACLE_HOMEに存在すること
13.「OK」をクリックします。
このDADをトランザクションで使用可能にするには、次の「トランザクションの追加」
を参照してください。
注意 注意注意
注意: TNS_ADMIN変数に問題がある場合は、正しい場所に再設定し
て、Oracle Application Serverをリロードしてください。
DAD DAD DAD
DAD の設定 の設定 の設定 の設定
DADを作成したら、それを使用してデータベースに接続できます。この項では、DADの詳 細設定オプションについて説明します。
■ トランザクションの追加
■ DADへの詳細機能の追加
トランザクションの追加 トランザクションの追加 トランザクションの追加 トランザクションの追加
次の2通りの方法で、DADをトランザクションで使用可能にできます。
■ DADの作成中に、「トランザクションによりこのDADをすぐに使用可能にする」ボタ ンをクリックする(図6-3を参照)。
■ DADの作成後に、「OAS Management」ページで「DB Access Descriptor」の下の
「DAD」を選択し、「トランザクション」をクリックする(図6-5を参照)。 どちらの場合も「DAD: トランザクション」フォーム(図6-4)が表示されます。
図図図
図6-4 「「「「DAD: トランザクション」トランザクション」トランザクション」トランザクション」
注意注意注意
注意: : この機能は、Oracle Application ServerのEnterprise Editionで のみ使用可能です。
トランザクション型と宣言されたDADを使用すると、アプリケーションで 分散トランザク ションを処理できるようになります。トランザクションは、複数の操作やリソースの変更
(データベースの更新やファイルの変更)をまとめて1つの単位にリンクします(1つのアプ リケーションで発生したか、複数のアプリケーションで発生したかにかかわらず)。
このフォームの次のフィールドに値を入力します。
注意 注意注意
注意: トランザクションの詳細は、第11章「トランザクションを使用可 能にする」を参照してください。
フィールド フィールド フィールド
フィールド 説明説明説明説明 分散分散
分散分散
トランザクション トランザクション トランザクション トランザクション
DADをトランザクションで使用可能にするかどうかを指定します。使用 できる値は次のとおりです。
「使用可能」 — そのDADをトランザクション型にします。これはデフォル トです。
「使用禁止」 — そのDADを非トランザクション型にします。
データベース・
データベース・
データベース・
データベース・
タイプ タイプ タイプ タイプ
DADが接続するデータベースのタイプを指定します。使用できる値は次 のとおりです。
「Oracle 8」 — DADはOracle8.xデータベースに接続します。
「Oracle 7」 — DADはOracle7.xデータベースに接続します。
ロック・
ロック・
ロック・
ロック・
タイムアウト タイムアウト タイムアウト タイムアウト
リソース・マネージャ(RM)のリソースに対して2つのリクエストが競 合する場合、2番目のリクエストは最初のリクエストが完了するまで待機 し、その後処理されます。これにより、パフォーマンスが低下したり、
デッドロックの状態が起こる場合があります。この値は、2番目のリクエ ストが拒否されるまでの待ち時間の合計(単位:秒)を指定します。デ フォルトは600秒です。
DTCからのからのからのからの データベース・
データベース・
データベース・
データベース・
リンクリンク リンクリンク
データベース・リンクの一意の名前を入力します。この名前はDTC
(Distributed Transaction Coordinator)がDADに接続するときに使用し ます。各DADには固有のデータベース・リンクが必要です。たとえば、
<SID>.<hostname>は、データベースのグローバル・データベース名に することもできますが、必ずしもそうする必要はありません。