Добрый день сообщество. Установил Oracle 9i на локальную машину. Поставил клиентские драйвера. Создал базу данных с именем ts и востановил из дампа базу данных террасофт. Подключился с помощью менеджера к ней, все таблицы вроде как создались. Пытаюсь настроить подключение в террасофт 3.3.1 и возникает ошибка:
ORA-12514 TNS процесс прослушивания не нашел SERVICE_NAME для данного дескриптора соединения.
С ораклом знаком первую неделю так что куда смотреть не знаю. Помогите кто сталкивался.
В архиве файлы tnsnames.ora и listener.ora
Нравится
Решил проблему подключения но возникла след. При логине пишет ORA-00902 неверный тип данных.
Здравствуйте.
Не совсем понятно отношение версии SQL-сервера к данному вопросу, но если всё же Вы настраиваете подключение к Oracle-схеме, то такая проблема может возникать если в настройках строки соединения указать название схемы в нижнем регистре. Для возможности подключения обязательным условием является указание схемы в верхнем регистре.
Вы меня не совсем правильно поняли. Настройку подключения к Oracle удалось произвести.
Но теперь при логине сразу возникает ошибка
ORA-00902 неверный тип данных.
Куда смотреть не понятно, в какой таблице неверный тип данных или где вообше
ORA-00902 неверный тип данных.
Понял что надо было имя схемы установить полностью в верхний регистр.
След ошибка вылезла:
ORA-04092 COMMIT в триггере невозможно
---------------------------------- Timestamp: 14:04:01.299 Logon attempt failed. username: 'SUPERVISOR'; database: 'tswork' ---------------------------------- Timestamp: 14:04:01.299 Runtime error occurred: 1005 (ORA-01005: задан пустой пароль; вход в систему запрещается) ---------------------------------- Timestamp: 14:04:05.940 Successful logon attempt (session tag: 0xE417140) username: 'SUPERVISOR'; database: 'tswork' ---------------------------------- Timestamp: 14:04:05.940 declare cursor NlsParamsCursor is SELECT * FROM nls_session_parameters;begin SELECT Nvl(Lengthb(Chr(65536)), Nvl(Lengthb(Chr(256)), 1)) INTO :CharLength FROM dual; for NlsRecord in NlsParamsCursor loop if NlsRecord.parameter = 'NLS_DATE_LANGUAGE' then :NlsDateLanguage := NlsRecord.value; elsif NlsRecord.parameter = 'NLS_DATE_FORMAT' then :NlsDateFormat := NlsRecord.value; elsif NlsRecord.parameter = 'NLS_NUMERIC_CHARACTERS' then :NlsNumericCharacters := NlsRecord.value; elsif NlsRecord.parameter = 'NLS_TIMESTAMP_FORMAT' then :NlsTimeStampFormat := NlsRecord.value; elsif NlsRecord.parameter = 'NLS_TIMESTAMP_TZ_FORMAT' then :NlsTimeStampTZFormat := NlsRecord.value; end if; end loop; SELECT NLS_CHARSET_ID(:Charset) INTO :CharsetId FROM dual;end; CharLength = 1 NlsDateLanguage = 'RUSSIAN' NlsDateFormat = 'DD.MM.RR' NlsNumericCharacters = ', ' NlsTimeStampFormat = 'DD.MM.RR HH24:MI:SSXFF' NlsTimeStampTZFormat = 'DD.MM.RR HH24:MI:SSXFF TZR' Charset = 'UTF8' CharsetId = 871 ---------------------------------- Timestamp: 14:04:05.955 ALTER SESSION SET CURRENT_SCHEMA = SUPERVISOR ---------------------------------- Timestamp: 14:04:05.955 select * from table(CAST("SUPERVISOR"."fn_GetLoginInfo" ('SUPERVISOR') AS "SUPERVISOR"."tbl_GetLoginInfo")) ---------------------------------- Timestamp: 14:04:05.971 SELECT Column_Name Col, Con.Constraint_Name Con FROM All_Constraints Con, All_Cons_Columns Col WHERE Con.Owner = :Owner and Col.Owner = :Owner and Con.Table_Name = :Name and Col.Table_Name = :Name and Con.Constraint_Type in ('P', 'U') and Con.Constraint_Name = Col.Constraint_Name ORDER BY Con.Constraint_Name,Col.Position Name = 'TABLE' Owner = 'SUPERVISOR' ---------------------------------- Timestamp: 14:04:05.986 Logoff (session tag: 0xE417140). ---------------------------------- Timestamp: 14:04:05.986 Runtime error occurred: 4092 (ORA-04092: COMMIT в триггере невозможно)
вот что выдает sql монитор
Однозначно определить причину проблемы очень непросто. Возможно при установке схемы в ней есть "невалидные" объекты (функции, процедуры, триггера). Если это так, нужно попробовать их откмпилировать. Это можно сделать командой из контекстного меню в каком-нибудь Oracle-менеджере, например TOAD. Важно то, как устанавливалась схема. Обязательно это нужно выполнять при помощи скриптов, которые находятся в дистрибутиве в папке "DB" (запускается на выполнение командный файл RestoreDatabase.cmd). Какая схема устанавливалась? Чистая из дистрибутива или перенос уже работавшей. Если схема переносится, то это нужно выполнять только при помощи инструментария: http://community.terrasoft.ua/blogs/4524. Как вариант попробувать выполнить через какой-то инструмент работы с Oracle запрос из лога выше: select * from table(CAST("SUPERVISOR"."fn_GetLoginInfo" ('SUPERVISOR') AS "SUPERVISOR"."tbl_GetLoginInfo"))
Александр в скриптах по созданию фигурирует схема TSAUTOBUILD которой как я понял у меня нету. Откуда она береться? я создаю базу данных первоначально с помощью dbca на сервере. После чего запускаю bat файл из папки DB с инсталяцией террасофта.
При выполнении скрипта востановления из дампа выходят такие ошибки
IMP-00017: при выполнении следующей команды ORACLE возвращает ошибку 23308:
"BEGIN DBMS_DDL.SET_TRIGGER_FIRING_PROPERTY('"TSAUTOBUILD"', '"tr_tbl_Oppo"
"rtunityHistory_BI"', FALSE); END;"
IMP-00003: ORACLE выдал ошибку 23308
ORA-23308: объект TSAUTOBUILD.tr_tbl_OpportunityHistory_BI либо неправильный, либо не существует
ORA-06512: на "SYS.DBMS_SYS_ERROR", line 95
ORA-06512: на "SYS.DBMS_DDL_INTERNAL", line 41
ORA-06512: на "SYS.DBMS_DDL", line 255
ORA-06512: на line 1
(ORA-04092: COMMIT в триггере невозможно)
Проверьте, похоже что у вас есть триггер на Logoff
Схема TSAUTOBUILD - это та, с которой делается дамп, поставляемый с дистрибутивом. Её у Вас нет и не должно быть. "" Пользовательскую схему не нужно создавать в ручном режиме. Как я сообщал выше для этого предназначен инструментарий из папки "DB". Там в скриптах предусмотрено что дамп был создан со схемы TSAUTOBUILD. Обращаю Ваше внимание на то, что термин "база данных" в Oracle радикальным образом отличается от такого же по звучанию и написанию в MS SQL Server. Если проводить аналогию с SQL, то база в Oracle - это экземпляр в MS SQL Server, а база в SQL - это схема в Oracle. Таким образом создавая базу на Oracle через DBCA - это всё равно, что установить ещё один SQL-экземпляр. Как я уже сообщал, установите схему через запуск RestoreDatabase.cmd. Приу становке в процессе будут сообщения об ошибках при создании триггеров - не обращайте внимания (только на эти сообщения, на остальные - обращайте) они создаются.
"Евгений Либин" написал:Проверьте, похоже что у вас есть триггер на Logoff
Можно по подробнее? не совсем понял где смотреть
Здравствуйте.
Вопрос был решён в режиме удалённого доступа.