<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-28  評論-15  文章-81  trackbacks-0
    數據字典是Oracle存放有關數據庫信息的地方,其用途是用來描述數據的。比如一個表的創建者信息,創建時間信息,所屬表空間信息,用戶訪問權限信息等。當用戶在對數據庫中的數據進行操作時遇到困難就可以訪問數據字典來查看詳細的信息。
      
      Oracle中的數據字典有靜態和動態之分。靜態數據字典主要是在用戶訪問數據字典時不會發生改變的,但動態數據字典是依賴數據庫運行的性能的,反映數據庫運行的一些內在信息,所以在訪問這類數據字典時往往不是一成不變的。以下分別就這兩類數據字典來論述。
      
      1. 靜態數據字典
      
      這類數據字典主要是由表和視圖組成,應該注意的是,數據字典中的表是不能直接被訪問的,但是可以訪問數據字典中的視圖。靜態數據字典中的視圖分為三類,它們分別由三個前綴夠成:user_*、 all_*、 dba_*。
      
      user_*
      
      該視圖存儲了關于當前用戶所擁有的對象的信息。(即所有在該用戶模式下的對象)
      
      all_*
      
      該試圖存儲了當前用戶能夠訪問的對象的信息。(與user_*相比,all_* 并不需要擁有該對象,只需要具有訪問該對象的權限即可)
      
      dba_*
      
      該視圖存儲了數據庫中所有對象的信息。(前提是當前用戶具有訪問這些數據庫的權限,一般來說必須具有管理員權限)
      
      從上面的描述可以看出,三者之間存儲的數據肯定會有重疊,其實它們除了訪問范圍的不同以外(因為權限不一樣,所以訪問對象的范圍不一樣),其他均具有一致性。具體來說,由于數據字典視圖是由SYS(系統用戶)所擁有的,所以在卻省情況下,只有SYS和擁有DBA系統權限的用戶可以看到所有的視圖。沒有DBA權限的用戶只能看到user_*和all_*視。如果沒有被授予相關的SELECT權限的話,他們是不能看到 dba_*視圖的。
      
      由于三者具有相似性,下面以user_為例介紹幾個常用的靜態視圖:
      
      user_users視圖
      
      主要描述當前用戶的信息,主要包括當前用戶名、帳戶id、帳戶狀態、表空間名、創建時間等。例如執行下列命令即可返回這些信息。
      select * from user_users
      
      user_tables視圖
      
      主要描述當前用戶擁有的所有表的信息,主要包括表名、表空間名、簇名等。通過此視圖可以清楚了解當前用戶可以操作的表有哪些。執行命令為:select * from user_tables
      
      user_objects視圖
      
      主要描述當前用戶擁有的所有對象的信息,對象包括表、視圖、存儲過程、觸發器、包、索引、序列等。該視圖比user_tables視圖更加全面。例如, 需要獲取一個名為“package1”的對象類型和其狀態的信息,可以執行下面命令:
      
      select object_type,status
      from user_objects
      where object_name=upper(‘package1’);
      
      這里需注意upper的使用,數據字典里的所有對象均為大寫形式,而PL/SQL里不是大小寫敏感的,所以在實際操作中一定要注意大小寫匹配。
      
      user_tab_privs視圖
      
      該視圖主要是存儲當前用戶下對所有表的權限信息。比如,為了了解當前用戶對table1的權限信息,可以執行如下命令:
      
      select * from user_tab_privs where table_name=upper('table1')
      
      了解了當前用戶對該表的權限之后就可以清楚的知道,哪些操作可以執行,哪些操作不能執行。
      
      前面的視圖均為user_開頭的,其實all_開頭的也完全是一樣的,只是列出來的信息是當前用戶可以訪問的對象而不是當前用戶擁有的對象。對于dba_開頭的需要管理員權限,其他用法也完全一樣,這里就不再贅述了。
      
      2. 動態數據字典
      
      Oracle包含了一些潛在的由系統管理員如SYS維護的表和視圖,由于當數據庫運行的時候它們會不斷進行更新,所以稱它們為動態數據字典(或者是動態性能視圖)。這些視圖提供了關于內存和磁盤的運行情況,所以我們只能對其進行只讀訪問而不能修改它們。
      
      Oracle中這些動態性能視圖都是以v$開頭的視圖,比如v$access。下面就幾個主要的動態性能視圖進行介紹。
      
      v$access
      
      該視圖顯示數據庫中鎖定的數據庫對象以及訪問這些對象的會話對象(session對象)。
      
      運行如下命令:
      
      select * from v$access
      
      結果如下:(因記錄較多,故這里只是節選了部分記錄)
      
      SID  OWNER   OBJECT          TYPE
      27   DKH    V$ACCESS         CURSOR
      27   PUBLIC  V$ACCESS         SYNONYM
      27   SYS   DBMS_APPLICATION_INFO  PACKAGE
      27   SYS   GV$ACCESS        VIEW
      
      v$session
      
      該視圖列出當前會話的詳細信息。由于該視圖字段較多,這里就不列詳細字段,為了解詳細信息,可以直接在sql*plus命令行下鍵入:desc v$session即可。
      
      v$active_instance
      
      該視圖主要描述當前數據庫下的活動的實例的信息。依然可以使用select語句來觀察該信息。
      
      v$context
      
      該視圖列出當前會話的屬性信息。比如命名空間、屬性值等。
      
      3.小結
      
      以上是Oracle的數據字典方面的基本內容,還有很多有用視圖因為篇幅原因這里不能一一講解,希望大家在平時使用中多留心。總之,運用好數據字典技術,可以讓數據庫開發人員能夠更好的了解數據庫的全貌,這樣對于數據庫優化、管理等有極大的幫助。
    posted on 2007-10-11 23:25 譚明 閱讀(184) 評論(0)  編輯  收藏 所屬分類: Oracle
    主站蜘蛛池模板: 好大好硬好爽免费视频| 日本免费一区二区三区最新vr| 小小影视日本动漫观看免费| 亚洲人成网站日本片| 18禁美女裸体免费网站| 老汉色老汉首页a亚洲| 免费无码中文字幕A级毛片| 亚洲精品人成在线观看| 国产成人精品免费久久久久| 久久丫精品国产亚洲av不卡 | 免费人妻精品一区二区三区| 免费观看午夜在线欧差毛片| 国产亚洲高清在线精品不卡| 免费国产高清视频| 一级特黄a免费大片| 国产精品成人观看视频免费| 亚洲的天堂av无码| 最近2019中文字幕mv免费看| 亚洲AV无码一区二区三区久久精品| 日本特黄特黄刺激大片免费| 亚洲a∨无码一区二区| 波多野结衣中文一区二区免费| 本道天堂成在人线av无码免费| 亚洲人成人一区二区三区| 少妇无码一区二区三区免费| 亚洲国产中文在线二区三区免| 久久久www成人免费毛片| 色欲色欲天天天www亚洲伊| 亚洲精品国产精品乱码不卞| 久久香蕉国产线看免费| 亚洲国产精品日韩在线观看| 国产精品成人四虎免费视频| 国产线视频精品免费观看视频| 亚洲最大在线视频| 免费h黄肉动漫在线观看| a毛片在线免费观看| 国产亚洲精品影视在线| 亚洲天堂中文字幕在线| 最近免费中文字幕高清大全| 亚洲av无码一区二区三区天堂| 亚洲日韩av无码|