Oracle數(shù)據(jù)字典詳解
目錄
- 1. 什么是Oracle數(shù)據(jù)字典
- 2. 數(shù)據(jù)字典的內(nèi)容
- 3. 數(shù)據(jù)字典應(yīng)用示例
1. 什么是Oracle數(shù)據(jù)字典
數(shù)據(jù)字典(Data Dictionary)是Oracle元數(shù)據(jù)(Metadata)的存儲地點,匯集了數(shù)據(jù)庫對象及數(shù)據(jù)庫運行時需要的基礎(chǔ)信息。Oracle RDBMS使用數(shù)據(jù)字典記錄和管理對象信息和安全信息,用戶可以通過數(shù)據(jù)字典獲取數(shù)據(jù)庫相關(guān)信息,從而進行數(shù)據(jù)庫管理、優(yōu)化和維護工作。
2. 數(shù)據(jù)字典的內(nèi)容
數(shù)據(jù)字典包括以下內(nèi)容:
- 所有數(shù)據(jù)庫Schema對象的定義(表、視圖、索引、聚簇、同義詞、序列、過程、函數(shù)、包、觸發(fā)器等);
- Oracle用戶名稱、角色、權(quán)限等信息;
- 完整性約束信息;
- 數(shù)據(jù)庫的空間分配和使用情況;
- 字段缺省值;
- 審計信息;
- 其他數(shù)據(jù)庫信息。
Oracle字典包括四個層次,分別為內(nèi)部RDBMS表(X)、基礎(chǔ)數(shù)據(jù)字典表、數(shù)據(jù)字典視圖和動態(tài)性能視圖( V )、基礎(chǔ)數(shù)據(jù)字典表、數(shù)據(jù)字典視圖和動態(tài)性能視圖(V)、基礎(chǔ)數(shù)據(jù)字典表、數(shù)據(jù)字典視圖和動態(tài)性能視圖(V)。
(1)X$表
X$表是Oracle數(shù)據(jù)庫的核心部分,用于跟蹤內(nèi)部數(shù)據(jù)庫信息,維持?jǐn)?shù)據(jù)庫正常運行,在數(shù)據(jù)庫啟動時由Oracle應(yīng)用程序動態(tài)創(chuàng)建,不允許SYSDBA之外的用戶直接訪問。X$表是加密命名的且不作文檔說明。Oracle通過X$建立起其他大量視圖,供用戶查詢管理數(shù)據(jù)庫之用。
(2)數(shù)據(jù)字典表、數(shù)據(jù)字典視圖
數(shù)據(jù)字典表(Data Dictionary Table)用以存儲表、索引、約束以及其他數(shù)據(jù)庫結(jié)構(gòu)的信息,
表名都用$結(jié)尾(如tab$、obj$、ts$等),在創(chuàng)建數(shù)據(jù)庫的時候通過運行sql.bsq($ORACLE_HOME/RDBMS/admin目錄下)腳本來創(chuàng)建。
數(shù)據(jù)字典表的用戶都是sys,存在在system這個表空間里,Oracle對這些數(shù)據(jù)字典都分別建立了數(shù)據(jù)字典視圖,Oracle針對這些對象的范圍,分別把視圖命名為DBA_XXXX, ALL_XXXX和USER_XXXX,dictionary視圖記錄了所有的數(shù)據(jù)字典視圖的名稱。
- user_類視圖:描述了當(dāng)前用戶schema下的對象;
- all_類視圖:描述了當(dāng)前用戶有權(quán)限訪問到的所有對象的信息;
- dba_類視圖:包括了所有數(shù)據(jù)庫對象的信息;
通常USER_類視圖不包含Owner字段,查詢返回當(dāng)前用戶的對象信息。
e.g.
SQL> select username from all_users; //查詢所有用戶 SQL> select username from dba_users; //查詢dba用戶 SQL> select table_name from user_tables; //查詢當(dāng)前用戶的表 SQL> select table_name from all_tables; //查詢所有用戶的表 SQL> select table_name from dba_tables; //查詢包括系統(tǒng)表 SQL> select owner,constraint_name,constraint_type,table_name from user_constraints; SQL> select owner,constraint_name,constraint_type,table_name from all_ constraints; SQL> select owner,constraint_name,constraint_type,table_name from dba_ constraints ;
(3)動態(tài)性能視圖
動態(tài)性能(V$)視圖(Dynamic Performance View)記錄了數(shù)據(jù)庫運行時的信息和統(tǒng)計數(shù)據(jù)。
創(chuàng)建X$表之后,Oracle創(chuàng)建了GV$和V$視圖,在GV$和V$之后,Oracle建立了GV_$和V_$視圖,隨后為這些視圖建立了公共同義詞。這些工作都是通過catalog.sql腳本實現(xiàn)的。通過V_$視圖,Oracle把V$視圖和普通用戶隔離,V_$視圖的權(quán)限可以授予其他用戶,而Oracle不允許任何對于V$視圖的直接授權(quán)。Oracle提供了一些特殊視圖用以記錄其他視圖創(chuàng)建方式,如v$fixed_view_defition,可以查看視圖的定義。
SQL> select view_definition from v\$fixed_view_definition where view_name ="V$NLS_PARAMETERS";
3. 數(shù)據(jù)字典應(yīng)用示例
(1)查詢表的信息
查詢DBA_TABLES視圖可以獲取所有表的信息,包括表名、表空間、擁有者等等。例如,以下查詢語句可以獲取所有表的表名和表空間:
SQL> SELECT table_name, tablespace_name FROM dba_tables;
(2)查詢索引的信息
查詢DBA_INDEXES視圖可以獲取所有索引的信息,包括索引名、所屬表、索引類型等等。例如,以下查詢語句可以獲取所有索引的信息:
SQL> SELECT index_name, table_name, index_type FROM dba_indexes;
(3)查詢用戶的信息
查詢DBA_USERS視圖可以獲取所有用戶的信息,包括用戶名、默認表空間、臨時表空間等等。例如,以下查詢語句可以獲取所有用戶的用戶名和默認表空間:
SQL> SELECT username, default_tablespace FROM dba_users;
(4)查詢表空間的信息
查詢DBA_TABLESPACES視圖可以獲取所有表空間的信息,包括表空間名、塊大小、狀態(tài)等等。例如,以下查詢語句可以獲取所有表空間的表空間名和狀態(tài):
SQL> SELECT tablespace_name, status FROM dba_tablespaces;
(5)查詢數(shù)據(jù)文件的信息
查詢DBA_DATA_FILES視圖可以獲取所有數(shù)據(jù)文件的信息,包括數(shù)據(jù)文件名、表空間名、文件大小等等。例如,以下查詢語句可以獲取所有數(shù)據(jù)文件的數(shù)據(jù)文件名和文件大小:
SQL> SELECT file_name, bytes FROM dba_data_files;
(6) 查詢數(shù)據(jù)庫的性能數(shù)據(jù)
查詢DBA_HIST_SNAPSHOT視圖可以獲取數(shù)據(jù)庫的歷史性能數(shù)據(jù),包括CPU利用率、內(nèi)存利用率、I/O等等。例如,以下查詢語句可以獲取數(shù)據(jù)庫的CPU利用率和內(nèi)存利用率:
SQL> SELECT begin_interval_time, end_interval_time, cpu_usage, memory_usage FROM dba_hist_sysmetric_summary WHERE metric_name IN ("CPU Usage Per Sec", "Memory Usage Per Sec") ORDER BY begin_interval_time;
到此這篇關(guān)于Oracle數(shù)據(jù)字典詳解的文章就介紹到這了,更多相關(guān)Oracle數(shù)據(jù)字典內(nèi)容請搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!
相關(guān)文章:
