Oracle 資料庫字典 檢視 基表

迎著太陽走向遠方發表於2017-03-27
1.資料字典 (存放在sys方案裡面)
1.是oracle資料庫中重要的組成部,提供了資料庫的一些系統資訊。
2.它是隻讀表(資料字典基表)和檢視(資料字典檢視)的集合,資料庫字典的所有者為sys使用者。
3.使用者只能在資料庫字典上執行查詢的操作,而其他的維護和修改都是由系統自動完成的

2.資料字典基表 
1.資料字典基表儲存資料庫的基本資訊
2.只有Oracle才能寫和讀取這些表。使用者很少能夠直接訪問這些表,因為它們是非標準的,大多數資料以加密格式儲存。
3.但是,使用者可訪問檢視:總結和顯示資料字典基表的資訊的檢視。這些檢視將基表的資訊解密成有用的資訊,如使用者或者表名。大多數使用者能夠訪問這些檢視,但不能訪問基表

3.資料字典檢視

1.資料字典檢視是基於資料字典基表建立的檢視
2.普通使用者可以通過查詢系統資料字典檢視獲取系統資訊
3.資料字典檢視主要包括
    A.靜態資料字典檢視:user_xxx,all_xxx,dba_xxx 三種型別
    B.動態資料字典檢視:動態效能檢視
4.常用靜態資料庫字典檢視
   dba_data_files:通常用來查詢關於資料庫檔案的資訊    
   dba_db_links:包括資料庫中的所有資料庫鏈路,也就是databaselinks。 

   dba_extents:資料庫中所有分割槽的資訊                      
   dba_free_space:所有表空間中的自由分割槽 

   dba_indexs:關於資料庫中所有索引的描述                 
   dba_ind_columns:在所有表及聚集上壓縮索引的列 

   dba_objects:資料庫中所有的物件                             
   dba_rollback_segs:回滾段的描述 

   dba_segments:所有資料庫段分段的儲存空間             
   dba_synonyms:關於同義詞的資訊查詢 

   dba_tables:資料庫中所有資料表的描述                      
   dba_tabespaces:關於表空間的資訊 

   dba_tab_columns:所有表描述、檢視以及聚集的列      
   dba_tab_grants/privs:物件所授予的許可權 
   dba_ts_quotas:所有使用者表空間限額                         
   dba_users:關於資料的所有使用者的資訊 
   dba_views:資料庫中所有檢視的文字 

4.動態效能檢視
1.記載了資料庫例程啟動後的相關資訊
2.當啟動oracle service時 系統會建立動態效能試圖
3.當停止oracle service的時候,系統會刪除動態效能檢視 
4.ORACLE 的所有動態效能檢視都是以 v_$開始的,並且oracle為每個動態效能檢視都提供了相應的同義詞,並且同義詞都是以V$開始的 例如 v_$datafile 的同義詞是v$datafile;
5. 動態效能的所有者是sys,一般情況下,由dba和特權使用者來查詢動態效能檢視。
6.常用動態效能檢視  
    v$thread:從控制檔案中獲取的執行緒的資訊; 
    v$tablespace:從控制檔案中獲取的表空間的資訊;
    v$spparameter:顯示SPFILE檔案中的引數資訊,如果SPFILE沒有被用來啟動例項,則檢視中的所有ISSPECIFIED列將會是FALSE; 
    v$sga:顯示SGA的資訊;
    v$instance:顯示當前例項的狀態; 
    v$controlfile:顯示控制檔案列表;  
    v$database:從控制檔案中獲取的資料庫的資訊;
    v$datafile:資料庫使用的資料檔案資訊                    
    v$librarycache:共享池中SQL語句的管理資訊 
    v$lock:通過訪問資料庫會話,設定物件鎖的所有資訊  
    v$log:從控制檔案中提取有關重做日誌組的資訊 
    v$logfile有關例項重置日誌組檔名及其位置的資訊     
    v$parameter:初始化引數檔案中所有項的值 
    v$process:當前程式的資訊                                  
    v$rollname:回滾段資訊  
    v$rollstat:聯機回滾段統計資訊                              
    v$rowcache:記憶體中資料字典活動/效能資訊 
    v$session:有關會話的資訊                                     
    v$sesstat:在v$session前會話的統計資訊  
    v$sqlarea:共享池中使用當前游標的統計資訊,游標是一塊記憶體區域,有OracSQL語句時開啟。 
    v$statname:在v$sesstat個統計的含義    
    v$sysstat:基於當前操作會話進行的系統統計 

5.資料庫不同狀態的時候檢視的變化
1.動態效能檢視一般來說,大部分使用者是不能夠訪問的,特別是資料庫系統的終端使用者。一般情況下,只有資料庫管理員角色的使用者才能夠訪問。而且,當資料庫其狀態不同時,可以訪問的資料字典動態效能檢視也不同
資料庫不同狀態:
A:Nomount狀態時 
  當我們連線到資料庫伺服器,啟動某個例程的時候,資料庫本身還沒有被載入,此時,就叫做Nomount狀態。在這個狀態下,即使是資料庫管理員,其可以訪問的資料字典動態效能檢視也是非常有限的。當資料庫某個例程啟動之後,資料庫會開啟某些引數檔案,並且會在記憶體中分配SGA區並啟動相關的後臺程式。由於此時沒有載入資料庫,所以,資料庫管理員之能夠訪問從SGA區獲得資訊的動態效能檢視。
B:Mount狀態時
    當我們去載入某個資料庫的時候,Oracle會開啟其引數檔案中指定的控制檔案,以實現載入資料庫的過程。此時,資料庫管理員訪問的資料字典效能檢視就會多一點,除了可以訪問從SGA區獲得資訊的動態效能檢視,還可以訪問從控制檔案中獲得資訊的動態效能檢視。也就是說,當資料庫出於Mount狀態時,其動態效能資料檢視的資料來源有兩個部分,一是來自於SGA區的,二是來自於控制檔案中的
C:Open狀態時
    當資料庫開啟的時候,資料庫系統會根據控制檔案中所定義的資訊,開啟所有的資料檔案以及對應的重做日至檔案。這個時候,我們資料庫管理員可以訪問的動態效能檢視就包括三個部分,一是來自與SGA區的資訊;二是來自於控制檔案中的資訊,三是Oracle資料庫效能的相關動態效能檢視

6.舉例:查詢使用者自己擁有多少張表(自己的表)
1.select table_name from user_tables //查詢許可權屬於自己的表

7.查詢當前使用者可以訪問的所有表 (其中 有別人授權的表)
select table_name from all_tables; //查詢當前使用者可以訪問的所有表 (別人授權訪問的表

8.顯示所有方案擁有的資料庫表
select table_name from dba_tables;//但是查詢這種資料庫字典檢視,要求使用者     必須用dba角色和select any table 系統許可權

9.查詢資料庫中所有使用者的詳細資訊
select * from dba_users;

10.查詢表空間
select tablespace_name from dba_tablespaces;

11.顯示當前使用者可以檢視的所有資料字典檢視
select * from dict where comments like ‘%grant%’

12.顯示當前資料庫的全稱
select * from global_name;

13.所以上面的查詢結果中數量是 dba_tables > all_tables > user_tables;
14.oracle使用者所擁有的許可權和角色都存放在資料庫字典中


相關文章