3 Oracle Database Provider for DRDAのインストールおよび構成
Oracle Database Provider for DRDAのインストール、構成、管理について説明します。
3.1 Oracle Database Provider for DRDAのインストールについて
Oracle Database Provider for DRDAは、Oracle Databaseソフトウェアにバンドルされています。インストールでは、Oracle Universal Installerを起動し、Oracleホーム・パスを入力します。
次の手順を実行すると、ディレクトリ$
ORACLE_HOME
/drdaas/admin/
にdrdaas.ora
構成ファイルが作成されます。
関連トピック
3.2 Oracle Database Provider for DRDAの構成
Oracle Database Provider for DRDAを構成するには、drdaas.ora
構成ファイルを必要な情報で更新する必要があります。
また、Oracle Database Provider for DRDAを使用するすべてのOracle Databaseインスタンスに、Oracle Database Provider DRDA製品に依存するオブジェクトをインストールする必要があります。
3.2.1 drdaas.ora構成ファイルの更新
drdaas.ora
構成ファイルを作成し、初期インスタンスおよび構成パラメータを追加します。
高度なシナリオでは、複数のDATA_PORT
パラメータを指定するか、複数のRDB_MAP
エントリを構成する必要があります。さらに複雑なインストールでは、複数のOracle Database Provider for DRDAインスタンスが必要となることがあります。
パラメータとそのオプションのリストについては、「構成パラメータ」の項を参照してください。
関連トピック
3.2.1.1 DATA_PORTに関する考慮事項
追加のDATA_PORT
エントリには、異なるホスト名またはIPアドレスおよび未割当てのネットワーク・ポート番号を指定します。これは、多重インスタンス構成と呼ばれます。
3.2.1.2 RDB_MAPに関する考慮事項
サードパーティのリレーショナル・データベースとOracleの間での変換のためのマップ・エントリを追加するには、追加のRDB_MAP
エントリを指定します。
ノート:
一部のDRDAクライアント(IBM DB2 Database for z/OSなど)では、ユーザーはOracle Database Provider for DRDAインスタンスごとにRDB_MAP
エントリを1つのみ構成する必要があります。これは、専用インスタンス構成と呼ばれます。
3.2.2 データベース・オブジェクトのインストール
インストールする必要がある2種類のデータベース・オブジェクトは、グローバル・オブジェクトおよびユーザー別オブジェクトです。
3.2.2.1 グローバル・オブジェクトについて
Oracle Database Provider for DRDA構成で使用される各Oracle Databaseインスタンスでは、Oracle Database Provider for DRDA固有のオブジェクトをインストールする必要があります。このためには次の手順を実行します。
-
SYSIBM
表領域の作成 -
Oracle Database Provider for DRDAカタログのインストール
-
DB2 SQLトランスレータのインストール
-
Oracle Database Provider for DRDA管理ロールの指定
3.2.2.4 DB2 SQLトランスレータのインストール
ノート:
SQLトランスレータはオプションの機能であり、アプリケーション内で使用されるSQLに多くのDB2固有の構文がある場合に使用できます。3.2.3 SQL翻訳プロファイル
DRDAベース・アプリケーションSQLがネイティブDB2言語からOracleへ正しく解釈されるようにするため、ユーザーはSQL翻訳プロファイルを作成する必要があります。
SQL翻訳プロファイルは、ユーザー単位で管理されます。対照的に、DRDAパッケージはアプリケーション単位で管理されます。その結果、1つのDRDAパッケージには1つのSQL翻訳プロファイル名のみが関連付けられます。1つのSQL翻訳プロファイルを複数のパッケージに関連付けることができます。整合性のために、定義されている各パッケージに同じSQL翻訳プロファイルを関連付ける必要があります。
追加の翻訳プロファイルを作成するには、DRDAユーザーはDRDA管理者に対しプロファイル名をリクエストし、その後、$
ORACLE_HOME
/drdaas/admin/
ディレクトリにあるdrdasqtt_translator_setup.sql
スクリプトを起動します。「SQL Translation Interface Packageおよび翻訳プロファイルの作成」の項に、SQL翻訳プロファイルDB2ZOS
を作成する方法を示します。このコードでは、翻訳プロファイルのテンプレートが作成されます。
ノート:
SQL翻訳プロファイルはオプションの機能であり、SQL翻訳機能が構成されている場合にのみ使用できます。3.2.3.1 SQL翻訳プロファイルを作成するための前提条件
この機能は、Oracle Database 12c以上のユーザーが使用できます。
ユーザーにDRDAAS_USER_ROLE
が必要です。詳細は、「Oracle Database Provider for DRDAの認可」を参照してください。
DB2 DB2SQLトランスレータをデータベースにロードする必要があります。ユーザーはこのトランスレータを使用して翻訳プロファイルを作成できます。
3.2.3.2 SQL Translation Interface Packageおよび翻訳プロファイルの作成
例3-1では、SQL Translator Interface Package SYSIBM.DBTooIntPkg
およびSQL翻訳プロファイルTRANS_ADMIN.MyDBTooTransProfile
が作成されます。サードパーティのSQLトランスレータはJAVAで作成されており、rdbms/drdaas/jlib
ディレクトリ内のオブジェクトThirdPartyDB2Translator.class
内にトランスレータ全体が含まれていることを前提としています。
必要に応じて翻訳を追加、変更、削除できます。詳細は、Oracle® Database SQL翻訳および移行ガイドを参照してください。
例3-1 SQL Translation Interface Packageおよび翻訳プロファイルのコード
次の2行には、サードパーティ・オブジェクト内の2つのトランスレータ・メソッドのシグネチャが記述されています。
ThirdPartyTranslator.translateSQL(oracle.sql.CLOB,oracle.sql.CLOB[]) ThirdPartyTranslator.translateError(int,int[],java.lang.String[])
これらのシグネチャにより、OracleがSQLテキストとOracleエラー・コードの両方を翻訳するためにコールするメソッドが決定します。メソッドtranslateSQL()
には、元のSQLテキストのためのCLOB
とSQLトランスレータからのCLOB出力のためのCLOB
という2つの引数があります。2番目のメソッドは無視できます。
connect / as sysdba @$ORACLE_HOME/drdaas/admin/drdasqtt_translator_setup.sql Enter schema in which the SQL Translator Interface Package will be created as well as into which the third-party SQL translator will be loaded (usually SYSIBM). SQL Translator Interface Package Schema:SYSIBM Enter unqualified name of the SQL Translator Interface Package SQL Translator Interface Package Name:DBTooIntPkg Enter schema in which the Translation Profile will be created: Translation Profile Schema:TRANS_ADMIN Enter the unqualified name of the translation profile: Translation Profile Name:MyDBTooTransProfile Enter the "language" type of the translator: C, java, etc Translator Language:JAVA Enter the path names of the third-party SQL Translator objects; (All objects must be located under the "rdbms/" directory, for example: "rdbms/drdaas/jlib/objecta.jar"). Enter all path qualified objects, one per prompt, up to 10. Enter "" for all remaining object prompts. SQL Translator object#1: rdbms/drdaas/jlib/ThirdPartyDB2Translator.class SQL Translator object#2: "" ... SQL Translator object#10: "" Enter the signature for the entry for 'translateSQL' in one of the previously entered SQL Translator objects: Entry for translateSQL:ThirdPartyTranslator.translateSQL(oracle.sql.CLOB,oracle.sql.CLOB[]) Enter the signature for the entry for 'translateError' in one of the previously entered SQL Translator objects callout for translateError:ThirdPartyTranslator.translateError(int,int[],java.lang.String[])
3.2.4 構成ファイル: drdaas.ora
ファイルdrdaas.ora
はOracle Database Provider for DRDAのインスタンスを定義します。このファイルは、アプリケーション・サーバーのインスタンスを定義する初期化パラメータで構成されています。
ファイルdrdaas.ora
はカスタマイズできます。また、インストール時にインストーラによって提示される質問とユーザー入力から作成することもできます。
drdaas.ora
構成ファイルはOracleホーム内の製品管理ディレクトリに配置されている必要があります。
デフォルトの位置は$ORACLE_HOME/drdaas/admin
です。
インスタンス名で修飾されたパラメータは、その特定インスタンスにのみ適用されることに注意してください。インスタンス名で修飾されていないパラメータは、ファイルに指定されているすべてのインスタンスに適用されます。
例3-2 サンプル構成ファイル: drdaas.ora
# Example pre-configured instance named "drdaas" # defines a single port and an rdb map that uses # the local database instance accessed through # the ORACLE_SID environmental variable. drdaas.DATA_PORT = 10.0.0.1:1446 drdaas.RDB_MAP = RDB(DB2DS4M)->ORACLE_SID # # Example instance using a single port and a single rdb map drdasingle.DATA_PORT = 10.0.0.1:1546 drdasingle.RDB_MAP = RDB(DB2DSN1)->TNS(ora101) # # Example instance using multiple rdb mappings drdamulti.DATA_PORT = 10.0.0.1:2446 drdamulti.RDB_MAP = RDB(DB2DSN1)->TNS(ora101) drdamulti.RDB_MAP = RDB(DB2DSN2)->TNS(ora102) drdamulti.RDB_MAP = RDB(DB2DSN3)->TNS(ora103) # # global section affects all instances unless overridden PROTOPROC_TRACE="ALL ERROR"
3.3 Oracle Database Provider for DRDAの認可
Oracle Database Provider for DRDAカタログおよび特定のDRDAパッケージにアクセスするには、Oracleユーザーに適切なOracle Database Provider for DRDAロールが必要です。
関連トピック
3.3.1 管理者ロール
管理機能を実行する必要があるユーザーには、DRDAAS_ADMIN_ROLE
ロールが必要です。これにより、特定のDRDAパッケージに対する権限を付与し、パッケージ属性(SQL翻訳プロファイル名)を割り当てることができるようになります。
デフォルト・ロールALL
がないインストール環境では、ユーザー用に複数のデフォルト・ロール(CONNECT
またはRESOURCE
など)を用意し、DRDAAS_ADMIN_ROLE
をデフォルト・リストに追加します。
DRDAAS_ADMIN_ROLE
ロールは、DRDAパッケージを使用する必要があるユーザーを対象としていません。このようなユーザーにはかわりにDRDAAS_USER_ROLE
を割り当てる必要があります。
管理は主に、ユーザーへの権限の付与と取消し、パッケージの属性の設定、パッケージの削除に関連します。
パッケージを作成するユーザーまたはパッケージ所有者として指定されるユーザーには、そのパッケージに対する暗黙的な権限が付与されており、他のユーザーにアクセス権限を付与できます。たとえばパッケージの所有者は、任意の数のユーザーにRUN
権限を付与できます。所有者は、パッケージ属性の設定とパッケージの削除も実行できます。
ただし、最初にパッケージをバインドするため、ユーザーにはコレクション内の任意のパッケージまたは特定のパッケージに対するBIND
権限が必要です。DRDAAS_ADMIN_ROLE
ロールを持つユーザーだけが、まだバインドされていないパッケージまたはユーザーが作成者でも所有者でもないパッケージに対する権限をユーザーに付与できます。パッケージへのアクセス権の付与方法とパッケージ属性の設定方法の詳細は、「DRDAパッケージの認可」を参照してください。
3.3.1.1 DRDAAS_ADMIN_ROLEの付与
例3-3 DRDAAS_ADMIN_ROLEの付与
connect sys as sysdba grant DRDAAS_ADMIN_ROLE to DRDAADMIN;
3.3.1.2 DRDAA_ADMIN_ROLEの追加
例3-4 デフォルト値へのDRDAAS_ADMIN_ROLEの追加
alter user DRDAADMIN default role CONNECT, DRDAAS_ADMIN_ROLE;
3.3.1.3 管理者によるORACLE.MYPACKAGEの削除
この機能は、DRDA管理者ロールを持つユーザーが実行する必要があります。
例3-5 管理者によるORACLE.MYPACKAGEパッケージの削除
connect DRDAADM/password
execute DBMS_DRDAAS_ADMIN.DROP_PACKAGE('ORACLE','MYPACKAGE);
commit;
3.3.2 DRDAパッケージの認可
DRDA管理者は、DRDAパッケージ名および(オプションで)SQL翻訳プロファイル名をユーザーに渡す前に、これらの機能を実行する必要があります。
特定のDRDAパッケージへのアクセス権を付与できるのは、DRDA管理者だけです。
ORACLE.MYPACKAGE
パッケージに対するBIND
、DROP
、EXECUTE
権限をユーザーDRDAUSR
x
に付与する方法の詳細は、「ユーザーのパッケージ権限の付与と取消し」の項を参照してください。
また、DRDA管理者は、DRDAパッケージに関連付けるSQL翻訳プロファイル名も指定します。
プロファイル名をDB2ZOS
に設定する方法の詳細は、「DRDAパッケージの翻訳プロファイル名の設定および削除」の項を参照してください。
関連トピック
3.3.2.1 ユーザーのパッケージの権限の管理
例3-7 ユーザーのパッケージ権限の付与および取消し
connect DRDAADM/password
Rem Grant BIND on any package in collection ORACLE to DRDAUSR
execute DBMS_DRDAAS_ADMIN.GRANT_PRIVILEGE(
DBMS_DRDAAS_ADMIN.BIND_PRIVILEGE, 'ORACLE', '*', 'DRDAUSR');
Rem Grant BIND on package ORACLE.MYPACKAGE to user DRDAUSR2
execute DBMS_DRDAAS_ADMIN.GRANT_PRIVILEGE(
DBMS_DRDAAS_ADMIN.BIND_PRIVILEGE, 'ORACLE', 'MYPACKAGE', 'DRDAUSR2');
Rem Grant EXECUTE on package ORACLE.MYPACKAGE to PUBLIC
execute DBMS_DRDAAS_ADMIN.GRANT_PRIVILEGE(
DBMS_DRDAAS_ADMIN.EXECUTE_PRIVILEGE, 'ORACLE', 'MYPACKAGE', 'PUBLIC');
Rem Grant SET on package ORACLE.MYPACKAGE to user DRDAUSR3
execute DBMS_DRDAAS_ADMIN.GRANT_PRIVILEGE(
DBMS_DRDAAS_ADMIN.SET_PRIVILEGE, 'ORACLE', 'MYPACKAGE', 'DRDAUSR3');
Rem Grant DROP on any package in collection ORACLE to user DRDAUSR3
execute DBMS_DRDAAS_ADMIN.GRANT_PRIVILEGE(
DBMS_DRDAAS_ADMIN.DROP_PRIVILEGE, 'ORACLE', '*', 'DRDAUSR3');
Rem Grant ALL on any package in collection NULLID to user DRDAUSR3
execute DBMS_DRDAAS_ADMIN.GRANT_PRIVILEGE(
DBMS_DRDAAS_ADMIN.ALL_PRIVILEGE, 'NULLID', '*', 'DRDAUSR3');
Rem Revoke BIND on package ORACLE.NOTYOURPKG from user DRDAUSR3
execute DBMS_DRDAAS_ADMIN.REVOKE_PRIVILEGE(
DBMS_DRDAAS_ADMIN.BIND_PRIVILEGE, 'ORACLE', 'NOTYOURPKG', 'DRDAUSR3');
Rem Revoke ALL on any package in Collection OTHER from user DRDAUSR4
execute DBMS_DRDAAS_ADMIN.REVOKE_PRIVILEGE(
DBMS_DRDAAS_ADMIN.ALL_PRIVILEGE, 'OTHER', '*', 'DRDAUSR4');
3.3.2.2 DRDAパッケージ翻訳プロファイルの管理
例3-8 DRDAパッケージの翻訳プロファイル名の設定および削除
connect DRDAADM/password Rem Set the DB2ZOS profile name for "any" package in collection ORACLE DBMS_DRDAAS_ADMIN.SET_PROFILE( 'ORACLE', '*', 'DB2ZOS' ); Rem Set the MYDB2ZOS profile name for package ORACLE.MYPACKAGE DBMS_DRDAAS_ADMIN.SET_PROFILE( 'ORACLE', 'MYPACKAGE', 'MYDB2ZOS' ); Rem Deleting the profile name for package ORACLE.MYPACKAGE execute DBMS_DRDAAS_ADMIN.SET_PROFILE( NULL, 'ORACLE', 'MYPACKAGE' ); Rem Deleting the profile name for "any" package in collection ORACLE execute DBMS_DRDAAS_ADMIN.SET_PROFILE( NULL, 'ORACLE', '*' );
3.3.3 ユーザー・ロール
DRDAからデータベースにアクセスする各ユーザーには、デフォルトとしてDRDAAS_USER_ROLE
ユーザー・ロールが必要です。
通常ユーザーにはデフォルト・ロールALL
が付与されており、付与されたすべてのロールが即時に有効になります。明示的なデフォルト・ロールが付与されているユーザーには、DRDAAS_USER_ROLE
ロールも必要です。詳細は、デフォルト値へのDRDAAS_USER_ROLEの追加」を参照してください。
すべてのデフォルト・ロールが含まれているリストを指定しないと、ユーザーがデータベースに接続できなくなるか、または特定のリソースを暗黙に処理できなくなることに注意してください。
Oracle® Database SQL言語リファレンスおよびOracle Databaseセキュリティ・ガイドを参照してください。
関連トピック
3.3.3.1 DRDAAS_USER_ROLEの付与
例3-9 DRDAAS_USER_ROLEの付与
connect sys as sysdba grant DRDAAS_USER_ROLE to DRDAUSR;
3.4 Oracle Database Provider for DRDAのアンインストール
Oracle Database Provider for DRDAの完全なアンインストールでは、データベース・オブジェクトが削除され、Oracle Database Provider for DRDAソフトウェアがアンインストールされます。製品依存オブジェクトが削除され、顧客データはそのまま保持されます。
3.4.1 データベース・オブジェクトの削除
次のステップでは、データベースからOracle Database Provider for DRDAオブジェクトがすべて削除され、ユーザー作成表領域が削除されます。
データベース・オブジェクトを削除するには、次のようにします。
DROP TABLESPACE
のオプションについては、Oracle® Database SQL言語リファレンスを参照してください。
3.4.2 Oracle Database Provider DRDAソフトウェアのアンインストール
Oracle Database Provider DRDAソフトウェアをアンインストールするには、-deinstall
オプションを指定してOracle Universal Installerを使用する必要があります。-home
オプションを使用してOracleホームのパスを指定するか、Oracle Universal Installerの実行時にOracleホームを選択します。Oracleソフトウェアのアンインストール手順の詳細は、Oracle® Databaseインストレーション・ガイドを参照してください。
Oracle Database Provider DRDAソフトウェアをアンインストールするには、次のようにします。
3.5 構成パラメータ
Oracle Database Provider for DRDAは、環境を構成する際に様々なパラメータを使用します。パラメータは構成ファイルに指定されています。
3.5.1 DATA_PORT
このインスタンスが使用するDRDAデータ・ポートを指定します。これはインターネット・アドレスとポート番号で示されます。
デフォルト値
デフォルトのポート番号はありません。明示的なポート番号を指定する必要があります。1446
を使用することをお薦めします。
使用可能な値
有効な未割当てのTCP/IPネットワーク・ポート番号。オプションで、ローカル・マシンで定義されているネットワーク・インタフェースに関連付けられている特定のホスト名またはIPアドレスが接頭辞として付加されます。
構文
DATA_PORT = {
host_name
|
ip_address
:}
number
使用例
DATA_PORT = 10.0.0.1:1446
3.5.2 RDB_MAP
このstring
パラメータは、DRDA ACCRDB
コマンド・オブジェクトで渡されるリレーショナル・データベース名を、Oracle TNSエントリまたはローカルで対応可能なOracleインスタンスにマップします。このパラメータには、複数のマップ・エントリ・オカレンスが含まれることがあります。
この属性にデフォルト値はありません。
オプションの値を次に示します。
-
tns_name_entry
はローカルtnsnames.ora
構成ファイルのTNSエントリに対応しています。 -
tns_entry
は、完全に構成されたTNS記述子文字列です。これは、TNS名エントリのかわりに使用できます。 -
oracle_sid
は、Oracle Database Provider for DRDAインスタンスの起動前に設定された$ORACLE_SID
環境変数の値を使用します。
RDB_MAP
を1回以上使用することで、古いアプリケーション・リクエスタとの互換性モードが決定することに注意してください。デフォルトは、ORACLE_SID
環境変数に基づいて1つのOracle Databaseインスタンスに接続する1つの専用の定義です。
使用可能な値
有効な未割当てのTCP/IPネットワーク・ポート番号。オプションとして、ローカル・マシン上で定義されたネットワーク・インタフェースに関連付けられた特定のホスト名またはIPアドレスが接頭辞として付加されます。
構文
RDB_MAP = RDB
(rdb_name
)->TNS(
tns_name_entry
)
RDB_MAP = RDB
(rdb_name
)->ORACLE_SID
RDB_MAP = RDB
(rdb_name
)->
"
tns_entry
"
使用例
RDB_MAP = RDB(DB2DSN1)->ORACLE_SID
RDB_MAP = RDB(DB2DSN2)->TNS(ora101)
RDB_MAP = RDB(DB2DSN3)->"(ADDRESS=(PROTOCOL=TCP)(HOST=10.0.0.1)(PORT=1446))"
3.5.3 PROTOPROC_TRACE
このパラメータは、DRDAプロトコル・プロセッサのトレースのトレース機能と詳細レベルを指定します。すべての初期Oracle Database Provider DRDAセッションは、この設定を使用して実行されます。このパラメータは、機能の値とレベルの値のペアで構成されます。値タプルがカンマで区切られている場合は、複数の値を同時に指定できます。
また、すべてのASセッション・スレッドが実行されるトレースの初期レベルも指定します。PROTOPROC_TRACE
は、10進数値または同等の指定テキスト値です。
PROTOPROC_TRACEパラメータで使用される機能名は次のとおりです。
-
TASK
: タスク固有の操作 -
NET
: ネットワーク固有の操作 -
SQL
: SQL固有の操作 -
OCI
: OCIリソースの操作 -
MEM
: メモリー・リソースの操作 -
ALL
: 前述のすべての機能
PROTOPROC_TRACE
レベルの値は加算式です。たとえば、ERROR(4)
にはWARN(2)
およびINFO(1)
のメッセージが含まれます。次の値が使用されます。
-
0
またはNONE
: トレースは生成されません。これがデフォルトです。 -
1
またはINFO
: 最小限のトレースが生成されます。 -
2
またはWARN
: 警告情報が生成されます。 -
4
またはERROR
: エラー情報が生成されます。 -
8
またはADMIN
: 管理情報が生成されます。 -
255
およびALL
: すべての詳細情報が生成されます。
デフォルト値
0
またはなし
使用可能な値
機能名の後にレベルを指定します。
使用例
PROTOPROC_TRACE="ALL ADMIN" PROTOPROC_TRACE="TASK WARN, NET ADMIN, MEM INFO"
3.5.4 PROTOPROC_OPTIONS
PROTOPROC_OPTIONS
パラメータは、DRDAプロトコル操作に影響するprotoproc処理オプションを指定します。
デフォルト値
このパラメータには、デフォルト値はありません。
使用可能な値
指定できる値は次のとおりです。
-
QRYDTA/ELMODE
戻されるすべての問合せデータ・オブジェクトに対してExtended Length Modeを有効にします。一般に、LOBを使用しない問合せで使用されます。
-
EXTDTA/ELMODE
戻されるすべての拡張データ・オブジェクトに対してExtended Length Modeを有効にします。通常、LOBを使用する問合せで使用されます。
-
ALLDSS/ELMODE
すべてのプロトコル・オブジェクトに対してExtended Length Modeを有効にします。これは、前述のいずれかの値の代替値であるため、他の値が適切に影響しない場合を除き、指定しないでください。
-
LOGNAME/<NAME>
静的DRDAログ名を指定します。ログ名は18文字の英数字です。このオプションは、DB2 for z/OSをクライアントとして使用する場合に必要になることがあります。
-
LOGTSTMP/<YYYYMMDDHHMMSSTTTT>
静的DRDAログ・タイムスタンプを指定します。タイムスタンプは次の書式にする必要があります。
この値は、DB2 for z/OSをクライアントとして使用する場合に必要になることがあります。YYYYMMDDHHMMSSTTTT
構文
PROTOPROC_OPTIONS = value {, value ...}
使用例
PROTOPROC_OPTIONS = QRYDTA/ELMODE, EXTDTA/ELMODE, LOGNAME/ORACLEDB, LOGTSTMP/201609191201020001
関連項目:
第12章「Oracle Database Provider for DRDAの使用に関する制限事項」のExtended Length Modeの項