#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