ชื่อ Oracle TNS ไม่แสดงเมื่อเพิ่มการเชื่อมต่อใหม่กับ SQL Developer


93

ฉันกำลังพยายามเชื่อมต่อกับฐานข้อมูล Oracle กับ SQL Developer

ฉันได้ติดตั้งไดรเวอร์. Net oracle และวางtnsnames.oraไฟล์ไว้ที่
C:\Oracle\product\11.1.0\client_1\Network\Admin

ฉันใช้รูปแบบต่อไปนี้ใน tnsnames.ora:

dev =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.XXX.XXX)(PORT = XXXX))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = idpdev2)
    )
  )

ใน SQL Developer เมื่อฉันพยายามสร้างการเชื่อมต่อใหม่จะไม่มีชื่อ TNS ปรากฏเป็นตัวเลือก

มีบางอย่างที่ฉันขาดหายไป?

คำตอบ:


177

SQL Developer จะดูในตำแหน่งต่อไปนี้ตามลำดับสำหรับไฟล์ tnsnames.ora

  1. $ HOME / .tnsnames.ora
  2. $ TNS_ADMIN / tnsnames.ora
  3. คีย์การค้นหา TNS_ADMIN ในรีจิสทรี
  4. /etc/tnsnames.ora (ไม่ใช่ windows)
  5. $ ORACLE_HOME / network / admin / tnsnames.ora
  6. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME_KEY
  7. LocalMachine \ SOFTWARE \ ORACLE \ ORACLE_HOME

หากต้องการดูว่าผู้พัฒนา SQL รายใดใช้คำสั่งshow tnsในแผ่นงาน

หากระบบไม่รู้จักไฟล์ tnsnames.ora ของคุณให้ใช้ขั้นตอนต่อไปนี้:

  1. กำหนดตัวแปรสภาพแวดล้อมที่เรียกว่าTNS_ADMINเพื่อชี้ไปที่โฟลเดอร์ที่มีไฟล์ tnsnames.ora ของคุณ

    ใน Windows ทำได้โดยไปที่Control Panel > System > Advanced system settings > Environment Variables ...

    ใน Linux กำหนดตัวแปรTNS_ADMINในไฟล์. profile ในโฮมไดเร็กทอรีของคุณ

  2. ยืนยันว่าระบบปฏิบัติการรับรู้ตัวแปรสภาพแวดล้อมนี้

    จากบรรทัดคำสั่งของ Windows: echo% TNS_ADMIN%

    จาก linux: echo $ TNS_ADMIN

  3. รีสตาร์ท SQL Developer

  4. ตอนนี้ใน SQL Developer คลิกขวาที่การเชื่อมต่อและเลือกการเชื่อมต่อใหม่ ... เลือกTNSเป็นประเภทการเชื่อมต่อในกล่องแบบเลื่อนลง รายการของคุณจาก tnsnames.ora ควรแสดงที่นี่

1
สำหรับฉัน: $ HOME / .tnsnames.ora ใช้ไม่ได้ ... ฉันใช้ $ HOME / tnsnames.ora แทน หมายเหตุ: คุณจะต้องไปที่ Tools -> Preferences ค้นหา "tns" และชี้ไดเรกทอรีไปที่ $ HOME
Ryan Delucchi

แม้ว่าสิ่งนี้จะอยู่ในบันทึกประจำรุ่นสำหรับนักพัฒนา SQL เวอร์ชัน 1.5 แต่ฉันพบว่าบน Ubuntu 12.04 LTS มีเพียง # 5 เท่านั้นที่ใช้งานได้ ลองทำตามขั้นตอนเหล่านี้เพื่อตรวจสอบว่าเป็นกรณีของคุณ: forums.oracle.com/message/2769285#2769285 น่าสังเกต : ผู้เขียนมีปัญหาเกี่ยวกับ Win Vista
LAFK กล่าวว่า Reinstate Monica

ทำงานให้ฉันใน Windows บันทึกสิ่งต่างๆตลอดไป FTW!
Isaac

การตั้งค่า TNS_ADMIN ไม่ได้ผลสำหรับฉัน แต่ฉันค้นหาไฟล์ TNSNAMES ในคอมพิวเตอร์และอัปเดตเนื้อหาของไฟล์ทั้งหมด ไม่รู้ว่าทำไม Windows 7 Sql Developer ยังคงใช้ไฟล์ TNSNAMES อื่น ๆ ในโฟลเดอร์เก่า
เบ็น

