Apa perbedaan antara av $ view dan yang setara dba_?

9

Apa perbedaan umum antara v$tampilan dan yang dba_setara? Ambil, misalnya, v$tablespacedan dba_tablespaces.

Pelajar saja
sumber

Jawaban:

13

Cara termudah untuk memikirkannya adalah:

  • DBA_ / USER_ / ALL_ tampilan dibuat di kamus data - mereka tidak tersedia jika database tidak dipasang dan dibuka.

  • V$ tampilan cenderung berjalan terhadap instance, dan oleh karena itu mungkin tersedia jika database tidak di-mount, atau tidak dipasang dan dibuka, tergantung pada sifat tampilan.

Menggunakan contoh Anda:

  • V$TABLESPACEadalah pandangan tentang X$KCCTS, yang merupakan struktur memori internal.
  • DBA_TABLESPACES adalah tampilan pada tabel kamus data SYS.TS$
Adam Musch
sumber
3

Selain perbedaan yang didaftar oleh Adam Musch, ada beberapa perbedaan lagi antara pandangan dba_ dan v $ yang layak disebutkan karena mereka adalah gotcha potensial jika Anda tidak mengetahui perbedaan-perbedaan ini:

1) Sebagian besar (tetapi tidak semua) v $ views tidak secara teknis sama sekali dilihat, tetapi sinonim dengan v_ $ views. Ini adalah perbedaan penting karena Anda tidak dapat memberikan / mencabut izin terhadap sinonim:

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) Anda dapat menjalankan kueri kilas balik terhadap tampilan dba_. Namun, menjalankan kueri kilas balik terhadap v $ views menghasilkan data saat ini (12.1 dokumen tentang Menggunakan Oracle Flashback Technology) :

Anda tidak dapat mengambil data sebelumnya dari tampilan kinerja dinamis (V $). Permintaan pada tampilan seperti itu mengembalikan data saat ini.

Anda dapat melakukan kueri pada data sebelumnya dalam tampilan kamus data statis, seperti * _TABLES.

Seperti yang ditunjukkan Adam Musch, v $ views berjalan langsung terhadap instance sedangkan dba_ views berjalan melawan kamus data. Setelah Anda memahami itu, masuk akal mengapa batasan ini ada. Meski begitu, saya benar-benar berharap permintaan kilas balik terhadap v $ views akan mengembalikan kesalahan alih-alih diam-diam tidak berfungsi karena gotcha ini dapat tetap tidak diperhatikan selama beberapa waktu ...

Kris Johnston
sumber