この項では、データベースへのネットワーク接続を管理する方法について説明します。次のトピックが含まれています。
Oracle Database Express Edition (Oracle Database XE)では、クライアント・アプリケーションからのネットワーク経由リモート接続とローカル接続の両方がサポートされています。リモート・クライアント・アプリケーションとデータベースは、Oracle Netを介して通信します。Oracle Netは、リモート・コンピュータとOracle Database XEホスト・コンピュータの両方に常駐するソフトウェア・レイヤーです。Oracle Netは、クライアント・アプリケーションとデータベース間の通信を確立し、TCP/IPを使用して両者の間でメッセージを交換します。Oracle Netは、Oracle Database XEおよびOracle Database Express Edition Clientをインストールすると自動的にインストールされます。
Oracle Database XEのインストールでOracle Netとともに組み込まれるのは、Oracle Netリスナーで、一般的にリスナーと呼ばれます。それは、特定のTCP/IPポートの接続要求をリスニングするホスト・プロセスです。リスナーは、クライアント・アプリケーションから有効な接続要求を受信すると、その接続要求をデータベースに送信します。その後、クライアント・アプリケーションとデータベースは直接通信します。
表4-1に、リスナーで処理される接続要求のタイプを示します。
リスナーを手動で停止することで特定のタイプの接続要求を無効にし、リスナーを再起動することでそれらを再度有効にすることができます。(Oracle Database XEをインストールしたとき、およびOracle Database XEのホスト・コンピュータを再起動したときは、自動的にリスナーが起動されます。)
表4-2に、リスナーの起動を必要とする接続のタイプを示します。
表に示しているように、リスナーを停止すると、ローカル・データベース接続要求以外のすべての接続要求は無効になります。
リスナーの構成
Oracle Database XEのインストール・プロセス中またはインストール後に、データベースとHTTPの両方の接続要求をリスナーがリスニングするポートを変更できます。インストール後にポート番号を変更する方法の詳細は、「リスナーのポート番号の変更」を参照してください。
リモートHTTP接続の初期無効化
セキュリティ対策として、リモートHTTP接続要求は、最初は無効になっています。これは、ユーザーがリモートHTTP接続を有効にするまで、リモート・ユーザーはOracle Database XEのグラフィカル・ユーザー・インタフェースを使用できないことを意味します。手順については、「データベースへのリモートHTTP接続の有効化」を参照してください。
リスナーのステータスは、リスナーが起動されているかどうかを判別し、リスナーのプロパティ(リスナーがリスニングするTCP/IPポート番号など)を確認するために表示します。これを行うには、リスナー制御(lsnrctl)
ユーティリティを使用します。
リスナーのステータスを表示する手順は、次のとおりです。
次の操作を1つ実行します。
Linuxの場合: ターミナル・セッションを開始し、Oracle Database XEのホスト・コンピュータにoracle
ユーザー・アカウントでログインします。
Windowsの場合: Oracle Database XEのホスト・コンピュータに、Oracle Database XEをインストールしたユーザーでログインし、コマンド・ウィンドウを開きます。
Linuxの場合は、環境変数が「Linuxプラットフォームの環境変数の設定」の手順に従って設定されていることを確認します。
次のコマンドを入力します。
LSNRCTL STATUS
リスナーが起動していない場合は、次のエラー・メッセージが表示されます。
TNS-12541: TNS:no listener TNS-12560: TNS:protocol adapter error TNS-00511: No listener
リスナーが起動している場合は、次のようなレポートが表示されます。
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for 32-bit Windows: Version 11.2.0.2.0 - Production Start Date 08-MAR-2011 16:12:26 Uptime 0 days 1 hr. 57 min. 59 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Default Service XE Listener Parameter File C:\oraclexe\app\oracle\product\11.2.0\server\network\admin\listener.ora Listener Log File C:\oraclexe\app\oracle\diag\tnslsnr\user1-pc\listener\alert\log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=user1-pc.example.com)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=user1-pc.example.com)(PORT=8080))(Presentation=HTTP)(Session=RAW)) Services Summary... Service "CLRExtProc" has 1 instance(s). Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "PLSExtProc" has 1 instance(s). Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service... Service "XEXDB" has 1 instance(s). Instance "xe", status READY, has 1 handler(s) for this service... Service "xe" has 1 instance(s). Instance "xe", status READY, has 1 handler(s) for this service... The command completed successfully
前述のレポートの太字のテキストは、確認する項目を示しています。それぞれの説明を次に示します。
(PORT=1521)
リスナーは、ポート1521で、Oracle Net経由のデータベース接続をリスニングしています。
(PORT=8080))(Presentation=HTTP)
リスナーは、ポート8080で、HTTPによるデータベース接続をリスニングしています。
Service "XE" has 1 instance(s)
およびInstance "XE", status READY
Oracle Database XEはリスナーに正しく登録され、接続を受入れ可能な状態です。
Oracle Database Express Edition (Oracle Database XE)をインストールしたとき、およびOracle Database XEが実行されているコンピュータが再起動されるたびに、リスナーは自動的に起動されるように構成されます。次の理由から、リスナーを停止して再起動することがあります。
システム・エラーからのリカバリを行うため
リモート接続要求を一時的にブロックするため
リスナーを停止してリモート接続要求を無効にし、リスナーを再起動してリモート接続要求を有効にします。
リスナーがリスニングするTCPポート番号を変更するため
詳細は、「リスナーのポート番号の変更」を参照してください。
リスナーの停止
次の操作を1つ実行します。
Linuxの場合: ターミナル・セッションを開始し、Oracle Database XEのホスト・コンピュータにoracle
ユーザー・アカウントでログインします。
Windowsの場合: Oracle Database XEのホスト・コンピュータに、Oracle Database XEをインストールしたユーザーでログインし、コマンド・ウィンドウを開きます。
Linuxの場合は、環境変数が「Linuxプラットフォームの環境変数の設定」の手順に従って設定されていることを確認します。
次のコマンドを入力します。
LSNRCTL STOP
コマンドが成功した場合は、次の出力が表示されます。
Linuxの場合:
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myhost)(PORT=1521))) The command completed successfully
Windowsの場合:
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) The command completed successfully
リスナーがすでに停止している場合は、1行以上の「TNS: no listener
」メッセージが表示されます。
リスナーの起動
次の操作を1つ実行します。
Linuxの場合: ターミナル・セッションを開始し、Oracle Database XEのホスト・コンピュータにoracle
ユーザー・アカウントでログインします。
Windowsの場合: Oracle Database XEのホスト・コンピュータに、Oracle Database XEをインストールしたユーザーでログインし、コマンド・ウィンドウを開きます。
Linuxの場合は、環境変数が「Linuxプラットフォームの環境変数の設定」の手順に従って設定されていることを確認します。
次のコマンドを入力します。
LSNRCTL START
成功した場合は、「リスナーのステータスの表示」に示しているレポートが表示されます。
注意: データベースの実行中にリスナーを停止して起動した場合、データベースはリスナーへの再登録を行って接続の受入れを開始するため、1分ほど時間がかかることがあります。データベースが接続を受入れ可能な状態であるかどうかを判別するには、レポートに次の行が表示されるまで、繰り返しlsnrctl status コマンドを実行してください。
Service "XE" has 1 instance(s). Instance "XE", status READY, has 1 handler(s) for this service... |
デフォルトのリスナー・ポート番号は、ポート番号が別のTCP/IPサービスと競合する場合にのみ変更する必要があります。インストール時(Windows)または構成時(Linux)に、リスナーのポート番号を変更する機会が与えられます。この項では、インストール後または構成後にポート番号を変更する方法について説明します。この章の内容は、次のとおりです。
データベース接続要求のリスナー・ポート番号を変更する場合は、それ以降のすべてのデータベース接続要求で、必ず新しいポート番号を使用する必要があります。これは、接続要求(たとえば、「SQLコマンドラインを使用したリモートでの接続」で説明されている接続要求など)に、ポート番号を明示的に含める必要があることを意味します。
たとえば、データベース接続要求のポート番号を1522に変更した場合、それ以降のSQLコマンドライン(SQL*Plus)のconnect
文は、次のような文にする必要があります(Oracle Database Express Edition Clientからの接続を想定しています)。
connect system/mypassword@myhost.example.com:1522
たとえば、Oracle Database XEのホスト・コンピュータの名前がmyhost.example.com
で、このコンピュータにインストールする新しいソフトウェア・パッケージでTCPポート番号1521が必要であると仮定します。また、そのソフトウェア・パッケージのポート番号は構成できないため、Oracle Database XEを再構成して、ポート番号の競合を解決する必要があると仮定します。データベース接続要求のリスナー・ポート番号を1522に変更することにします。
データベース接続要求のリスナー・ポート番号を1522に変更する手順は、次のとおりです。
リスナーを停止します。
手順については、「リスナーの停止および起動」を参照してください。
テキスト・エディタでlistener.ora
ファイルを開きます。
表4-3に、各プラットフォームのこのファイルの場所を示します。
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = myhost)(PORT = 1521))
)
)
太字で示している行は、ファイルに存在する場合としない場合があります。
(PORT
=
1521)
のテキストを(PORT
=
1522)
に変更します。
変更後のlistener.ora
ファイルを保存します。
リスナーを起動します。
手順については、「リスナーの停止および起動」を参照してください。
SQLコマンドラインを起動し、SYSTEM
ユーザーでデータベースに接続します。
手順については、「SQLコマンドラインを使用したローカルでの接続」を参照してください。SYSTEM
のパスワードを指定する必要があります。このパスワードは、Oracle Database XEのインストール時(Windows)または構成時(Linux)に設定します。
次の2つのコマンドを入力します。
ALTER SYSTEM SET LOCAL_LISTENER = "(ADDRESS=(PROTOCOL=TCP)(HOST=myhost.example.com)(PORT=1522))"; ALTER SYSTEM REGISTER;
SQLコマンドラインを終了し、lsnrctl
status
コマンドを実行して、ポート番号の変更を確認します。
ステータス・レポートの「Listening Endpoints Summary」セクションに新しいポート番号が表示され、レポートに次の行が含まれているはずです。
Service "XE" has 1 instance(s). Instance "XE", status READY, has 1 handler(s) for this service...
HTTP接続要求のリスナー・ポート番号を変更する場合は、それ以降のすべてのHTTP接続要求で、必ず新しいポート番号を使用する必要があります。
たとえば、HTTPリクエストのリスナー・ポート番号を8087に変更した場合は、Oracle Application Expressのログイン・ページにローカルでアクセスするには、次のURLを使用する必要があります。
http://127.0.0.1:8087/apex
注意: HTTPのリスナー・ポート番号を変更した場合は、デスクトップの「スタート・ガイド」メニュー項目を使用してデータベース・ホームページを開けなくなります。次の手順に含まれているオプションのステップで、このメニュー項目が新しいポート番号で機能するように変更する方法を説明しています。 |
HTTP接続要求のリスナー・ポート番号を変更する手順は、次のとおりです。
次の操作を1つ実行します。
Linuxの場合: ターミナル・セッションを開始し、Oracle Database XEのホスト・コンピュータにoracle
ユーザー・アカウントでログインします。
Windowsの場合: Oracle Database XEのホスト・コンピュータに、Oracle Database XEをインストールしたユーザーでログインし、コマンド・ウィンドウを開きます。
Linuxの場合は、環境変数が「Linuxプラットフォームの環境変数の設定」の手順に従って設定されていることを確認します。
リスナーが起動していることを確認します。
手順については、「リスナーのステータスの表示」および「リスナーの停止および起動」を参照してください。
オペレーティング・システムのプロンプトで次のコマンドを入力し、SQLコマンドラインを起動します。
SQLPLUS /NOLOG
SQLコマンドラインのプロンプトで、次のコマンドを入力します。
CONNECT SYSTEM/password
ここで、password
はSYSTEM
のパスワードで、Oracle Database XEのインストール時(Windows)または構成時(Linux)に設定したものです。
SQLコマンドラインのプロンプトで、次のコマンドを入力します。
EXEC DBMS_XDB.SETHTTPPORT(nnnn);
ここで、nnnnは、HTTP接続要求に使用する新しいポート番号を示します。必ず、未使用のポート番号を選択してください。
たとえば、HTTP接続要求にポート番号8087を使用するには、次のコマンドを入力します。
EXEC DBMS_XDB.SETHTTPPORT(8087);
コマンドが成功した場合は、次のメッセージが表示されます。
PL/SQL procedure successfully completed.
(exit
コマンドを入力して)SQLコマンドラインを終了し、リスナーのステータスを表示して、ポート番号の変更を確認します。
手順については、「リスナーのステータスの表示」を参照してください。ステータス・レポートの「Listening Endpoints Summary」セクションに新しいポート番号が表示されます。
(オプション) デスクトップの「スタート・ガイド」コマンドが新しいポート番号で機能するようにするには、このコマンドで使用されるスクリプトまたはショートカット内のポート番号を変更します。次の表に、変更する必要がある各プラットフォームのスクリプトまたはショートカットを示します。
プラットフォーム | HTTP接続要求のリスナー・ポートを変更した場合に変更するスクリプトまたはショートカット |
---|---|
Linux | /usr/lib/oracle/xe/app/oracle/product/11.2.0/server/config/scripts/DatabaseHomePage.sh |
Windows | C:\oraclexe\app\oracle\product\11.2.0\server\Database_homepage |
インストール後、HTTPプロトコルでのデータベース接続要求は、Oracle Database XEをインストールしたコンピュータでのみ有効になります。これは、リモート・ユーザーは、ローカル・システム上のOracle Application Expressを使用して作成したアプリケーションにアクセスできないことを意味します。管理者であるユーザーは、リモート・ユーザーのHTTPアクセスを有効にすることができ、そうすると、リモート・ユーザーはOracle Database XEのグラフィカル・ユーザー・インタフェースにアクセスできるようになります。
セキュリティ上の注意: Oracle Database XEへのリモートHTTPアクセスでは、ブラウザとデータベースの間で交換されるすべての情報は平文で、データベース・ユーザー名やパスワードなども含めて暗号化されません。これが懸念材料となる場合は、データベースへのリモートHTTP接続は有効にしないでください。 |
SQLコマンドラインを使用したリモートHTTP接続の有効化
SQLコマンドラインを使用して、リモートHTTP接続要求を有効にする手順は、次のとおりです。
SQLコマンドラインを起動し、SYSTEM
ユーザーでデータベースに接続します。Oracle Database XEのインストール時(Windows)または構成時(Linux)に割り当てたSYSTEM
のパスワードを指定します。
手順については、「SQLコマンドラインを使用したローカルでの接続」または「SQLコマンドラインを使用したリモートでの接続」を参照してください。
SQLコマンドラインのプロンプトで、次のコマンドを入力します。
EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);