Oracle 数据字典和数据字典视图

系统 1785 0

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

--Oracle 数据字典和数据字典视图

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

 

数据字典

    是元数据的集合,从逻辑上和物理上描述了数据库及内容,存储于 SYSTEM SYSAUX 表空间内的若干段。

    SYS 用户拥有所有的数据字典表,数据字典基本一般以 $ 结尾,如 col$ tab$ 等,这些数据字典存放在 system 表空间中。

   

数据字典的形成

    在数据库创建阶段创建,在使用阶段维护和更新

    无法通过 DML 操作来修改,只能通过相关的命令修改系统,来达到间接修改数据字典。

 

数据字典的特点

    每个 Oracle 数据库的中枢

    描述数据库和它的对象

    包含只读的表和视图

    存储在 SYSTEM 表空间中

    拥有者是 SYS 用户

    Oracle 服务器自己维护

    SELECT 访问

 

数据字典内容 :

    数据字典提供下列信息 :

       逻辑和物理的数据库结构

       对象的定义和空间分配

       一致性限制

       用户

       角色

       权限

       审计

 

数据字典的主要用途:

    Oracle 服务器用它查找下列信息:

       用户

       对象

       存储结构

       Oracle 服务器修改数据字典当 DDL 语句执行的时候 .

       用户和管理员们利用它了解数据库的信息 .

          

基础表和数据字典视图:   

    数据字典包括两个部分 :

       基础表

              存储数据库的描述

              CREATE DATABASE 命令创建( sql . bsq )

 

       数据字典视图

              用于简化基础表的信息

              通过 PUBLIC 同义词访问

              由脚本 catalog . sql 创建

          

           数据字典基表中的数据很难看懂。因此,很少人直接访问这些基表。取而代之的是数据字典视图。

           数据字典视图分为类,它们以前辍来区分,前辍分别为: USER ALL DBA

 

           USER_ * 用户所拥有的对象信息

           ALL_ *   用户能访问的对象信息

           DBA_ *   整个数据库中的对象信息

   

创建数据字典视图:

    建库后,运行以下脚本创建的

    $ORACLE_HOME / rdbms / admin / catalog . sql   创建常用的数据字典和同义词

    $ORACLE_HOME / rdbms / admin / catproc . sql   创建内建的存储过程、包等 pl / sql 对象

 

    DBCA 建库时会自动运行这两个脚本,但如果手动建库的话,需手动运行。

 

常用的数据字典:

    一般的概况 : TAB DICTIONARY , DICT_COLUMNS

    对象 : DBA_TABLES , DBA_INDEXES , DBA_TAB_COLUMNS , DBA_CONSTRAINTS --->user_ ,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 )。

 

五、更多

 

Oracle 用户、对象权限、系统权限

  SQL 基础 --> ROLLUP CUBE 运算符实现数据汇总

  SQL 基础 --> 层次化查询 (START BY ... CONNECT BY PRIOR)

  SQL 基础 --> 视图 (CREATE VIEW)

  Oracle 常用目录结构 (10g)

 

 

Oracle 数据字典和数据字典视图


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论