#topicpath
----
#contents
----
* 概要 [#v8616437]

sqlplusから直接繋ぐだけでは管理作業しかできないので、
DBサーバとしてネットワーク経由で接続できるようにします。

$ORACLE_HOME/network/admin/ 以下のファイルを設定します。

samples/ にサンプルがあるので、
必要に応じてコピーして使います。

* リスナーの設定 (listener.ora) [#tbc5a308]

リスナーの定義(LISTENER)と、
そこからディスパッチするインスタンス(SID_LIST_LISTENER)を書きます。

動的にインスタンスを登録することもできますが、
このように明示的に定義することもできます。

#pre{{
[oracle@ora1 ~]$ cat $ORACLE_HOME/network/admin/listener.ora
LISTENER =
  (ADDRESS_LIST=
    (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))
    (ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY)))

SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME=orcl)
      (SID_NAME=orcl)
      (ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1)))
}}

* クライアントの設定 (tnsnames.ora) [#ub36c65a]

Oracleの世界での名前解決方法を書きます。

ここでは orcl という名前でつながるというような定義を書いています。

#pre{{
[oracle@ora1 ~]$ cat $ORACLE_HOME/network/admin/tnsnames.ora
orcl=
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.221)(PORT=1521))
    (CONNECT_DATA=
      (SERVICE_NAME=orcl)))
}}

たとえば RAC の場合では複数のアドレスにロードバランスすることや、
識別子をサービスごとに定義するなどの方法が
よく使われています。
シングルインスタンスでも、テスト用のサーバと本番用のサーバで繋ぐ先を変えるということもあるかもしれません。

* パスワードファイルの作成 [#j95ceacd]

SYSユーザで接続できるようにするため、
パスワードファイルを作成しておきます。

#pre{{
[oracle@ora1 ~]$ orapwd file=$ORACLE_HOME/dbs/orapworcl password=oracle
}}

* リスナーの起動 [#w1376db2]

lsnrctlコマンドを使います。

#pre{{
[oracle@ora1 ~]$ lsnrctl start

LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 15-8月 -2008 17:14:23

Copyright (c) 1991, 2007, Oracle.  All rights reserved.
...
リスニング・エンドポイントのサマリー...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY)))
サービスのサマリー...
サービス"orcl"には、1件のインスタンスがあります。
  インスタンス"orcl"、状態UNKNOWNには、このサービスに対する1件のハンドラがあります...
コマンドは正常に終了しました。
}}

* 動作確認 [#yd4f873f]

tnspingを使うことで、tnsnames.oraで定義した名前で
listener.oraで定義したサービスに正しく届いているかどうかが確認できます。

(出力は改行しています)

#pre{{
[oracle@ora1 ~]$ tnsping orcl

TNS Ping Utility for Linux: Version 11.1.0.6.0 - Production on 15-8月 -2008 17:16:58

Copyright (c) 1997, 2007, Oracle.  All rights reserved.

パラメータ・ファイルを使用しました:


エイリアスを解決するためにTNSNAMESアダプタを使用しました。
Attempting to contact (DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.221)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=orcl)))
Attempting to contact (DESCRIPTION= 
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.221)(PORT=1521)) 
(CONNECT_DATA= (SERVICE_NAME=orcl)))
OK (10ミリ秒)
}}

もちろん sqlplus で接続することもできます。

#pre{{
[oracle@ora1 ~]$ sqlplus sys/oracle@orcl as sysdba

SQL*Plus: Release 11.1.0.6.0 - Production on 金 8月 15 17:18:20 2008

Copyright (c) 1982, 2007, Oracle.  All rights reserved.



Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
に接続されました。
SQL>
}}

* 参考文献 [#nab79d88]

ほかにも接続は奥が深いです。
例によってマニュアルに詳しく載っているので
参考にしましょう。

- [[Oracle Database Net Services管理者ガイド 11g リリース1(11.1):http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/network.111/E05725-03/toc.htm]]

----
#comment

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS