天天看点

oracle数据字典

一、数据字典

  数据字典是oracle存放有关数据库信息的地方,几乎所有的系统信息和对象信息都可在数据字典中进行查询。数据字典是oracle数据库系统的信息核心,它是一组提供有关数据库信息的表和视图的集合,这些表和视图是只读的。它是随着数据库的建立而建立的,当数据库执行特定动作时数据字典也会自动更新。数据一览与数据字典来记录、校验和管理正在进行的操作。

oracle中、sys用户是数据字典的拥有者,数据字典保证在所有数据库的系统表空间system内,任何用户都无权更改sys模式下的模式对象或数据字典中的行。也就是说数据字典只能查询,不能手动进行修改。

  数据字典用途

  oracle通过存取数据字典从而比较方便地获取有关用户某事对象和存储结构等信息。当系统执行了DDL语句后,oracle会及时修改数据字典。任何用户只能以读的形式使用数据字典获取数据库信息。

数据字典存储的信息

数据用户的名称

为用户授予的权限和角色

模式对象的名称,如 tables,views,indexex,procedures,functions,packages,triggers等。

完整性约束的具体信息;

每个字段的默认值;

数据库空间的使用情况;

审计功能,在Oracle_Home\productdb_l\rdbms\admin目录下的文件cataudit.sql就是用于为审计创建数据字典视图的脚步。

对象与用户的严格管理(适用于高度机密管理);

其他一般数据库信息。

  三种前缀的数据字典视图

  user_ :任何用户都可以读取的视图,每个用户读取的都不一样,它只提供当前用户某事下的对象信息。如查询当前模式下的所有对象select object_name, object_type from user_objects;

  all_ :所有用户都可读取的用户视图,它提供与用户有关的对象信息。如查询当前用户可访问的所有对象

select owner, object_name, object_type from all_objects;

  dba_:提供了只有数据库管理员才可读取的视图,包括所有用户视图中的对象信息。如select owner, object_name, object_type from sys.dba_objects;

二、数据字典相关查询

  1、 查询用户

   2、查询 表空间 (拥有DBA权限的用户才能查询)

  3、查询数据库对象(拥有DBA权限的用户才能查询)

  可根据拥有者查询下列对象类型(object_type)

  cluster    databaselink

  function   index

  library   package

  package body   procedure

  sequence   synonym

  table   trigger

  type   undefined

  view

  4、查询表

--表使用的extent的信息。segment_type='ROLLBACK'

  5、查询索引

  6、查询序列

  7、查询视图

可用目录desc all_views;来查看视图结构

其中,Text列可用于查询视图生产的脚本。

  8、查询聚簇

  9、查询快照

  快照、分区应存在相对应的表空间

  10、查询同义词

  如果用户表可以被访问,那么同义词也可以被访问,用户表不能被访问,则同义词也不能被访问。

  11、查询数据库链

   12、查询触发器(12)

存储过程,函数从dba_objects查找

oracle总是将存储过程,函数放在system表空间。

  13、查看函数和过程的状态

  14、查询约束

约束是和表关联的,可以在create table或alter table table_name add/drop/modify 来建立、修改、删除约束。

可以临时禁止约束,如:

alter table book_example

disable constraint book_example_l;

数据完整性约束

  15、查询回滚段

在所有的修改结果存入磁盘前,回滚段中保持恢复该事务所需的全部信息,必须以数据库发送的事务来相应确定其大小。(DML语句才可回滚,create, drop, truncate等DDL不能回滚)

回滚段数量=并发事务/4,但不能超过50个;是每个回滚段大小足够处理一个完整的事物;

  16、查询作业

使用包exec dbms_job.sumit(:v_num, 'a;', sysdate, 'sysdate +(10/(24*60*60))');加入作业。间隔10秒

使用包exec dbms_job.sumit(:v_num, 'a;', sysdate, 'sysdate +(10/(24*60))');加入作业。间隔11分

使用表exec dbms_job.remove(21)删除21号作业。

其他信息查询

查询优化模式对象使用过的或正在使用的空间大小

查询字段的默认值