1
หมายเหตุ: $TNS_ADMINDIRECTORY ไม่ใช่.oraไฟล์จริงหรือไม่
geneorama

30

เปิด SQL Developer ไปที่ Tools -> Preferences -> Databases -> Advanced จากนั้นตั้งค่า Tnsnames Directory อย่างชัดเจน

TNSNAMES ของฉันได้รับการตั้งค่าอย่างถูกต้องและฉันสามารถเชื่อมต่อกับ Toad, SQL * Plus และอื่น ๆ ได้ แต่ฉันต้องทำสิ่งนี้เพื่อให้ SQL Developer ทำงานได้ บางทีอาจเป็นปัญหา Win 7 เนื่องจากการติดตั้งก็เจ็บปวดเช่นกัน


คำตอบที่ยอมรับไม่ได้ผลสำหรับฉัน แต่สิ่งนี้ทำได้ (Windows Server 2008R2)
Josh Werts

มีปัญหาเดียวกัน แต่นักพัฒนา SQL ยังดูใน% userprofile% \ tnsnames.ora ก่อน% TNS_ADMIN% \ tnsnames.ora และนั่นคือที่ที่ฉันมีไฟล์ tnsnames.ora พิเศษ
MBWise

16

ในการเรียกดูSQLDeveloperTools --> Preferencesดังที่แสดงในภาพด้านล่าง

ป้อนคำอธิบายภาพที่นี่

ในตัวเลือกการตั้งค่าexpand Database --> select Advanced --> under "Tnsnames Directory" --> Browse the directoryที่มีtnsnames.oraอยู่
จากนั้นคลิกที่ตกลง
ดังแสดงในแผนภาพด้านล่าง

ป้อนคำอธิบายภาพที่นี่

คุณทำเสร็จแล้ว!

ตอนนี้คุณสามารถเชื่อมต่อผ่านตัวเลือกTNSnames


ไม่พบ "Databse: Advanced" ==> เวอร์ชันของฉันคือ 1.5.5
Tarek El-Mallah

1
สำหรับรุ่นที่ต่ำกว่า 2.1 หรือถ้าคุณไม่ได้ระบุไดเรกทอรี Tnsnames บน 2.1 หรือที่รกร้างโปรดสูงกว่าที่ระบุไว้ในคำตอบ @JasonAnderson
จันทราเศคาร์

ฉันไม่มีตัวเลือก Tnsnames Directory ในเมนู Tools-> Preferences-> Databaes-> Advanced Parameters ฉันใช้ SqlDeveloper v1.1.3
Ahmedov

14

คุณสามารถค้นหาตำแหน่งของไฟล์ tnsnames.ora ที่ใช้โดยเรียกใช้ TNSPING เพื่อตรวจสอบการเชื่อมต่อ (9i หรือใหม่กว่า):

C:\>tnsping dev

TNS Ping Utility for 32-bit Windows: Version 10.2.0.1.0 - Production on 08-JAN-2009 12:48:38

Copyright (c) 1997, 2005, Oracle.  All rights reserved.

Used parameter files:
C:\oracle\product\10.2.0\client_1\NETWORK\ADMIN\sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = XXX)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = DEV)))
OK (30 msec)

C:\>

บางครั้งปัญหาเกิดจากรายการที่คุณทำใน tnsnames.ora ไม่ใช่ว่าระบบไม่พบ ที่กล่าวว่าฉันยอมรับว่าการมีชุดตัวแปรสภาพแวดล้อม tns_admin เป็นสิ่งที่ดีเนื่องจากจะหลีกเลี่ยงปัญหาที่หลีกเลี่ยงไม่ได้ที่เกิดขึ้นจากการพิจารณาว่าไฟล์ tnsnames ใดถูกใช้ในระบบที่มีบ้าน oracle หลายตัว


ฉันจะติดตั้งเครื่องมือ tnsping ได้อย่างไร ??
Kiquenet

ในการติดตั้งไคลเอนต์จะมีช่องทำเครื่องหมายสำหรับเครื่องมือฐานข้อมูลหรือบางช่อง
DCookie

2

