一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

oracle數(shù)據(jù)字典的字典表、視圖、同義詞關(guān)系簡述 - 建站學(xué)

 jacklopy 2011-04-20

oracle數(shù)據(jù)字典的字典表、視圖、同義詞關(guān)系簡述

時(shí)間:2011-04-19 Tag:   數(shù)據(jù)字典   oracle  
我們研究這個問題是從設(shè)置字符集開始的,當(dāng)時(shí)發(fā)現(xiàn)oracle服務(wù)器端報(bào)錯時(shí)的提示有時(shí)候顯示亂碼(顯示‘?’),而有時(shí)候有比較正常。于是在網(wǎng)上發(fā)現(xiàn)好幾種查看數(shù)據(jù)庫字符集的方式
            1>select * from v$nls_parameters;
             2>select * from nls_database_parameters;
網(wǎng)上都說是查看當(dāng)前數(shù)據(jù)庫的字符集(現(xiàn)在看來不準(zhǔn)確,原因這里不談),為什么查詢后的結(jié)果集不一樣呢?尤其是那個地區(qū)一個中國,一個美國,還有其他幾個字段不同,這就激起了我研究各種視圖之間聯(lián)系的興趣。
相關(guān)資料:《深入了解Oracle數(shù)據(jù)字典》                 
                           (一)數(shù)據(jù)庫內(nèi)置的表和視圖,用戶一般不能改變內(nèi)容
==============================================================
    orale數(shù)據(jù)字典里面字典表和視圖、同義詞有三類
        1>s$,--以這種開頭的這是數(shù)據(jù)字典表
        2>v$和gv$--這種開頭的是視圖
        3>v_$和gv_$--這種開頭的也是視圖
        4>v$和gv$--請注意??!這里不是視圖,是同義詞,等下解釋這里為什么可以和2同             名


    現(xiàn)在來說上面這四種之間的關(guān)系,第一種是s$表這些表是內(nèi)置在數(shù)據(jù)庫中的,數(shù)據(jù)庫運(yùn)行的基礎(chǔ),隨著數(shù)據(jù)庫啟動而動態(tài)的創(chuàng)建(這是從eygle文檔中得知的)。


    第二種v$/gv$。這種是在x$上創(chuàng)建的視圖,這種視圖不能被授權(quán)給任何其他的用戶,如果要親自證明的話,
其一證明是在x$上創(chuàng)建的可以用select view_definition from v$fixed_view_defintion where view_name=upper('這里寫一個以v$或是gv$開頭的系統(tǒng)內(nèi)置視圖名稱');  
 其二證明這種類型的視圖不能被授權(quán)給其他用戶,可以用grant select on 視圖名 to 用戶名;
順便說明一下v$和gv$的區(qū)別,v$一定是從gv$中通過了實(shí)例號的限制條件過濾出來的,因?yàn)槲覀兊囊粋€實(shí)例一次只能加載一個數(shù)據(jù)庫,但是一個數(shù)據(jù)庫可以被多個實(shí)例加載,那么我們?yōu)榱说玫剿袑?shí)例里面的信息,就可以使用gv$這種視圖了。


    第三種就是v_s$或是gv_s$了,oracle安裝目錄里面有個文件catalog.sql 這樣一些腳本:
create or replace view v_$fixed_table as select * from v$fixed_table;
create or replace public synonym v$fixed_table for v_s$fixed_table;
從這里我們可以看出,第三種就是一個完完全全的第二種的一個copy一樣,但是eygle說通過v_s$視圖把v$視圖和普通用戶隔離起來了,因?yàn)関_$視圖的權(quán)限可以授予給用戶,但我不明白的是既然v_$是完全的從v$視圖而來,連字段都一樣,那么這做的意義何在呢?如果哪位讀者知道懇請指點(diǎn)一下。


    第四種就是同義詞,雖然名稱表面上和第二種一模一樣,舉個例子:

  1  select name, type from v$fixed_table
  2* where name=upper('v$sga')
SQL> /

NAME                           TYPE
------------------------------ -----
V$SGA                          VIEW

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

SQL> col object_name for a25;
SQL> col object_type for a25;
SQL> col owner for a25;
SQL> select object_name, object_type, owner
  2  from dba_objects
  3  where object_name=upper('v$sga');

OBJECT_NAME               OBJECT_TYPE               OWNER
------------------------- ------------------------- -------------------------
V$SGA                     SYNONYM                   PUBLIC

我們仔細(xì)觀察就知道一個是同義詞一個是視圖,而且視圖是公有的,而視圖是屬于sys的,自然而然這兩者就不是同一個對象了,例如你試著創(chuàng)建一個a視圖,然后創(chuàng)建一個非公有的同義詞a(名稱相同),就會報(bào)錯。但是我又遇到了一個問題,就是同義詞和視圖在dba_objects或是v$fixed_table一個視圖里面不能一次查出來,而是分別存在連個視圖里面(我之前做實(shí)踐時(shí),印象中曾經(jīng)這樣做到過,在一個視圖中就同時(shí)查出了同義詞和視圖,以后發(fā)現(xiàn)了方法再貼出來),不管怎樣現(xiàn)在我們大致明白了2和4的區(qū)別。

                                         (二)其他的視圖、表,受用戶影響
