ความแตกต่างระหว่าง av $ view และ dba_ ที่เทียบเท่าคืออะไร


คำตอบ:


13

วิธีคิดที่ง่ายที่สุดคือ:

  • DBA_ / USER_ / ALL_ มุมมองถูกสร้างขึ้นในพจนานุกรมข้อมูล - ไม่สามารถใช้ได้หากฐานข้อมูลไม่ได้ถูกเมาท์และเปิด

  • V$ มุมมองมีแนวโน้มที่จะทำงานกับอินสแตนซ์และดังนั้นอาจพร้อมใช้งานถ้าฐานข้อมูลไม่ถูกเมาท์หรือไม่ถูกเมาท์และเปิดขึ้นอยู่กับลักษณะของมุมมอง

ใช้ตัวอย่างของคุณ:

  • V$TABLESPACEคือมุมมองX$KCCTSซึ่งเป็นโครงสร้างหน่วยความจำภายใน
  • DBA_TABLESPACES คือมุมมองบนตารางพจนานุกรมข้อมูล SYS.TS$

3

นอกจากความแตกต่างที่ Adam Musch แสดงไว้มีความแตกต่างเล็กน้อยระหว่าง dba_ views และ v $ views ที่ควรพูดถึงเนื่องจากเป็น gotchas ที่อาจเกิดขึ้นหากคุณไม่ทราบถึงความแตกต่างเหล่านี้:

1) ส่วนใหญ่ (แต่ไม่ทั้งหมดค่อนข้าง) v $ views ไม่ได้มีมุมมองทางเทคนิคเลย แต่มีความหมายเหมือนกันกับ v_ $ views นี่คือความแตกต่างที่สำคัญเนื่องจากคุณไม่สามารถให้ / เพิกถอนการอนุญาตจากคำพ้องความหมาย:

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_ อย่างไรก็ตามการเรียกใช้แบบสอบถามย้อนหลังกับ v $ views จะส่งคืนข้อมูลปัจจุบัน(12.1 เอกสารในการใช้ Oracle Flashback Technology) :

คุณไม่สามารถดึงข้อมูลที่ผ่านมาจากมุมมองประสิทธิภาพแบบไดนามิก (V $) แบบสอบถามในมุมมองดังกล่าวส่งคืนข้อมูลปัจจุบัน

คุณสามารถดำเนินการค้นหาข้อมูลที่ผ่านมาในมุมมองพจนานุกรมข้อมูลแบบคงที่เช่น * _TABLES

ดังที่ Adam Musch ชี้ให้เห็น v $ views เรียกใช้โดยตรงกับอินสแตนซ์ในขณะที่ dba_ views ทำงานกับพจนานุกรมข้อมูล เมื่อคุณเข้าใจแล้วมันสมเหตุสมผลแล้วว่าทำไมจึงมีข้อ จำกัด นี้ แต่ถึงกระนั้นฉันก็หวังว่าแบบสอบถามแบบย้อนกลับกับ v $ views จะกลับข้อผิดพลาดแทนที่จะไม่ทำงานอย่างเงียบ ๆ เนื่องจาก gotcha นี้ยังคงไม่มีใครสังเกตเห็นในบางครั้ง ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.