it-swarm.asia

كيفية تكوين Oracle Listener بدون SID_LIST_LISTENER في listener.ora؟

يمكنني الوصول إلى خادم Oracle 11g باستخدام listener.ora التالي

# 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 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 ، أي استخدام مستمع. أو شيء من هذا القبيل من الخادم الآخر الذي أحصل عليه

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.

تترجم الرسالة الأخيرة إلى

المستمع لا يدعم أي خدمات.

ليس لدي أي فكرة ، لماذا يتصرف هذان الخادمان بشكل مختلف. لم أجد تلميحات في ملفات التكوين ولا في مفاتيح التسجيل.

تحرير:

أعتقد أن الإجابة مدفونة في مكان ما في هذا المنشور بواسطة Burleson Consulting ، لكني لا أجد المكان ، حيث تم تكوينه بالفعل.

13
bernd_k

متأخر قليلا للحفلة على هذا ...

يجب أن تسجل قاعدة البيانات مع المستمع تلقائيًا ، مما يجعل SID_LIST إدخالات زائدة عن الحاجة ، ويبدو أن هذا يحدث مع 192.168.111.111 بيئة. إذا بدأ المستمع بعد قاعدة البيانات ، فقد يستغرق الأمر بعض الوقت للتسجيل ، وقد تكون هناك حالات لا يقوم فيها بذلك على الإطلاق.

يمكنك محاولة التسجيل باستخدام alter system register أمر. تستخدم قاعدة البيانات LOCAL_LISTENER المعلمة لتحديد المستمع الذي يجب أن تسجل معه. افتراضيًا ، يكون هذا فارغًا وفقًا لـ التوثيق ما يعادل 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 بدلاً من قاعدة البيانات ؛ وحتى هذا يبدو مفيدًا حقًا فقط إذا كنت تقوم باستنساخ قواعد البيانات بين الأجهزة ، أو إذا كان المستمعون وقواعد البيانات الخاصة بك تعمل تحت حسابات مختلفة (على سبيل المثال مع مستخدم grid لـ RAC/HA).

هناك المزيد على LOCAL_LISTENERهنا .

تحرير: و هذا يبدو شاملاً تمامًا.

14
Alex Poole