it-swarm.asia

Bagaimana cara mengkonfigurasi Pendengar Oracle tanpa SID_LIST_LISTENER di listener.ora?

Saya memiliki akses ke server Oracle 11g menggunakan listener.ora berikut

# 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))
    )
  )

dan itu melayani semua contoh di server itu, seperti yang saya bisa verifikasi oleh

lsnrctl status

Masalah saya adalah, bahwa ketika saya membuat instalasi baru Oracle 11g di mesin virtual, saya harus menggunakan listener.ora seperti

# 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

Tanpa SID_LIST_LISTENER masuk, mis. Menggunakan listener.ora seperti itu dari server lain yang saya dapatkan

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.

Pesan terakhir diterjemahkan menjadi

Pendengar tidak mendukung Layanan.

Saya tidak tahu, mengapa kedua server ini berperilaku berbeda. Saya tidak menemukan petunjuk dalam file konfigurasi atau kunci registri.

Edit:

Saya kira jawabannya ada di suatu tempat terkubur dalam posting ini oleh Burleson Consulting , tapi saya tidak menemukan tempat, di mana itu sebenarnya dikonfigurasi.

13
bernd_k

Agak terlambat ke pesta yang satu ini ...

Basis data harus mendaftar dengan pendengar secara otomatis, membuat entri SID_LIST Berlebihan, dan ini tampaknya terjadi pada lingkungan 192.168.111.111 Anda. Jika pendengar dimulai setelah basis data, perlu beberapa saat untuk mendaftar, dan mungkin ada situasi di mana ia tidak melakukannya sama sekali.

Anda dapat mencoba membuatnya terdaftar dengan perintah alter system register. Basis data menggunakan parameter LOCAL_LISTENER Untuk mengidentifikasi pendengar yang harus mendaftar. Secara default itu adalah nol, yang menurut dokumentasi setara dengan hostname:1521.

Jika alter system register Tidak membuat layanan muncul dalam output lsnrctl status Maka saya menduga itu tidak dapat mengidentifikasi nama host atau mengatasinya, atau itu menyelesaikan ke alamat yang berbeda dari yang pendengar aktif, atau LOCAL_LISTENER disetel ke sesuatu yang tidak valid untuk kotak virtual. Anda dapat mengatur LOCAL_LISTENER Untuk cocok dengan listener.ora Secara langsung, mis:

alter system set LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(Host=localhost)(PORT=1521))' scope=both;
alter system register;

Atau Anda dapat menggunakan alias yang memiliki detail itu di tnsnames.ora Anda. Misalnya, jika Anda menambahkan entri tnsnames.ora Seperti:

MY_LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(Host = localhost)(PORT = 1521))
  )

Maka Anda bisa:

alter system set local_listener='MY_LISTENER' scope=both;
alter system register;

Satu-satunya keuntungan nyata yang dapat saya lihat dari menggunakan versi tnsnames.ora, Selain dari singkatnya, adalah bahwa Anda dapat mengubah konfigurasi dalam file SQL * Net daripada dalam database; dan bahkan itu hanya benar-benar tampak berguna jika Anda mengkloning basis data antar mesin, atau menyuruh pendengar dan basis data Anda berjalan di akun yang berbeda (mis. dengan pengguna grid untuk RAC/HA).

Ada lebih banyak tentang LOCAL_LISTENERdi sini .

Edit: Dan ini tampaknya cukup komprehensif.

14
Alex Poole