什麼是Oracle的資料字典?

千鋒Python唐小強發表於2020-07-29

資料字典是oracle存放有關資料庫資訊的地方,幾乎所有的系統資訊和物件資訊都可在資料字典中進行查詢。資料字典是oracle資料庫系統的資訊核心,它是一組提供有關資料庫資訊的表和檢視的集合,這些表和檢視是隻讀的。它是隨著資料庫的建立而建立的,當資料庫執行特定動作時資料字典也會自動更新。資料一覽與資料字典來記錄、校驗和管理正在進行的操作。

Oracle中,sys使用者是資料字典的擁有者,資料字典保證在所有資料庫的系統表空間system內,任何使用者都無權更改sys模式下的模式物件或資料字典中的行。也就是說資料字典只能查詢,不能手動進行修改。

什麼是Oracle的資料字典?

一、資料字典用途

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'


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69923331/viewspace-2707891/,如需轉載,請註明出處,否則將追究法律責任。

相關文章