Tôi chạy một phiên bản Oracle 11g cục bộ trên máy phát triển của mình và có thể kết nối trực tiếp với cá thể cục bộ thông qua SqlPlus:
c:\>sqlplus ace
SQL*Plus: Release 11.2.0.2.0 Production on Mon Mar 11 11:50:20 2013
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Enter password:
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - Beta
SQL> select count(*) from my_table ;
COUNT(*)
----------
5297
Nhưng tôi không thể kết nối với nó thông qua người nghe:
c:\>sqlplus -L "user/pw@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))"
SQL*Plus: Release 11.2.0.2.0 Production on Mon Mar 11 11:52:40 2013
Copyright (c) 1982, 2010, Oracle. All rights reserved.
ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
SP2-0751: Unable to connect to Oracle. Exiting SQL*Plus
Tương tự, nếu tôi kết nối qua SqlDeveloper, tôi sẽ gặp lỗi (mặc dù ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
).
Trường hợp này đã ổn định và hoạt động tốt trong một năm hoặc hơn cho đến hôm nay, một buổi sáng thứ Hai. CNTT công ty của chúng tôi đôi khi thực hiện các chính sách và cập nhật mới vào cuối tuần, vì vậy tôi cho rằng có gì đó đã thay đổi, nhưng tôi không thể tìm ra điều gì.
Tôi đã khởi động lại dịch vụ và người nghe nhiều lần, nhật ký người nghe không đưa ra bất kỳ manh mối nào.
Người nghe có vẻ ổn:
c:\>lsnrctl status
LSNRCTL for 32-bit Windows: Version 11.2.0.2.0 - Beta on 11-MAR-2013 11:55:33
Copyright (c) 1991, 2010, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 32-bit Windows: Version 11.2.0.2.0 - Beta
Start Date 11-MAR-2013 11:17:30
Uptime 0 days 0 hr. 38 min. 3 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Default Service XE
Listener Parameter File C:\oraclexe\app\oracle\product\11.2.0\server\network\admin\listener.ora
Listener Log File C:\oraclexe\app\oracle\diag\tnslsnr\FBC305BB46560\listener\alert\log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=machine.domain.com)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
Cổng 1521 có vẻ ổn:
c:\>netstat -an -O | find /i "1521"
TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING 4368
TCP 169.243.90.109:55307 159.185.207.100:1521 ESTABLISHED 12416
TCP [::]:1521 [::]:0 LISTENING 4368
(PID 4368 là quy trình TNSLSNR.exe.)
Ngoài ra, tôi có thể tnsping
đến dịch vụ XE:
c:\>tnsping xe
TNS Ping Utility for 32-bit Windows: Version 11.2.0.2.0 - Beta on 11-MAR-2013 12:27:47
Copyright (c) 1997, 2010, Oracle. All rights reserved.
Used parameter files:
C:\oraclexe\app\oracle\product\11.2.0\server\network\admin\sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = machine.domain.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))
OK (210 msec)
Các listenerr.ora
tập tin:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = C:\oraclexe\app\oracle\product\11.2.0\server)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = machine.domain.com)(PORT = 1521))
)
)
DEFAULT_SERVICE_LISTENER = (XE)
Ngoài ra, và tôi không biết nó có liên quan hay không, tôi dường như không thể truy cập apex trên https://127.0.0.1:8080/apex
(mặc dù các quyền cho điều đó có vẻ ổn).
Vậy tôi nên tìm ở đâu nữa?
Cập nhật với thông tin được yêu cầu:
SQL> show parameter service_names
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string XE
SQL> show parameter local_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string
Update2 : như @ miracle173 chỉ ra một cách chính xác, người nghe không ổn. Với tham số 'local_listener' được cập nhật hiện hiển thị thêm thông tin:
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=machine.domain.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "XEXDB" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
Service "xe" has 1 instance(s).
Instance "xe", status READY, has 1 handler(s) for this service...
The command completed successfully
INSTANCE_NAME
tham số khởi tạo vàORACLE_SID
biến môi trường của bạn là gì? Cơ sở dữ liệu của bạn không đăng ký với người nghe mặc định vì một số lý do. Cố gắng phát hànhalter system register;
và sau đó kết nối lại với cơ sở dữ liệu.