Saya menjalankan instance Oracle 11g secara lokal pada mesin pengembangan saya dan dapat terhubung ke instance lokal secara langsung melalui 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
Tapi saya tidak bisa terhubung melalui pendengar:
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
Demikian pula, jika saya terhubung melalui SqlDeveloper saya mendapatkan kesalahan (meskipun ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
).
Contoh ini telah stabil dan berfungsi dengan baik selama satu tahun atau lebih hingga hari ini, Senin pagi. IT korporat kami kadang-kadang mendorong kebijakan dan pembaruan baru selama akhir pekan, jadi saya berasumsi bahwa ada sesuatu yang berubah, tetapi saya tidak dapat menemukan apa.
Saya telah me-restart layanan dan pendengar beberapa kali, log pendengar tidak memberikan petunjuk apa pun.
Pendengar tampaknya baik-baik saja:
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
Port 1521 tampaknya ok:
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 adalah proses TNSLSNR.exe.)
Juga, saya bisa tnsping
ke layanan 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)
The listenerr.ora
File:
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)
Selain itu, dan saya tidak tahu apakah itu terkait, saya tidak bisa mengakses apex https://127.0.0.1:8080/apex
(meskipun izin untuk itu tampak baik-baik saja).
Jadi ke mana lagi saya harus mencari?
Perbarui dengan informasi yang diminta:
SQL> show parameter service_names
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
service_names string XE
SQL> show parameter local_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string
Update2 : seperti yang ditunjukkan oleh @ miracle173 dengan benar, pendengarnya tidak baik. Dengan parameter 'local_listener' yang diperbarui sekarang menunjukkan informasi tambahan:
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
sumber
INSTANCE_NAME
parameter inisialisasi Anda danORACLE_SID
variabel lingkungan? Basis data Anda tidak mendaftar dengan pendengar default karena beberapa alasan. Cobalah untuk mengeluarkanalter system register;
dan kemudian sambungkan kembali ke database.Jawaban:
Jadi, dengan terima kasih kepada @YasirArsanukaev untuk waktu yang dimasukkannya, saya telah menemukan solusi yang berfungsi, tetapi saya tidak bisa menjelaskannya.
Menimbang
LOCAL_LISTENER
pemikiran itu, saya membaca jawaban lain ini di mana tertulis:Jadi saya mencoba ping nama host saya sendiri dan tidak bisa - sepertinya ada masalah IPv6, menerima pesan kegagalan umum.
Jadi saya menerima saran dari jawaban itu
dan sekarang berfungsi, mungkin karena ia dapat menyelesaikan referensi localhost, di mana ia gagal menyelesaikan nama host yang sebenarnya.
sumber