=============================================================
     以上是關(guān)于數(shù)據(jù)庫字典表或是視圖同義詞的內(nèi)容,但里面有個特點(diǎn)就是每個視圖里面查出來得內(nèi)容不會隨用戶自己創(chuàng)建表、視圖、同義詞而變化,也就是不建議我們?nèi)バ薷?。接下來就談?wù)勔恍┍?、視圖,這些對象內(nèi)容,也就是里面的記錄受我們用戶的影響。
    這里又大致可以分三類user_*,all_*,dba_*這后面可以接一些具體的信息,比如說tables, users, views, synonyms...
             1.查看所有用戶:
                select * from dba_user;
                select * from all_users;
                select * from user_users;
             2.查看用戶系統(tǒng)權(quán)限:
               select * from dba_sys_privs;
               select * from all_sys_privs;
               select * from user_sys_privs;
             3.查看用戶對象權(quán)限:
               select * from dba_tab_privs;
               select * from all_tab_privs;
               select * from user_tab_privs;
             4.查看所有角色:
               select * from dba_roles;
             5.查看用戶所擁有的角色:
               select * from dba_role_privs;
               select * from user_role_privs;
user代表當(dāng)前用戶權(quán)限內(nèi)可以查看到的信息,all表示在user的權(quán)限基礎(chǔ)上加上其他對象的,但是自己可以訪問的信息,而dba的信息就一定包含前面user_*  all_*的所有信息,我猜想oracle的內(nèi)部實(shí)現(xiàn)是一張實(shí)際的基表,然后通過視圖過濾三個級別的三個視圖出來。
三個研究其他表、視圖、同義詞對象入口的視圖:
            dba_objects,
            v$fixed_table
            v$fixed_view_definition
 這三個最大的特點(diǎn)就是可以查出對象的類型,所有者之類的信息,并可以查出創(chuàng)建視圖的定義語句(要看表的字段信息desc 表名)
  
                     最后詳細(xì)說說dba_objects,v$fixed_table,v$fixed_view_definition
==============================================================

    1>dba_objects可以查看對象的類型,所有者,然后如果你要查看這些對象的詳細(xì)信息,就可以根據(jù)他的類型了,如果是v$ gv$在v$fixed_view_definition中可以查到(凡是這種開頭的只能這樣查)。否則的話(非v$ gv$)在dba_views里面可以查到,是同義詞就查dba_synonyms。
    2>v$fixed_table,這個表查的也是那些不受用戶而影響的表、視圖信息,我看eygle的推導(dǎo)里面 這個視圖查詢的總記錄數(shù)=x$開頭的記錄數(shù) + v$開頭的記錄數(shù) +  gv$開頭的記錄數(shù);在oracle 10 R2中發(fā)生了改變,新增了個:GO$SQL_BIND_CAPTURE     和 O$SQL_BIND_CAPTURE
 
   3>v$fixed_view_definition在1>里面已經(jīng)說了,只能查v$ gv$開頭的視圖的信息


最后有的讀者可能會想,我自己創(chuàng)建v$或是x$這種與數(shù)據(jù)字典表相似風(fēng)格的表或其他類型的對象,當(dāng)然沒關(guān)系,絲毫不會影響到那些數(shù)據(jù)字典表,這些表的信息只會影響到dba_*這些對象的信息(記錄增加),但是不建議這么做,容易混淆。


還有我有一個問題沒有解決:當(dāng)我查看dba_objects,dba_views,dba_synonyms這些視圖的定義信息時(shí),顯示不完全,其中顯示的一部分告訴我它依賴的表

SQL> select text from dba_views
  2  where view_name=upper('dba_synonyms');

TEXT
--------------------------------------------------------------------------------
select u.name, o.name, s.owner, s.name, s.node
from sys.user$ u, sys.syn$ s, sys

sys.ysn$ 和sys.user$這種類型的表


總結(jié):通過研究數(shù)據(jù)字典,對oracle的認(rèn)識更深了,但感覺自己的理解還是不很深刻,剛開始學(xué)oracle應(yīng)該都是這樣的吧,一次寫這么多,寫得不好的地方見諒,請指出我的錯誤(這點(diǎn)很重要,這是進(jìn)步的捷徑)我會繼續(xù)努力的,跟大家分享更多的自己的觀點(diǎn)。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    精品国产日韩一区三区| 亚洲最新中文字幕在线视频| 91福利视频日本免费看看| 亚洲一区二区三区日韩91| 91亚洲国产成人久久精品麻豆| 九九热精品视频免费在线播放| 国产午夜福利在线免费观看| 在线免费视频你懂的观看| 黄色美女日本的美女日人| 美女露小粉嫩91精品久久久| 色婷婷在线精品国自产拍| 亚洲综合伊人五月天中文 | 国产av一二三区在线观看| 99一级特黄色性生活片| 久久精品国产亚洲av麻豆| 久久永久免费一区二区| 加勒比日本欧美在线观看| 日韩人妻精品免费一区二区三区| 最新午夜福利视频偷拍| 91一区国产中文字幕| 东京热加勒比一区二区三区| 欧美国产极品一区二区| 国产原创中文av在线播放| 日韩一区二区三区有码| 扒开腿狂躁女人爽出白浆av| 亚洲中文字幕日韩在线| 不卡一区二区在线视频| 国产精品香蕉一级免费| 亚洲高清一区二区高清| 久久综合亚洲精品蜜桃| 国产欧美性成人精品午夜| 精品一区二区三区三级视频| 国产欧洲亚洲日产一区二区| 91欧美日韩一区人妻少妇| 扒开腿狂躁女人爽出白浆av | 久久综合九色综合欧美| 中日韩美一级特黄大片| 亚洲国产成人av毛片国产| 色婷婷人妻av毛片一区二区三区 | 亚洲中文字幕亲近伦片| 欧美精品一区二区三区白虎|