ORACLE数据字典

更新时间:2023-10-06 08:13:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

ORACLE数据字典

(一)数据字典概念

Oracle数据字典是由表和视图组成,存储有关数据库结构信息的一些数据库对象。数据字典描述了实际数据是如何组织的。比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。对它们可以象处理其他数据库表或视图一样进行查询,但不能进行任何修改。它们存放在SYSTEM表空间中,当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息。数据字典不仅是数据库的核心,还是所有用户的一个重要工具,包括终端用户、程序员和数据库管理员。因为数据字典的只读性,我们只能对它的表或视图使用SQL查询语句。

Oracle数据库字典通常是在创建和安装数据库时被创建的,Oracle数据字典是Oracle数据库系统工作的基础,没有数据字典的支持,Oracle数据库系统就不能进行任何工作。数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。 数据字典内容包括:

1,数据库中所有模式对象的信息,如表、视图、簇、索引、集群、同义词、序列、过程、方法、包、触发器等。

2,分配多少空间,当前使用了多少空间等。 3,列的缺省值。

4,约束信息的完整性。 5,Oracle用户的名字。

6,用户及角色被授予的权限。 7,用户访问或使用的审计信息。 8,其它产生的数据库信息。

(二)数据字典分类

数据字典按照存在的形式分为数据字典表和数据字典视图。

2.1数据字典表

数据字典表里的数据是Oracle系统存放的系统数据,而普通表存放的是用户的数据。为了方便的区别这些表,这些表的名字都是用\结尾,这些表属于SYS用户。

数据字典表由$ORACLE_HOME/rdbms/admin/sql.bsq 脚本创建, 这个脚本里又调用了其他的脚本来创建这些数据字典表。 在那些创建脚本里有基表的创建SQL。这些数据字典表,只有Oracle 能够进行读写。基表是存储有关数据库的信息的底层表。基表是在任何 Oracle 数据库中首先创建的对象。在使用 CREATE DATABASE 创建数据库时,只要 Oracle 服务器运行 sql.bsq 脚本,就会自动创建这些对象。只有 Oracle 服务器才能对这些基表执行写入操作。用户很少直接访问基表,因为其中的数据大多数都是以隐含格式存储的。切勿使用 DML 命令直接更新基表,但 AUD$ 表除外。例如,IND$ 表就是一个基表,它包含有关数据

库中的索引的信息。

SYS用户下的这些数据字典表,存放在system 表空间下面,表名都用\结尾,为了便于用户对数据字典表的查询, Oracle对这些数据字典都分别建立了用户视图,这样即容易记住,还隐藏了数据字典表表之间的关系,Oracle针对这些对象的范围,分别为: DBA:所有方案中的视图(可以看到所有数据字典里的信息)

ALL:用户可以访问的视图(可以看到所有这个用户可以看到的信息) USER:用户方案中的视图(仅仅是这个用户拥有的信息) 三者直接的关系:

Oracle为了便于汇总数据字典表的信息,把所有的数据字典都汇集到dictionary表里了,通过对这个表的查询,我们可以很方便的找到数据库提供的数据字典。 SQL> desc dictionary

SQL> select * from dictionary where table_name='USER_TABLES';

2.2数据字典视图

数据字典视图是基表的汇总,可以更有效地显示基表信息。例如,在数据字典视图中,除了显示对象编号外还会使用对象名。数据字典视图是在运行 CREATE DATABASE 命令之后使用 脚本:$ORACLE_HOME/rdbms/admin/catalog.sql 创建,该脚本也只是一个总的调用,在该脚本里由调用了其他的脚本。在那些脚本里,可以看到视图的创建SQL。

这是因为这个脚本会创建动态视图,所以在做DB升级的时候,也需要执行这个脚本,重新创建视图。

数据字典视图分2类:静态数据字典(静态性能视图)和动态数据字典(动态性能视图)

2.2.1静态性能视图

静态性能视图也称为静态数据字典。主要是在用户访问数据字典时不会发生改变的,这类数据字典主要是由表和视图组成。数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。

静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_xxx、 all_xxx、 dba_xxx。 USER_XXX:该视图存储了当前用户所拥有的对象的信息。(即所有在该用户模式下的对象) ALL_XXX:该试图存储了当前用户能够访问的对象的信息, 而不是当前用户拥有的对象。(与user_xxx相比,all_xxx 并不需要拥有该对象,只需要具有访问该对象的权限即可) DBA_XXX:该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)

这些视图由SYS用户创建的,所以使用需要加上SYS,为了方便,Oracle为每个数据字典表的视图头建立了同名字的公共同义词(public synonyms). 这样简单的处理就省去了写sys.的麻烦。

user_tablespaces:表空间使用状态

SQL> select tablespace_name,status from user_tablespaces;

user_free_space:查看用户表空间的剩余空间

SQL> select tablespace_name,sum(bytes)/(1024*1024),sum(blocks)/(1024*1024) 2 from user_free_space group by tablespace_name;

USER-TS-QUOTAS:可以查看该用户的表空间的份额

dba_data_files:数据文件数据字典 SQL> set line 60

SQL> select file_name from dba_data_files;

2.2.1.1用户

user_users:主要描述当前用户的信息,主要包括当前用户名、帐户id、帐户状态、缺省表空间、创建时间等。

SQL> col USERNAME for a10

SQL> col DEFAULT_TABLESPACE for a15

SQL> select username,default_tablespace,created from user_users;

user_role_privs:查看当前用户的角色。 SQL>SELECT * FROM user_role_privs;

比如下面是SYS的角色

SQL> select * from user_role_privs;部分截图

user_sys_privs:查看当前用户的系统权限和表级权限 SQL>SELECT * FROM user_sys_privs;

user_sys_privs:下面是SYS用户的系统权限和表级权限 SQL> select * from user_sys_privs;部分截图

本文来源:https://www.bwwdw.com/article/0hgd.html

Top