您的位置:首页 > 数据库 > Oracle

oracle的数据字典

2015-11-29 17:02 302 查看

前言

字典是什么呢?我自己的理解时:就是你知道某样东西的少许信息,但是通过字典你却能获得关于这个东西的详细信息甚至和这样东西有关的东西你都可以查到。那么oracle提供的数据字典,数据是定语,修饰字典这个名词,也就是说oracle数据字典,是提供给需求者一种查询有关oracle数据库数据有关信息的字典。

概念

是由oracle服务器创建和维护的一组只读的系统表(与审计相关的数据字典除外,这些表是可以修改的)

所存信息

数据库的逻辑结构和物理结构,如表空间和数据文件的信息

所有数据库对象定义的信息。这些对象包括表、索引、视图、序列号、同义词、过程、函数、软件包和触发器

所有数据库对象的磁盘空间分配的信息,如对象所分配的磁盘空间和当前正在使用得磁盘空间

oracle用户名

每个用户所授予的权限和角色

完整性约束的信息

列的默认值

审计信息

分类

基表

oracle服务器在数据库创建时通过运行sql.bsq来自动生成一系列基表。

这些基表都是最先创建的对象。

基表都是难以阅读的,很少有人直接访问。

数据字典视图

数据字典视图是通过运行catalog.sql脚本文件来产生。为了能够获得数据库的相关信息,一般都是查看数据字典视图,而视图又分两种:静态,动态

静态视图

静态视图包括的内容有:

对象的属性

用户所拥有的权限

对象的创建时间

对象存储参数的设置

对象存储空间的使用情况

静态视图分为三大类

USER_*:用户自己创建的视图

ALL_*:用户自己创建的信息和其他用户创建的对象,但该用户有权访问

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

三者的关系一类包含一类,DBA_*视图包含ALL_*视图包含USER_*视图

* 一般指的是TABLES,INDEXES,OBJECTS等。

以ALL和DBA开头的视图的列和USER开头的几乎相同,但是会多出一列OWNER,可以做一个简单的测试:

SQL> connect system/manager  #先登录system用户
SQL> desc user_objects    #查看user_objects表的列信息
SQL> desc all_objects      #查看all_objects表的列信息
SQL> desc dba_objects     #查看dba_objects表的列信息


动态性能视图

动态性能视图时一组虚表,存在于内存,通过内存和控制文件的信息,能够实时反应数据库运行的状态。sys用户拥有所有的动态性能视图。动态性能视图都是以v$开头的表,不允许对这些表进行DML操作(insert,update,delete这几个不行,select还是可以的)

可获取的信息

会话活动信息

对象打开和关闭信息

对象在线或离线信息等

怎样才能知道所使用得数据库有哪些数据字典呢?其实可以通过v$fixed_table或者dictionary来获得

SQL> select * from v$fixed_table;   #结果将会很多
SQL> select * from dictionary where TABLE_NAME like '%TABLE%';


怎么获取某个数据字典某一列的含义?可以通过dict_columns来获得

SQL> select * from dict_columns where table_name = 'DBA_TABLES' and column_name = 'INITIAL_EXTENT';


操作与使用

数据字典主要由oracle服务器来使用,所以说,对数据字典的修改,也是oracle服务器进行的。那么哪些SQL操作会让oracle服务器修改数据字典呢?

DDL语句,例如怎加或者减少表空间,增加或者减少用户;

DCL语句,例如授予用户权限、回收用户权限等;

DML语句,间接引起,通常要引起表的磁盘存储空间的扩展的插入insert或者修改update,但是任何用户都不能直接使用DML语句修改数据字典的内容。

常用的数据字典

查看当前用户拥有的表

SQL> select table_name from user_tables;




查看数据库名字,创建日期等信息

SQL> select name,created,log_mode,open_mode from v$database;




查看计算机主机名,数据库实例名,版本信息

SQL> select host_name,instance_name,version from v$instance;




查看数据库版本详细信息

SQL> select * from v$version;




查看控制文件

SQL> select status,name from v$controlfile;




查看重做日志的配置信息

SQL> select group#,members,bytes,status,archived from v$log;




查看重做日志文件的位置

SQL> select * from v$logfile;




查看备份和恢复策略并确定归档文件的具体位置

SQL> archive log list;
SQL> show parameter DB_RECOVERY_FILE_DEST




查看表空间数量和表空间状态

SQL> select tablespace_name,block_size,status,contents,logging from dba_tablespaces;




查看表空间名字和位置等信息

SQL> select file_name,tablespace_name,status from dba_data_files;




查看用户和创建数据库时间

SQL> select username,created from dba_users;




最后给出一份思维导图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: