У чому загальна різниця між v$
представленням даних та його dba_
еквівалентом? Візьмемо, наприклад, v$tablespace
і dba_tablespaces
.
У чому загальна різниця між v$
представленням даних та його dba_
еквівалентом? Візьмемо, наприклад, v$tablespace
і dba_tablespaces
.
Відповіді:
Найпростіший спосіб подумати про це:
DBA_ / USER_ / ALL_
представлення побудовано на словнику даних - вони недоступні, якщо база даних не встановлена та відкрита.
V$
представлення, як правило, протистоять екземпляру, і тому вони можуть бути доступні, якщо база даних не змонтована, або не змонтована та відкрита, залежно від характеру перегляду.
Використовуючи свій приклад:
V$TABLESPACE
це погляд на X$KCCTS
, що є внутрішньою структурою пам'яті. DBA_TABLESPACES
- це перегляд таблиці словника даних SYS.TS$
Окрім відмінностей, які перелічив Адам Муш, є ще декілька відмінностей між переглядами dba_ та v $ переглядами, які варто згадати, оскільки вони є потенційними дітками, якщо ви не знаєте про ці відмінності:
1) Більшість (але не зовсім всіх) v $ переглядів взагалі не є технічно переглядами, але є синонімами v_ $ переглядів. Це важлива відмінність, оскільки ви не можете надати / відкликати дозволи для синонімів:
sqlplus / as sysdba
grant select on v$tablespace to user1;
SQL Error: ORA-02030: can only select from fixed tables/views
select table_name from dba_synonyms where synonym_name = 'V$TABLESPACE';
TABLE_NAME
-------------
V_$TABLESPACE
grant select on V_$TABLESPACE to user1;
grant succeeded.
2) Ви можете запускати запити щодо зворотного зв'язку проти переглядів dba_ Однак запущені запити flashback проти v $ views повертають поточні дані (12,1 документа про використання Oracle Flashback Technology) :
Ви не можете отримати минулі дані з динамічного перегляду продуктивності (V $). Запит у такому представленні повертає поточні дані.
Ви можете виконувати запити над минулими даними в статичних представленнях словника даних, таких як * _TABLES.
Як зазначав Адам Муш, v $ представлення запускаються безпосередньо проти екземпляра, тоді як dba_ представлення проти словника даних. Як тільки ви це зрозумієте, має сенс, чому це обмеження діє. Хоча я дуже хочу, щоб запит про зворотний зв'язок проти v $ views повернув би помилку, а не мовчки не працював, оскільки ця ґатка може залишатися непоміченою протягом досить довгого часу ...