Каково различие между временной таблицей по сравнению с глобальной временной таблицей в Oracle?

Меня раздражало отсутствие надлежащей раскраски в cmd, поэтому я пошел вперед и создал cmdcolor. Это просто прокси-сервер stdout, который ищет ограниченный набор управляющих последовательностей ANSI / VT100 (другими словами, как в bash), то есть echo \033[31m RED \033[0m DEFAULT | cmdcolor.exe.

Использование и скачивание .

29
задан Thomas Jones-Low 6 January 2009 в 23:44
поделиться

4 ответа

В Oracle нет никакого различия. Когда Вы составляете временную таблицу в базе данных Oracle, это автоматически глобально, и Вы обязаны включать "Глобальное" ключевое слово.

стандарт SQL, который определяет, как термин "ГЛОБАЛЬНАЯ ВРЕМЕННАЯ ТАБЛИЦА" интерпретируется, допускает или ЛОКАЛЬНУЮ или Глобальную область видимости. Это допускало бы или пользователя определенная (ЛОКАЛЬНАЯ) таблица или всех (ГЛОБАЛЬНЫЕ). Oracle реализует только ГЛОБАЛЬНУЮ версию.

данные, которые Вы помещаете во Временную таблицу Oracle, характерны для Вашей сессии. Таким образом, только Вы видите свои данные, даже если существует 100 пользователей все использование той же таблицы, и Ваши данные удалены из таблицы, когда Вы разъединяетесь (или когда Вы фиксируете текущую транзакцию) в зависимости от настроек таблицы.

Контраст это с SQL Server MS, где временные таблицы локальны. Если Вы создаете один, никто помимо Вас не знает, что Ваша временная таблица существует. В Oracle, составляя временную таблицу позволяет всем (хорошо все с доступом к Вашей схеме) видеть таблицу. Когда Вы выходите из своей сессии, таблица SQL-Server удалена и должна будет быть воссоздана для следующей сессии. В Oracle временная таблица является теперь постоянной частью Вашей схемы, даже если данные не.

54
ответ дан 28 November 2019 в 01:04
поделиться

Знайте, что глобальная временная таблица не имеет никакой статистики, связанной с ним, поэтому изучите, должен ли динамический уровень выборки для экземпляра быть установлен гарантировать, что непроанализированные таблицы выбираются во время синтаксического анализа. Иначе эвристика может привести к противному плану выполнения.

6
ответ дан 28 November 2019 в 01:04
поделиться

Кроме того, (глобальные) временные таблицы Oracle очень полезны, когда каждый из Ваших пользователей/сессий должен каждый видеть различный набор данных. Просто ВСТАВЬТЕ записи на свою глобальную временную таблицу и позвольте Oracle справиться с хранением набора одного пользователя от чьего-либо, а также очистки. Вы не должны запрашивать их с идентификатором пользователя, идентификатором сессии или что бы то ни было.

Мы находим их очень удобными.

2
ответ дан 28 November 2019 в 01:04
поделиться

Сравните это с MS SQL-Server, где временные таблицы являются локальными. Если вы ее создадите, никто, кроме вас, не узнает, что ваша временная таблица существует. В Oracle создание временной таблицы позволяет всем (ну, всем, у кого есть доступ к вашей схеме) видеть таблицу. Когда вы выходите из сеанса, таблица SQL-сервера удаляется, и ее необходимо будет воссоздать для следующего сеанса. В Oracle временная таблица теперь является постоянной частью вашей схемы, даже если данных нет (если нет, вы можете решить, сохранять ли ее). Oracle поддерживает только глобальную временную таблицу, избавляя вас от необходимости создавать таблицу в каждом сеансе; он «существует», но он пуст, и его содержимое уникально (и является частным) для каждого сеанса.

7
ответ дан 28 November 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: