Динамические представления V$ и GV$

Всё по теме СУБД Oracle: установка, настройка, использование, решение проблем и т.д. и т.п. и др. и пр.
Ответить
AntonS
Сообщения: 86
Зарегистрирован: Пт июн 03, 2022 8:51 am

Динамические представления V$ и GV$

Сообщение AntonS »

Для наблюдения за базой есть представления динамической производительности, обычно их называют V$ "вэ-доллар" и есть соответствующие им кластерные RAC-представления GV$

Интуитивно, все запросы к вьюшкам V$ в кластере должны выполняться на одном локальном инстансе и не создавать слейвы на других инстансах, как это делают запросы к GV$.
Но если заглянуть в определения этих вьюшек через v$fixed_view_definition, то становится очевидно, что каждая вьюшка V$ вызывает соответствующую ей GV$, например:

Код: Выделить всё

SQL> SELECT view_definition FROM v$fixed_view_definition WHERE view_name='V$INSTANCE';

SELECT INSTANCE_NUMBER,
       INSTANCE_NAME,
       HOST_NAME,
       VERSION,
       VERSION_LEGACY,
       VERSION_FULL,
       STARTUP_TIME,
       STATUS,
       PARALLEL,
       THREAD#,
       ARCHIVER,
       LOG_SWITCH_WAIT,
       LOGINS,
       SHUTDOWN_PENDING,
       DATABASE_STATUS,
       INSTANCE_ROLE,
       ACTIVE_STATE,
       BLOCKED,
       CON_ID,
       INSTANCE_MODE,
       EDITION,
       FAMILY,
       DATABASE_TYPE
  FROM GV$INSTANCE
 WHERE inst_id = USERENV ('Instance')
Следовательно, нет смысла для ускорения производительности переписывать запросы и скрипты с GV$ на V$, вместо этого логичнее добавить в них условия по inst_id везде, где это требуется.

Любопытно однако, почему Oracle реализовал зависимость V$ от GV$, а не наоборот?
Ответить