Произошла ошибка Oracle, но не удалось получить сообщение об ошибке из Oracle - PullRequest
0 голосов
/ 05 августа 2011

Существует приложение delphi, в котором я пытаюсь подключиться к базе данных Oracle, используя поставщика MSDAORA.1, но проблема заключается в подключении.Появляется сообщение об ошибке Oracle: «Произошла ошибка Oracle, но не удалось получить сообщение об ошибке из Oracle»

Я могу подключиться к базе данных с клиентом Oracle10g.

Connection String: Provider=MSDAORA.1;
User ID=murat;
Password = murat;
Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST= INGPSP)(PORT=1521))(CONNECT_DATA=(SID=INGPSP)));
Persist Security Info=False;

УкажитеВаше мнение эксперта, что может быть причиной этого?

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

Похоже, что в вашем адресе отсутствует имя службы.

Установите файл tnsnames.ora и используйте эту запись в качестве источника данных вместо заданного вами параметра data_source. Следуйте инструкциям в разделе часто задаваемых вопросов .

Или используйте в качестве источника данных строки подключения, например '// host [: port] / [service_name]': // INGPSP: 1521 / ServiceName

Как известно, для Oracle поставщики Microsoft и Oracle OleDB имеют проблемы с BLOB. Если можете, используйте другое средство связи.

0 голосов
/ 06 августа 2011

Странно, что ваш ХОСТ и SID одинаковы.HOST - это имя компьютера в вашей сети, а SID - это экземпляр базы данных на этом компьютере.Я создал следующую ConnectionString для базы данных PRD3 на компьютере DB19 (в базе данных есть несколько баз данных DB19) в нашей сети.Мне удалось успешно подключиться к базе данных с реальным идентификатором пользователя и паролем.

Provider=MSDAORA.1;
Password=123456;
User ID=abc;
Data Source="(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db19)(PORT=1521))(CONNECT_DATA=(SID=prd3)))";
Persist Security Info=True

Обычно источником данных, который я использую, является имя базы данных, определенное в TNSNAMES.ORA.Это намного меньше для ввода (меньше потенциальных ошибок) и может быть изменено на другую базу данных без перекомпиляции программы (например, переключение между базой данных разработки и производственной базой данных).

...