2011-11-12 32 views
6

thể ai đó hãy giúp tôi về lý do tại sao tôi nhận được lỗi sau khi cố gắng kết nối với Oracle db từ java ....Lỗi kết nối với Oracle DB từ Java

Cuộc gọi kết nối là:

Connection con = DriverManager.getConnection(
    "jdbc:oracle:thin:@winson.net:1522/hcrod", 
    "manager", "passing"); 

tôi nhận được lỗi sau:

java.sql.SQLException: Listener refused the connection with the following error: 
ORA-12514, TNS:listener does not currently know of service requested in connect descriptor 
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:113) 
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:263) 
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:389) 
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:454) 
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165) 
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35) 
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:802) 
at java.sql.DriverManager.getConnection(DriverManager.java:582) 
at java.sql.DriverManager.getConnection(DriverManager.java:185) 
at test_sample.main(test_sample.java:15) 

Trả lời

0

có vẻ như các cổng trên máy chủ không nghe, cổng 1522.

Bạn có thể telnet cổng thành công không?

+0

yeah, Tôi có thể ... – Winz

+0

Máy chủ kết nối 'winson.net:1522/hcrod' là chính xác vì tôi có thể kết nối với nó thành công qua 'SQL devloper. – Winz

0

JDBC cú pháp URI mỏng của Oracle là như sau:

jdbc:oracle:thin:[USER/PASSWORD]@//[HOST][:PORT]/SERVICE 

Vì vậy:

jdbc:oracle:thin:@//winson.net:1522/hcrod" 

Lưu ý hai dấu gạch chéo thêm vào sau khi biểu tượng @.

1

Tôi đã thấy lỗi này xuất hiện một vài lần khi tôi bắt đầu trình nghe TNS sau khi tôi bắt đầu cơ sở dữ liệu. Khi cơ sở dữ liệu khởi động, nó tự đăng ký với người nghe nếu người nghe đang chạy, nhưng nếu người nghe không chạy nó không thể làm điều này.

Có thể tự thuyết phục cơ sở dữ liệu đăng ký chính nó với người nghe. Để thực hiện việc này, hãy kết nối với cơ sở dữ liệu dưới dạng SYS và chạy câu lệnh SQL ALTER SYSTEM REGISTER;.

+0

bạn có thể đưa ra các lệnh để thực hiện điều đó không? –

+0

Tôi đã đưa ra lệnh duy nhất bạn cần. Đăng nhập như sys - Tôi biết bạn có thể làm điều này như bạn đã [nhận xét về câu trả lời này] (http://stackoverflow.com/a/11836333) - và chạy một lệnh mà tôi đã đề cập. –

6

trong một trường hợp tương tự như đối với tôi làm việc một chuỗi kết nối hơi khác: jdbc:oracle:thin:@winson.net:1522:hcrod

thực sự mà không có sự // và với: thay vì /

Các vấn đề liên quan