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

База данных 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 строки описывают последние события для записи в системный журнал

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

 

select object_name,owner, object_type from dba_objects where object_name=’DBA_OBJECTS’;

 

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

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

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

24

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

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

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

Добавить комментарий