2010-10-03 2 views

ответ

9

В Oracle есть три формы большинства таблиц словаря данных, которые описывают различные типы объектов

  • ALL_*
  • USER_*
  • DBA_*

DBA_ * таблицы имеют информацию о все указанные объекты в базе данных. Таким образом, DBA_TABLES будет иметь информацию о каждой таблице в базе данных, независимо от того, имеете ли вы доступ к базовому объекту.

Таблицы ALL_ * содержат информацию обо всех указанных объектах в базе данных, к которой у вас есть доступ. Таким образом, ALL_TABLES будет иметь информацию обо всех таблицах в базе данных, к которой у вас есть доступ.

И наконец, таблицы USER_ * имеют информацию обо всех указанных объектах в вашей базе данных. Таким образом, USER_TABLES будет иметь информацию обо всех таблицах, которыми вы владеете (т. Е. Все таблицы в вашей схеме).

По умолчанию обычные пользователи не имеют доступа к таблицам DBA_ * только к таблицам USER_ * и ALL_ *. Если вы хотите запросить таблицы DBA_ *, вам понадобится либо привилегия SELECT ANY DICTIONARY, либо роль SELECT_CATALOG_ROLE.

В дополнение к представлению словаря данных DBA/ALL/USER_ * Oracle также предоставляет представления V $ для динамической информации о производительности (т. Е. V $ SESSION содержит информацию обо всех сеансах в базе данных). Для каждого представления V $ существует также представление GV $, которое отображает информацию из всех экземпляров, если вы находитесь в кластере RAC.

+1

Отличный ответ. – Sana

Смежные вопросы