سؤال

أحاول الاتصال بـ Oracle 11G المثبت على Linux EL 5 والحصول على الخطأ التالي

SQL> connect sys/password@ud06 as sysdba
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor

مستمع my under under network/admin هو كما يلي

LISTENER=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=ud06)(PORT=1521))
      (ADDRESS=(PROTOCOL=ipc)(KEY=extproc))))

SID_LIST_LISTENER=
  (SID_LIST=
    (SID_DESC=
      (GLOBAL_DBNAME=orcl)
      (ORACLE_HOME=/home/oracle/app/oracle/product/11g)
      (SID_NAME=orcl))
    (SID_DESC=
      (SID_NAME=plsextproc)
      (ORACLE_HOME=/home/oracle/app/oracle/product/11g)
      (PROGRAM=extproc)))

بلدي tnsnames.ora كما يلي

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

UD06=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ud06)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

يظهر حالتي LSNRCTL على النحو التالي:

LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ud06.us.server.com)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                17-FEB-2010 16:23:06
Uptime                    0 days 0 hr. 12 min. 33 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /home/oracle/app/oracle/product/11g/network/admin/listener.ora
Listener Log File         /home/oracle/app/oracle/product/11g/log/diag/tnslsnr/ud06/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ud06.us.server.com)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=extproc)))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
Service "plsextproc" has 1 instance(s).
  Instance "plsextproc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
هل كانت مفيدة؟

المحلول

هل يمكنك Ping UD06 بنجاح (مثل UD06 ، وليس UD06.us.server.com)؟

ماذا يفعل الأمر

lsnrctl services

تبين؟

تحرير: يبدو لي أن اسم مثيل قاعدة البيانات ليس في الواقع "orcl"؟ ما يخبرني به إخراج خدمات LSNRCTL هو أن خدمة "orcl" ، على الرغم من أنها محددة في ملف المستمع.

هل يمكنك تسجيل الدخول باستخدام اتصال مباشر على الخادم؟ إذا كان الأمر كذلك ، فما الذي تستخدمه كقيمة متغيرة البيئة Oracle_SID؟ تسجيل الدخول كمستخدم SYS وإصدار الأمر:

تغيير سجل النظام ؛

ثم قم بإصدار أمر خدمات LSNRCTL مرة أخرى ومعرفة ما إذا لم يظهر مثيل إضافي.

أيضًا ، كما يشير أليكس ، يقوم أمر TNSPing بالإبلاغ عن اسم خدمة مؤهل بالكامل. قم بتحرير ملف sqlnet.ora وقم بتعيين قيمة names.default_domain إلى NULL إذا كان لها قيمة.

تحرير 2: هل tnsping UD06 على الخادم الشغل؟ أم أن افتراض أن العميل والخادم على أنظمة مختلفة خاطئين؟

نصائح أخرى

إجابة هذه المشكلة بسيطة للغاية. لا تقلق بشأن ملفات .ora أو أي تكوين آخر. أوراكل يفعل كل هذه مثالية فقط.

فقط أثناء الاتصال عبر سطر الأوامر ، يتم الخلط بينه وبين كلمات المرور التي تحتوي على رمز @.

لذلك أثناء الاتصال من خلال سطر الأوامر SQL ، لا تستخدم كلمة مرور مع "@" فيه. ما عليك سوى استخدام واجهة الويب لإنشاء حساب يحتوي على كلمة مرور بدون رمز "@" فيه.

إنه!! تم حل المشكلة. كنت كسر رأسي لبضعة أيام ، والآن تم حل مشكلتي !!

ال SERVICE_NAME في ال tnsping الإخراج لا يتطابق مع الإدخال في tnsnames.ora; ؛ هل هذا الملف من مربع Windows أم مربع Linux؟ يبدو أنك لا تملك محليًا (Windows) tnsnames.ora دخول u06 ويخمن ما يجب أن يوسعه اسم الخدمة - أعتقد أن هذا هو ما تعنيه الإشارة إلى محول اسم المضيف.

لقد واجهت أيضًا ORA-12154: TNS: لم أستطع حل معرف الاتصال المحدد ، وإضافة المستخدم الذي يحاول الاتصال بمجموعة Oinstall من Oracle التي تم إصلاحها.

جرب أولاً ما إذا كان مثيل Oracle قد بدأ:

للنوافذ:

start-> لوحة التكوين-> الإدارة touls-> services-> oracleserviceorcl (مثيلتي بالمناسبة)-> ابدأ

توفير سلسلة الاتصال مثل هذا:

ServerName: Port/Servicename ؛ اسم المستخدم ؛ كلمة المرور

Add connection image

كنت أيضًا أواجه نفس الخطأ ، جرب هذا الرمز:

SQL> conn  hr/hr  @pdborcl;

وإذا وجدت نفس الخطأ ، فهذا يعني أن لديك اسم قاعدة بيانات قابلة للتوصيل مختلف. تحقق من اسم قاعدة البيانات القابلة للتوصيل عن طريق كتابة الأمر التالي في sqlplus

sql> SELECT  name,  con_id  FROM  v$pdbs;

لقد أصلحت هذه المشكلة باستخدام هذه الخطوات.

بادئ ذي بدء ، حدث هذا الخطأ ، إذا لم تقم بتثبيت نفس الدليل أو محرك الأقراص.

لكن الجواب هنا.

  1. ويندوز تسجيل الدخول كمدير.
  2. اذهب إلى لوحة التحكم.
  3. خصائص النظام وانقر فوق Enviroment
  4. ابحث عن متغير نظام التشغيل وتغيير الاسم كـ "TNS_ADMIN"

    enter image description here

  5. وتغيير القيمة كـ "عنوان دليل TNSNAMES"enter image description here

  6. أعد تشغيل النظام.

  7. المراهنة.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top