ขั้นตอนที่เจสันกล่าวถึงนั้นดีมากและควรใช้งานได้จริง แม้ว่าจะมีการบิดเล็กน้อยกับ SQL Developer มันแคชข้อกำหนดการเชื่อมต่อ (โฮสต์ชื่อบริการพอร์ต) ในครั้งแรกที่อ่านไฟล์ tnsnames.ora จากนั้นจะไม่ทำให้ข้อมูลจำเพาะเป็นโมฆะเมื่อรายการต้นฉบับถูกลบออกจากไฟล์ tnsname.ora แคชยังคงมีอยู่แม้ว่า SQL Developer จะถูกยกเลิกและเริ่มต้นใหม่แล้วก็ตาม นี่ไม่ใช่วิธีที่ไร้เหตุผลในการจัดการกับสถานการณ์ แม้ว่าไฟล์ tnsnames.ora จะไม่สามารถใช้งานได้ชั่วคราว แต่นักพัฒนา SQL ยังคงสามารถทำการเชื่อมต่อได้ตราบเท่าที่ข้อกำหนดดั้งเดิมยังคงเป็นจริง ปัญหามาพร้อมกับการบิดเล็กน้อยต่อไปของพวกเขา ผู้พัฒนา SQL ถือว่าชื่อบริการในไฟล์ tnsnames.ora เป็นค่าที่คำนึงถึงตัวพิมพ์เล็กและใหญ่เมื่อแก้ไขการเชื่อมต่อ ดังนั้นหากคุณเคยมีชื่อรายการ ABCD โลกในไฟล์และคุณแทนที่ด้วยรายการใหม่ชื่อ abcd.world ผู้พัฒนา SQL จะไม่อัปเดตข้อกำหนดการเชื่อมต่อสำหรับ ABCD.world - จะถือว่า abcd.world เป็นการเชื่อมต่อที่แตกต่างกันโดยสิ้นเชิง เหตุใดฉันจึงไม่แปลกใจที่ผลิตภัณฑ์ Oracle จะถือว่าเนื้อหาของรูปแบบไฟล์ที่พัฒนาโดย oracle นั้นคำนึงถึงตัวพิมพ์เล็กและใหญ่โดยชัดแจ้ง


@allen: คุณรู้วิธีบังคับให้ล้างรายการนี้หรือไม่? ถ้าเป็นเช่นนั้นโปรดตอบกลับ stackoverflow.com/q/6412559/168646
David Oneill

1

ใน Sql Developer ไปที่ Tools-> settings-> Datababae-> advanced-> Set Tnsname directory เป็นไดเร็กทอรีที่มี tnsnames.ora


0

ไม่มีการเปลี่ยนแปลงใด ๆ ข้างต้นที่สร้างความแตกต่างในกรณีของฉัน ฉันสามารถเรียกใช้ TNS_PING ในหน้าต่างคำสั่งได้ แต่ผู้พัฒนา SQL ไม่สามารถระบุได้ว่า tnsnames.ora อยู่ที่ไหน

ปัญหาในกรณีของฉัน (Windows 7 - 64 บิต - Enterprise) คือตัวติดตั้ง Oracle ชี้ทางลัดเมนู Start ไปยัง SQL Developer เวอร์ชันที่ไม่ถูกต้อง ดูเหมือนว่าจะมีอินสแตนซ์ SQL Developer สามตัวที่มาพร้อมกับตัวติดตั้ง หนึ่งอยู่ใน% ORACLE_HOME% \ client_1 \ sqldeveloper \ และอีกสองรายการอยู่ใน% ORACLE_HOME% \ client_1 \ sqldeveloper \ bin \

โปรแกรมติดตั้งได้ติดตั้งทางลัดเมนูเริ่มที่ชี้ไปที่เวอร์ชันในไดเร็กทอรี bin ที่ใช้งานไม่ได้ มันจะถามรหัสผ่านทุกครั้งที่ฉันเริ่ม SQL Developer จำตัวเลือกที่ฉันทำไม่ได้และแสดงรายการว่างเมื่อฉันเลือก TNS เป็นกลไกการเชื่อมต่อ นอกจากนี้ยังไม่มีฟิลด์ TNS Directory ในการตั้งค่าขั้นสูงของฐานข้อมูลที่อ้างถึงในโพสต์อื่น ๆ

ฉันโยนทางลัด Start แบบเก่าและติดตั้งทางลัดไปยัง% ORACLE_HOME% \ client_1 \ sqldeveloper \ sqldeveloper.exe การเปลี่ยนแปลงนั้นช่วยแก้ปัญหาในกรณีของฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.