成都青羊教师公寓: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
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
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;
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;
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
sql> desc v$sgainfo //用于显示sga更详细的信息
sql> desc v$parameter //用于取得初始化参数的详细信息
sql> desc v$version
sql> desc v$option
sql> desc v$session
sql> desc v$process
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>
sql>
sql>
sql>
sql>
sql> desc seq //用于显示当前用户所拥有的所有序列
sql> desc tab