我們都知道Oracle數據字典文檔中靜態數據字典的視圖共分為三類,動態Oracle數據字典的相關視圖又分為哪幾類呢?以及Oracle數據字典的相關視圖又有什麼樣的作用呢?這些問題在此篇文章中都會找到答案。
動態數據字典>是依賴數據庫運行的性能的,反映數據庫運行的一些內在信息,所以在訪問這類數據字典時往往不是一成不變的。
當前鎖住的對象
靜態數據字典:這類數據字典主要是由表和視圖組成
數據字典中的表是不能直接被訪問的,但是可以訪問數據字典中的視圖。
靜態數據字典中的視圖分為三類,它們分別由三個前綴夠成:user_*、 all_*、 dba_*。
- user_*
該視圖存儲了關於當前用戶所擁有的對象的信息。(即所有在該用戶模式下的對象)
- all_*
該試圖存儲了當前用戶能夠訪問的對象的信息。(與user_*相比,all_* 並不需要擁有該對象,只需要具有訪問該對象的權限即可)
- dba_*
該視圖存儲了數據庫中所有對象的信息。(前提是當前用戶具有訪問這些數據庫的權限,一般來說必須具有管理員權限
- select * from dictionary;
查詢該用戶擁有哪些表
user_tables主要描述當前用戶擁有的所有表的信息,
主要包括表名、表空間名、簇名等。通過此視圖可以清楚了解當前用戶可以操作的表有哪些
- desc user_tables;
- select table_name from user_tables;
- select * from user_tables;
查詢該用戶擁有哪些索引
- select index_name from user_indexes;
查詢該用戶擁有哪些視圖
- select view_name from user_vIEws;
查詢該用戶擁有哪些數據庫對象,對象包括表、視圖、存儲過程、觸發器、包、索引、序列、Java文件等。
- select object_name from user_objects;
主要描述當前用戶的信息,主要包括當前用戶名、帳戶id、帳戶狀態、表空間名、創建時間等。
- select * from user_users;
user_/all_區別:
all_列出來的信息是當前用戶可以訪問的對象而不是當前用戶擁有的對象。
查詢某一用戶下的所有表、過程、函數等信息。
- select owner , object_name ,
object_type from all_objects
對於dba_開頭的需要管理員權限,
查詢表空間的信息(當前用戶必須擁有DBA角色)。
- select * from dba_data_files
動態Oracle數據字典
Oracle包含了一些潛在的由系統管理員如SYS維護的表和視圖,由於當數據庫運行的時候它們會不斷進行更新,所以稱它們為動態數據字典(或者是動態性能視圖)。這些視圖提供了關於內存和磁盤的運行情況,所以我們只能對其進行只讀訪問而不能修改它們。
Oracle中這些動態性能視圖都是以v$開頭的視圖.
v$Access
該視圖顯示數據庫中鎖定的數據庫對象以及訪問這些對象的會話對象(session對象)。
- select * from v$Access
- v$session
該視圖列出當前會話的詳細信息。
- v$active_instance
該視圖主要描述當前數據庫下的活動的實例的信息。依然可以使用select語句來觀察該信息。
v$context
該視圖列出當前會話的屬性信息。比如命名空間、屬性值等。
以上的相關內容就是對Oracle數據字典的相關內容的介紹,望你能有所收獲。