日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

《Oracle数据库管理与维护实战》——2.11 Oracle数据字典

發(fā)布時(shí)間:2025/4/5 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《Oracle数据库管理与维护实战》——2.11 Oracle数据字典 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本節(jié)書摘來自異步社區(qū)出版社《Oracle數(shù)據(jù)庫管理與維護(hù)實(shí)戰(zhàn)》一書中的第2章,第2.11節(jié),作者: 何偉娜 , 常建功,更多章節(jié)內(nèi)容可以訪問云棲社區(qū)“異步社區(qū)”公眾號(hào)查看。

2.11 Oracle數(shù)據(jù)字典

Oracle數(shù)據(jù)庫管理與維護(hù)實(shí)戰(zhàn)
數(shù)據(jù)字典內(nèi)存放了Oracle的數(shù)據(jù)庫信息,用戶可以通過數(shù)據(jù)字典來查看這些信息。數(shù)據(jù)字典是只讀的,它是Oracle數(shù)據(jù)庫的最重要的部分之一,是由一組只讀的表及其視圖組成。數(shù)據(jù)字典可提供以下的信息。

Oracle用戶的名字

每一個(gè)用戶所擁有的權(quán)限和角色

數(shù)據(jù)庫對(duì)象的名字(表、視圖、快照、索引、聚集、同義詞、序列、過程、函數(shù)、包及觸發(fā)器等)

關(guān)于完整性約束的信息

列的缺省值

有關(guān)數(shù)據(jù)庫中對(duì)象的空間分布及當(dāng)前使用情況

審計(jì)信息(如誰存取或修改各種對(duì)象)

其它的一些數(shù)據(jù)庫信息

Oracle中的數(shù)據(jù)字典有靜態(tài)和動(dòng)態(tài)之分。靜態(tài)數(shù)據(jù)字典主要包含用戶在訪問數(shù)據(jù)字典時(shí)不會(huì)發(fā)生改變的信息。而動(dòng)態(tài)數(shù)據(jù)字典是依賴數(shù)據(jù)庫運(yùn)行的性能的,反映數(shù)據(jù)庫運(yùn)行的一些內(nèi)在信息,所以在訪問這類數(shù)據(jù)字典時(shí)數(shù)據(jù)往往不是一成不變的,數(shù)據(jù)庫管理員常從動(dòng)態(tài)數(shù)據(jù)字典中獲得數(shù)據(jù)的運(yùn)行信息。接下來我們分別就這兩類數(shù)據(jù)字典來論述。

2.11.1 靜態(tài)數(shù)據(jù)字典

這類數(shù)據(jù)字典主要是由表和視圖組成。應(yīng)該注意的是,數(shù)據(jù)字典中的表是不能直接來訪問的,但是可以訪問數(shù)據(jù)字典中的視圖。靜態(tài)數(shù)據(jù)字典中的視圖分為三類,它們分別為:USER、ALL、DBA_。

USER_視圖存儲(chǔ)了當(dāng)前用戶所擁有的對(duì)象的信息(即所有在當(dāng)前用戶模式下的對(duì)象)。

ALL_視圖存儲(chǔ)了當(dāng)前用戶能夠訪問的所有對(duì)象的信息。與USER相比,ALL并不需要擁有該對(duì)象,只需要有訪問該對(duì)象的權(quán)限即可。

DBA_視圖存儲(chǔ)了數(shù)據(jù)庫中所有對(duì)象的信息。當(dāng)前用戶必須具有訪問這些數(shù)據(jù)庫的權(quán)限才能訪問,一般來說必須具有管理員權(quán)限。

三類視圖之間的數(shù)據(jù)有重疊,它們之間除了因?yàn)樵L問權(quán)限不一樣所以訪問范圍不一樣之外,其他均具有一致性。具體來說,由于數(shù)據(jù)字典視圖是由SYS(系統(tǒng)用戶)所擁有的,在缺省情況下,只有SYS和擁有DBA系統(tǒng)權(quán)限的用戶可以看到所有的視圖。沒有DBA權(quán)限的用戶只能看到USER_和ALL_視圖。如果用戶沒有被授予相關(guān)的SELECT權(quán)限,就不能看到DBA_視圖的內(nèi)容。舉例來說,USER_USERS、ALL_USERS、DBA_USERS視圖內(nèi)放的都是有關(guān)用戶的信息,USER_USERS內(nèi)放的是用戶名,用戶狀態(tài),用戶創(chuàng)建時(shí)間等信息,而ALL_USERS內(nèi)放的是當(dāng)前數(shù)據(jù)庫內(nèi)所有用戶的用戶名稱和用戶創(chuàng)建時(shí)間。DBA_USERS內(nèi)描述的字段信息和USER_USERS一樣,但顯示所有用戶的信息。三者一般同時(shí)出現(xiàn),有USER_USERS就有DBA_USERS和ALL_USERS;同樣,有USER_TABLES就有DBA_TABLES和ALL_TABLES等,只是范圍不一樣。

