成都青羊教师公寓:Oracle学习笔记(4)数据字典

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 11:16:32

数据字典

 

1、数据字典表:保存在系统表中,只读,储存数据加密,不允许用户通过DML命令直接来修改系统表。引入数据字典视图,主要基于在系统表。主要用途描述数据库以及数据对象结构信息,用户对象权限信息。

数据字典包括2部分:Base tables(read-only且加密)储存database描述信息,是调用sql.sql脚本自动创建;数据字典视图:在Base tables的基础上,通过catelog.sql脚本中来创建的视图


2、Oracle内部自动调用:

d:\oracle\ora90\rdbms\admin\sql.sql 来创建数据字典表,同时还会创建动态性能表。

动态性能表是内存表,在database启动时,内存表自动建立,关闭时,自动消失。

使用动态性能表来优化数据库的数据来源,记录Oracle运行过程中的实时的信息。


3、sql> conn sys/admin1@fox as sysdba
   sql> set wrap off
   sql> set linesize 200
   sql> select * from dba_users; //系统中所有存在的系统用户
   sql> select * from dba_objects;//系统中所有的系统对象。、

 

4、数据字典内容:逻辑(表空间)和物理database结构(数据文件),每个表数据项的定义栏位,完整性约束等,用户、角色、权限、审计信息(审计信息可以放datase数据字典表里也可以放在数据字典表外)
数据字典视图为方便管理database而引入的概念。
数据字典主要有三种用途:(1)查找用户信息,Schema objects架构信息,数据库存储结构信息。(2)不可以使用DML语句来改变,而使用DDL语言执行创建修改授权时做改变。(3)用户和DBA可以使用数据字典作为一个只读的数据库的信息。

sql>conn kong/kxf_oo1@fox
sql>drop table test1;   //删除表
sql>create table test1   //创建表
   2 (id int)
   3 tablespace users;
sql> grant kkk    //授权用户
   /
sql> grant select on test1 to kkk;  //授权某权限给用户

 

5、数据字典视图分层(3层):
DBA_XXX:查到所有数据字典信息(所有用户角色权限数据对象)
ALL_XXX: 用户可以访问到的数据对象(自己拥有的,别人授权自己可以访问的所有数据对象的权限)
USER_XXX:自己拥有的数据对象

sql>select * from user_tables //自己拥有的表
sql>select * from all_tables //自己拥有和可以访问的表
区别:user_xxx与all_xxx相比少了个owner。其他完全一样。

sql> conn sys/admin@fox as sysdba
sql> revoke dba from kong;  //撤销kong的dba权限
sql> conn kong/kxf_001@fox
sql> select * from dba_tables; (错误,kong没有dba权限来查看dba_xxx的信息)

 

6、动态性能表:在运行过程中动态产生的表,记录oracle运行过程中实时的信息。
有如下特性:

a.数据字典视图是在数据在打开open的状态下产生,而动态性能表是在nomount和mount的状态下产生的。nomount状态下,启动例程时,oracle会打开参数文件,分配SGA并启动后台进程,因此只能访问从SGA中获取信息的动态性能视图;mount状态下,装载数据库时,oracle根据初始参数control_files打开所有控制文件,此时不仅可以访问从SGA中获取信息的动态性能视图,还能访问从控制文件中获取信息的动态性能视图。open状态下,打开数据库时,oracle根据控制文件所记载的信息打开所有数据文件和重做日志,此时除了能够访问从SGA和控制文件中获取信息的动态性能视图外,还可以访问与Oracle性能相关的动态性能视图(如v$filestat,v$session_wait,v$waitstat),只有在open状态下,还能访问数据字典视图。

b.从Memory内存(sga)和Controlfile控制文件从获取信息(数据字典则是从数据文件中获得)。

c.DBA用它来调整和监视数据库的性能。

d.动态视图被sys所拥有,多数动态性能视图只能由dba用户和特权用户查询。

e.DML语句不能直接对它进行数据改变。

sql> startup nomount 
sql> select * from v$instance;
sql> select * from v$sga;
sql> alter session set nls_language=american; //设置会话语言
sql> select * from v$tablespace;  //注意:database not mounted,错误,不能显示表空间
sql> alter database mount;
sql> select * from v$database; (可以访问)
sql> select * from v$tablespace;(可以访问)
sql> select * from dba_users; //注意:database not open 数据库没打开状态仅仅允许访问tables/views表/视图。

动态性能表:v_$XXX(或v$XXX)表,是Oracle启动过程中自动建立的表。

 

7、如何查询数据字典和动态性能视图:
sql> desc v$fixed_table  //查询固定表(显示所有动态性能视图)

sql> desc v$instance  //用于取得当前例程的详细信息

sql> desc v$sga  //用于显示sga主要组成部分(共享池、数据高速缓存区、重做日志缓冲区)的尺寸

sql> desc v$sgainfo //用于显示sga更详细的信息

sql> desc v$parameter //用于取得初始化参数的详细信息

sql> desc v$version  //用于取得Oracle的版本信息

sql> desc v$option   //用于显示已经安装的Oracle选项

sql> desc v$session   //用于显示会话的详细信息

sql> desc v$process  //用于显示与Oracle相关的所有进程信息

sql> desc v$bgprocess //用于显示后台进程的详细信息
sql> desc v$database //用于取得当前database的详细信息(如数据库名、日志操作模式及创建时间等)

sql> desc v$datafile  //显示数据库所有数据文件的详细信息

sql> desc v$controlfile //显示数据库所有控制文件的详细信息

sql> desc v$logfile  //显示数据库所有重做日志文件的详细信息

sql> desc v$dbfile  //用于取得数据文件编号及名称

sql> desc v$log  //用于显示日志组的信息

sql> desc v$tempfile //用于显示数据库所包含的临时文件

sql> desc v$tablespace //用于显示表空间的信息

sql> desc dict   //数据字典

sql> desc dict_columns  //用于数据字典视图显示每个列的作用(列注释)

sql> desc dual //用于取得函数返回值

sql> desc global_name //用于显示当前数据库全名

sql> desc ind //用于显示当前用户所用的所有索引和索引统计信息

sql> desc obj //用于显示当前用户所拥有的所有对象

sql> desc seq //用于显示当前用户所拥有的所有序列

sql> desc tab  //显示当前用户所有的表、视图和序列