#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