Oracle 資料字典和資料字典檢視

beatony發表於2011-07-29
Oracle 資料字典和資料字典檢視
分類: Oracle 其它特性 144人閱讀 評論(0) 舉報

--==============================

--Oracle 資料字典和資料字典檢視

--==============================

 

資料字典

    是後設資料的集合,從邏輯上和物理上描述了資料庫及內容,儲存於SYSTEMSYSAUX表空間內的若干段。

    SYS使用者擁有所有的資料字典表,資料字典基本一般以$結尾,如col$tab$等,這些資料字典存放在system表空間中。

   

資料字典的形成

    在資料庫建立階段建立,在使用階段維護和更新

    無法透過DML操作來修改,只能透過相關的命令修改系統,來達到間接修改資料字典。

 

資料字典的特點

    每個Oracle資料庫的中樞

    描述資料庫和它的物件

    包含只讀的表和檢視

    儲存在SYSTEM表空間中

    擁有者是SYS使用者

    Oracle伺服器自己維護

    SELECT訪問

 

資料字典內容:

    資料字典提供下列資訊:

       邏輯和物理的資料庫結構

       物件的定義和空間分配

       一致性限制

       使用者

       角色

       許可權

       審計

 

資料字典的主要用途:

    Oracle伺服器用它查詢下列資訊:

       使用者

       物件

       儲存結構

       Oracle伺服器修改資料字典當DDL語句執行的時候.

       使用者和管理員們利用它瞭解資料庫的資訊.

          

基礎表和資料字典檢視:  

    資料字典包括兩個部分:

       基礎表

              儲存資料庫的描述

              CREATE DATABASE命令建立(sql.bsq)

 

       資料字典檢視

              用於簡化基礎表的資訊

              透過PUBLIC同義詞訪問

              由指令碼catalog.sql建立

          

           資料字典基表中的資料很難看懂。因此,很少人直接訪問這些基表。取而代之的是資料字典檢視。

           資料字典檢視分為類,它們以前輟來區分,前輟分別為:USERALLDBA

 

           USER_* 使用者所擁有的物件資訊

           ALL_*  使用者能訪問的物件資訊

           DBA_*  整個資料庫中的物件資訊

   

建立資料字典檢視:

    建庫後,執行以下指令碼建立的

    $ORACLE_HOME/rdbms/admin/catalog.sql  建立常用的資料字典和同義詞

    $ORACLE_HOME/rdbms/admin/catproc.sql  建立內建的儲存過程、包等pl/sql物件

 

    DBCA建庫時會自動執行這兩個指令碼,但如果手動建庫的話,需手動執行。

 

常用的資料字典:

    一般的概況: TABDICTIONARY, DICT_COLUMNS

    物件: DBA_TABLES, DBA_INDEXES, DBA_TAB_COLUMNS, DBA_CONSTRAINTS ---&gtuser_ ,all_

    空間分配: DBA_SEGMENTS, DBA_EXTENTS

    資料庫結構: DBA_TABLESPACES, DBA_DATA_FILES

   

