您好,登錄后才能下訂單哦!
這篇文章主要介紹了Oracle數據字典怎么應用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Oracle數據字典怎么應用文章都會有所收獲,下面我們一起來看看吧。
數據字典(Data Dictionary)是Oracle元數據(Metadata)的存儲地點,匯集了數據庫對象及數據庫運行時需要的基礎信息。Oracle RDBMS使用數據字典記錄和管理對象信息和安全信息,用戶可以通過數據字典獲取數據庫相關信息,從而進行數據庫管理、優化和維護工作。
數據字典包括以下內容:
所有數據庫Schema對象的定義(表、視圖、索引、聚簇、同義詞、序列、過程、函數、包、觸發器等);
Oracle用戶名稱、角色、權限等信息;
完整性約束信息;
數據庫的空間分配和使用情況;
字段缺省值;
審計信息;
其他數據庫信息。
Oracle字典包括四個層次,分別為內部RDBMS表(X)、基礎數據字典表、數據字典視圖和動態性能視圖( V )、基礎數據字典表、數據字典視圖和動態性能視圖(V)、基礎數據字典表、數據字典視圖和動態性能視圖(V)。
(1)X$表
X$表是Oracle數據庫的核心部分,用于跟蹤內部數據庫信息,維持數據庫正常運行,在數據庫啟動時由Oracle應用程序動態創建,不允許SYSDBA之外的用戶直接訪問。X$表是加密命名的且不作文檔說明。Oracle通過X$建立起其他大量視圖,供用戶查詢管理數據庫之用。
(2)數據字典表、數據字典視圖
數據字典表(Data Dictionary Table)用以存儲表、索引、約束以及其他數據庫結構的信息,
表名都用$結尾(如tab$、obj$、ts$等),在創建數據庫的時候通過運行sql.bsq($ORACLE_HOME/RDBMS/admin目錄下)腳本來創建。
數據字典表的用戶都是sys,存在在system這個表空間里,Oracle對這些數據字典都分別建立了數據字典視圖,Oracle針對這些對象的范圍,分別把視圖命名為DBA_XXXX, ALL_XXXX和USER_XXXX,dictionary視圖記錄了所有的數據字典視圖的名稱。
user_類視圖:描述了當前用戶schema下的對象;
all_類視圖:描述了當前用戶有權限訪問到的所有對象的信息;
dba_類視圖:包括了所有數據庫對象的信息;
通常USER_類視圖不包含Owner字段,查詢返回當前用戶的對象信息。
e.g.
SQL> select username from all_users; //查詢所有用戶 SQL> select username from dba_users; //查詢dba用戶 SQL> select table_name from user_tables; //查詢當前用戶的表 SQL> select table_name from all_tables; //查詢所有用戶的表 SQL> select table_name from dba_tables; //查詢包括系統表 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)動態性能視圖
動態性能(V$)視圖(Dynamic Performance View)記錄了數據庫運行時的信息和統計數據。
創建X$表之后,Oracle創建了GV$和V$視圖,在GV$和V$之后,Oracle建立了GV_$和V_$視圖,隨后為這些視圖建立了公共同義詞。這些工作都是通過catalog.sql腳本實現的。通過V_$視圖,Oracle把V$視圖和普通用戶隔離,V_$視圖的權限可以授予其他用戶,而Oracle不允許任何對于V$視圖的直接授權。Oracle提供了一些特殊視圖用以記錄其他視圖創建方式,如v$fixed_view_defition,可以查看視圖的定義。
SQL> select view_definition from v\$fixed_view_definition where view_name ='V$NLS_PARAMETERS';
(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視圖可以獲取所有表空間的信息,包括表空間名、塊大小、狀態等等。例如,以下查詢語句可以獲取所有表空間的表空間名和狀態:
SQL> SELECT tablespace_name, status FROM dba_tablespaces;
(5)查詢數據文件的信息
查詢DBA_DATA_FILES視圖可以獲取所有數據文件的信息,包括數據文件名、表空間名、文件大小等等。例如,以下查詢語句可以獲取所有數據文件的數據文件名和文件大小:
SQL> SELECT file_name, bytes FROM dba_data_files;
(6) 查詢數據庫的性能數據
查詢DBA_HIST_SNAPSHOT視圖可以獲取數據庫的歷史性能數據,包括CPU利用率、內存利用率、I/O等等。例如,以下查詢語句可以獲取數據庫的CPU利用率和內存利用率:
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;
關于“Oracle數據字典怎么應用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Oracle數據字典怎么應用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。