wat*_*n94 5 java jdbc oracle11g
我在尝试通过侦听器连接到 Oracle 数据库 XE 时遇到问题:
sqlplus system/my_password@XE
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor
Run Code Online (Sandbox Code Playgroud)
我使用 Ubuntu 12.10 和 Oracle Express Edition 11g。
我的主要目标是将 java + oracle db 与 jdbc 连接起来,但是我遇到了同样的错误。
这是我的听众.ora
# listener.ora Network Configuration File:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/xe)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
(ADDRESS = (PROTOCOL = TCP)(HOST = watson)(PORT = 1521))
)
)
DEFAULT_SERVICE_LISTENER = (XE)
Run Code Online (Sandbox Code Playgroud)
和 tnsnames.ora
# tnsnames.ora Network Configuration File:
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = watson)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
Run Code Online (Sandbox Code Playgroud)
和
lsnrctl service
LSNRCTL for Linux: Version 11.2.0.2.0 - Production on 04-FEB-2014 17:01:44
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Handler(s):
"DEDICATED" established:0 refused:0
LOCAL SERVER
The command completed successfully
Run Code Online (Sandbox Code Playgroud)
假设即使侦听器已经运行了一段时间,您的数据库也无法注册,听起来您的local_listener参数没有明确设置,因此您的数据库正在尝试在默认地址上注册;由于它无法注册,因此它使用的任何地址似乎都与侦听器所在的地址不同。
假设watson正在解析为有用的外部 IP 地址(如果您能够从您的盒子外部获取 TNS 错误,则可能是这种情况),您可以告诉数据库使用相同的地址进行注册:
alter system set local_listener = '(ADDRESS=(PROTOCOL=TCP)(HOST=watson)(PORT=1521))' scope=memory;
alter system register;
Run Code Online (Sandbox Code Playgroud)
如果该方法有效并且lsnrctl services现在显示XE并且您对此感到满意,则可以将其更改memory为both并重新执行,以便它在下一次数据库重新启动时仍然存在。
或者,如果您只尝试在同一个框中进行连接,watson则可能会解析为无用的内容,例如 127.0.0.1(如果它在您的 ; 中设置为这样做)/etc/hosts。或者您的/etc/hosts地址可能与您的 DNS 条目不一致。listener.ora您可以将和更改tnsnames.ora为“正确的”FQDN 或 IP 地址,只要它与数据库认为的网络名称相匹配即可。
| 归档时间: |
|
| 查看次数: |
47071 次 |
| 最近记录: |