您的位置:首页 > 博客中心 > 数据库 >

【oracle11g,8】数据字典 和字符集

时间:2022-03-13 23:36

一.数据字典:
oracle的数据字典记录了数据库管理的元数据,他对于数据库来说是生死攸关的核心档案。 1.数据字典放在system表空间,用户是sys。 2.描述数据库和对象的定义, 3..数据字典是只读的。 4.是server维护的,只能查询。 5.大部分由catalog.sql创建的。
通常所说的数据字典由四部分组成:内部 RDBMS(X$)表、数据字典表、动态性能(V$)视图和数据字典视图。

二. 数据字典组成:
1. 内部 RDBMS(X$)表 
X$表是 Oracle 数据库的核心部分,这些表用于跟踪内部数据库信息,维持数据库的正常运行。X$表是加密命名的,而且 Oracle 不作文档说明,这部分知识是 Oracle 公司的技术机密,Oracle 通过这些 X$建立起其他大量视图?供用户查询管理数据库之用。但是由于 X$表记录了大量有用的信息,所以也不停的被全球 DBA 不懈的探索着,最为人所熟知的有:X$BH,X$KSMSP 等。
2. 数据字典表 数据字典表(Data dictionary table)用以存储表、索引、约束以及其他数据库结构的信息。这些对象通常以“$”结尾(例如 TAB$、OBJ$、TS$等),在创建数据库的时候通过运行 sql.bsq脚本来创建。

3.静态数据字典视图  由于 X$表和数据字典表通常不能直接访问,Oracle 创建了静态数据字典视图来?供用户对于数据字典信息的访问,由于这些信息通常相对稳定、不能直接修改,所以又被称为静态数据字典视图。数据字典视图在创建数据库时由 catalog.sql 脚本(该脚本位于$ORACLE_HOME/rdbms/admin/目录下)创建。
①.静态数据字典视图按照前缀的不同通常被分为三类:  a.USER_  类视图包含了用户所拥有的相关对象信息,用户可以通过这个视图查询自己拥有的对象信息。  b.ALL_  类视图包含了用户有权限访问的所有对象的信息。  c.DBA_  类视图包含了数据库所有相关对象的信息,用户需要 SELECT ANY TABLE 权限才能访问。 
②.常用数据字典视图举例  a.DICT / DICTIONARY  为了方便检索, Oracle ?供一个名为字典(DICTIONARY)的 视 图 ,基 于 这 个 视 图 , Oracle又创建了两个名为 DICT 和 DICTIONARY 的同义词:
b.  DICT_COLUMNS  同 DICT 类似,DICT_COLUMNS 视图记录了字典视图列(COLUMN)及其相关说明:

