Продолжаем идти дальше по пути мониторинга. Итак, запросив представление v$access можно получить информацию о тех объектах БД, к которым в текущий момент обращаются пользователи. Его можно использовать для обнаружения посторонних приложений или недокументированных процедур, которые обращаются к БД и для решения проблем безопасности данных. Так же представление v$mts содержит информацию, о разделяемых процессах сервера. Оно содержит информацию о максимальном количестве подключений, запущенных серверах, прерванных серверах и загрузке серверов.
Мониторинг разделяемой глобальной системной области.
Для мониторинга ГСО можно использовать представление v$sqlarea, оно содержит информацию о выражениях SQL, которые находятся в разделяемой области, включая их текст, количество пользователей, использовавших, это выражение, количество блоков на диске и в памяти, к которым произошло обращение в процессе выполнения команд. К примеру, используя столбцы disk_reads и buffer_gets можно отследить количество блоков, которые считаны с диска и из кэш буфера. Так можно определить запросы, наиболее интенсивно использующие ресурсы БД. Так же представление пользователя v$open_cursor помогает найти незакрытые курсоры. Например, запустите последний запрос из предыдущего шага и посмотрите число в столбце SID пользователя:
SID NULL 2536 9 3 ORAHOME\sergl SYS ORAHOME -----
У меня было число 9 как видно из примера. А теперь дайте вот такой запрос:
SELECT b.piece, a.sql_text FROM v$open_cursor a, v$sqltext b WHERE a.sid = 9 and -- 9 My SID a.address = b.address and a.hash_value = b.hash_value ORDER BY b.address, b.hash_value, b.piece asc /
После SQLPlus получаем:
SQL> SELECT b.piece, a.sql_text 2 FROM v$open_cursor a, v$sqltext b 3 WHERE 4 a.sid = 9 and -- 9 My SID 5 a.address = b.address and 6 a.hash_value = b.hash_value 7 ORDER BY 8 b.address, b.hash_value, b.piece asc 9 / PIECE SQL_TEXT ---------- ------------------------------------------------------------ 0 SELECT b.piece, a.sql_text FROM v$open_cursor a, v$sqltext b 1 SELECT b.piece, a.sql_text FROM v$open_cursor a, v$sqltext b 2 SELECT b.piece, a.sql_text FROM v$open_cursor a, v$sqltext b 3 SELECT b.piece, a.sql_text FROM v$open_cursor a, v$sqltext b SQL>
У меня четыре курсора в работе. Где представление v$sqltext показывает текст запроса. Большие выражения извлекаются последовательно, согласно столбца PIECE представления v$sqltext.
Мониторинг ГСО.
Для получения информации о процессах ГСО, используют два представления v$sga и v$sgqstat. Первое содержит информацию, о размерах каждого компонента ГСО - кэше журнала регистрации транзакций, кэш буфере данных и разделяемом пуле. Второе представление содержит более подробную информацию о размерах всех компонентов, даже самых мелких, включая размеры стековых областей различного назначения. Например, для получения сведений о размере свободной памяти в ГСО дадим следующий запрос:
SELECT pool, bytes FROM v$sgastat WHERE name = 'free memory' /
Получаем:
SQL> SELECT pool, bytes FROM v$sgastat 2 WHERE name = 'free memory' 3 / POOL BYTES ----------- ---------- shared pool 45061772 large pool 8388608 java pool 33554432
Думаю хорошо видно, сколько и где свободно памяти.
Мониторинг кэшей, библиотек и словаря.
Получит информацию о данных объектах можно, посредством представлений v$librarycache и v$rowcache. Первое содержит данные о каждом типе объекта, второе аналогичную информацию о КЭШе словаря данных.
Мониторинг архивирования.
Информацию о процессах архивирования, можно найти в представлении v$archive. Запросы к этому представлению позволяют узнать о работе процесса ARCH.
Вот вкратце, основные но далеко не все данные о мониторинге экземпляра вашей БД. Если приложить усилия, то во всем этом можно разобраться подробнее, обратившись к документации по серверу Oracle. Хотя может кто-то пойдет и дальше ... кто знает? :)