Словарь данных oracle это

Обновлено: 06.07.2024

База данных Oracle описана её же словаре данных. Структура словаря данных не очень понятна, поэтому Oracle предоставляет эту информацию в виде набора представлений которые гораздо легче изучать. Также у работающего экземпляра есть набор таблиц (которые фактически являются структурами данных C), которые сложны для понимания. Они тоже преобразуются в динамические представления производительности, которые являются ключевым элементом для понимания что происходит с экземпляром БД в данный момент времени.

Представления словаря данных

Словарь данных содержим метаданные: грубо говоря данные о данных. Он содержит описание базы данных, физическую и логическую структуру и содержание БД. Учётные записи, информация о безопасности, целостные ограничения и (начиная с версии 10g) информацию о производительности – всё это хранится в словаре данных. Логически это набор сегментов а табличных пространствах SYSTEM и SYSAUX.

Сегменты словаря данных практически идентичны обычным пользовательским сегментам (таблицам и индексам). Ключевым различием является то, что таблицы словаря данных создаются в момент создания БД и не могут быть использованы напрямую. Конечно физически это возможно,но любые изменения могут привести к нарушению БД и никто не сможет вам помочь. Создание словаря данных – это часть процесса создания базы данных. Словарь данных управляется DDL (Data Definition Language) командами. Когда вы запускаете команду CREATE TABLE – вы не только создаёте сегмент данных для хранения строк в нем – ваша команда также добавит строки в различные таблицы словаря данных, которые содержат информацию о табличном пространстве, extent-ах, столбцах и владельце сегмента.

Для просмотра словаря данных, Oracle предоставляет набор представлений, отличающихся префиксом: DBA_, ALL_ или USER_. Практически все представления созданы для всех трёх префиксов. Любое представление начинающееся с USER_ отобразит инфомрацию об объектах, владельцем которых является текущий пользователь. Если пользователя ВАСЯ будет просматривать представление USER_TABLES, то он увидит только таблицы владельцем которых он является. Представления начинающиеся с ALL_ отображают объекты, к которым у текущего пользователя есть доступ. Т.е. если выполнить запрос в ALL_TABLES то вернутся строки таблица которые вы создали, плюс строки о таблицах других пользователей к которым у вас есть доступ для просмотра. Любое представление с префиксом DBA_ содержит информацию о всех объектах в БД, то есть DBA_TABLES будет содержать строки для всех таблиц во всей базе данных, без разницы кто их создал. Рисунок 3-10 отображает концепцию трех видов представлений. Для доступа к представлениям с префиксом DBA _– у пользователя дожны быть права доступа DBA.

23

Эти представления создаются во время создания БД, вместе с огромным количеством PL/SQL пакетов, которые предоставляет Oracle для упрощения администрарования БД и разработки приложений.

Существует несколько сот представлений словаря данных. Некоторые часто используемые DBA это

DBA_OBJECT содержит строки для всех объектов в БД

DBA_DATA_FILES каждая строка описаывает файл данных

DBA_USER строки отображают информацию об учётной записи

DBA_TABLES описание таблиц

DBA_ALERT_HISTORY строки описывают последние события для записи в системный журнал

Также существует много других представлений и вместе с представлениями создаются синонимы. Следующий запрос

показывает, что фактически владельцем представления DBA_OBJECTS является SYS и создан синоним с таким же названием, к которому и выполнен запрос.

Динамические представления производительности

Существует больше чем три сотни представлений производительности. Вы будете часто слышать выражение “ви доллар” представления, потому что их названия начинаются с V$. На самом деле, “ви доллар” представления совсем не представления – это синонимы созданные для представлений с префиксом V_$, как показано на рисунке 3-11

24

Также на рисунке 3-11 мы видим описание V$SQL, где хранится строка для каждого SQL запроса, сохранённого в shared pool, содержащая информацию такую как как часто выполнялся запрос и так далее.

Представления производительности дают доступ к колоссальному количеству инфомрации об экземпляре БД и (в какой-то степени) о самой базе данных. Большинство представлений содержат информацию от экземпляра БД, остальные – информацию из файла контроля. Все они отображают информацию в режиме реального времени. Представления которые содержат информацию об экземпляре БД доступны в любое время когда экземпляр запущен, даже в состоянии NOMOUNT. Представления, которые содержат информацию из файла контроля, такие как V$DATABASE или V$DATAFILE недоступны до подключения базы данных (момента, когда читается файл контроля). Для сравнения, представления словаря данных могут использоваться только когда БД открыта.

