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

简介: --============================== --Oracle 数据字典和数据字典视图 --==============================   数据字典     是元数据的集合,从逻辑上和物理上描述了数据库及内容,存储于SYSTEM与SYSAUX表空间内的若干段。

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

--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 --->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 基础--> ROLLUPCUBE运算符实现数据汇总

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

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

 Oracle 常用目录结构(10g)

 

 

目录
相关文章
|
4月前
|
SQL 运维 Oracle
【迁移秘籍揭晓】ADB如何助你一臂之力,轻松玩转Oracle至ADB的数据大转移?
【8月更文挑战第27天】ADB(Autonomous Database)是由甲骨文公司推出的自动化的数据库服务,它极大简化了数据库的运维工作。在从传统Oracle数据库升级至ADB的过程中,数据迁移至关重要。
80 0
|
1月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle的还原数据
Oracle数据库中的还原数据(也称为undo数据或撤销数据)存储在还原表空间中,主要用于支持查询的一致性读取、实现闪回技术和恢复失败的事务。文章通过示例详细介绍了还原数据的工作原理和应用场景。
【赵渝强老师】Oracle的还原数据
|
4月前
|
数据采集 Oracle 关系型数据库
实时计算 Flink版产品使用问题之怎么实现从Oracle数据库读取多个表并将数据写入到Iceberg表
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的联机重做日志文件与数据写入过程
在Oracle数据库中,联机重做日志文件记录了数据库的变化,用于实例恢复。每个数据库有多组联机重做日志,每组建议至少有两个成员。通过SQL语句可查看日志文件信息。视频讲解和示意图进一步解释了这一过程。
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的数据文件
在Oracle数据库中,数据库由多个表空间组成,每个表空间包含多个数据文件。数据文件存储实际的数据库数据。查询时,如果内存中没有所需数据,Oracle会从数据文件中读取并加载到内存。可通过SQL语句查看和管理数据文件。附有视频讲解及示例。
|
2月前
|
Oracle 关系型数据库 数据库
oracle数据创建同义词
oracle数据创建同义词
52 0
|
4月前
|
SQL 监控 Oracle
Oracle数据误删不用怕,跟我来学日志挖掘
Oracle数据误删不用怕,跟我来学日志挖掘
68 0
|
4月前
|
SQL Oracle 关系型数据库
Oracle误删数据怎么恢复?
Oracle误删数据怎么恢复?
52 0
|
4月前
|
SQL Oracle Java
实时计算 Flink版产品使用问题之采集Oracle数据时,为什么无法采集到其他TABLESPACE的表
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
4月前
|
分布式计算 Oracle 关系型数据库
实时计算 Flink版产品使用问题之获取Oracle的数据时无法获取clob类型的数据,该怎么办
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。