c.  OBJ$/DBA_OBJECTS/OBJ  OBJ$是一个底层的字典表,其中记录了数据库中所有对象的信息,DBA_OBJECTS 视图基于 OBJ$建立,一脉相承的,ALL_OBJECTS 和 USER_OBJECTS 视图也随之建立。
4.动态性能视图:
动态性能(V$)视图(Dynamic Performance View)记录了数据库运行时信息和统计数据,大部分动态性能视图被实时更新以反映数据库当前状态。 Oracle 通过动态性能视图将 Oracle 数据库的状态展示出来,提供给用户和数据库管理员,Oracle 对 V$视图给出了详细的文档说明供开发管理人员参考,是我们研究和管理数据库的主要依据。 
①.GV$和 V$视图  在数据库启动时,Oracle 动态创建 X$表,在此基础之上,Oracle 创建了 GV$和 V$视图。  从 Oracle8 开始,GV$视图开始被引入,其含义为 Global V$。 除了一些特例以外,每个 V$视图都有一个对应的 GV$视图存在。    GV$视图的产生是为了满足 OPS/RAC 环境的需要,在 OPS/RAC 环境中,查询 GV$视图返回所有实例信息,而每个 V$视图是基于 GV$视图,增加了 INST_ID 列的 WHERE 条件限制建立,只包含当前连接实例信息。 总结一下,Oracle 的 GV$视图和 V$视图是在数据库创建过程中建立起来的,内置于数据库中,Oracle 通过 v$fixed_view_definition 视图为我们展现这些定义。
②.GV_$,V_$视图和 V$,GV$同义词
在 GV$和 V$之后,Oracle 建立了 GV_$和 V_$视图,随后为这些视图建立了公用同义词。这些工作都是通过 catalog.sql 脚本(该脚本位于$ORACLE_HOME/rdbms/admin/目录下)实现的。 
从 catalog.sql 脚本中摘录一段:  create or replace view v_$fixed_table as select * from v$fixed_table;  create or replace public synonym v$fixed_table for v_$fixed_table;    create or replace view gv_$fixed_table as select * from gv$fixed_table;  create or replace public synonym gv$fixed_table for gv_$fixed_table; 
实际上通常大部分用户访问的 V$对象,并不是视图,而是指向 V_$视图的同义词;而 V_$视图是基于真正的 V$视图(这个视图是基于 X$表建立的)创建的。 
5.动态性能视图与数据库启动 由于动态性能视图是在数据库启动过程中自动创建的,所以在数据库启动的不同阶段,我们能够访问的视图也各不相同。 ①. 在 Nomount 阶段  当数据库启动到 nomount 状态时,实际上仅仅启动了数据库实例,此时的实例信息主要来自参数文件,因此和参数文件记录的相关信息可以查询,以下是这一阶段可以获 取信息的主要视图:  V$PARAMETER、V$SPPARAMETER  V$SGA、V$SGASTAT、V$BH、V$INSTANCE  V$OPTION、V$VERSION  V$PROCESS、V$SESSION  ②. 在 Mount 阶段  当数据库启动到 Mount 状态时,控制文件被读取,和控制文件相关的视图此时可以进行查询,以下是这一阶段可以获取信息的主要视图:  V$THREAD、V$CONTROLFILE、V$DATABASE、  V$DATAFILE、V$LOGFILE、V$DATAFILE_HEADER 
③. 在 Open 阶段  当数据库 Open 之后,所有的动态性能视图和数据字典都可以被查询。 



二.数据字典里的同义词:

SQL> select file#,name from v$datafile; (同义词)      FILE# NAME ---------- --------------------------------------------------          1 /u01/app/oracle/oradata/prod/disk3/system01.dbf          2 /u01/app/oracle/oradata/prod/disk3/sysaux01.dbf          3 /u01/app/oracle/oradata/prod/disk3/undotbs01.dbf          4 /u01/app/oracle/oradata/prod/disk3/users01.dbf
SQL> select file#,name from v_$datafile;
     FILE# NAME ---------- --------------------------------------------------          1 /u01/app/oracle/oradata/prod/disk3/system01.dbf          2 /u01/app/oracle/oradata/prod/disk3/sysaux01.dbf          3 /u01/app/oracle/oradata/prod/disk3/undotbs01.dbf          4 /u01/app/oracle/oradata/prod/disk3/users01.dbf

三.模糊查询视图名称
select * from dictionary where table_name like ‘DBA‘;

四.数据字典的视图:(重点)

数据字典视图的分类,静态(static)和动态(dynamic) 
1.动态视图 大部分在mount下就可以访问,反映数据库实时的状态 大部分v$开头,多用单数,从控制文件和内存汇总读出。 从v$fixed_table 这个视图查到所有的动态视图的名称。 用于调优和数据库监控。 v$_单数   单实例的动态视图。 Gv$_单数  rac环境的动态视图

SQL> select count(*) from v$fixed_table;
  COUNT(*) ----------       1396
常用静态视图: select name from v$tablespace; select file#,name from v$datafiles; select * from v$log; select * from v$logfile; select name from v$archived_log;


2.静态视图 在数据库的open状态下访问,用于了解数据库的物理结构信息。 大部分以dba、all、user开头,并用复数形式 user_:存储当前用户所拥有的对象的相关信息 all_:存储当前用户能够访问的对象 dba_:存储所有用户对象的信息(默认只能有sys/system用户访问)
例:  查看区信息 select segment_name ,segment_type,tablespace_name, bytes/1024 k,extents,blocks from dba_segments; #查看数据文件 SQL> select file_id,file_name,tablespace_name,bytes/1024/1024 m from dba_data_files;



五.字符集:














热门排行

今日推荐

热门手游