Динамические представления произодительности создаются в момент запуска, обновляются на протяжении всей работы экземпляра, и удаляются при выключении. Это значит что они содержат информацию после последнего запуска: есил ваба БД открыла на протяжении шести месяцев без остановки, все представления будут содержать информацию за весь период работы. После выключения/включения – они будут инициализированы заново. Конечно хранящиеся в момент времени итоги представляют собой важную информацию, однако они не дадут никакого представления что происходило в определенный момент времени, когда к примеру были проблемы с производительностью. По этой причине будет правильным сказать что эти представления производительности отображают статистику, а не метрики.

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

Внутренние таблицы можно разделить на два больших типа: таблицы словаря со статическими данными и динамические таблицы производительности. Вам не придется обращаться к этим таблицам напрямую, взамен вы будете обращаться к хранимой в них информации через представления, основанные на них. Вы можете получить полный список всех представлений словаря данных с помощью следующего простого запроса:

В последующих разделах мы рассмотрим роль этих двух важных типов таблиц и представлений.

Словарь данных Oracle

Каждая база данных Oracle содержит набор таблиц, доступных только для чтения, и известных как словарь данных (data dictionary), который содержит метаданные (информацию о различных компонентах базы данных). Словарь данных Oracle — сердце системы управления базой данных, и знание его позволит стать экспертом-DBA. Если вы хорошо понимаете словарь данных, то можете легко выполнять задачи по управлению базой данных. Вы обращаетесь к доступным только для чтения таблицам словаря через представления, построенные на их основе. Представления подобны логическим таблицам, основанным реальных на таблицах Oracle. Администраторы баз данных Оракл и разработчики в большой степени зависят от словаря данных, поскольку он содержит информацию о различных компонентах базы данных. Эти таблицы содержат информацию о различных компонентах базы данных, таких как список таблиц, их столбцов, пользователей, их привилегий, имена файлов и табличных пространств и т.д. Простой запрос вроде приведенного ниже, вызовет несколько обращений к словарю данных, прежде чем Oracle выполнит его:

Важно заметить, что таблицы словаря данных ничего не сообщают об аспектах работающего экземпляра. Словарь данных содержит лишь информацию о структуре базы данных, такую как файлы базы данных, таблицы, функции и процедуры, а также информацию о пользователях. Другой набор представлений, называемый динамическими представлениями производительности, содержит информацию о текущем работающем экземпляре.

Совет. Таблицы словаря данных описывают всю базу данных: ее логическую и физическую структуру, использование свободного пространства, ее объекты с их ограничениями, а также информацию о пользователях. Вы не можете обращаться к таблицам словаря данных напрямую;вместо этого предоставляется доступ к представлениям, базирующимся на них. Вы не можете также самостоятельно изменять никакую информацию в таблицах словаря данных. Только Oracle может изменять данные в таблицах словаря. Когда, например, вы запускаете запрос,включающий столбец CITIES из таблицы под названием EMPLOYEES, база данных просматривает различные таблицы словаря данных, чтобы проверить существование этого столбца и этой таблицы, и подтвердить, что пользователь имеет право на выполнение этого оператора.Несложно представить, что тяжело нагруженной базе данных OLTP потребуется множество запросов к ее таблицам словаря данных на протяжении всего дня.

Суперпользователь Oracle по имени SYS владеет большей частью таблиц словаря данных (хотя некоторые создаются от имени пользователя SYSTEM), и они хранятся в табличном пространстве System.

Совет. Oracle рекомендует регулярно анализировать как таблицы словаря данных, так и динамические таблицы производительности (также называемые фиксированными таблицами), чтобы повышать производительность.

Динамические представления производительности (V$)

В дополнение к словарю данных Oracle поддерживает важнейший набор динамических таблиц производительности. Эти таблицы поддерживают информацию о текущем экземпляре, и Oracle постоянно их обновляет.

