Описание
Что же такое временные
таблицы, и зачем они нужны?
Временные таблицы
используются в Oracle для хранения данных,
которые относятся к одной сессии или одной транзакции.
Так, например,
целесообразно использовать временные таблицы для хранения данных об открытых
неким клиентским приложением или процессом файлах, об открытых дочерних
формах. Можно так же сохранять во временных таблицах, данные матриц
преобразований в сложных математических задачах.
Итак, временные
таблицы (GLOBAL TEMPORARY TABLE), а отличие от
таблиц регулярных целесообразно использовать в тех случаях, когда
сохраняемее данные часто изменяются, и непостоянны.
Временные таблицы (GLOBAL TEMPORARY TABLE) отличаются от
обычных регулярных таблиц тем, что эти таблицы предназначены только для
хранения временных для некоторой сессии данных.
Данные во временной таблицы
будут видны только в той сессии, которая вставила эти данные в таблицу.
После создания временной
таблицы ее описание сохраняется в словаре данных ORACLE, но в этот
момент не определяется сегмент , где будут сохранятся данные из этой
таблицы.
Место в соответствующем
сегменте под данные, выделяется динамически, в момент обращения
первой команды манипулирования данными - DML (SELECT, INSERT, UPDATE) к этой
временной таблице.
Временная таблица описывается
таким же образом, что и обычная регулярная таблица, но сегменты
таблицы, и все данные такой таблицы, подразделяются :
- данные используемые только в данной сессии
- или же данные используемые только в данной транзакции
Специфику поведения данных
относительно сессии определяет ключевые слова ON COMMIT и ON PRESERVE в
команде CREATE TABLE
Можно использовать операторы
определения данных DDL
такие как (ALTER TABLE, CREATE INDEX) для временных
таблиц, но только тогда когда сессия не обращается к временной таблице,
не связана с ней. Сессия связана с временной таблицей и при выполнении команды INSERT над данными таблицы.
Существует несколько способов,
чтобы сделать сессию несвязанной с временной таблицей:
1. Использовать команду TRUNCATE для данной таблицы.
2. Аннулировать данную сессию
3. Использовать команды фиксации работы транзакции COMMIT или ROLLBACK
Ограничения для временных
таблиц в ORACLE
На временные таблицы в ORACLE распространяются следующие ограничения:
1. Временная таблица в Oracle не может быть партицирована particioned, кластеризована
clustered, или быть
организованной по индексу INDEX organized.
2. Нельзя связывать вторичные ключи с колонками временной
таблицы
3. Временная таблица не может включать в себя вложенных
таблиц (NESTED TABLE)
4. Нельзя использовать в описании временных таблиц
следующие команды :LOB_storage_clause: TABLESPACE, storage_clause, или logging_clause
5. Подсказка PARALLEL и
параллельные запросы не поддерживаются во временных таблицах
6. Распределенные транзакции так же не могут работать с
временными таблицами
7. Сегментирование не работает
в временных таблицах
|