【问题标题】:Connecting to Oracle database installed on one pc to the java application from another machine将安装在一台电脑上的 Oracle 数据库连接到另一台机器上的 Java 应用程序
【发布时间】:2015-04-16 15:13:22
【问题描述】:

我已经在我的机器上安装了 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)
    )
  )

提前致谢。

【问题讨论】:

    标签: oracle jdbc oracle12c tnsnames


    【解决方案1】:

    如果是 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 了解更多详情。

    【讨论】:

    • 感谢评论,但是我在安装数据库的时候没有添加pdb容器
    • 无论如何我尝试使用你说的方式,结果是一样的..java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
    【解决方案2】:

    Java 应用程序不会自己使用 tnsnames.ora。您必须致电:

    System.setProperty("oracle.net.tns_admin", "..path to tnsnames.ora");
    

    告诉驱动程序在哪里搜索它。 另请注意,瘦驱动程序不支持某些 tnsnames.ora 结构。例如“include”指令。

    【讨论】:

      【解决方案3】:

      感谢以下链接,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))
      
              )
      
          )
        )
      

      【讨论】:

        猜你喜欢
        • 2016-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-06
        • 2019-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多