Набор виртуальных динамических таблиц называется таблицами X$. Oracle не разрешает прямой доступ к этим таблицам. Вместо этого создаются представления на базе всех этих таблиц, а затем — синонимы для таких представлений. Вы будете обращаться к этим представлениям, называемым представлениями V$, чтобы получить информацию о различных аспектах работающего экземпляра. Представления V$ — основа настройки производительности базы данных Oracle. Если вы хотите как следует освоить базу данных Oracle, то должны знать динамические представления V$, потому что они содержат всю важнейшую информацию об экземпляре Oracle.

Динамические представления производительности, подобно представлениями словаря данных, основаны на доступных только для чтения таблицах, обновлять которые может только Oracle. Некоторые из этих таблиц хранят информацию сеанса, а другие — информацию, касающуюся всей системы. Вы найдете динамические представления исключительно полезными для управления сеансами, выполнения операций резервного копирования и, что важнее всего, настройки производительности. Помните, однако, что динамические таблицы производительности заполняются только на протяжении работы экземпляра и очищаются при его останове.

Три набора представлений словаря данных

Oracle не позволяет обращаться к таблицам словаря данных напрямую. Он создает представления на базе этих таблиц и общедоступные синонимы для этих представлений, к которым могут обращаться пользователи. Существует три набора представлений словаря данных — USER, ALL и DBA, — каждый из которых содержит сходный набор представлений со сходным набором столбцов. Представления в каждой категории снабжены префиксом — USER, ALL или DBA. Каждый из этих наборов представлений показывает только информацию, для доступа к которой у пользователя имеются соответствующие привилегии, как описано ниже.

  • USER. Представления USER показывают пользователю только те объекты, которыми он владеет. Эти представления полезны для пользователей, особенно разработчиков, для просмотра принадлежащих ему объектов, привилегий и т.п.
  • ALL. Представления ALL показывают информацию об объектах, на доступ к которым у вас имеются соответствующие привилегии. Представления с префиксом ALL включают информацию о пользовательских объектах и всех прочих объектах,на доступ к которым есть права — непосредственно, или через принадлежность к роли.
  • DBA. Представления DBA — наиболее мощные из всех. Пользователи, которым назначена роль DBA, могут обращаться к информации о любом объекте или любом пользователе в базе данных. Представления словаря, снабженные префиксом DBA — это именно те, что вы применяете для мониторинга и администрирования базы данных.

Как создается словарь данных

Словарь данных создается автоматически, когда вы создаете базу данных. Ну, почти автоматически, потому что для этого потребуется вручную запустить сценарий catalog.sql (находящийся в каталоге $ORACLE_HOME/rdbms/admin), если вы не используете Database Configuration Assistant. Сценарий catalog.sql создает таблицы словаря данных, представления и синонимы, и они являются первыми объектами, наполняющими базу данных. Словарь данных, однажды созданный, должен оставаться в табличном пространстве System.

В оставшейся части этой главы вы ознакомитесь только с таблицами словаря данных DBA, поскольку в центре нашего внимания — управление базой данных. Существует множество таблиц и представлений словаря данных. Вы изучите наиболее полезные из представлений словаря в следующих нескольких разделах.

Использование статических представлений словаря данных

Словарь данных содержит метаданные о вашей базе данных Oracle Database. Таблицы словаря данных и представления, основанные на них, называются статическими, потому что работающий экземпляр базы данных не модифицирует данные в этих таблицах и представлениях. Эти таблицы и представления модифицируются только при проведении изменений в самом словаре данных, например, создавая новую таблицу или нового пользователя. Независимо от того, управляете ли вы базой данных вручную или по средством изощренных графических инструментов, словарь данных (наряду с динамическими таблицами производительности) является источником всей информации о базе данных.

Первыми таблицами, создаваемыми в любой базе данных, являются системные таблицы. Системные таблицы хранят информацию о структуре базы данных и объектов внутри нее, и Oracle обращается к ним, когда нуждается в информации о базе данных или когда выполняет операторы DDL , DML . Обновление в этих таблицах происходит в фоновом режиме всякий раз, когда выполняется оператор DDL .

Сегменты отката UNDO (ROLLBACK)

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

Временные (TEMPORARY)

Временные сегменты используют пространство в файлах базы данных, чтобы создать временную рабочую область для промежуточных стадий обработки SQL и для больших операций сортировки .





Словарь ORACLE. Типы (группы) таблиц словаря. Получение информации о таблицах словаря. Отличия между v$, DBA_, USER_, ALL_ группами таблиц

