powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Пошевелим извилинами?
11 сообщений из 11, страница 1 из 1
Пошевелим извилинами?
    #32151332
Sh_ura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Описываю проблему, может кто знает что надо сделать:
Выполняю операторы последовательно в sql+ или PLSQL Developer в Command Window
alter type test1 add attribute newattr_1 number cascade;
alter type test1 add attribute newattr_2 number cascade;
....
alter type test1 add attribute newattr_n number cascade;
Все выполняется нормально.
Пытаюсь то же самое(другие названия атрибутов естественно), но формируя запрос динамически, например
execute immediate 'alter type test1 add attribute newattr_30 number cascade';
execute immediate 'alter type test1 add attribute newattr_31 number cascade';
....
execute immediate 'alter type test1 add attribute newattr_m number cascade';

Первый запрос выполняется без проблем (newattr_30). Второй(newattr_31) выскакивает с ошибками 22324, 22328, 00600. Последущий запуск второго запроса выдает ошибку 03113. Если после этого выполнить 3-й раз второй запрос, то он выполниться нормально.

Я так понимаю, каждый последующий запрос с помощью execute immediate каким-то образом конфликтует с первым, а из-за чего конкретно незнаю.
Какие будут предложения?
С уважением Sh_Ura.
...
Рейтинг: 0 / 0
Пошевелим извилинами?
    #32151356
ShgGena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для execute immediate и для непосредственного выполнения alter Oracle использует
разные алгоритмы расчета hash-ключей.

- Для execute immediate - это hash-ключ в library cache (т.к. текст alter - это переменная)
- для выполнения alter - это hash-ключ в Sql-area непосредственно

далее я не полностью уверен в предположении:
для расчета hash-ключа в library cache в library cache используются первые 30 байт текста
для расчета hash-ключа в Sql-area - весь текст
это может быть потенциальной проблемой

Кстати - это Oracle 8i или 9i?
...
Рейтинг: 0 / 0
Пошевелим извилинами?
    #32151364
Sh_ura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Oracle 9.2.0.3
каким образом можно попытаться решить проблему - изменить некоторые параметры для hash или пакета DBMS_SQL и т.п., а то не совсем понятно что делать.
...
Рейтинг: 0 / 0
Пошевелим извилинами?
    #32151369
ShgGena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно проверить предположение следующим образом:

1) execute immediate 'alter type test1 add attribute newattr_30 number cascade';
после этого:
2) execute immediate 'ALTER TYPE TEST ... number cascade';
т.е. сменить регистр.

Но с type - объектами часто возникают подобные проблемы.
Надо кроме того проверить список багов для версии.
...
Рейтинг: 0 / 0
Пошевелим извилинами?
    #32151373
Sh_ura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал сменить регистр - проблема осталась
Точно помогает сессию закрыть и снова открыть - в принципе ошибка 03113 и есть сообщение о том что нет связи с Oracle (хотя на самом деле связь остается).
Может что то с параметрами сессии сделать?
...
Рейтинг: 0 / 0
Пошевелим извилинами?
    #32151378
Sh_ura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а может есть операторы с помощью которых можно сделать реконнект не описывая заново имя пользователя и пароль?
...
Рейтинг: 0 / 0
Пошевелим извилинами?
    #32151716
Sh_ura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я немного разобрался в этом вопросе - основная проблема заключается в потомках объекта, когда у типа нет потомков, то нет и проблем. Отсюда и возникает следующий вопрос :
Каким образом отключить на время потомка?
В доке по 8.1.7 ничего нет по этому поводу. Принимаются любые идей (с перекомпиляцией объектов, с запрещением объектов и т.п.)

С уважением Sh_Ura
...
Рейтинг: 0 / 0
Пошевелим извилинами?
    #32151728
Фотография Oracle X-pert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A child objects nado sozdavat' s opziei dobavleniya ( sozdavat' ix 'nezakonchennymi ')
...
Рейтинг: 0 / 0
Пошевелим извилинами?
    #32151749
Sh_ura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, все объекты создаються с опцией not final
...
Рейтинг: 0 / 0
Пошевелим извилинами?
    #32151786
Фотография Oracle X-pert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Poprobyi s
REUSE SETTINGS clause &
AUTHID CURRENT_USER clause
...
Рейтинг: 0 / 0
Пошевелим извилинами?
    #32151866
Sh_ura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за обсуждение
вроде нашел решение:
добавление атрибутов нужно делать только для одного этого типа, т.е. с параметром invalidate, а не cascade. А потом перекомпилить всех потомков
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Пошевелим извилинами?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]