Как подключиться к удаленной базе данных Oracle 12c

Я установил Oracle 12c на сервер Windows 2012 и могу подключиться к базе данных, которую я создал с его помощью, с помощью 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/) безуспешно. Я уверен, что это просто какие-то настройки, такие как брандмауэр или что-то еще в этом роде, но, если возможно, хотел бы получить отзывы от опытных людей.

Любая помощь очень ценится.


person Fuzzy Analysis    schedule 19.04.2014    source источник
comment
Вы уверены в этом IP-адресе? Каждый компонент IP-адреса - это число от 0 до 255. Значение 500 находится за пределами этого диапазона.   -  person Justin Cave    schedule 19.04.2014
comment
Извините, я изменил адрес только для примера. Фактический адрес сейчас там. Проблема та же.   -  person Fuzzy Analysis    schedule 19.04.2014
comment
OK. В чем ошибка?   -  person Justin Cave    schedule 19.04.2014
comment
Я добавил ошибку к исходному вопросу. Это ошибка тайм-аута.   -  person Fuzzy Analysis    schedule 19.04.2014
comment
Так есть ли на сервере брандмауэр? Вы упомянули такую ​​возможность, но мы не можем сказать, есть ли она у вас. Это определенно кажется проблемой. Если адрес и порт определенно правильные, возможно, вам придется открыть порт 1521 в этом брандмауэре. Или, возможно, где-то еще в сети, но сам сервер кажется более вероятным.   -  person Alex Poole    schedule 19.04.2014
comment
Это был именно ответ, Алекс. Если вы хотите ответить на вопрос, я отдаю вам должное. Я чувствую себя очень глупо: S   -  person Fuzzy Analysis    schedule 19.04.2014
comment
Просто добавил в брандмауэр Windows правило, разрешающее входящие соединения на порт 1521, и все было хорошо. windows.microsoft.com/en- us / windows /   -  person Fuzzy Analysis    schedule 19.04.2014


Ответы (1)


Вы предположили, что проблема может заключаться в брандмауэре, и тайм-аут соединения в локальной сети, безусловно, заставляет думать, что это могло быть так, если IP-адрес и номер порта верны.

В таком случае вам нужно открыть порт 1521 в брандмауэре. В статье Microsft показано, как это сделать для SQL Server; процесс такой же, только для другого номера порта. Или более общие инструкции по открытию любого порта:

  1. Откройте брандмауэр Windows, нажав кнопку «Пуск», а затем - «Панель управления». В поле поиска введите брандмауэр и щелкните Брандмауэр Windows.

  2. На левой панели щелкните Расширенные настройки. Если вам будет предложено ввести пароль администратора или подтверждение, введите пароль или предоставьте подтверждение.

  3. В диалоговом окне Брандмауэр Windows в режиме повышенной безопасности на левой панели щелкните Правила для входящих подключений, а затем на правой панели щелкните Новое правило.

  4. Следуйте инструкциям мастера New Inbound Rule.

person Alex Poole    schedule 19.04.2014
comment
Спасибо. Должен был знать, что это проблема с брандмауэром. - person Fuzzy Analysis; 19.04.2014