下面我們以USER_為例介紹幾個(gè)常用的靜態(tài)視圖。

1.USER_USERS視圖
該視圖顯示當(dāng)前用戶的信息,主要包括當(dāng)前用戶名、賬戶id、賬戶狀態(tài)、表空間名、創(chuàng)建時(shí)間等。

2.USER_TABLES視圖
該視圖顯示當(dāng)前用戶擁有所有表的信息,主要包括表名、表空間名、簇名等。通過此視圖用戶可以清楚了解當(dāng)前用戶可以操作的表。

3.USER_OBJECTS視圖
該視圖顯示當(dāng)前用戶擁有的所有對(duì)象的信息,對(duì)象包括表、視圖、存儲(chǔ)過程、觸發(fā)器、包、索引、序列等。該視圖比USER_TABLES視圖更加全面。例如,如需要獲取一個(gè)名為“package1”的對(duì)象類型和其狀態(tài)的信息,執(zhí)行以下命令。

SQL>select object_type,status from user_objects where object_name=upper(‘package1’);

這里upper(一個(gè)PL/SQL內(nèi)置函數(shù))函數(shù)用來轉(zhuǎn)換大小寫,數(shù)據(jù)字典里的所有對(duì)象均為大寫形式,而PL/SQL里不區(qū)分大小寫,在實(shí)際操作中一定要注意大小寫匹配。

4.USER_TAB_PRIVS視圖
該視圖顯示當(dāng)前用戶對(duì)所有表的權(quán)限信息。

例如,為了了解當(dāng)前用戶對(duì)table1的權(quán)限信息,執(zhí)行以下命令。

SQL>select * from user_tab_privs
where table_name=upper('table1')
了解了當(dāng)前用戶對(duì)該表的權(quán)限之后用戶就可以清楚地知道,哪些操作可以執(zhí)行,哪些操作不能執(zhí)行。

2.11.2 查看各類靜態(tài)對(duì)象

查看各類靜態(tài)對(duì)象內(nèi)容對(duì)分析Oracle的內(nèi)部運(yùn)行機(jī)制有十分重要的作用,有時(shí)開發(fā)人員也需要如何查看各類靜態(tài)對(duì)象。下面我們將給出查看一些最常用對(duì)象的方法。

1.查看用戶信息
查看當(dāng)前用戶的缺省表空間的代碼如下。

SQL>select username,default_tablespacefrom user_users;

查看當(dāng)前用戶的角色的代碼如下。

SQL>select * from user_role_privs;

查看當(dāng)前用戶的系統(tǒng)權(quán)限和表級(jí)權(quán)限如下。

SQL>select * from user_sys_privs; SQL>select * from user_tab_privs;

2.表
查看用戶下所有的表的代碼如下。

SQL>select * from user_tables;

查看名稱包含log字符的表的代碼如下。

SQL>select object_name,object_id from user_objects where instr(object_name,'LOG')>0;

查看某表的創(chuàng)建時(shí)間的代碼如下。

SQL>select object_name,created from user_objects where object_name=upper('&table_name');

查看某表的大小的代碼如下。

SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&table_name');

查看放在Oracle的內(nèi)存區(qū)里的表的代碼如下。

SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;

3.索引
查看索引個(gè)數(shù)和類別的代碼如下。

SQL>select index_name,index_type,table_name from user_indexes order by table_name;

查看索引被索引的字段的代碼如下。

SQL>select * from user_ind_columnswhere index_name=upper('&index_name');

查看索引的大小的代碼如下。

SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments where segment_name=upper('&index_name');

4.序列號(hào)
查看序列號(hào),last_number是當(dāng)前值的代碼如下。

SQL>select * from user_sequences;

5.視圖
查看視圖的名稱的代碼如下。

SQL>select view_namefrom user_views;

查看創(chuàng)建視圖的select語句如下。

SQL>set view_name,text_length from user_views; SQL>set long 2000; %說明:可以根據(jù)視圖的text_length的值設(shè)定set long的大小 SQL>select text from user_views where view_name=upper('&view_name');

6.同義詞
查看同義詞的名稱的代碼如下。

SQL>select * from user_synonyms;

7.約束條件
查看某表的約束條件的代碼如下。

SQL>select constraint_name, constraint_type,search_condition, r_constraint_namefrom user_constraintswhere table_name = upper('&table_name'); SQL>select c.constraint_name,c.constraint_type,cc.column_name from user_constraints c,user_cons_columns ccwhere c.owner = upper('&table_owner') and c.table_name = upper('&table_name')and c.owner = cc.owner and c.constraint_name = cc.constraint_nameorder by cc.position;

8.存儲(chǔ)函數(shù)和過程
查看函數(shù)和過程的狀態(tài)的代碼如下。

