เชื่อมต่อกับ sql plus จากบรรทัดคำสั่งโดยใช้สตริงการเชื่อมต่อ


41

สมมติว่าฉันมีฐานข้อมูล Oracle ฉันมีชื่อผู้ใช้ = x, รหัสผ่าน = y, ฐานข้อมูล = z นอกจากนี้ฉันรู้พอร์ต = a, SID = b, ชื่อโฮสต์ = c

ดังนั้นฉันจะต้องเชื่อมต่ออย่างถูกต้องได้อย่างไร ฉันใช้ตัวเลือกมากมายเช่น:

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))'

sqlplus (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=b)))

การส่งบรรทัดคำสั่งเหล่านี้มักจะให้ฉันกลับข้อผิดพลาดเช่น:

ORA-12560: TNS: ข้อผิดพลาดของอะแดปเตอร์โปรโตคอล
ORA-12514: TNS: ผู้ฟังไม่รู้จักบริการในปัจจุบัน

ขอบคุณมากล่วงหน้า !!


3
สมมติว่าคุณมีโฮสต์ / พอร์ตที่ถูกต้องฟังดูเหมือนว่าอินสแตนซ์จะไม่ทำงานหรือไม่ได้ลงทะเบียนกับผู้ฟัง
Colin 't Hart

1
ใช้ ezconnect:sqlplus x/y@c:a/b
Dieter DHoker

1
สำหรับบันทึกตัวอย่างที่สองของคุณ (อย่างน้อย) เหมาะกับฉันถ้าฉันล้อมมันด้วยเครื่องหมายคำพูด ชอบ x @ "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = c) (PORT = a)) (CONNECT_DATA = (SID = b)))"
rogerdpack

เปิด -> บริการในหน้าต่าง Start-> oracleservicexe มันใช้งานได้สำหรับฉัน
Prakash

คำตอบ:


74

คุณลอง

sqlplus username/password@host:port/service
sqlplus x/y@c:a/b

รุ่นปัจจุบันของ sqlplus (รุ่น 11 หรือใหม่กว่า) เข้าใจไวยากรณ์นี้และคุณไม่จำเป็นต้องใช้ไฟล์ tnsnames.ora


2
มันทำงานได้อย่างสมบูรณ์แบบ
Gajotres

4
รุ่นไหน ใช้งานไม่ได้สำหรับฉันในข้อผิดพลาด CentOS: ORA-12154: TNS: ไม่สามารถแก้ไขตัวระบุการเชื่อมต่อที่ระบุ
Edmondo1984

หมายเลขพอร์ตเริ่มต้น: 1521
Ivan Chau

4
ฉันมี SID แทนการใช้บริการดังนั้นการใช้ ":" แทน "/" ทำงานให้ฉันชื่อผู้ใช้ / รหัสผ่าน sqlplus @ host: พอร์ต: sid
Pratik Goenka

1
sqlplus ที่มาพร้อมกับv11.2.0.1.0ไม่รองรับhost:portไวยากรณ์ ดูเหมือนว่า11.2.0.4.0สนับสนุนแล้ว ...
gavenkoa

12

วิธีที่ง่ายที่สุดคือใช้ไฟล์ tnsnames.ora เพื่อเชื่อมต่อกับฐานข้อมูล สำหรับการแก้ไขนั้นและเพิ่มรายการใหม่: โดยปกติไฟล์นี้จะอยู่ในไดเรกทอรี $ ORACLE HOME \ NETWORK \ ADMIN

myDb  =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(Host = c)(Port =a))
   )
 (CONNECT_DATA =
   (SERVICE_NAME =b)
 )
)

จากนั้นคุณสามารถเชื่อมต่อกับ db:

sqlplus x / y @ myDb


เพื่อหลีกเลี่ยงการใช้รหัสผ่านในบรรทัดคำสั่งโปรดดูลิงก์ในความคิดเห็นที่นี่: serverfault.com/a/87038/27813
rogerdpack

7

ไปที่โปสเตอร์ต้นฉบับ ... ในตัวเลือกแรกคุณพลาดวงเล็บปิด

ไม่ถูกต้อง: (สตริงของคุณ)

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))'

แก้ไข:

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED))))'

2

บรรทัด sqlplus ของคุณถูกต้องตรวจสอบสิ่งต่อไปนี้:

  1. คุณสามารถเชื่อมต่อเป็น sysdba บนเซิร์ฟเวอร์ฐานข้อมูลเอง
  2. คุณสามารถเชื่อมต่อในฐานะผู้ใช้ที่คุณพยายามทำบนเซิร์ฟเวอร์ฐานข้อมูลเอง
  3. คุณสามารถ ping เซิร์ฟเวอร์ฐานข้อมูลจากคอมพิวเตอร์ที่คุณพยายามเชื่อมต่อ
  4. คุณสามารถ tnsping ผู้ฟังจากคอมพิวเตอร์ที่คุณพยายามเชื่อมต่อ

หากสิ่งเหล่านี้ตรวจสอบคุณอาจต้องการสร้างสายเชื่อมต่อใหม่เพื่อให้แน่ใจว่าคุณไม่มีการพิมพ์ผิด


1

บางทีฐานข้อมูลของคุณอาจไม่ทำงาน หากรีสตาร์ทเครื่องและไม่มีการตั้งค่าอินสแตนซ์เป็น autostart (และไม่ได้เริ่มด้วยตนเอง) คุณอาจต้องเริ่มบริการด้วยตัวเอง

หากคุณเข้าถึงหน้าจอบริการคุณสามารถทำได้จากที่นั่น หรือคุณสามารถทำได้จากบรรทัดคำสั่ง

ไปที่พร้อมท์คำสั่งแล้วป้อนคำสั่งต่อไปนี้:

set oracle_sid=ORCL

net start oracleserviceORCL

ชุดแรก Oracle SID; ที่สองเริ่มบริการจริง


0

สารสกัดจาก sqlplus ช่วย:

สามารถอยู่ในรูปแบบของ Net Service Name หรือ Easy Connect

  @[<net_service_name> | [//]Host[:Port]/<service_name>]

-2

ฉันพบว่าการเชื่อมต่อเดสก์ท็อประยะไกลทำได้ง่ายและเปิด Command Prompt จากนั้นเชื่อมต่อโดย:

sqlplus sys/YourPassword as sysdba


-3

คุณควรเริ่มบริการของฐานข้อมูลของคุณ สำหรับสิ่งนี้ไปที่เมนู Start -> Run และ start services.mscจากนั้นค้นหาบริการฐานข้อมูลและเริ่มต้นที่นั่น หลังจากนั้นมันก็จะเริ่มทำงาน


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