Oracle® Databaseインストレーションおよび構成ガイド 11gリリース2 (11.2) for Fujitsu BS2000/OSD E49830-02 |
|
前 |
次 |
この章では、Oracle Net ServicesおよびBS2000/OSD環境への実装について説明します。次の項目について、『Oracle Database Net Services管理者ガイド』のBS2000/OSD固有の情報を補足します。
Oracle Net Servicesは、クライアント・アプリケーションと各種のオペレーティング・システム上で実行中のリモートまたはローカルのデータベース間のネットワーク通信をサポートします。
Oracle Net Servicesでは、データベース・サーバーおよびクライアント・アプリケーション(またはクライアントとして機能するサーバー)の別々のシステム上での実行を可能にし、ネットワーク上のノード間でのデータの移動手段を提供します。たとえば、UNIXまたはWindowsユーザーは、BS2000システム上で稼働しているリモートのOracle Databaseのデータにアクセスおよび操作するアプリケーションを実行できます。
Oracle Net Servicesは、クライアントおよびデータベースが同じシステム上で稼働している場合に、プロセス間通信にも使用されます。
この項では、プロセス間コールをサポートするためのOracleのプロセス間通信(IPC)について説明します。これは、IPCの機能をOracleのNet Foundationレイヤーにマップするために使用されます。IPCプロトコルはネイティブBS2000のみでサポートされています。POSIXシェル上で実行中のOracleユーティリティおよび製品は、IPCプロトコルを使用できません。
BS2000システムでは、IPCプロトコルはローカルのプロセス間通信に使用されます。Oracle Protocol Support for IPCは、BS2000ソケットのISO機能を使用します。
クライアント・プロセスは、リスニング・プロセスを記述するKEY
を指定することによって、リモート・プロセスとのIPC接続を開始します。接続が確立されると、2つの通信プロセスは連続的なバイト・ストリームを介してデータを送信および受信します。
IPCプロトコルでは、アプリケーションのローカル・ホスト上のプロセス間通信方式との統合が可能です。IPCプロトコルを使用した構文を次に示します。
(ADDRESS= (PROTOCOL=IPC) (KEY=alphanumeric) )
各パラメータの意味は次のとおりです。
PROTOCOL
は、サポートされるプロトコルを指定します。IPCの場合、値はIPCです。
KEY
は、リスニング・エンドポイントを指定します。32文字以下の文字列([a...z], [A...Z], [0...9], '.', '-', '_', '$')です。
ローカル・ホスト上のサーバーを指定するIPC ADDRESSの例を次に示します。
(ADDRESS= (PROTOCOL=IPC) (KEY=ORCL) )
注意: IPCプロトコルはPOSIXシェルではサポートされていません。POSIXシェルで実行中のユーティリティまたはユーザー・アプリケーションによってIPCプロトコルが指定された場合、Oracle Net Servicesは次のエラー・メッセージを表示してIPCプロトコルを使用しません。TNS-12557: TNS:protocol adapter not loadable |
この項では、TCP/IPの機能をOracleのNet Foundationレイヤーにマップするために使用されるOracleのTCP/IPプロトコル・サポートについて説明します。
TCP/IPは、関連するプロトコルのファミリであり、2つのメイン・コンポーネントであるTransmission Control Protocol (TCP)およびInternet Protocol (IP)から名前が導出されています。IPコンポーネントはネットワーク上の情報をディスパッチし、TCPコンポーネントは、1点から他点への信頼できるデータ転送を保証します。
TCP/IPプロトコルの最上位に位置するアプリケーション・ソフトウェアは、ネットワークを2方向のデータ転送媒体としてとらえます。この媒体では、相互に接続されたコンピュータ・ネットワークにアタッチされたホスト・コンピュータ内のプロセスのペア間に、接続型の方法でプロセス間通信を提供します。
アプリケーションまたはクライアント・プロセスは、アドレス・ペアを指定することによって、リモート・ホスト・プロセスとのTCP/IP接続を開始します。
ホストのIPアドレス
ホスト上のTCPポート(またはエントリ・ポイント)
接続が確立されると、通信プロセスのペアは連続的なバイト・ストリームを介してデータを送信および受信します。TCP/IPプロトコルは、BS2000およびPOSIXシェルでサポートされています。
TCP/IPプロトコル・サポートは、TCP/IPプロトコルとOracleのNet Foundationレイヤー間で同等の通信機能の解決に使用される標準のインタフェースを実装します。
特定のシステムにTCP/IPプロトコルがインストールされた後に、TNS接続記述子を指定したTCP/IP固有のパラメータを使用して、TCP/IPベースのコミュニティ内でノードを識別します。
特定のTCP/IP接続パラメータは、ADDRESS
キーワード値ペアの一部です。3つのTCP/IP固有のパラメータは、ADDRESS
コンストラクト内に任意の順序で入力できます。OracleのTCP/IPプロトコル・サポートで使用される構文は次のとおりです。
(ADDRESS= (PROTOCOL=TCP) (HOST=hostname) (PORT=port#) )
各パラメータの意味は次のとおりです。
PROTOCOL
は、サポートされるプロトコルを指定します。TCP/IPの場合、値はTCP
です。
HOST
は、ホスト名またはホストのIPアドレスを指定します。
PORT
は、TCP/IPポート番号を指定します。
sales-server
ホスト上のクライアントを指定するTCP/IP ADDRESSの例を次に示します。
(ADDRESS= (PROTOCOL=TCP) (HOST=sales-server) (PORT=1521) )
Bequeath技術では、ネットワーク・リスナーを使用せずにクライアントをデータベースに接続できます。OracleのBequeathプロトコルによって、各クライアント・アプリケーション用のサーバー・プロセスが内部的に生成されます。リモート・ネットワーク・リスナーが行っているのと同じ操作を、ローカルの接続で実行します。
注意: Oracle Database 10g以降、BEQプロトコルはハンドオフ技術を使用することで、前のバージョンのBEQプロトコルと互換性がなくなりました。この機能拡張の結果、Oracle Database 11gアプリケーションはOracle Database 10gより前のバージョンのプロセスを直接生成できなくなり、BEQプロトコルを介して接続できません。 |
Bequeathプロトコルの概要は次のとおりです。
ネットワーク・リスナーを使用しません(そのためリスナー構成が不要です)。
専用サーバーを自動的に生成します。
SQL*PlusなどのOracle Databaseクライアントが同じコンピュータ上で実行中のOracle Databaseインスタンスと通信する場合のローカル接続に使用されます。
専用サーバー・モードでのみ動作します。共有サーバー・モードでは使用できません。
注意: クライアントがDBA ユーザーIDとは異なるIDで実行されている場合、ネット・サービス名を使用し、リスナーを介して目的のデータベースに接続することをお薦めします。 |
共有サーバー・アーキテクチャを制御する初期化パラメータは次のとおりです。
共有サーバー・アーキテクチャの詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。
共有サーバー・アーキテクチャおよび専用サーバー・アーキテクチャは、インスタンス内で同時に機能できます。接続アプリケーションで共有サーバー・アーキテクチャと専用サーバー・アーキテクチャのどちらを使用するかを示す情報を接続記述子に指定します。デフォルトでは、リスナー・プロセスは共有サーバー・アーキテクチャを使用しますが、アプリケーションに専用サーバー・アーキテクチャをかわりに使用させる必要がある場合は、SQLNET.ORA
ファイルでUSE_DEDICATED_SERVER=ON
を設定するか、使用しているネーミング・メソッドでパラメータSERVER
にnet_service_name
を指定する必要があります。SQLNET.ORA
パラメータのUSE_DEDICATED_SERVER=ON
は、パラメータSERVER
を上書きします。
特別に定義されたネット・サービス名を使用して、共有サーバー構成で専用サーバーを参照する方法の例を次に示します。
FINANCE_DED=(DESCRIPTION= (ADDRESS= (PROTOCOL=TCP) (HOST=sales-server) (PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=sales.us.acme.com) (SERVER=dedicated)))
詳細は、『Oracle Database Net Servicesリファレンス』ガイドを参照してください。
共有サーバー・アーキテクチャまたは専用サーバー・アーキテクチャのどちらを使用するかを選択する際に、CPUオーバーヘッドとリソース割当て(タスク、メモリーなど)を対比検討する必要があります。多くのクライアントがごくまれにOracle Databaseを操作する必要があるような状況では、共有サーバー・アーキテクチャの使用が適していますが、ごくわずかのクライアントが定期的にOracle Databaseを操作する必要があるような状況では、専用サーバー・アーキテクチャの使用が適しています。これらの例のように、判断が常に明確であるとはかぎりません。この場合、次の共有サーバーの動的表の情報を使用して、判断に役立てることができます。
V$DISPATCHER
V$QUEUE
V$SHARED_SERVERS
V$SHARED_SERVER_MONITOR
これらの表の詳細は、『Oracle Database管理者ガイド』を参照してください。
このリリースでは、Oracle Advanced Securityのデータの整合性サービスおよび暗号サービスがサポートされています。Secure Sockets Layer (SSL)プロトコルもサポートされています。SSLでは公開鍵インフラストラクチャ(PKI)を使用して、認証、暗号化およびデータの整合性を実現しています。SSLは、証明書や秘密鍵などの認証データをOracle Walletに格納します。
データの整合性サービスまたは暗号サービスあるいはその両方を使用する場合は、SQLNET.ORA
ファイルに適切なパラメータを指定する必要があります。
次のパラメータを使用して、サービス(例: crypto-checksummingまたはencryption)をアクティブにするかどうかを指定します。
SQLNET.CRYPTO_CHECKSUM_CLIENT SQLNET.CRYPTO_CHECKSUM_SERVER SQLNET.ENCRYPTION_CLIENT SQLNET.ENCRYPTION_SERVER
前述の各パラメータのデフォルトはREJECTED
です。
前述の各パラメータには、次の値のうちの1つを設定できます。
値 | 意味 |
---|---|
ACCEPTED |
一方の接続側でREQUESTED またはREQUIRED が指定されており、互換性のあるアルゴリズムが使用可能になっている場合、サービスはアクティブになります。それ以外の場合は、アクティブにはなりません。 |
REJECTED |
サービスはアクティブにはならず、一方の接続側でREQUIRED が指定されている場合、接続は失敗します。 |
REQUESTED |
一方の側でACCEPTED 、REQUESTED またはREQUIRED が指定されており、互換性のあるアルゴリズムが使用可能になっている場合、サービスはアクティブになります。それ以外の場合は、アクティブにはなりません。 |
REQUIRED |
サービスはアクティブになり、一方の接続側でREJECTED が指定されている場合、または互換性のあるアルゴリズムがない場合、接続は失敗します。 |
次のパラメータを使用して、接続の両側の各サービスで使用可能にするアルゴリズムを制御します。
SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER SQLNET.ENCRYPTION_TYPES_CLIENT SQLNET.ENCRYPTION_TYPES_SERVER
これらのパラメータの各値は、カンマで区切られてカッコで括られたアルゴリズム名のリストまたは単一のアルゴリズム名のいずれかです。
デフォルトの暗号化のチェックサム・タイプはMD5で、この暗号化はすべてのアルゴリズムにデフォルト設定されます。
タイプ | 値 |
---|---|
暗号化チェックサム・タイプ | SHA1 、MD5 |
暗号化タイプ | AES256 、RC4_256 、AES192 、3DES168 、AES128 、RC4_128 、3DES112 、RC4_56 、DES 、RC4_40 、DES40 |
パラメータSQLNET.CRYPTO_SEED
を使用して、暗号化鍵の生成時に使用する文字を指定します。文字がランダムなほど、鍵が強力になります。文字列は10から70文字のランダムな文字にする必要があります。これは、暗号化またはチェックサムがオンの場合に必要です。
SQLNET.CRYPTO_SEED="qwertyuiopasdfghjkl;zxcvbnm,.s1"
詳細は、『Oracle Database Net Services管理者ガイド』、『Oracle Database Net Servicesリファレンス』および『Oracle Database Advanced Security管理者ガイド』を参照してください。
次に例を示します。
SQLNET.CRYPTO_CHECKSUM_CLIENT=required SQLNET.CRYPTO_CHECKSUM_TYPES_CLIENT=(md5) SQLNET.ENCRYPTION_CLIENT=accepted SQLNET.ENCRYPTION_TYPES_CLIENT=(aes192,3des168,rc4_128) SQLNET.CRYPTO_SEED="qwertyuiopasdfghjkl;zxcvbnm,.s1"
簡易接続ネーミング・メソッドを使用してデータベースに接続できますが、データベース・アドレスの覚えやすい別名であり、各システムのLISTENER.ORA
ファイルに事前定義したアドレスと一致するサービス名を使用するようにクライアントを構成することをお薦めします。クライアントはこれらのアドレスを使用してネットワーク・リスナーに接続し、このリスナーが接続リクエストを必要なサービスにルーティングします。接続時に、クライアントは、接続先にサービス名を渡します。
LISTENER.ORA
ファイルは、システム上のサービスをリスニングするネットワーク・リスナーの動作を識別および制御します。このファイルには、ネットワーク・リスナーの記述子およびアドレス、リスナーがリスニングするサービスおよび各種の制御パラメータが含まれています。
クライアント構成は、ローカルのネーミング・パラメータ・ファイルTNSNAMES.ORA
またはLDAP準拠のディレクトリ・サーバーを介した送信先ネットワークのアドレスを含むネット・サービス名のリストを作成することによって完了します。クライアントおよび(他のデータベース・サーバーのクライアントである)データベース・サーバーは、接続時にネット・サービス名を使用します。
簡易接続ネーミング・メソッドは、TNSNAMES.ORA
構成ファイルにサービス名を構成せずにデータベースへの接続に使用できます。簡易接続ネーミング・メソッドを使用するには、クライアントの構成ファイルのネーミング・アダプタnames.directory_path
のパラメータにEZCONNECT
がリストされている必要があります。
簡易接続ネーミングは、小規模で単純な環境にのみ適しています。簡易接続ネーミング・メソッドの詳細は、『Oracle Database Net Services管理者ガイド』の簡易接続ネーミング・メソッドの使用に関する説明を参照してください。
ローカル・ネーミングは、TNSNAMES.ORA
構成ファイル内の個別のクライアントに構成された情報を使用して、サービス名をネットワーク・アドレスに解決するための方法を参照します。ローカル・ネーミングを使用するには、クライアントの構成ファイルのネーミング・アダプタnames.directory_path
のパラメータにTNSNAMES
がリストされている必要があります。
ローカル・ネーミングは、変更が少なく、サービスの数が少ない単純な分散ネットワークに非常に適しています。
ディレクトリ・ネーミングは、ディレクトリ・サーバーを使用して、サービス名をネットワーク・アドレスに解決するための方法を参照します。ディレクトリ・サーバーを使用するには、クライアントの構成ファイルのネーミング・アダプタnames.directory_path
のパラメータにLDAP
がリストされていて、次のように、ディレクトリ・サーバーのターゲット・アドレスがパラメータ・ファイルLDAP.ORA
に構成されている必要があります。
# LDAP.ORA Network Configuration File: network.admin.ldap.ora
DEFAULT_ADMIN_CONTEXT = ""
DIRECTORY_SERVERS= (oid_server:389:636)
DIRECTORY_SERVER_TYPE = Your Internet Directory
詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。
次の手順に従ってOracle Names Methodを構成します。
リスナーを開始する前に、リスナーの構成ファイルLISTENER.ORA
を設定する必要があります。このファイルには、リスナーのアドレスおよびリスナーが使用する各種の制御パラメータが含まれています。詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。
BS2000システムでは、Oracle Databaseのタスク、特にPROCESSING-ADMISSION
で、実行中のジョブのユーザーIDとは異なるユーザーIDでジョブを開始するための追加のジョブ・パラメータを定義できます。この技術によって、システム上のすべてのOracleインスタンスで1つのリスナーのみを使用するという利点が提供されます。インスタンスを同じユーザーIDで実行する必要はありません。データベース・コンピュータで1つのリスナーのみを実行する場合は、リスナーの環境ファイルsid
.P
.ORAENV
に次のパラメータを指定する必要があります。
パラメータ | 意味 |
---|---|
BGJPAR |
ENTER ジョブ用のパラメータ |
sid _BGJPAR |
SID によって識別されるENTER 用のパラメータ |
sid _USER |
ジョブを実行するユーザーID |
user _ACCOUNT |
ターゲット・ユーザーIDのアカウント |
user _PASSWORD |
ターゲット・ユーザーIDのパスワード |
次の集中リスナー・プロセス用に構成されたORAENV
ファイルの例は、パラメータの動作方法を示します。このリスナーは、同じユーザーIDで動作するインスタンスとこのORAENV
ファイルを共有できます。理解しやすいように、リスナーおよびインスタンスDEMO
およびDEM1
は、同じユーザーID ORACDEM1
で実行され、インスタンスDEM2
はユーザーID ORACDEM2
で実行されていると想定します。次のパラメータを定義します。
BGJPAR=J-C=JCBORA,START=IMME,CPU-LIMIT=NO,LOGGING=*NO DEM1_BGJPAR=J-C=JCBDEM1,START=IMME,CPU-LIMIT=NO DEM2_USER=ORACDEM2 ORACDEM2_ACCOUNT=O1234 ORACDEM2_PASSWORD=ORACLE
リスナーは、パラメータsid
_BGJPAR
およびsid
_USER
を検索するために、常に同じ順序で実行されます。sid
_BGJPAR
の値が見つからない場合は、リスナーは、パラメータBGJPAR
によって指定された値を使用します。ユーザーIDがsid
_USER
によって指定されている場合は、リスナーは、パラメータuser_ACCOUNT
およびuser_PASSWORD
から処理の許可の取得を試みます。指定されたORAENV
では、リスナーに対して次のシナリオを使用します。
リスナーは、インスタンスDEMO
に対してサーバーを開始する必要があります。パラメータDEMO_BGJPAR
およびDEMO_USER
が定義されていないため、リスナーは、BGJPAR
に定義されている開始パラメータを使用してユーザーID ORACDEM1
でインスタンスDEMO
のサーバーを開始します。
インスタンスDEM1
のサーバーを開始する必要がある場合、リスナーはパラメータDEM1_BGJPAR
およびDEM1_USER
を検索します。この場合、パラメータDEM1_BGJPAR
は評価できますが、このパラメータが定義されていないため、DEM1_USER
の評価は失敗します。そのため、リスナーは開始パラメータJ-C=JCBDEM1,START=IMME,CPU-LIMIT=NO
をENTER-PROCEDURE
コマンドに追加し、ユーザーID ORACDEM1
でジョブを開始します。
ここで、インスタンスDEM2
のサーバーが開始される必要があります。リスナーは、パラメータDEM2_BGJPAR
およびDEM2_USER
を検索します。パラメータDEM2_BGJPAR
は定義されていないため、リスナーはBGJPAR
に定義されている開始パラメータを使用します。一方、パラメータDEM2_USER
は正常に評価でき、値ORACDEM2
を返します。ここで、リスナーは、パラメータORACDEM2_ACCOUNT
およびORACDEM2_PASSWORD
を評価することで処理の許可の取得を試みます。リスナーは、ユーザーID ORACDEM2
で、ENTER-PROCEDURE
にJ-C=JCBORA, START=IMME,CPU-LIMIT=NO,LOGGING=*NO
を指定してサーバー・ジョブを開始します。
リスナー制御ユーティリティLSNRCTL
を使用してリスナーを開始します。
/CALL-PROCEDURE
sid
.P.ORAENV
/START-PROGRAM $ORAC1120.LSNRCTL
enter options
プロンプトが表示されたら、[ENTER]を押してLSNRCTL
プロンプトを表示させます。次のコマンドを入力して、リスナーを開始します。
LSNRCTL> START
listener-name
ネットワーク・クライアントの構成には、クライアントの構成ファイルSQLNET.ORA
および使用しているネーミング・メソッドによっては、構成ファイルLDAP.OR
A
またはTNSNAMES.ORA
のパラメータの追加または編集が必要です。構成パラメータの詳細は、『Oracle Database Net Servicesリファレンス』を参照してください。
ネットワーク接続の検証後、TNSPING
ユーティリティを使用して、目的のOracle Databaseシステムへの接続を検証できます。
/CALL-PROCEDURE
sid
.P.ORAENV
/START-PROGRAM $ORAC1120.TNSPING
enter options
プロンプトが表示されたら、ネーミング・サービスで指定したデータベース・サービスのネット・サービス名を入力します。すべてが正常に動作した場合は、次のようなメッセージが返されます。
TNS Ping Utility for BS2000/OSD S series: Version 11.2.0.2.0 -
Production on 12-JUN-2012 12:07:40
Used parameter files: network.admin.sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = sales-server)(PORT = 3055)))
(CONNECT_DATA = (SERVICE_NAME = sales.us.acme.com)))
OK (40 msec)
詳細は、『Oracle Database Net Services管理者ガイド』を参照してください。
エラー・メッセージのリストおよびエラーを修正するための手順を次に示します。
リスナーを開始できませんでした。LSNRCTL
が次のエラー・メッセージを返します。
LSNRCTL> start Starting /BS2/$ORAC1120.tnslsnr: please wait... TNS-12547: TNS:lost contact TNS-12560: TNS:protocol adapter error TNS-00517: Lost contact BS2000 Error: 145: Connection timed out LSNRCTL>
サブシステムのPOSIX
が起動され実行中であることを確認します。
BCAM
の軽量リゾルバであるLWRESD
が適切に構成され、実行されていることを確認してください。
リスナーがログ・ファイルを開けませんでした。
リスナーのログ・ファイル(たとえばNETWORK.LOG.LISTENER.LOG
)のアクセスと読取りが可能かどうかを確認します。
BS2000のSDFコマンドREPAIR-DISK-FILES
を使用して、リスナーのログ・ファイルを検証します。
リスナーのログ・ファイルを修正できない場合は、ファイルを削除します。
クライアントがORA-12545を報告します。
クライアントがORA-12535を報告します。
IPCプロトコルを使用している場合は、BCAM
の接続タイムアウト・パラメータを確認します(BCSHOW
コマンドを使用)。このパラメータは600秒以上に設定する必要があります。
クライアントがORA-03113を報告します。
SQLNET.EXPIRE_TIME
パラメータがサーバーに設定されているかどうかを確認します。パラメータが設定されている場合は、BCSHOWコマンドを使用してBCAM LETTER-TIMER
を確認します。LETTER-TIME
がSQLNET.EXPIRE_TIME
より短い場合は、クライアントが稼働しているかどうかを確認するためにサーバーによって送信されるデータが、LETTER-TIME
によって制限される有効期間中に読み取れない可能性があります。その結果、クライアントはSQLNET.LOG
ファイルに、Broken pipeを記録します。
ns main err code: 12547 ns (2) err code: 12560 nt main err code: 517 nt (2) err code: 32 nt OS err code: 0x0040002c
この問題は、LETTER-TIMER
を無限に設定することによって解決できます。