次のlistener.oraを使用してOracle 11gサーバーにアクセスできます
# listener.ora Network Configuration File: D:\app\Administrator\product\11.1.0\db_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(Host = 192.168.111.111)(PORT = 1521))
)
)
そして、私が確認できるように、それはそのサーバー上のすべてのインスタンスを提供します
lsnrctl status
私の問題は、仮想マシンにOracle 11gのフレッシュインストールを作成するときに、listener.oraを使用する必要があることです。
# listener.ora Network Configuration File: C:\app\Oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(Oracle_HOME = C:\app\Oracle\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:C:\app\Oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(Oracle_HOME = C:\app\Oracle\product\11.2.0\dbhome_1)
(SID_NAME = orcl)
)
(SID_DESC =
(GLOBAL_DBNAME = BMBK)
(Oracle_HOME = C:\app\Oracle\product\11.2.0\dbhome_1)
(SID_NAME = BMBK)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(Host = 169.254.200.102)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(Host = localhost)(PORT = 1521))
)
)
ADR_BASE_LISTENER = C:\app\Oracle
SID_LIST_LISTENERエンティティがない場合、つまり、取得した他のサーバーからそのようなlistener.oraを使用する
C:\Windows\system32>lsnrctl status
LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 27-NOV-2011 10:14
:24
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Anmeldung bei (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS des LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Produ
ction
Startdatum 27-NOV-2011 10:14:08
Uptime 0 Tage 0 Std. 0 Min. 18 Sek.
Trace-Ebene off
Sicherheit ON: Local OS Authentication
SNMP OFF
Parameterdatei des Listener C:\app\Oracle\product\11.2.0\dbhome_1\network\admin\
listener.ora
Log-Datei des Listener c:\app\Oracle\diag\tnslsnr\WSV-BK-W7en64-S\listener\al
ert\log.xml
Zusammenfassung Listening-Endpunkte...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=169.254.200.102)(PORT=1521)))
Der Listener unterst³tzt keine Services
Der Befehl wurde erfolgreich ausgef³hrt.
最後のメッセージは次のように変換されます
リスナーはサービスをサポートしていません。
これら2つのサーバーの動作が異なる理由はわかりません。構成ファイルやレジストリキーにヒントは見つかりませんでした。
編集:
答えはこの投稿のどこかに埋もれていると思います Burleson Consulting ですが、実際に構成されている場所は見つかりません。
これでパーティーに少し遅れました...
データベースは自動的にリスナーに登録され、SID_LIST
エントリが冗長になります。これは、192.168.111.111
環境で発生しているようです。リスナーがデータベースの後に起動された場合、リスナーが登録されるまでに時間がかかる場合があり、それがまったく行われない場合があります。
alter system register
コマンドを使用して登録を試みることができます。データベースはLOCAL_LISTENER
パラメーターを使用して、登録するリスナーを識別します。デフォルトではnullです。これは documentation によるとhostname:1521
と同等です。
alter system register
によってサービスがlsnrctl status
の出力に表示されない場合、ホスト名を識別または解決できないか、リスナーがアドレスとは異なるアドレスに解決しているのではないかと思います。オン、またはLOCAL_LISTENER
が仮想ボックスに対して無効なものに設定されています。 LOCAL_LISTENER
は、listener.ora
に直接一致するように設定できます。例:
alter system set LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(Host=localhost)(PORT=1521))' scope=both;
alter system register;
または、tnsnames.ora
にこれらの詳細が含まれているエイリアスを使用できます。たとえば、次のようなtnsnames.ora
エントリを追加するとします。
MY_LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(Host = localhost)(PORT = 1521))
)
次に、次のことができます。
alter system set local_listener='MY_LISTENER' scope=both;
alter system register;
tnsnames.ora
バージョンを使用することで得られる本当の利点は、おそらく簡潔さは別として、データベースではなくSQL * Netファイルの構成を変更できることです。マシン間でデータベースのクローンを作成している場合、またはリスナーとデータベースを異なるアカウントで実行している場合(RAC/HAのgrid
ユーザーを使用している場合など)は、それが本当に役立つように思えます。
LOCAL_LISTENER
here の詳細があります。
編集:そして this は非常に包括的なようです。