SQL>select object_name,status from user_objects where object_type='FUNCTION'; SQL>select object_name,status from user_objects where object_type='PROCEDURE';

查看函數(shù)和過程的源代碼如下。

SQL>select text from all_source where owner=user and name=upper('&plsql_name');

2.11.3 動(dòng)態(tài)數(shù)據(jù)字典

Oracle包含了一些潛在的由系統(tǒng)管理員如SYS維護(hù)的表和視圖,因?yàn)閿?shù)據(jù)庫運(yùn)行時(shí)它們會(huì)不斷進(jìn)行更新,所以稱為動(dòng)態(tài)數(shù)據(jù)字典(或者是動(dòng)態(tài)性能視圖)。這些視圖提供了關(guān)于內(nèi)存和磁盤的運(yùn)行情況,所以只能對(duì)其進(jìn)行只讀訪問而不能修改。

Oracle中這些動(dòng)態(tài)性能視圖都是以v$開頭的視圖,比如v$access。下面我們就幾個(gè)主要的動(dòng)態(tài)性能視圖進(jìn)行介紹。

1.V$ACCESS視圖
視圖內(nèi)描述了數(shù)據(jù)庫中鎖定的數(shù)據(jù)庫對(duì)象以及訪問這些對(duì)象的會(huì)話對(duì)象(session對(duì)象)。

2.V$SESSION視圖
視圖內(nèi)描述了當(dāng)前會(huì)話的詳細(xì)信息。該視圖字段較多。

3.V$ACTIVE_INSTANCE視圖
視圖內(nèi)描述了當(dāng)前數(shù)據(jù)庫下活動(dòng)實(shí)例的信息。

4.V$CONTEXT視圖
視圖內(nèi)描述了當(dāng)前會(huì)話的屬性信息,比如命名空間、屬性值等。

2.11.4 各類數(shù)據(jù)字典區(qū)分

Oracle中有多種數(shù)據(jù)字典,有ALL,USER,DBA,V$,GV$,V$,GV_$,X$。數(shù)據(jù)字典之間的關(guān)系比較復(fù)雜,前四種前面我們已介紹過,下面詳細(xì)介紹后幾種。

GV$視圖是從Oracle 8開始引入的,G表示Global。除了一些特例以外,每個(gè)V$視圖都有一個(gè)對(duì)應(yīng)的GV$視圖存在,如GV$FIXED_TABLE對(duì)應(yīng)V$FIXED_TABLE視圖。GV$視圖出現(xiàn)在并行服務(wù)器(OPS)環(huán)境中。在并行服務(wù)器環(huán)境中,GV$視圖返回的是所有實(shí)例信息;而V$視圖則是在GV$視圖的基礎(chǔ)上,增加了實(shí)例ID判斷后的結(jié)果,即每個(gè)V$視圖都是在GV$視圖中包含語句where inst_id = USERENV('Instance')而產(chǎn)生的,如圖2-35所示。

V$、GV$實(shí)際上又是GV$,V$視圖的同義詞(圖2-35中以‘=’號(hào)表示),V$,GV$是用下面SQL語句從GV$,V$視圖中創(chuàng)建的。

SQL>create or replace view v_$nls_parameters as select * from v$nls_parameters; SQL>create or replace public synonym v$nls_parameters for v_$nls_parameters; SQL>grant select on v_$nls_parameters to public;

事實(shí)上,V$視圖是真正的視圖,V$視圖是基于X$表直接建立的。

X$表是Oracle數(shù)據(jù)庫的運(yùn)行基礎(chǔ),在數(shù)據(jù)庫啟動(dòng)時(shí)由Oracle應(yīng)用程序動(dòng)態(tài)創(chuàng)建。

2.11.5 動(dòng)態(tài)數(shù)據(jù)字典結(jié)構(gòu)

以后用戶經(jīng)常會(huì)用到動(dòng)態(tài)數(shù)據(jù)字典,尤其是數(shù)據(jù)管理員。動(dòng)態(tài)數(shù)據(jù)字典是管理員獲取數(shù)據(jù)庫信息的一個(gè)接口。圖2-36、圖2-37和圖2-38給出動(dòng)態(tài)數(shù)據(jù)字典的結(jié)構(gòu)和分類,以幫助讀者加深理解。

2.11.6  動(dòng)態(tài)數(shù)據(jù)字典分類

Oracle數(shù)據(jù)庫中保存了許多動(dòng)態(tài)數(shù)據(jù)字典,為了便于用戶掌握,這里專門對(duì)這些數(shù)據(jù)字典進(jìn)行分類,表2-9給出一個(gè)數(shù)據(jù)字典分類表。





說明:“支持的數(shù)據(jù)庫版本”列如果沒有寫出支持的版本,表示任何版本都支持。

總結(jié)

以上是生活随笔為你收集整理的《Oracle数据库管理与维护实战》——2.11 Oracle数据字典的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。