Apa perbedaan umum antara v$
tampilan dan yang dba_
setara? Ambil, misalnya, v$tablespace
dan dba_tablespaces
.
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$TABLESPACE
adalah pandangan tentang X$KCCTS
, yang merupakan struktur memori internal. DBA_TABLESPACES
adalah tampilan pada tabel kamus data SYS.TS$
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 ...