Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 DDL ALTER TABLE..  [new]
proxy_911
Member

Откуда:
Сообщений: 182
Добрый день коллеги,

Есть Пакетник PKG_1 в нем есть Функция FUNC_1 которые вызывается почти 1000 раз в минуту, и в нем select .ются некая таблица TABLE_1..
Все select -ы написано таким образом
select column_name from TABLE_1
а не как
select * from TABLE_1


Вопрос такой: Если я буду добавлять новую колонку на эту таблицу то это не повлияет на обработки заявки Функции ?
То есть при ALTER - е таблицы не нарушается работы функции ?

За каждый ответь буду благодарен..
13 сен 17, 10:27    [20792030]     Ответить | Цитировать Сообщить модератору
 Re: DDL ALTER TABLE..  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 5516
proxy_911,

Сэмулировать возможности не нашлось?

Будет инвалидация функции с компиляцией при первом обращении.
13 сен 17, 10:29    [20792043]     Ответить | Цитировать Сообщить модератору
 Re: DDL ALTER TABLE..  [new]
Aliona
Member

Откуда: Санкт-Петербург
Сообщений: 3598
proxy_911
Вопрос такой: Если я буду добавлять новую колонку на эту таблицу то это не повлияет на обработки заявки Функции ?
То есть при ALTER - е таблицы не нарушается работы функции ?


Новая колонка будет пустая или чем-то заполнена?
если колонку надо заполнить, нпример дефолтным занчением, а таблица большая, на это понадобиться некоторое время, a ваша функция в это время будет висеть.

Начиная с oracle 10, появился полезный
The DBMS_REDEFINITION package provides an interface to perform an online redefinition of tables.

https://docs.oracle.com/database/121/ARPLS/d_redefi.htm#ARPLS042
13 сен 17, 10:44    [20792101]     Ответить | Цитировать Сообщить модератору
 Re: DDL ALTER TABLE..  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2042
Aliona
если колонку надо заполнить, нпример дефолтным занчением, а таблица большая, на это понадобиться некоторое время, a ваша функция в это время будет висеть
чё??
13 сен 17, 11:05    [20792165]     Ответить | Цитировать Сообщить модератору
 Re: DDL ALTER TABLE..  [new]
Q.Tarantino
Member

Откуда: Где-то рядом...
Сообщений: 12051
--Eugene--
Aliona
если колонку надо заполнить, нпример дефолтным занчением, а таблица большая, на это понадобиться некоторое время, a ваша функция в это время будет висеть
чё??

блокировочки возникнут, чё :)
13 сен 17, 11:08    [20792181]     Ответить | Цитировать Сообщить модератору
 Re: DDL ALTER TABLE..  [new]
AmKad
Member

Откуда:
Сообщений: 4620
Q.Tarantino,

Господа, о каких блокировках идет речь, если в функции, как показал автор, простые селекты?
13 сен 17, 11:14    [20792197]     Ответить | Цитировать Сообщить модератору
 Re: DDL ALTER TABLE..  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром началась. КЯЗ
Сообщений: 27381
AmKad
о каких блокировках идет речь, если в функции, как показал автор, простые селекты?
library cache pin, например.
13 сен 17, 11:20    [20792219]     Ответить | Цитировать Сообщить модератору
 Re: DDL ALTER TABLE..  [new]
Болтаювпт
Member

Откуда:
Сообщений: 53
Elic
AmKad
о каких блокировках идет речь, если в функции, как показал автор, простые селекты?
library cache pin, например.
На время alter table, которое можно сделать коротким - отделить от заполнения данными (которые отдельно dml и перекомпиляции не вызывают). Хотя, как долго будет работать modify column default value при заполненном поле - не проверял. Опять же, какая именно часть ddl будет блокировать library cache и сколько она длится, и каким номером она идет в последовательности выполнения, надо смотреть экспериментально. Ну и, если всё совсем критично, есть dbms_redefinition.
13 сен 17, 12:58    [20792540]     Ответить | Цитировать Сообщить модератору
 Re: DDL ALTER TABLE..  [new]
proxy_911
Member

Откуда:
Сообщений: 182
Aliona,

Таблица не большая, все значении новой колонки будет "0" по дефолту.
Версии БД 12С.
13 сен 17, 14:21    [20792863]     Ответить | Цитировать Сообщить модератору
 Re: DDL ALTER TABLE..  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2042
proxy_911
Таблица не большая
если не большая, тогда че паришься вообще?
13 сен 17, 14:24    [20792883]     Ответить | Цитировать Сообщить модератору
 Re: DDL ALTER TABLE..  [new]
