溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Oracle數(shù)據(jù)字典怎么應(yīng)用

發(fā)布時(shí)間:2023-04-17 11:38:15 來(lái)源:億速云 閱讀:80 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了Oracle數(shù)據(jù)字典怎么應(yīng)用的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Oracle數(shù)據(jù)字典怎么應(yīng)用文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

1. 什么是Oracle數(shù)據(jù)字典

數(shù)據(jù)字典(Data Dictionary)是Oracle元數(shù)據(jù)(Metadata)的存儲(chǔ)地點(diǎn),匯集了數(shù)據(jù)庫(kù)對(duì)象及數(shù)據(jù)庫(kù)運(yùn)行時(shí)需要的基礎(chǔ)信息。Oracle RDBMS使用數(shù)據(jù)字典記錄和管理對(duì)象信息和安全信息,用戶可以通過(guò)數(shù)據(jù)字典獲取數(shù)據(jù)庫(kù)相關(guān)信息,從而進(jìn)行數(shù)據(jù)庫(kù)管理、優(yōu)化和維護(hù)工作。

2. 數(shù)據(jù)字典的內(nèi)容

數(shù)據(jù)字典包括以下內(nèi)容:

  • 所有數(shù)據(jù)庫(kù)Schema對(duì)象的定義(表、視圖、索引、聚簇、同義詞、序列、過(guò)程、函數(shù)、包、觸發(fā)器等);

  • Oracle用戶名稱、角色、權(quán)限等信息;

  • 完整性約束信息;

  • 數(shù)據(jù)庫(kù)的空間分配和使用情況;

  • 字段缺省值;

  • 審計(jì)信息;

  • 其他數(shù)據(jù)庫(kù)信息。

Oracle字典包括四個(gè)層次,分別為內(nèi)部RDBMS表(X)、基礎(chǔ)數(shù)據(jù)字典表、數(shù)據(jù)字典視圖和動(dòng)態(tài)性能視圖( V )、基礎(chǔ)數(shù)據(jù)字典表、數(shù)據(jù)字典視圖和動(dòng)態(tài)性能視圖(V)、基礎(chǔ)數(shù)據(jù)字典表、數(shù)據(jù)字典視圖和動(dòng)態(tài)性能視圖(V)。

(1)X$表

X$表是Oracle數(shù)據(jù)庫(kù)的核心部分,用于跟蹤內(nèi)部數(shù)據(jù)庫(kù)信息,維持?jǐn)?shù)據(jù)庫(kù)正常運(yùn)行,在數(shù)據(jù)庫(kù)啟動(dòng)時(shí)由Oracle應(yīng)用程序動(dòng)態(tài)創(chuàng)建,不允許SYSDBA之外的用戶直接訪問(wèn)。X$表是加密命名的且不作文檔說(shuō)明。Oracle通過(guò)X$建立起其他大量視圖,供用戶查詢管理數(shù)據(jù)庫(kù)之用。

(2)數(shù)據(jù)字典表、數(shù)據(jù)字典視圖

數(shù)據(jù)字典表(Data Dictionary Table)用以存儲(chǔ)表、索引、約束以及其他數(shù)據(jù)庫(kù)結(jié)構(gòu)的信息,

表名都用$結(jié)尾(如tab$、obj$、ts$等),在創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候通過(guò)運(yùn)行sql.bsq($ORACLE_HOME/RDBMS/admin目錄下)腳本來(lái)創(chuàng)建。

數(shù)據(jù)字典表的用戶都是sys,存在在system這個(gè)表空間里,Oracle對(duì)這些數(shù)據(jù)字典都分別建立了數(shù)據(jù)字典視圖,Oracle針對(duì)這些對(duì)象的范圍,分別把視圖命名為DBA_XXXX, ALL_XXXX和USER_XXXX,dictionary視圖記錄了所有的數(shù)據(jù)字典視圖的名稱。

  • user_類視圖:描述了當(dāng)前用戶schema下的對(duì)象;

  • all_類視圖:描述了當(dāng)前用戶有權(quán)限訪問(wèn)到的所有對(duì)象的信息;

  • dba_類視圖:包括了所有數(shù)據(jù)庫(kù)對(duì)象的信息;

通常USER_類視圖不包含Owner字段,查詢返回當(dāng)前用戶的對(duì)象信息。

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)動(dòng)態(tài)性能視圖

動(dòng)態(tài)性能(V$)視圖(Dynamic Performance View)記錄了數(shù)據(jù)庫(kù)運(yùn)行時(shí)的信息和統(tǒng)計(jì)數(shù)據(jù)。

創(chuàng)建X$表之后,Oracle創(chuàng)建了GV$和V$視圖,在GV$和V$之后,Oracle建立了GV_$和V_$視圖,隨后為這些視圖建立了公共同義詞。這些工作都是通過(guò)catalog.sql腳本實(shí)現(xiàn)的。通過(guò)V_$視圖,Oracle把V$視圖和普通用戶隔離,V_$視圖的權(quán)限可以授予其他用戶,而Oracle不允許任何對(duì)于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視圖可以獲取所有表的信息,包括表名、表空間、擁有者等等。例如,以下查詢語(yǔ)句可以獲取所有表的表名和表空間:

SQL> SELECT table_name, tablespace_name FROM dba_tables;

(2)查詢索引的信息

查詢DBA_INDEXES視圖可以獲取所有索引的信息,包括索引名、所屬表、索引類型等等。例如,以下查詢語(yǔ)句可以獲取所有索引的信息:

SQL> SELECT index_name, table_name, index_type FROM dba_indexes;

(3)查詢用戶的信息

查詢DBA_USERS視圖可以獲取所有用戶的信息,包括用戶名、默認(rèn)表空間、臨時(shí)表空間等等。例如,以下查詢語(yǔ)句可以獲取所有用戶的用戶名和默認(rèn)表空間:

SQL> SELECT username, default_tablespace FROM dba_users;

(4)查詢表空間的信息

查詢DBA_TABLESPACES視圖可以獲取所有表空間的信息,包括表空間名、塊大小、狀態(tài)等等。例如,以下查詢語(yǔ)句可以獲取所有表空間的表空間名和狀態(tài):

SQL> SELECT tablespace_name, status FROM dba_tablespaces;

(5)查詢數(shù)據(jù)文件的信息

查詢DBA_DATA_FILES視圖可以獲取所有數(shù)據(jù)文件的信息,包括數(shù)據(jù)文件名、表空間名、文件大小等等。例如,以下查詢語(yǔ)句可以獲取所有數(shù)據(jù)文件的數(shù)據(jù)文件名和文件大?。?/p>

SQL> SELECT file_name, bytes FROM dba_data_files;

(6) 查詢數(shù)據(jù)庫(kù)的性能數(shù)據(jù)

查詢DBA_HIST_SNAPSHOT視圖可以獲取數(shù)據(jù)庫(kù)的歷史性能數(shù)據(jù),包括CPU利用率、內(nèi)存利用率、I/O等等。例如,以下查詢語(yǔ)句可以獲取數(shù)據(jù)庫(kù)的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ù)字典怎么應(yīng)用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Oracle數(shù)據(jù)字典怎么應(yīng)用”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI