настройка Oracle и драйвера ODBC
если ты ничего не удалял, может поможет просто установить переменную среды ORACLE_HOME в нужное место?
Ну ладно с ораклом, а с ODBC есть идеи?
система находит там оракл ии т.д. после всего этого побыстрому посмотрим что у тебя в реестре и в переменных среды и всё починим, и клиента и драйвер. Если хочешь, то пиши в приват.
Говорят, удалить оракл можно только с format c:удаление одной ветки в реестре
удаление папки с установленным ораклом
плюс, при желании - удаление папки в Program Files - что-то там про Inventory..
Если последовать твоей инструкции имхо останется неработающий odbc драйвер
Error while executing data base script Unable to obtain connection for URL jdbc:oracle:thin:@localhost:1521:XE JDBC provider exception: Unable to obtain connection for URL jdbc:oracle:thin:@localhost:1521:XE Error codes: [null, 0] Driver exception: java.sql.SQLException: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was: localhost:1521:XE
Пачка сервисов, мусор в PATHе, и еще бог знает что и где.
откуда пачка сервисов в клиенте?
А кто сказал, что речь о клиенте?
решился на переустановку. В Пасе действительно оставил свой путь. Сервисы все удалил. Но много оставил в реестре. Руками удалил все кроме LEGACY***
Error while executing data base script Unable to obtain connection for URL jdbc:oracle:thin:@localhost:1521:XE JDBC provider exception: Unable to obtain connection for URL jdbc:oracle:thin:@localhost:1521:XE Error codes: [null, 0] Driver exception: java.sql.SQLException: Listener refused the connection with the following error: ORA-12505, TNS:listener does not currently know of SID given in connect descriptor The Connection descriptor used by the client was: localhost:1521:XEЭто означает что при подключении клиент не находит базы с переданным именем ("XE").
Вариантов несколько, основные:
1. База называется не так.
2. База не стартовала.
3. База вообще не создана.
Проще всего оценить если ты выложишь скриншот Служб в районе слова oracle
через SQL консоль тоже коннект проходит.
Теперь интересное. Если конектиться через SQL Navigator, то вылетает
ORA-12154: TNS:невозможно разрешить заданный идентификатор соединения
Make sure connection parameters are correct and try again
tnsnames.ora
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCPHOST = 127.0.0.1PORT = 1521
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPCKEY = EXTPROC_FOR_XE
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPCKEY = EXTPROC_FOR_XE
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
Пропиши себе в системе переменную TNS_ADMIN
Вобщем если конектиться из родного серверу клиента, то
connect to XE:
ORA-12541: TNS:no listener (хотя он в папке есть)
connect to ORACLR_CONNECTION_DATA:
ORA-28547: connection to server failed, probable Oracle Net admin error
На порте 1521 вообще кто-нибудь слушает?
TCP localhost:1521 localhost:0 LISTENING 3844 [tnslsnr.exe]
Блядь, просто пиздец. Я чо-то сделал и все заработало. Узнаю чо, напишу.
в списке SID_LIST в SID_LIST_LISTENER должно быть
...
(SID_DESC =
(SID_NAME = XE)
(ORACLE_HOME = c:\oraclexe\app\oracle\product\10.2.0\server)
(GLOBAL_DBNAME = 127.0.0.1)
)
...
Listener - это ведь файл который лежит на сервере?
Вроде да, тогда как можно сделать так чтобы листенер грузился сам по себе из папки с сервером, а tnsnames из папки с клиентом?
1) это что уже про listener.ora написал
2) NLS_LANG в реестре сервера и клиента должен совпадать и быть равным RUSSIAN_RUSSIA.CL8MSWIN1251
3) в sqlnet.ora должна быть только строка
SQLNET.AUTHENTICATION_SERVICES = (NTS)
Хотя после всего этого не работает вебинтерфейс, но он уже нахрен не сдался.
NLS_LANG в реестре сервера и клиента должен совпадать и быть равным RUSSIAN_RUSSIA.CL8MSWIN1251Вот это далеко не всегда так. Я использую UTF8.
так?
у меня было 3 варианта.
RUSSIAN_RUSSIA.CL8MSWIN1251
RUSSIAN_CL8.CL8MSWIN1251 - вроде так
AMERIKAN_AMERIKA.CL8MSWIN1251 - вроде так
подошел только один
RUSSIAN_CIS.AL32UTF8
Только кодировка, если не ошибаюсь, не имеет отношения к тому, что listener не подхватывал нужный экземпляр. Разные значения на сервере и на клиенте могут только привести к тому, что вместо ожидаемых символов получишь крякозябры.
дело в том, что с родного серверу клиенту работало, а с другого нет, выдавало ошибки. Когда стал искать как исправить оказалось дело в кодировке и т.д. и т.п.
А можешь сказать, какая именно ошибка была и почему ты решил, что она решилась именно исправлением кодировки, а не чего-либо еще.
12514, еще какая-то. Когда oracle говорит, что мол не могу понять твой NLS, трудно не поверить + не у одного меня такие проблемы, но ответы пишут не все. Самое сложное, что я добился таки работы. но вот при коннекте project.net выдает все ту же ошибку про NLS. И я хз какую именно нужно установить чтобы все заработало. Попробую UTF8 завтра поставить.
Listener - это ведь файл который лежит на сервере?Нет, Listener — это процесс который слушает порт(1521) и передаёт команды на экземпляр оракла. Listener.ora — это его настроечный файл.
Вроде да, тогда как можно сделать так чтобы листенер грузился сам по себе из папки с сервером, а tnsnames из папки с клиентом?листенер работает сам по себе, а tnsnames берётся из одного из клиентов на основании кучи правил (большинству приложений хватает TNS_ADMIN, но не всем поэтому проще иметь одинаковые sqlnet.ora и tnsnames.ora в каждом из клиентов.
2) NLS_LANG в реестре сервера и клиента должен совпадать и быть равным RUSSIAN_RUSSIA.CL8MSWIN1251
Нет, не должны. Тем более это не верный nls_lang. (RUSSIAN_CIS.CL8MSWIN1251)
Вообще кодировка не влияет на работу листенера и базы, только на клиента.
3) в sqlnet.ora должна быть только строка
Видимо по этому у тебя и не работает tnsnames, допиши ещё:
NAMES.DIRECTORY_PATH=(tnsnames, hostname)
вот при коннекте project.net выдает все ту же ошибку про NLS. И я хз какую именно нужно установить чтобы все заработало. Попробую UTF8 завтра поставить.
Я не знаю откуда берёт ODBC настройки NLS по умолчанию, поэтому советую проверить везде где ты их менял (например в реестре поэтому что из все варианты которые ты здесь писал не правильные.
Выставил, кстати, твой NLS_LANG
Выдает ошибку
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
список моих NLS такой.
RUSSIAN_CIS.CL8MSWIN1251
AMERICAN_AMERICA.CL8MSWIN1251
RUSSIAN_RUSSIA.CL8MSWIN1251
С последним работает, с остальными нет. выставление любого из остальных двух вызывает
ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified
ORA-01034: ORACLE not availableЭто значит либо oracle не запущен либо не правильно выставлен параметр ORACLE_SID
ORA-27101: shared memory realm does not exist
С последним работает, с остальными нет. выставление любого из остальных двух вызываетПопробуй выставить ORACLE_HOME
ORA-00604: error occurred at recursive SQL level 1
ORA-12705: Cannot access NLS data files or invalid environment specified
Оставить комментарий
Teteshnik
Ситуация такая.на WinXP стоял клиент оракл ЕЕ и девелопер сьют.
Для теста project.net нужен был локальный сервер.
поставил. Скачал оракл ХЕ. т.к. жал галочки по-умолчанию, то наверно не заметил как поставил его вместе с клиентом. Короче теперь у меня 2 клиента. Коннект к удаленному серверу восстановили на новом клиенте, но вот конект project.net к своей базе не появился. Знающий человек посмотрел и озвучил версию что не работает ODBC. Так, напимер, не могу подконектиться из Access по ODBC к ораклу. Драйвер скачал, установил, ничего не изменилось.
Прошу у знающих людей проверенных ссылок на мануал по исправлению работы ODBC, и вообще хочу восстановить работу первого клиента т.к. он побольше, а в regedit лезть без мануала страшно. Говорят, удалить оракл можно только с format c:
Устанавливать, конечно, второй клиент было ошибкой, но на ошибках учатся...