Словарь данных. Первыми таблицами, создаваемыми в любой базе данных, являются системные таблицы, или словарь данных Oracle . Системные таблицы хранят информацию о структуре базы данных и объектов внутри нее, и Oracle обращается к ним, когда нуждается в информации о базе данных или когда выполняет оператор DDL ( Data Definition Language - язык определения данных) либо оператор DML ( Data Manipulation Language - язык манипулирования данными). Эти таблицы никогда непосредственно не обновляются, однако обновление в них происходит в фоновом режиме всякий раз, когда выполняется оператор DDL . Главные таблицы словаря данных содержат нормализованную информацию, которая является довольно трудной для восприятия человеком, так что в Oracle предусмотрен набор представлений, выдающих информацию главных системных таблиц в более понятном виде. Oracle запрашивает информацию из таблиц словаря данных для синтаксического разбора любого оператора SQL . Информация кэшируется в области словаря данных разделяемого пула в SGA.

v$ - виртуальные представления словаря данных (доступны пользователю SYS), динамические таблицы производительности , доступные пользователю SYS, позволяют управлять производительностью работы сервера СУБД .

Префиксом USER снабжаются представления, наиболее интересные для обычного пользователя, объекты, владелец которых - текущий пользователь, префиксом ALL снабжаются все доступные пользователю представления и префиксом DBA - доступные пользователям с системными полномочиями, данные о БД .

Информацию из таблиц словаря можно выбирать с помощью оператора select . Информация о таблицах и представлениях словаря данных - dict ( dictionary ), информация о столбцах словаря данных - dict_columns . Информация о каждом параметре инициализации сервера БД (просмотр параметров экземпляра) - v$ parameter .

Лежащие в основе базовые таблицы хранят сведения о связанной базе данных. Только сервер Oracle должен выполнять запись и чтение в этих таблицах. Непосредственный доступ к ним осуществляется в редких случаях.

Существует несколько представлений, в которых обобщены и отображаются сведения, хранящиеся в базовых таблицах словаря данных. Эти представления декодируют данные базовых таблиц в полезные сведения (например, имена пользователей или таблиц), используя объединения и предложения WHERE для упрощения представления информации. Большинству пользователей предоставляется доступ к представлениям, а не к базовым таблицам.

Пользователь Oracle SYS владеет всеми базовыми таблицами и доступными для пользователей представлениями словаря данных. Никакой пользователь Oracle никогда не должен изменять ( UPDATE , DELETE или INSERT ) никаких строк и объектов схемы, содержащихся в схеме SYS , так как такие действия могут нарушить целостность данных.

Соглашения об именовании:

Префикс представленияНазначение
DBAПредставление администратора базы данных (что находится в схемах всех пользователей)
V$ Данные, связанные с загруженностью
USERПредставление пользователя (что находится в схеме пользователя; то, чем владеет пользователь)
ALLРасширенное представление пользователя (то, к чему предоставлен доступ)

Структура словаря данных состоит из наборов представлений. Во многих случаях набор состоит из трех представлений, содержащих сходные сведения и отличающихся друг от друга своими префиксами. Например, существует представление с именем USER_OBJECTS , другое представление с именем ALL_OBJECTS и третье представление с именем DBA_OBJECTS .

Эти три представления содержат сходные сведения об объектах в базе данных за исключением диапазонов, которые различаются. В представлении USER_OBJECTS содержатся сведения об объектах, которыми пользователь владеет или которые им созданы. В представлении ALL_OBJECTS содержатся сведения обо всех объектах, к которым имеется доступ. В представлении DBA_OBJECTS содержатся сведения обо всех объектах, которыми владеют все пользователи. Для представлений, имеющих префикс ALL или DBA , обычно существует дополнительный столбец в представлении с именем OWNER для идентификации тех, кто владеет объектом.

Существует также набор представлений с префиксом v$ . Эти представления являются динамическими по своей природе и содержат сведения о рабочих характеристиках и загруженности. Динамические таблицы рабочих характеристик не являются истинными таблицами, и к ним не должен открываться доступ для большинства пользователей. Однако администраторы баз данных могут запрашивать и создавать представления по таблицам и предоставлять другим пользователям доступ к этим представлениям. Данные представления не рассматриваются подробно на этом сайте.

Читайте также: