1

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 ですでに 1 回か 2 回尋ねられていますが、見つけたほとんどの回答を試してみましたが、まだ外部から Oracle 12c データベースに接続できません。私が試した sql*plus にはいくつかのコマンドがあります ( http://technology.amis.nl/2013/06/26/oracle-12c-getting-started-with-db-express/ ) まだ成功していません. ファイアウォールなどの設定に過ぎないと思いますが、可能であれば経験者からのフィードバックをお願いします。

どんな助けでも大歓迎です。

4

1 に答える 1

1

ファイアウォールが問題である可能性があることを示唆しましたが、IP アドレスとポート番号が正しいと仮定すると、ローカル ネットワークでの接続タイムアウトは確かにそのように聞こえます。

その場合、ファイアウォールでポート 1521 を開く必要があります。SQL Server でそれを行う方法を示す Microsft の記事があります。ポート番号が異なるだけで、プロセスは同じです。または、任意のポートを開くためのより一般的な手順:

  1. [スタート] ボタン をクリックし、[コントロール パネル] をクリックして Windows ファイアウォールを開きます。検索ボックスに「ファイアウォール」と入力し、[Windows ファイアウォール] をクリックします。

  2. 左ペインで、[詳細設定] をクリックします。管理者のパスワードまたは確認を求められた場合は、パスワードを入力するか、確認を提供します。

  3. [セキュリティが強化された Windows ファイアウォール] ダイアログ ボックスの左側のウィンドウで [受信の規則] をクリックし、右側のウィンドウで [新しい規則] をクリックします。

  4. New Inbound Rule ウィザードの指示に従います。

于 2014-04-19T07:55:34.967 に答える