Oracle的字典
1.数据字典 (存放在sys方案里面)
- 1.是oracle数据库中重要的组成部,提供了数据库的一些系统信息。
- 2.它是只读表(数据字典基表)和视图(数据字典视图)的集合,数据库字典的所有者为sys用户。
- 3.用户只能在数据库字典上执行查询的操作,而其他的维护和修改都是由系统自动完成的
2.数据字典基表
- 1.数据字典基表存储数据库的基本信息
- 2.只有Oracle才能写和读取这些表。用户很少能够直接访问这些表,因为它们是非标准的,大多数数据以加密格式存储。
- 3.但是,用户可访问视图:总结和显示数据字典基表的信息的视图。这些视图将基表的信息解密成有用的信息,如用户或者表名。大多数用户能够访问这些视图,但不能访问基表
3.数据字典视图
- 1.数据字典视图是基于数据字典基表建立的视图
- 2.普通用户可以通过查询系统数据字典视图获取系统信息
- 3.数据字典视图主要包括
- A.静态数据字典视图:user_xxx,all_xxx,dba_xxx 三种类型
- B.动态数据字典视图:动态性能视图
- 4.常用静态数据库字典视图
- dba_data_files:通常用来查询关于数据库文件的信息
- dba_db_links:包括数据库中的所有数据库链路,也就是databaselinks。
- dba_extents:数据库中所有分区的信息
- dba_free_space:所有表空间中的自由分区
- dba_indexs:关于数据库中所有索引的描述
- dba_ind_columns:在所有表及聚集上压缩索引的列
- dba_objects:数据库中所有的对象
- dba_rollback_segs:回滚段的描述
- dba_segments:所有数据库段分段的存储空间
- dba_synonyms:关于同义词的信息查询
- dba_tables:数据库中所有数据表的描述
- dba_tabespaces:关于表空间的信息
- dba_tab_columns:所有表描述、视图以及聚集的列
- dba_tab_grants/privs:对象所授予的权限
- dba_ts_quotas:所有用户表空间限额
- dba_users:关于数据的所有用户的信息
- dba_views:数据库中所有视图的文本
4.动态性能视图
- 1.记载了数据库例程启动后的相关信息
- 2.当启动oracle service时 系统会建立动态性能试图
- 3.当停止oracle service的时候,系统会删除动态性能视图
- 4.ORACLE 的所有动态性能视图都是以 v_$开始的,并且oracle为每个动态性能视图都提供了相应的同义词,并且同义词都是以V$开始的 例如 v_$datafile 的同义词是v$datafile;
- 5. 动态性能的所有者是sys,一般情况下,由dba和特权用户来查询动态性能视图。
- 6.常用动态性能视图
- v$thread:从控制文件中获取的线程的信息;
- v$tablespace:从控制文件中获取的表空间的信息;
- v$spparameter:显示SPFILE文件中的参数信息,如果SPFILE没有被用来启动实例,则视图中的所有ISSPECIFIED列将会是FALSE;
- v$sga:显示SGA的信息;
- v$instance:显示当前实例的状态;
- v$controlfile:显示控制文件列表;
- v$database:从控制文件中获取的数据库的信息;
- v$datafile:数据库使用的数据文件信息
- v$librarycache:共享池中SQL语句的管理信息
- v$lock:通过访问数据库会话,设置对象锁的所有信息
- v$log:从控制文件中提取有关重做日志组的信息
- v$logfile有关实例重置日志组文件名及其位置的信息
- v$parameter:初始化参数文件中所有项的值
- v$process:当前进程的信息
- v$rollname:回滚段信息
- v$rollstat:联机回滚段统计信息
- v$rowcache:内存中数据字典活动/性能信息
- v$session:有关会话的信息
- v$sesstat:在v$session前会话的统计信息
- v$sqlarea:共享池中使用当前光标的统计信息,光标是一块内存区域,有OracSQL语句时打开。
- v$statname:在v$sesstat个统计的含义
- v$sysstat:基于当前操作会话进行的系统统计
5.数据库不同状态的时候视图的变化
- 1.动态性能视图一般来说,大部分用户是不能够访问的,特别是数据库系统的终端用户。一般情况下,只有数据库管理员角色的用户才能够访问。而且,当数据库其状态不同时,可以访问的数据字典动态性能视图也不同
- 数据库不同状态:
- A:Nomount状态时
- 当我们连接到数据库服务器,启动某个例程的时候,数据库本身还没有被加载,此时,就叫做Nomount状态。在这个状态下,即使是数据库管理员,其可以访问的数据字典动态性能视图也是非常有限的。当数据库某个例程启动之后,数据库会打开某些参数文件,并且会在内存中分配SGA区并启动相关的后台进程。由于此时没有加载数据库,所以,数据库管理员之能够访问从SGA区获得信息的动态性能视图。
- B:Mount状态时
- 当我们去加载某个数据库的时候,Oracle会打开其参数文件中指定的控制文件,以实现加载数据库的过程。此时,数据库管理员访问的数据字典性能视图就会多一点,除了可以访问从SGA区获得信息的动态性能视图,还可以访问从控制文件中获得信息的动态性能视图。也就是说,当数据库出于Mount状态时,其动态性能数据视图的数据来源有两个部分,一是来自于SGA区的,二是来自于控制文件中的
- C:Open状态时
- 当数据库打开的时候,数据库系统会根据控制文件中所定义的信息,打开所有的数据文件以及对应的重做日至文件。这个时候,我们数据库管理员可以访问的动态性能视图就包括三个部分,一是来自与SGA区的信息;二是来自于控制文件中的信息,三是Oracle数据库性能的相关动态性能视图
Oracle数据库字典通常是在创建和安装数据库时被创建的,Oracle数据字典是Oracle数据库系统工作的基础,没有数据字典的支持,Oracle数据库系统就不能进行任何工作。数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。
数据字典表里的数据是Oracle系统存放的系统数据,而普通表存放的是用户的数据。为了方便的区别这些表,这些表的名字都是用"$"结尾,这些表属于SYS用户。
数据字典表由$ORACLE_HOME/rdbms/admin/sql.bsq 脚本创建, 这个脚本里又调用了其他的脚本来创建这些数据字典表。 在那些创建脚本里有基表的创建SQL。
Oracle 对数据字典表的说明:
These underlying tables store information about the database. Only Oracle Database should write to and read these tables. Users rarely access the base tables directly because they are normalized and most data is stored in a cryptic format.
这些数据字典表,只有Oracle 能够进行读写。
SYS用户下的这些数据字典表,存放在system 表空间下面,表名都用"$"结尾,为了便于用户对数据字典表的查询, Oracle对这些数据字典都分别建立了用户视图,这样即容易记住,还隐藏了数据字典表表之间的关系,Oracle针对这些对象的范围,分别把视图命名为DBA_XXXX, ALL_XXXX和USER_XXXX。
数据字典视图分2类:静态数据字典(静态性能视图) 和 动态数据字典(动态性能视图)。
静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*、 all_*、 dba_*。
user_*:该视图存储了关于当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)
all_*:该试图存储了当前用户能够访问的对象的信息, 而不是当前用户拥有的对象。(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可)
dba_*:该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)
这些视图由SYS用户创建的,所以使用需要加上SYS,为了方便, Oracle为每个数据字典表的视图头建立了同名字的公共同义词(public synonyms). 这样简单的处理就省去了写sys.的麻烦。
除了静态数据字典中三类视图,其他的字典视图中主要的是V$视图,之所以这样叫是因为他们都是以V$或GV$开头的。这些视图会不断的进行更新,从而提供了关于内存和磁盘的运行情况,所以我们只能对其进行只读访问而不能修改它们。
Throughout its operation, Oracle Database maintains a set of virtual tables that record current database activity. These views are calleddynamic performance views because they are continuously updated while a database is open and in use. The views, also sometimes
calledV$ views。
V$视图是基于X$虚拟视图的。V$视图是SYS用户所拥有的,在缺省状况下,只有SYS用户和拥有DBA系统权限的用户可以看到所有的视图,没有DBA权限的用户可以看到USER_和ALL_视图,但不能看到DBA_视图。与DBA_,ALL,和USER_视图中面向数据库信息相反,这些视图可视的给出了面向实例的信息。
动态性能表用于记录当前数据库的活动,只存于数据库运行期间,实际的信息都取自内存和控制文件。 DBA可以使用动态视图来监视和调节数据。
本文详细介绍了Oracle数据库的字典,包括数据字典基表和视图。数据字典基表存储数据库基本信息,不可直接访问,而数据字典视图是基于基表创建的,供用户查询系统信息。文章列举了常见的静态和动态数据字典视图,如dba_tables、v$session等,并阐述了动态性能视图在不同数据库状态下的访问权限。


2524

被折叠的 条评论
为什么被折叠?



