Воскресенье
20.09.2020
08:17


Форма входа


Приветствую Вас Гость | RSS
Статьи по ORACLE, PL/SQL, Java и немного по SHELL (BASH),...
Главная Каталог статей Регистрация Вход
Главная » Статьи » ORACLE » ORACLE, PL/SQL

Временные таблицы в Oracle (GLOBAL TEMPORARY TABLE) (Часть 1)

Описание

Что же такое временные таблицы, и зачем они нужны?

Временные таблицы используются в 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. Сегментирование не работает в временных таблицах

Категория: ORACLE, PL/SQL | Добавил: Akarak (03.08.2011)
Просмотров: 4171 | Комментарии: 2 | Рейтинг: 0.0/0
Всего комментариев: 2
0
2 Akarak   [Материал]
Да вы правы, спасибо за подсказку. Исправил опечатку. 
Оператор TRUNCATE, вызванный для временной таблицы, созданной специально для сеанса, очищает данные только этого сеанса.

0
1 Rinat   [Материал]
"Команды TURNICATE" не существует. Подозреваю, что имели в виду команду "TRUNCATE".

Имя *:
Email *:
Код *:
Меню сайта

Категории раздела
ORACLE, PL/SQL [36]
Скрипты DDL [3]
Скрипты по управлению объектами
Встроенные функции SQL [2]
Встроенные функции SQL

Интересные сайты
  • sql.ru
  • all-oracle.ru
  • oranet.ru
  • oracloid.ru
  • forum.vingrad.ru

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Поиск

    Copyright MyCorp © 2020
    Используются технологии uCoz