Tôi sẽ giả sử bạn đang sử dụng tệp tnsnames.ora để chỉ định các dịch vụ cơ sở dữ liệu có sẵn của bạn. Nếu vậy, lỗi kết nối thường do hai nguyên nhân.
-
Ứng dụng không thể tìm thấy mục TNS mà bạn đã chỉ định trong chuỗi kết nối.
-
Đã tìm thấy mục TNS nhưng IP hoặc máy chủ lưu trữ không đúng trong tệp tnsnames.ora.
Để mở rộng số 1 (mà tôi nghĩ là vấn đề của bạn). Khi bạn yêu cầu Oracle kết nối bằng cách sử dụng một cái gì đó như:
sqlplus user/[email protected]
Dịch vụ được định nghĩa trong tệp tnsnames.ora. Nếu tôi cố gắng kết nối với một dịch vụ không được xác định trong tnsnames.ora của mình, tôi sẽ gặp phải lỗi mà bạn gặp phải:
[[email protected] ~] $ sqlplus sodonnel/[email protected]
SQL*Plus: Release 11.2.0.1.0 Production on Mon Oct 31 21:42:15 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
ERROR:
ORA-12154: TNS:could not resolve the connect identifier specified
Vì vậy, bạn cần kiểm tra một số điều:
- Có tệp tnsnames.ora không - Tôi nghĩ là có vì bảng điều khiển của bạn có thể kết nối
- Có mục nào trong tệp cho dịch vụ không - Tôi nghĩ là có khi bảng điều khiển kết nối
- Ứng dụng có thể tìm thấy tnsnames.ora không?
Vấn đề của bạn có thể là số 3 - ứng dụng có chạy với tư cách người dùng khác với khi bạn chạy bảng điều khiển không?
Oracle tìm kiếm tệp tnsnames.ora trong thư mục được xác định trong biến môi trường TNS_ADMIN - Nếu bạn đang chạy với tư cách người dùng khác nhau, thì có thể biến môi trường TNS_ADMIN chưa được đặt và do đó nó không thể tìm thấy tệp?