| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Delphi и Oracle |
| Автор: Sax 14.4.2007, 14:13 |
| На домашнем компьютере установлен Oracle 9i (9.2.0.1.0). Вместе с ним используется Borland Delphi 7 Enterprise. Из всех процессов в Панель управления\Администрование\Службы оставлено на автозапуске только три: OracleMTSRecoveryService, OracleOraHome92TNSListener и OracleServicePROBASAX. С помощью Enterprise Manager Console из-под пользователя System создан новый пользователь с именем Usersax. Все настройки пользователя повторяют настройки пользователя Scott созданного при установке автоматически. В распроряжении пользователя Usersax одна таблица с именем FTable. Эта таблица содержит три столбца с именами A, B и C. Записей в таблице нет. В Delphi создано обычное приложение с одной формой. Все настройки по умолчанию. На форме размещено по одному компоненту DBGrid, DataSource, ADOTable. В свойстве TableName компонета ADOTable выбрана таблица FTable. Строка ConnectionString компонента ADOTable содержит следующее: Provider=OraOLEDB.Oracle.1;Password=sax3;Persist Security Info=True;User ID=Usersax;Data Source=PROBASAX. То есть драйвер используется Oracle Provider for OLE DB. В настроках установлен checkbox - разрешить сохранение пароля. При нажатии кнопки "Проверить подключение" появляется сообщение "Проверка подключения выполнена". При установке свойства Active компонента ADOTable в положение True в компоненте DBGrid повляются три пустых столбца с именами A, B и C. При попытке откомпилировать программу выдаётся сообщение: ORA-12154: TNS:невозможно разрешить имя службы. В чём причина. Разобраться сам не могу - только начинаю работать с Oracle. |
| Автор: ACMilian 14.4.2007, 14:27 |
| могу тока посоветовать установить DOA для работы с ораклом. |
| Автор: Sax 14.4.2007, 14:33 |
| Существует ли какое-то описание как с DAO работатьи где его взять, если есть? Скачал, установил, а что с ним делать не совсем понятно. Хотелось бы что-нибудь на русском языке. |
| Автор: ACMilian 14.4.2007, 14:42 |
| с DAO или с DOA? поищи на этом сайте в разделе литература по дэлфи...есть почти фсё |
| Автор: Sax 14.4.2007, 14:53 |
| Я скачивал Oracle Data Access Components. version 5.80.0.35 trial for Delphi 7. И чё-то они не понятно как с ними работать. |
| Автор: ACMilian 14.4.2007, 15:01 |
| ну так если всё правильно установил то на закладке, которую указал, должны быть компонеты эти. вот с ними и работай. бросай на форму OracleSession. в сво-ве LogonDatabase выбираешь имя совей базы ораклинай и всё. |
| Автор: Sax 14.4.2007, 15:21 |
| На форме только компонент OraSession1. OracleSession нет В свойстве ConnectString - usersax/[email protected]. В свойстве HomeName - OraHome92. В свойстве Schema - usersax. В свойстве Server - probasax.com. В свойстве Username - usersax. Устававливаешь Connected в положение True - запрашивает пароль и OK. И та же ошибка "ORA-12154: TNS:невозможно разрешить имя службы". |
| Автор: LSD 14.4.2007, 15:22 |
| 1. Из под SQL*Plus и пользователя Usersax коннект нормальный? 2. Если попробовать соединиться с базой под пользователем system, что получится? |
| Автор: Sax 14.4.2007, 15:31 |
| 1. В SQL*Plus при попытке соединения Имя пользователя - Usersax Пароль - **** Строка связи - probasax.com То появляется та же ошибка - ERROR: ORA-12154: TNS:невозможно разрешить имя службы При попытке соединения Имя пользователя - Usersax Пароль - **** Строка связи - <пусто> То сообщение Присоединен к: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.1.0 - Production |
| Автор: LSD 14.4.2007, 15:35 |
Почему probasax.com а не probasax? У тебя как база называется? |
| Автор: ACMilian 14.4.2007, 15:36 |
| что я могу сказать..у меня Дэлфи 5, оракл8 и DOA 3.4.3. с большей версией не сталкивался. почитай встроенный help про сови компанеты в поисковике ошибку оракла глянь. глянь по ссылке мот и у тебя тоже: http://forum.codenet.ru/showthread.php?p=60999 Добавлено через 3 минуты и 43 секунды а вообще в базу зайти можешь? через SQL Plus например |
| Автор: Sax 14.4.2007, 15:38 |
| 2. Если через Delphi и ADOTable Строка ConnectionString - Provider=OraOLEDB.Oracle.1;Password=sax2;Persist Security Info=True;User ID=system;Data Source=PROBASAX Свойство TableName - пробовал FTABLE и другая, не моя таблица. Пытаешься поставить Active в True появляется сообщение - ORA-00942 Таблица или представление пользователя не существует Добавлено через 2 минуты и 35 секунд Попробавал в SQL*Plus Имя пользователя - Usersax Пароль - **** Строка связи - probasax Cообщение Присоединен к: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.1.0 - Production А в Delphi всё-равно не работает |
| Автор: LSD 14.4.2007, 15:41 |
Надо было ставить USERSAX.FTABLE. |
| Автор: Sax 14.4.2007, 15:46 |
| Так там же список выпадающий со всеми индексами, таблицами и т.п. Пробовал в свойстве TableName - USERSAX.FTABLE. Без разницы в конструкторе показывает столбцы, а компилироваться не хочет. С той же ошибкой. |
| Автор: Sax 14.4.2007, 15:47 |
| Попробавал в SQL*Plus Имя пользователя - Usersax Пароль - **** Строка связи - probasax Cообщение Присоединен к: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production With the Partitioning, OLAP and Oracle Data Mining options JServer Release 9.2.0.1.0 - Production А в Delphi всё-равно не работает |
| Автор: ACMilian 14.4.2007, 15:51 |
| а покажите что есть в tnsnames.ora и sqlnet.ora |
| Автор: LSD 14.4.2007, 15:57 |
| Тогда проблема не в Oracle, а или в ADO или в Delphi. Модератор: перемещено из Oracle |
| Автор: Sax 14.4.2007, 15:59 |
| Вот файл tnsnames.ora из папки \oracle\ora92\network\admin # TNSNAMES.ORA Network Configuration File: D:\oracle\ora92\NETWORK\ADMIN\tnsnames.ora # Generated by Oracle configuration tools. INST1_HTTP = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 12-4666b460d102)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = SHARED) (SERVICE_NAME = MODOSE) (PRESENTATION = http://HRService) ) ) EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(Key = EXTPROC0)) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) ) PROBASAX = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 12-4666b460d102)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = probasax.com) ) ) Добавлено через 2 минуты и 3 секунды Вот файл sqlnet.ora из папки \oracle\ora92\network\admin # SQLNET.ORA Network Configuration File: D:\oracle\ora92\network\admin\sqlnet.ora # Generated by Oracle configuration tools. SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) |
| Автор: Sax 14.4.2007, 16:02 |
| Так а где проблема. Прописываю вроде всё правильно (см. выше) |
| Автор: ACMilian 14.4.2007, 16:19 |
| хз...а ты пользователю своему дал права на созднание сессии? |
| Автор: Sax 14.4.2007, 16:22 |
| Так я же говорю, что только начал с oracle работать. Это где и что устанавливать нужно? |
| Автор: ACMilian 14.4.2007, 16:27 |
| извини, времени нет. домой нада. вот тебе помощник: http://www.firststeps.ru/sql/oracle/r.php?1 |
| Автор: Sax 14.4.2007, 18:17 |
| На шаге восьмом в справочнике http://www.firststeps.ru/sql/oracle/r.php?1 написано как создавать пользователя и прилагаются bat и dat файлы. Пользователь создаётся нормально. Запускаю через командную строку miller.bat и IMP-00058: ORACLE выдал ошибку12154 ORA-12154: TNS:невозможно разрешить имя службы IMP-00000: Импорт данных завершил неудачно |
| Автор: Sax 28.4.2007, 13:56 |
| При просмотре log файлов: в файле D:\oracle\ora92\network\log\nmiconf.log много ошибок: " DBSNMP for 32-bit Windows: release 9.2.0.0.0 - Production on 07-APR-07 14:12:57 Discovering services on 12-4666b460d102 configured on host addresses {12-4666b460d102 127.0.0.1} Warning : Error while sourcing third party discovery file emddiscover.tcl : unable to get value "em_loc" from key "HKEY_LOCAL_MACHINE\Software\Oracle": Не удается найти указанный файл. " в файле D:\oracle\ora92\network\log\dbsnmp.log много таких ошибок: " DBSNMP for 32-bit Windows: Version 9.2.0.1.0 - Production on 15-АПР-2007 17:11:40 Copyright © 2002 Oracle Corporation. All rights reserved. файлом системных параметров является D:\oracle\ora92\network\admin\snmp_ro.ora сообщения протокола записаны в D:\oracle\ora92\network\log\dbsnmp.log информация протокола записана в D:\oracle\ora92\network\trace\dbsnmp_2396.trc текущим уровнем протокола является 0 NMS-00001: Предупреждение: dbsnmp не может соединиться с мастер-агентом SNMP " Производились неоднократные установки различных версий (Enterprise Edition, Standard Edition, Perosonal Edition), что не приводило к корректной работе Delphi и Oracle. При попытке подсоединения к таблице через ADOTable c помощью драйвера Oracle Provider for OLE DB при компилировании программы (Run(F9)) выдавалась ошибка "ORA-12154 TNS:невозможно разрешить имя службы". При попытке подсоединения к таблице через ADOTable c помощью драйвера Microsoft OLE DB Provider for Oracle при компилировании программы (Run(F9)) выдавалась ошибка "ORA-06413 соедиение не уставлено" (номер такой, а текст ошибки точно не помню). При попытке подсоединения к таблице через Oracle Data Access Components 5.80.0.35 Net Trial for Delphi 7 с помощью компонент OraSession, OraTable или OraQuery выдавалась ошибка "ORA-06413 соедиение не уставлено". Была установлена бесплатно распространяемая СУБД "Oracle Database 10g Express Edition" - 206 Мегабайт. Ошибки аналогичны тем, что и при работе с версией Oracle 9i (9.2.0.1.0). Произведена переустановка с форматированием Win XP SP2 rus, Oracle 9i (9.2.0.1.0) Enterprise Edition и Borland Delphi 7 Enterprise. Все настройки стандартные. Соединение Delphi и Oracle с помощью ADOTable и драйвера Oracle Provider for OLE DB выдает Delphi ошибку "Invalid variant operation". Соединение Delphi и Oracle с помощью ADOTable и драйвера Microsoft OLE DB Provider for Oracle проходит успешно. Отличия первого варианта от нового: - отсутствует DrWeb 4.33.2.12251 - отсутствуют дополнения WindowsXP-KB884020-x86-rus WindowsXP-KB911280-v2-x86-RUS WindowsXP-KB914388-x86-RUS WindowsXP-KB914389-x86-RUS WindowsXP-KB917159-x86-RUS WindowsXP-KB917422-x86-RUS WindowsXP-KB917953-x86-RUS WindowsXP-KB920214-x86-RUS WindowsXP-KB920670-x86-RUS WindowsXP-KB920683-x86-RUS WindowsXP-KB921398-x86-RUS WindowsXP-KB921883-x86-RUS WindowsXP-KB922616-x86-RUS - при уставноке использовалась классическая тема формления Windows - установка прошла не за 60 минут как ранее, а за 20. |
| Автор: Sax 12.5.2007, 13:43 |
| Дома используются: - Win XP SP2 rus; - Oracle 9i (9.2.0.1.0) Enterprise Edition; - Borland Delphi 7 Enterprise; - метод доступа - ADO (ADOTable). В корневом каталоге системного диска созданы папки "Новая папка", "Новая папка (2)", "Новая папка (3)". Из первой приложение запускается нормально и нормально работает. Из двух других уже при запуске пишет "ORA-06413: Соединение не открыто" с драйвером Microsoft OLE DB Provider for Oracle, а с драйвером Oracle Provider for OLE DB выдаёт ошибку "ORA-12154 TNS:невозможно разрешить имя службы". Попробовал создать папку со случайным именем "poiuyt" - рабоает, а с имененм "poiuyt (10)" - ошибки. Причём с именами "Новая папка 2", "Новая папка 3" всё работает. То есть не понимает закрывающую скобку!!! Причина непонятна, но ФАКТ!!! На это потребовалось две недели времени, более 7 раз переставлял Oracle, 1 переустановка Win и куча нервов! |