proxy_911
Member

Откуда:
Сообщений: 182
AmKad,

На Функции, не простые Select - ы.. Там 1600 строк кода с разнообразными условиями.
13 сен 17, 14:26    [20792887]     Ответить | Цитировать Сообщить модератору
 Re: DDL ALTER TABLE..  [new]
proxy_911
Member

Откуда:
Сообщений: 182
--Eugene--
proxy_911
Таблица не большая
если не большая, тогда че паришься вообще?


Запрос для Alter - а длится около 1-2 сек.. В эти 1-2 сек Функция выполняется 10-15 раз, и как себя ведет во время компиляции.?
13 сен 17, 14:32    [20792905]     Ответить | Цитировать Сообщить модератору
 Re: DDL ALTER TABLE..  [new]
proxy_911
Member

Откуда:
Сообщений: 182
Болтаювпт
Elic
пропущено...
library cache pin, например.
На время alter table, которое можно сделать коротким - отделить от заполнения данными (которые отдельно dml и перекомпиляции не вызывают). Хотя, как долго будет работать modify column default value при заполненном поле - не проверял. Опять же, какая именно часть ddl будет блокировать library cache и сколько она длится, и каким номером она идет в последовательности выполнения, надо смотреть экспериментально. Ну и, если всё совсем критично, есть dbms_redefinition.


Спасибо, Болтаювпт смотрю dbms_redefinition..
13 сен 17, 14:36    [20792919]     Ответить | Цитировать Сообщить модератору
 Re: DDL ALTER TABLE..  [new]
DВА
Member

Откуда:
Сообщений: 4969
proxy_911
Болтаювпт
пропущено...
На время alter table, которое можно сделать коротким - отделить от заполнения данными (которые отдельно dml и перекомпиляции не вызывают). Хотя, как долго будет работать modify column default value при заполненном поле - не проверял. Опять же, какая именно часть ddl будет блокировать library cache и сколько она длится, и каким номером она идет в последовательности выполнения, надо смотреть экспериментально. Ну и, если всё совсем критично, есть dbms_redefinition.


Спасибо, Болтаювпт смотрю dbms_redefinition..


хрен редьки не слаще )))
13 сен 17, 14:40    [20792930]     Ответить | Цитировать Сообщить модератору
 Re: DDL ALTER TABLE..  [new]
orac_list
Member

Откуда:
Сообщений: 83
Aliona
Новая колонка будет пустая или чем-то заполнена?
если колонку надо заполнить, нпример дефолтным занчением, а таблица большая, на это понадобиться некоторое время, a ваша функция в это время будет висеть.


Начиная с 11g при добавлении колонки с default not null все изменения проходят мнгновенно, т.к. меняется только информация в словаре.

When you add a column, the initial value of each row for the new column is null.

If you specify the DEFAULT clause for a NOT NULL column, then the default value is stored as metadata but the column itself is not populated with data. However, subsequent queries that specify the new column are rewritten so that the default value is returned in the result set.

This optimized behavior differs from earlier releases, when as part of the ALTER TABLE operation Oracle Database updated each row in the newly created column with the default value, and then fired any update triggers defined on the table. In this release, no triggers are fired because the default is stored only as metadata

https://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_3001.htm#i2054940
14 сен 17, 11:31    [20795021]     Ответить | Цитировать Сообщить модератору
 Re: DDL ALTER TABLE..  [new]
orac_list
Member

Откуда:
Сообщений: 83
orac_list
Aliona
Новая колонка будет пустая или чем-то заполнена?
если колонку надо заполнить, нпример дефолтным занчением, а таблица большая, на это понадобиться некоторое время, a ваша функция в это время будет висеть.


Начиная с 11g при добавлении колонки с default not null все изменения проходят мнгновенно, т.к. меняется только информация в словаре.

When you add a column, the initial value of each row for the new column is null.

If you specify the DEFAULT clause for a NOT NULL column, then the default value is stored as metadata but the column itself is not populated with data. However, subsequent queries that specify the new column are rewritten so that the default value is returned in the result set.

This optimized behavior differs from earlier releases, when as part of the ALTER TABLE operation Oracle Database updated each row in the newly created column with the default value, and then fired any update triggers defined on the table. In this release, no triggers are fired because the default is stored only as metadata

https://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_3001.htm#i2054940


А в 12с эту оптимизацию еще расширили на nullable колонки.
14 сен 17, 11:33    [20795029]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить