Как получить данные из базы данных Oracle с другого компьютера

Я пытаюсь выполнить одно простое настольное приложение в своей системе, основанное на Java Swing. Это приложение извлекает данные из базы данных оракула, которая находится на компьютере А.

Я выполнил разработку на компьютере А, построил банку и сохранил банку в другой системе. Я запустил все службы оракула и создал одноранговую сеть между двумя системами, но не могу запустить приложение с другого компьютера. Я много гуглил и внес упомянутые изменения. Тем не менее я получаю ту же ошибку прослушивателя TNS.

IOException: The network adapter could not establish the connection.

наконец, я решил разместить свой код здесь. пожалуйста, посмотрите на приведенный ниже код:

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection =     
    DriverManager.getConnection("jdbc:oracle:thin:@//xxx.xxx.xxx.xxx:1521/XE"
                                 ,"system"
                                 ,"system"    );

Пожалуйста помоги мне с этим.

Я также пытался изменить файл tnsnames.ora, но это не помогло. может ли кто-нибудь помочь мне в этом.


person Pankaj Sharma    schedule 19.07.2014    source источник
comment
Можете ли вы пропинговать целевой сервер? Можете ли вы затем tnsping целевой базы данных?   -  person OldProgrammer    schedule 19.07.2014


Ответы (1)


Проверьте файл listener.ora - к какому IP адресу привязывается сервис, т.е. какой IP адрес указан в этом файле? Если 127.0.0.1, это объясняет, почему он работает на компьютере A, но не на B.

Если это так, вам следует сначала остановить службу прослушивателя, создать резервную копию listener.ora, отредактировать listener.ora, изменить IP-адрес на соответствующий для компьютера A (доступный с компьютера B), перезапустить прослушиватель и повторить попытку.

Используйте tnsping, чтобы проверить работу соединения, если у вас нет пинга TNS, вы можете попробовать «порт имени хоста Telnet» (например, компьютер telnet-A 1521), и если он возвращает пустой экран и мигающий курсор в левом верхнем углу, то служба работает.

person TenG    schedule 19.07.2014
comment
Привет, я попробовал это решение, но оно не сработало, я открыл файл listener.ora и внес следующие изменения. LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) (ADDRESS = (PROTOCOL = TCP)(HOST = XXX.XXX.XXX.XXX)(PORT =1521)))) еще Я получаю ту же ошибку, когда я пытался использовать имя хоста telnet 1521, он возвращает мне ошибку, говорящую о том, что не удалось подключиться. ниже приведены мои изменения файлов tnsnames.ora XE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = xxx.xxx.xxx.xxx) (PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE ))) - person Pankaj Sharma; 20.07.2014
comment
Можете ли вы telnet localhost 1521 на вашем компьютере A? После внесения изменений вы перезапустили прослушиватель? Работает ли брандмауэр, препятствующий входящему соединению через порт 1521, или, скорее, вам нужно добавить исключение для TNS в брандмауэре? Пробовали отключать брандмауэр? Если вы используете тонкий Java, TNSNAMES.ORA не имеет значения, поскольку вы указываете соответствующие данные непосредственно в строке подключения, поэтому тонкий драйвер не требует установки клиента Oracle. Возможно, если бы вы разместили следующую информацию, это помогло бы - выходы из ipconfig на обоих ПК, listener.ora, netstat -an. - person TenG; 20.07.2014
comment
Привет, я тоже попробовал это решение. Ниже приведен файл Listener.ora. SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc) (ORACLE_HOME = F:\oraclex\app\oracle\product\10.2.0\server) (PROGRAM = extproc))(SID_DESC =(SID_NAME = CLRExtProc) (ORACLE_HOME = F:\oraclex\app\oracle\product\10.2.0\server) (PROGRAM = extproc))) LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))(ADDRESS = ( ПРОТОКОЛ = TCP)(HOST = 192.168.137.220)(PORT = 1521)))) DEFAULT_SERVICE_LISTENER = (XE) - person Pankaj Sharma; 21.07.2014
comment
вывод telnet localhost 1521: F:\Users\saish pole›telnet localhost 1521 Подключение к локальному хосту... Не удалось открыть соединение с хостом через порт 1521: Ошибка подключения IPConfig: Computer B --- 192.168.137.1 IPConfig: Computer A----192.168.137.220 Кроме того, после внесения изменений в файл listner.ora мой фактический код перестал работать на самом компьютере A и начал выдавать ту же ошибку. как бы то ни было, прежде чем изменять файл listner.ora, работал telnet localhost 1521. - person Pankaj Sharma; 21.07.2014
comment
Также обратите внимание, что мы создали одну сеть Adhoce для связи этих двух PCS. - person Pankaj Sharma; 21.07.2014
comment
ниже мой код подключения: Class.forName(oracle.jdbc.driver.OracleDriver); Connection connection = DriverManager.getConnection(jdbc:oracle:thin:@//192.168.137.220:152 1/XE,system,system); - person Pankaj Sharma; 21.07.2014
comment
Обычно localhost разрешается в 127.0.0.1. У каждого ПК есть адрес локального хоста, который разрешается в 127.0.0.1. Если у вас есть прослушиватель, работающий на 127.0.0.1, к нему можно получить доступ только локально. Вы не сказали, можете ли вы пинговать каждый компьютер с другого. Если можете, проверили ли вы брандмауэр на компьютере А? - person TenG; 21.07.2014