動態效能檢視:

    是將記憶體裡的資料或控制檔案裡的資料以表的形式展現出來,它們實際都是虛擬表,並不是真正的表

    只要資料庫在執行,就會不斷更新動態效能檢視

    一旦資料庫關閉或崩潰,則動態效能檢視裡的資料就丟失,當資料庫重新啟動後,資料將會被更新

    所有的動態效能檢視名稱都存放在v$fixed_table裡。這些動態效能檢視都是以V_$開頭,屬主是sys  

    oracle為每個動態效能檢視都建立了同義詞,同義詞將中間的“_”去掉了,形成以v$開頭

   

    在同義詞中檢視v$session

       SQL> SELECT owner,synonym_name,table_owner,table_name,db_link

         2  FROM dba_synonyms WHERE synonym_name='V$SESSION';

 

       OWNER      SYNONYM_NAME TABLE_OWNER  TABLE_NAME   DB_LINK

       -------------------- --------------------    --------------------   --------------------   --------

       PUBLIC       V$SESSION            SYS       V_$SESSION 

   

       SQL> SET LONG 15000

       SQL> SELECT text FROM dba_views WHERE view_name='V_$SESSION';

 

       TEXT

       --------------------------------------------------------------------------------

       select "SADDR","SID","SERIAL#","AUDSID","PADDR","USER#","USERNAME","COMMAND","OW

       NERID","TADDR","LOCKWAIT","STATUS","SERVER","SCHEMA#","SCHEMANAME","OSUSER","PRO

       CESS","MACHINE","TERMINAL","PROGRAM","TYPE","SQL_ADDRESS","SQL_HASH_VALUE","SQL_

       ID","SQL_CHILD_NUMBER","PREV_SQL_ADDR","PREV_HASH_VALUE","PREV_SQL_ID","PREV_CHI

       LD_NUMBER","MODULE","MODULE_HASH","ACTION","ACTION_HASH","CLIENT_INFO","FIXED_TA

       BLE_SEQUENCE","ROW_WAIT_OBJ#","ROW_WAIT_FILE#","ROW_WAIT_BLOCK#","ROW_WAIT_ROW#"

       ,"LOGON_TIME","LAST_CALL_ET","PDML_ENABLED","FAILOVER_TYPE","FAILOVER_METHOD","F

       AILED_OVER","RESOURCE_CONSUMER_GROUP","PDML_STATUS","PDDL_STATUS","PQ_STATUS","C

       URRENT_QUEUE_DURATION","CLIENT_IDENTIFIER","BLOCKING_SESSION_STATUS","BLOCKING_I

       NSTANCE","BLOCKING_SESSION","SEQ#","EVENT#","EVENT","P1TEXT","P1","P1RAW","P2TEX

       T","P2","P2RAW","P3TEXT","P3","P3RAW","WAIT_CLASS_ID","WAIT_CLASS#","WAIT_CLASS"

 

       TEXT

       --------------------------------------------------------------------------------

       ,"WAIT_TIME","SECONDS_IN_WAIT","STATE","SERVICE_NAME","SQL_TRACE","SQL_TRACE_WAI

       TS","SQL_TRACE_BINDS" from v$session

 

       SQL> SELECT view_definition FROM v$fixed_view_definition

         2  WHERE view_name='V$SESSION';

 

       VIEW_DEFINITION

       ---------------------------------------------------------------------------------

       select  SADDR , SID , SERIAL# , AUDSID , PADDR , USER# , USERNAME , COMMAND ,

       OWNERID, TADDR , LOCKWAIT , STATUS , SERVER , SCHEMA# , SCHEMANAME ,OSUSER ,

       PROCESS , MACHINE , TERMINAL , PROGRAM , TYPE, SQL_ADDRESS , SQL_HASH_VALUE,

       SQL_ID, SQL_CHILD_NUMBER , PREV_SQL_ADDR , PREV_HASH_VALUE , PREV_SQL_ID,

       PREV_CHILD_NUMBER , MODULE , MODULE_HASH , ACTION , ACTION_HASH , CLIENT_INFO ,

       FIXED_TABLE_SEQUENCE , ROW_WAIT_OBJ# , ROW_WAIT_FILE# , ROW_WAIT_BLOCK# ,

       ROW_WAIT_ROW# , LOGON_TIME , LAST_CALL_ET , PDML_ENABLED , FAILOVER_TYPE ,

       FAILOVER_METHOD , FAILED_OVER, RESOURCE_CONSUMER_GROUP, PDML_STATUS,

       PDDL_STATUS, PQ_STATUS, CURRENT_QUEUE_DURATION, CLIENT_IDENTIFIER,

       BLOCKING_SESSION_STATUS, BLOCKING_INSTANCE,BLOCKING_SESSION,SEQ#,

       EVENT#,EVENT,P1TEXT,P1,P1RAW,P2TEXT,P2,P2RAW, P3TEXT,P3,P3RAW,

       WAIT_CLASS_ID, WAIT_CLASS#,WAIT_CLASS,WAIT_TIME,SECONDS_IN_WAIT,

       STATE,SERVICE_NAME, SQL_TRACE, SQL_TRACE_WAITS, SQL_TRACE_BINDS

       from GV$SESSION

       where inst_id = USERENV('Instance')   

 

常用的資料字典檢視、動態效能檢視:

    dba_objects

    dba_tables

    dba_users

    dba_tablespaces

   

    V$CONTROLFILE 控制檔案資訊

    V$DATABASE    資料庫資訊

    V$DATAFILE    資料檔案資訊

    V$INSTANCE    例項資訊

    V$PARAMETER       引數資訊

    V$SESSION     會話資訊

    V$SGA         SGA資訊

    V$SGAINFO     SGA資訊

    V$TABLESPACE  表空間資訊

    V$THREAD     

    V$VERSION    

    V$option

 

    v$parameter顯示的是session級的引數,也就是當前session的引數資訊。

    如果沒有使用alter session單獨設定當前session的引數值,那麼預設和system級的引數應該是一樣的。

 

    v$system_parameter顯示的是system級的引數,儲存的是使用alter system修改的值(scope=both或者scope=memory)。

 

    上面兩個都是當前已經生效的引數值。對於使用spfile的庫,也可以暫時只修改spfile中的

    值。v$spparameter顯示的就是儲存在spfile中的引數值(scope=spfile)。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22578826/viewspace-703484/,如需轉載,請註明出處,否則將追究法律責任。

相關文章