Có vẻ như SID và tên dịch vụ của bạn không giống nhau. Trong SQL Developer, bạn dường như đang sử dụng SID - ít nhất là trong URL JDBC tùy chỉnh mà bạn đã hiển thị - như được biểu thị bằng dấu hai chấm trong :vdbsl4
.
URL SQLcl của bạn đang sử dụng tên dịch vụ, được biểu thị bằng dấu gạch chéo trong /vdbsl14
. Sử dụng SID thay thế (tức là thay đổi / thành :) trong URL đó sẽ hoạt động vì nó sử dụng JDBC:
sqlcl username/[email protected]:1521:vdbsl14
Ngoài ra (và tốt hơn là theo ý kiến của tôi) tìm hiểu tên dịch vụ của bạn thực sự là gì. Nếu bạn có đủ đặc quyền trên cơ sở dữ liệu, bạn có thể thực hiện show parameters service_names
từ SQL Devleoper hoặc nếu bạn có quyền truy cập vào máy chủ dưới dạng DBA, bạn có thể thực hiện lsnrctl services
hoặc thậm chí xem tnsnames.ora
trong trường hợp có bí danh TNS được xác định hiển thị tên dịch vụ. (listener.ora
không có khả năng giúp ích, nhưng có thể đưa ra gợi ý hoặc nếu bạn may mắn, hãy hiển thị một tên dịch vụ mặc định).
Bạn có thể sử dụng tên dịch vụ đó trong URL JDBC, dưới dạng /service_name
.
Bạn cũng có thể sử dụng bí danh TNS từ SQLcl (hoặc SQL * Plus). Bạn có thể đã có tnsnames.ora
có sẵn; nếu không, bạn có thể sao chép nó từ máy chủ của mình hoặc tạo của riêng bạn. Điều đó có thể tham chiếu đến SID hoặc tên dịch vụ.
Bạn thậm chí có thể chuyển một mô tả TNS đầy đủ cho SQL * Plus (không chắc chắn về SQLcl) nhưng điều đó hơi khó chịu. Nếu bạn không có / muốn có tnsnames.ora
bạn có thể sử dụng cú pháp 'kết nối dễ dàng', giống như bạn đang sử dụng cho SQLcl - nhưng điều đó có là tên dịch vụ, nó không cho phép SID.