共計 2102 個字符,預計需要花費 6 分鐘才能閱讀完成。
這篇文章主要講解了“Oracle 的數據字典是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“Oracle 的數據字典是什么”吧!
數據字典是 oracle 存放有關數據庫信息的地方,幾乎所有的系統信息和對象信息都可在數據字典中進行查詢。數據字典是 oracle 數據庫系統的信息核心,它是一組提供有關數據庫信息的表和視圖的集合,這些表和視圖是只讀的。它是隨著數據庫的建立而建立的,當數據庫執行特定動作時數據字典也會自動更新。數據一覽與數據字典來記錄、校驗和管理正在進行的操作。
Oracle 中,sys 用戶是數據字典的擁有者,數據字典保證在所有數據庫的系統表空間 system 內,任何用戶都無權更改 sys 模式下的模式對象或數據字典中的行。也就是說數據字典只能查詢,不能手動進行修改。
一、數據字典用途
Oracle 通過存取數據字典從而比較方便地獲取有關用戶某事對象和存儲結構等信息。當系統執行了 DDL 語句后,oracle 會及時修改數據字典。任何用戶只能以讀的形式使用數據字典獲取數據庫信息。
二、數據字典存儲的信息
數據用戶的名稱
為用戶授予的權限和角色
模式對象的名。
完整性約束的具體信息;
每個字段的默認值;
數據庫空間的使用情況;
存儲審計的信息
對象與用戶的嚴格管理 (適用于高度機密管理);
其他一般數據庫信息
三、四種前綴的數據字典視圖
user_:任何用戶都可以讀取的視圖,每個用戶讀取的都不一樣,它只提供當前用戶某事下的對象信息。
如查詢當前模式下的所有對象:
select object_name, object_type
from user_objects;
all_:所有用戶都可讀取的用戶視圖,它提供與用戶有關的對象信息。
如查詢當前用戶可訪問的所有對象:
select owner, object_name, object_type
from all_objects;
dba_:提供了只有數據庫管理員才可讀取的視圖,包括所有用戶視圖中的對象信息。
如:
select owner, object_name, object_type
from sys.dba_objects;
v$:動態性能視圖
動態性能視圖用于記錄當前例程的活動信息,當啟動 oracle server 時,系統會建立動態性能視圖;當停止 oracle server 時,系統會刪除動態性能視圖,oracle 的所有動態性能視圖都是以 v_KaTeX parse error: Expected EOF , got 開 at position 1: 開?始的,并且 oracle 為每個動…開始的,例如_KaTeX parse error: Expected EOF , got 的 at position 9: datefile 的?同義詞為 vdatefile;動態性能視圖的所有者為 sys,一般情況下,由 DBA 或是特權用戶來查詢動態性能視圖。
四、查詢數據字典示例
查詢用戶相關的數據字典
查詢用戶
select username
from dba_users; -- 只有管理員權限的用戶才能查詢
select username
from all_users; -- 當前或任何用戶都可使用
-- 查看當前用戶的默認表空間
select username, default_tablespace
from user_users;
-- 當前用戶角色
select *
from user_role_privs;
-- 當前用戶的系統權限和表級權限
select *
from user_sys_privs;
select *
from user_tab_privs;
查詢表空間相關的數據字典(擁有 DBA 權限的用戶才能查詢)
select *
from dba_data_files;
select *
from dba_tablespaces; -- 表空間
select tablespace_name, sum(bytes), sum(blocks)
from dba_free_space
group by tablespace_name; -- 空閑表空間
select *
from dba_data_files
where tablespace_name= USERS -- 表空間對于的數據文件
select *
from dba_segments
where tablespace_name= USERS
-- 查詢用戶模式對象所使用過的正在使用空間大小
select name, type, source_size, code_size
from user_object_size;
查詢數據庫對象(擁有 DBA 權限的用戶才能查詢)
select *
from dba_objects
select *
from dba_objects
where object_type =
upper(package body
select *
from dba_objects
where OBJECT_TYPE= TABLE and OWNER= SCOTT
感謝各位的閱讀,以上就是“Oracle 的數據字典是什么”的內容了,經過本文的學習后,相信大家對 Oracle 的數據字典是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!