我已经在我的机器上安装了Oracle 12c(桌面类),我可以在同一台机器上通过sql developer使用它。现在我如何在局域网中使用来自另一台机器(用于Java应用程序)的相同数据库?我尝试使用jdbc瘦驱动程序,如下所示:jdbc:oracle:thin:@10.0.11.69:1521:orcl
其中10.0.11.69是我安装Oracle的IP地址。我是否需要安装任何安装了oracle的服务器(10.0.11.69)才能从另一台机器连接到我的数据库?
我从过去的3天开始尝试这个问题并提到同一模型的许多问题,但没有一个问题解决了我的问题。
我的tnsnames.ora描述如下:
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
提前致谢。
答案 0 :(得分:0)
如果是Oracle 12c安装,则需要连接到PDB。您可以在tnsnames.ora中添加以下条目:
pdborcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdborcl)
)
)
设置完成后,需要重新启动监听器。
lsnrctl stop
lsnrctl start
然后连接字符串将是这样的:
jdbc:oracle:thin:@//10.0.11.69:1521/pdborcl
请注意,上面的连接字符串使用服务名称而不是SID,因为在12C中我们需要使用服务名称而不是SID来连接到PDB。有关详细信息,请查看此post。
答案 1 :(得分:0)
Java应用程序不会使用它自己的tnsnames.ora。你必须打电话:
System.setProperty("oracle.net.tns_admin", "..path to tnsnames.ora");
告诉司机在哪里搜索它。 另请注意,瘦驱动程序不支持某些tnsnames.ora构造。例如,"包括"指令。
答案 2 :(得分:0)
感谢以下链接Configuring the connection between client and server Oracle 10g
经过长时间的研究,我发现我需要在listener.ora文件中添加我的局域网地址(10.0.11.69),以解决我的问题。所以我的listener.ora现在看起来像这样:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST=
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.11.69)(PORT = 1521))
)
)
)