如何连接到远程Oracle 12c数据库

时间:2014-04-19 04:38:32

标签: oracle oracle11g oracle-sqldeveloper oracle12c

我已经在Windows 2012 Server上安装了Oracle 12c,并且可以使用在服务器上运行的SQL Developer连接到我用它创建的数据库。但是,我无法从远程计算机连接到同一个数据库,这是我想要做的。我使用SQuirreL,SQL Developer,甚至运行Java代码从外部客户端连接到盒子,每次尝试都超时 - 所以我知道我的连接url是正确的(jdbc:oracle:thin:@ 192.168.0.105: 1521:orcl),服务器本身有些不妥。

是否有人可以指示我的一组说明,以便允许从外部访问我的数据库?

这是我在服务器上的listener.ora文件内容:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\dbadmin\product\12.1.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\dbadmin\product\12.1.0\dbhome_1\bin\oraclr12.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.105)(PORT = 1521))
    )
  )

我得到的错误如下(超时错误,如上所述):

java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:673)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:715)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:385)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:30)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:564)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at Launcher.main(Launcher.java:47)
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:445)
    at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:464)
    at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:594)
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:229)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1360)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:486)
    ... 7 more
Caused by: java.net.SocketTimeoutException: connect timed out
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:162)
    at oracle.net.nt.ConnOption.connect(ConnOption.java:133)
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:411)
    ... 12 more

这个问题已经在StackOverflow上被问了一两次,但是我已经尝试了我找到的大部分答案,但仍然无法从外部连接到我的Oracle 12c数据库。 sql * plus中有一些命令我已经尝试过(http://technology.amis.nl/2013/06/26/oracle-12c-getting-started-with-db-express/)仍然没有成功。我确定它只是像防火墙或其他类似设置,但如果可能的话,我希望得到有经验的人的反馈。

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:1)

您建议防火墙可能是问题,并且本地网络上的连接超时肯定会使声音听起来像是这种情况,假设IP地址和端口号是正确的。

如果是这样,您需要在防火墙中打开端口1521。 There's a Microsft article showing how to do that for SQL Server;该过程是相同的,只是针对不同的端口号。或more general instructions for opening any port

  
      
  1. 单击“开始”按钮,然后单击“控制面板”,打开“Windows防火墙”。在搜索框中,键入防火墙,然后   单击“Windows防火墙”。

  2.   
  3. 在左侧窗格中,单击“高级设置”。如果系统提示您输入管理员密码或进行确认,请键入密码或   提供确认。

  4.   
  5. 在“高级安全Windows防火墙”对话框的左窗格中,单击“入站规则”,然后在右窗格中单击“新建”。   规则。

  6.   
  7. 按照新建入站规则向导中的说明进行操作。

  8.