任务并且未能将Java代码连接到已禁用 TNS侦听器的Oracle 11.2数据库。代码应该在与DB相同的机器上运行,所以我的理解是可以连接
当给出正确的用户名和密码时,SQLPlus可以在本地连接。
我不会添加我尝试过的所有代码,但它看起来很像(现在):How to connect JDBC to tns oracle。在这一点上,我只是猜测连接字符串,没有运气。
虽然,我不确定它是否相关,但这里是tnsnames.ora结构。
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = hostname)(PORT = 1))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
EXTPROC_CONNECTION_DATA = ...
ORACLR_CONNECTION_DATA = ...
[编辑] 忘记提及现有的.NET代码能够建立连接。不是.NET开发人员,但我认为这是相关的代码。
Dim oConn As New OracleConnection
oConn.ConnectionString = String.Format("User id={0};Password={1};", "***", "***")
oConn.Open()
oConn.Close()
答案 0 :(得分:1)
当监听器关闭时,您仍然可以通过共享内存(IPC)连接到数据库。但瘦(纯Java)JDBC驱动程序不支持它。
所以你可以选择:
使用JDBC OCI驱动程序,但这个设置并不容易。
XE=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(Key = IPCKEY))
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
)
(CONNECT_DATA = (SID = XE))
)
答案 1 :(得分:0)
根据定义,tns连接是需要监听器的网络连接。客户端和数据库在同一台机器上并不重要,它仍然使用tns(网络)协议。