Sambungkan ke sql plus dari baris perintah menggunakan string koneksi

41

Katakanlah saya memiliki database Oracle. Saya memiliki nama pengguna = x, kata sandi = y, database = z. Saya juga tahu port = a, SID = b, Hostname = c.

Jadi, bagaimana saya harus terhubung dengan benar? Saya menggunakan banyak opsi seperti:

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

Mengirimkan baris perintah ini biasanya memberi saya kembali pesan kesalahan seperti:

ORA-12560: TNS: kesalahan adaptor protokol
ORA-12514: TNS: pendengar saat ini tidak mengetahui layanan

Banyak terima kasih sebelumnya !!

Edvinas
sumber
3
Dengan anggapan Anda memiliki host / port yang tepat, bagi saya sepertinya instance tidak berjalan atau tidak terdaftar pada pendengar.
Colin 't Hart
1
menggunakan ezconnect:sqlplus x/y@c:a/b
Dieter DHoker
1
sebagai catatan, contoh kedua Anda (setidaknya) bekerja untuk saya jika saya mengelilinginya dengan tanda kutip. seperti x @ "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = c) (PORT = a)) (CONNECT_DATA = (SID = b)))"
rogerdpack
Buka -> layanan di jendela Mulai-> oracleservicexe Ini berfungsi untuk saya.
Prakash

Jawaban:

75

apakah kamu mencoba

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

sqlplus versi modern (versi 11 atau lebih baru) memahami sintaks ini dan Anda tidak memerlukan file tnsnames.ora.

Hanspeter Oberlin
sumber
2
Ini berfungsi dengan baik
Gajotres
4
versi yang mana? Tidak berfungsi untuk saya di CentOS ERROR: ORA-12154: TNS: tidak dapat menyelesaikan pengidentifikasi koneksi yang ditentukan
Edmondo1984
Nomor Pelabuhan Default: 1521
Ivan Chau
4
Saya memiliki SID alih-alih layanan sehingga menggunakan ":" alih-alih "/" bekerja untuk saya sqlplus nama pengguna / kata sandi @ host: port: sid
Pratik Goenka
1
sqlplus yang datang dengan v11.2.0.1.0tidak mendukung host:portsintaks. Tampaknya 11.2.0.4.0sudah mendukung ...
gavenkoa
12

Yang paling sederhana adalah menggunakan file tnsnames.ora untuk terhubung ke database. Untuk itu edit dan tambahkan entri baru: File ini biasanya berada di direktori $ ORACLE HOME \ NETWORK \ ADMIN.

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

dan kemudian Anda dapat terhubung ke db:

sqlplus x / y @ myDb

eliatou
sumber
Untuk menghindari kata sandi di baris perintah, lihat tautan di komentar di sini: serverfault.com/a/87038/27813
rogerdpack
7

Ke poster asli ... di opsi pertama Anda melewatkan kurung tutup

Salah: (string Anda)

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

Benar:

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

Baris sqlplus Anda terlihat benar, verifikasi yang berikut ini:

  1. Anda dapat terhubung sebagai sysdba di server database itu sendiri.
  2. Anda dapat terhubung sebagai pengguna yang Anda coba di server database itu sendiri.
  3. Anda dapat melakukan ping ke server database dari komputer yang Anda coba sambungkan.
  4. Anda dapat mengirim pendengar dari komputer yang Anda coba sambungkan.

Jika semua ini periksa, Anda mungkin ingin membuat jalur koneksi baru untuk memastikan Anda tidak memiliki kesalahan ketik.

Leigh Riffel
sumber
1

Mungkin basis data Anda tidak lengkap. Jika mesin dihidupkan ulang dan instans tidak diatur ke autostart (dan itu tidak dimulai secara manual), Anda mungkin perlu memulai layanan sendiri.

Jika Anda memiliki akses ke layar Layanan, Anda dapat melakukannya dari sana; atau, Anda dapat melakukannya dari baris perintah.

Pergi ke Command prompt dan masukkan perintah berikut:

set oracle_sid=ORCL

net start oracleserviceORCL

Yang pertama menetapkan Oracle SID; yang kedua sebenarnya memulai layanan.

Karthick
sumber
0

ekstrak dari sqlplus help:

bisa dalam bentuk Nama Layanan Net atau Easy Connect.

  @[<net_service_name> | [//]Host[:Port]/<service_name>]
pengguna82219
sumber
-2

Saya menemukan bahwa mudah untuk melakukan koneksi desktop jarak jauh dan membuka Command Prompt kemudian terhubung dengan:

sqlplus sys/YourPassword as sysdba

Kelly
sumber
-3

Anda harus memulai layanan dari database Anda. Untuk ini, masuk ke menu Mulai -> Jalankan dan mulai services.mscKemudian cari di sana untuk layanan database dan memulainya. Setelah itu akan mulai berfungsi.

pengguna139417
sumber
-4

Ini bekerja untuk saya di Oracle 11G

sqlplus orcl_usr/orcl_usr_pass@host/sid
Agron Daka
sumber