数据字典和性能视图


数据字典:
ORACLE会对系统的操作及相关的信息记录在系统的只读表里,这类表叫基表
基表过于复杂,oracle在此基础之上又建立了视图和同义词,供DBA查询更人性化的数据
这类视图和同义词我们称之为数据字典. 它存储的是不经常改动的数据

动态性能视图:
oracle内存在运行中时刻都在变化,这些变化的数据寄存于动态性能表(内存表,固定表)中,随数据库启动而建立,随数据库运行而增加内容
动态性能表也过于复杂,oracle在此基础之上又建立了视图和同义词,用于DBA判断系统的性能状态信息 .
这类视图和同义词我们称之为动态性能视图. 它储存的是时刻改变的数据



数据字典

数据字典在创建数据库时建立的
分为:
   数据字典基表 ($结尾)
基表就是用于存放所有数据库对象信息的表
        基于数据字典基表可以生成数据字典视图
   数据字典视图 分别以dba_ all_ user_开头
由catalog.sql脚本建立 
通过数据字典视图,使基表中不易理解的数据更接近人性语言


   基表
在create database 的时候由sql.bsq自动建立
存储了数据库的描述信息 
比如 obj$  user$

基表由SYS拥有 ,只有一少部分基表DBA可以DML,大部分基表不允许DML
但基表可以让其它用户查询  但我们通常不这样做 因为基本内数据非常复杂
也有的DBA以研究基表为乐趣 因为数据字典中并不完全展现基表的内容 很多部分被oracle隐藏了.
SQL> grant select on user$ to scott;

Grant succeeded.

SQL> 


   数据字典视图
由catalog.sql脚本建立 
通过数据字典视图,使基表中不易理解的数据更接近人性语言
Oracle server使用它来获取用户、schema对象、存储结构信息 
执行DDL语句时,oracle server会去修改它 
用户和DBA把它作为只读查询来获取数据库的信息 
select view_name,text from dba_views where view_name like 'DBA_TABLESPACES';
能够看到 它的数据来源于基表ts$
常见的基表
物理数据库的结构 
基表有file$
数据字典试图有dba_data_files
存放对象空间分配的定义 
基表有fet$,uet$,seg$ 
数据字典视图有Dba_extents、dba_segments 

一致性约束信息 
基表有con$ 
数据字典视图有dba_constraints 

用户信息 
基表有User$ 
数据字典视图有Dba_users,all_users 


角色和权限 
基表有SYSAUTH$, User$ 
数据字典视图有dba_sys_privs,dba_roles 

审计信息 
基表有aud$ 
数据字典视图有DBA_AUDIT_TRAIL 

数据字典命名包含图

 DBA: 所有的schemas 

 ALL: 当前用户可以访问的schema 

 USERS: 当前用户的schema 

动态性能视图
动态性能表记录了当前的数据库状态信息
通过动态性能表和动态性能视图来获得当前系统运行状态
动态性能视图对DBA来说很重要

   动态性能表 (X$开头) 
动态性能表是虚表,不是真正的表 
动态性能表不能由除SYS外的用户访问 
它可以由v$fixed_table来查看动态性能表 
SQL> select count(*) from v$fixed_table where type='TABLE';

  COUNT(*)
----------
       613

SQL> 

   动态性能视图(V_$开头,RAC相关的是GV_$开头) 
通过动态性能表组合的视图 
我们最常用的就是动态性能视图,如v_$tablespace 

   动态性能视图的同义词 (V$开头,RAC相关的是GV$开头)



  动态性能表 X$
以X$为前缀,是ORACLE的内核表
动态性能表是一种虚表,不是真正的表,也称为内存表或者固定表
只在内存中 每次启动后oracle都自动构建
比动态性能试图提供更详尽的信息
但太复杂 不容易掌握
它的数据随着数据库的不断运行,动态性能视图中的数据不断更新 
数据的来源是从内存和控制文件读取
通过 v$fixed_table   V$FIXED_VIEW_DEFINITION 等有描述
(其实这里也包含一类 V$ 也是虚表)

  动态性能视图 V_$开头
既是基于动态性能表而构建的 他是实实在在存在的对象
DBA就通过这些视图来监控或调优系统

  动态性能视图的同义词
通过动态性能视图 构建的的同义词
[oracle@dba admin]$ grep -inr 'V_\$TABLESPACE' ./
./catalog.sql:1694:create or replace view v_$tablespace as select * from v$tablespace;
./catalog.sql:1695:create or replace public synonym v$tablespace for v_$tablespace;

虽然看上去是死循环 但实际不是
红色的是动态性能表
蓝色的是实实在在存在的视图
绿色的是同义词



构建自己的动态性能视图

实验建立查看隐藏参数的视图(隐藏参数被oracle屏蔽了)

SQL> select object_type from dba_objects where object_name='V$PARAMETER';

OBJECT_TYPE
-------------------
SYNONYM

Elapsed: 00:00:00.02
SQL> SELECT dbms_metadata.get_ddl('SYNONYM','V$PARAMETER','PUBLIC') from dual;

DBMS_METADATA.GET_DDL('SYNONYM','V$PARAMETER','PUBLIC')
--------------------------------------------------------------------------------

  CREATE OR REPLACE PUBLIC SYNONYM "V$PARAMETER" FOR "SYS".
"V_$PARAMETER"



Elapsed: 00:00:01.32
SQL> select object_type from dba_objects where object_name='V_$PARAMETER';

OBJECT_TYPE
-------------------
VIEW

Elapsed: 00:00:00.01
SQL> select text from dba_views where view_name='V_$PARAMETER';

TEXT
--------------------------------------------------------------------------------
select "NUM","NAME","TYPE","VALUE","DISPLAY_VALUE","ISDEFAULT","ISSES_MODIFIABLE
","ISSYS_MODIFIABLE","ISINSTANCE_MODIFIABLE","ISMODIFIED","ISADJUSTED","ISDEPREC
ATED","DESCRIPTION","UPDATE_COMMENT","HASH" from v$parameter


Elapsed: 00:00:00.03
SQL> 


SQL> SELECT name,type from V$FIXED_TABLE where name='V$PARAMETER';

NAME    TYPE
-------------------------------------------------- -----
V$PARAMETER    VIEW

Elapsed: 00:00:00.01
SQL> 
SQL> select * from V$FIXED_VIEW_DEFINITION where view_name='V$PARAMETER';

VIEW_NAME
------------------------------
VIEW_DEFINITION
----------------------------------------------------------------------------------------------------
V$PARAMETER
select NUM , NAME , TYPE , VALUE , DISPLAY_VALUE, ISDEFAULT , ISSES_MODIFIABLE , ISSYS_MODIFIABLE ,
 ISINSTANCE_MODIFIABLE, ISMODIFIED , ISADJUSTED , ISDEPRECATED, DESCRIPTION, UPDATE_COMMENT, HASH  f
rom GV$PARAMETER where inst_id = USERENV('Instance')


Elapsed: 00:00:00.01
SQL> 

SQL> SELECT name,type from V$FIXED_TABLE where name='GV$PARAMETER';

NAME    TYPE
-------------------------------------------------- -----
GV$PARAMETER    VIEW

Elapsed: 00:00:00.00
SQL> 

SQL> select * from V$FIXED_VIEW_DEFINITION where view_name='GV$PARAMETER';

VIEW_NAME
------------------------------
VIEW_DEFINITION
----------------------------------------------------------------------------------------------------
GV$PARAMETER
select x.inst_id,x.indx+1,ksppinm,ksppity,ksppstvl, ksppstdvl, ksppstdf,  decode(bitand(ksppiflg/256
,1),1,'TRUE','FALSE'), decode(bitand(ksppiflg/65536,3),1,'IMMEDIATE',2,'DEFERRED',
 3,'IMMEDIATE','FALSE'),  decode(bitand(ksppiflg,4),4,'FALSE',
       decode(bitand(ksppiflg/65536,3), 0, 'FALSE', 'TRUE')),   decode(bitand(ksppstvf,7),
1,'MODIFIED',4,'SYSTEM_MOD','FALSE'),  decode(bitand(ksppstvf,2),2,'TRUE','FALSE'),  decode(bitand(k
sppilrmflg/64, 1), 1, 'TRUE', 'FALSE'),  ksppdesc, ksppstcmnt, ksppihash  from x$ksppi x, x$ksppcv y
 where (x.indx = y.indx) and  ((translate(ksppinm,'_','#') not like '##%') and   ((translate(ksppin
m,'_','#') not like '#%')      or (ksppstdf = 'FALSE') or      (bitand(ksppstvf,5) > 0)))


Elapsed: 00:00:00.00
SQL> 




create or replace view h$parameter (
NUM,
NAME,
TYPE,
VALUE,
DISPLAY_VALUE,
ISDEFAULT,
ISSES_MODIFIABLE,
ISSYS_MODIFIABLE,
ISINSTANCE_MODIFIABLE,
ISMODIFIED,
ISADJUSTED,
ISDEPRECATED,
DESCRIPTION,
UPDATE_COMMENT,
HASH
)
as
select 
x.indx+1,
ksppinm,
ksppity,
ksppstvl, 
ksppstdvl, 
ksppstdf,  
decode(bitand(ksppiflg/256,1),1,'TRUE','FALSE'),
decode(bitand(ksppiflg/65536,3),1,'IMMEDIATE',2,'DEFERRED',3,'IMMEDIATE','FALSE'),  
decode(bitand(ksppiflg,4),4,'FALSE',decode(bitand(ksppiflg/65536,3), 0, 'FALSE', 'TRUE')),   
decode(bitand(ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE'),  
decode(bitand(ksppstvf,2),2,'TRUE','FALSE'),  
decode(bitand(ksppilrmflg/64, 1), 1, 'TRUE', 'FALSE'),  
ksppdesc, 
ksppstcmnt, 
ksppihash  
from x$ksppi x, x$ksppcv y
where (x.indx = y.indx) and (translate(ksppinm,'_','#') like '#%');



create or replace view hh$parameter (
NUM,
NAME,
TYPE,
VALUE,
DISPLAY_VALUE,
ISDEFAULT,
ISSES_MODIFIABLE,
ISSYS_MODIFIABLE,
ISINSTANCE_MODIFIABLE,
ISMODIFIED,
ISADJUSTED,
ISDEPRECATED,
DESCRIPTION,
UPDATE_COMMENT,
HASH
)
as
select 
x.indx+1,
ksppinm,
ksppity,
ksppstvl, 
ksppstdvl, 
ksppstdf,  
decode(bitand(ksppiflg/256,1),1,'TRUE','FALSE'),
decode(bitand(ksppiflg/65536,3),1,'IMMEDIATE',2,'DEFERRED',3,'IMMEDIATE','FALSE'),  
decode(bitand(ksppiflg,4),4,'FALSE',decode(bitand(ksppiflg/65536,3), 0, 'FALSE', 'TRUE')),   
decode(bitand(ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE'),  
decode(bitand(ksppstvf,2),2,'TRUE','FALSE'),  
decode(bitand(ksppilrmflg/64, 1), 1, 'TRUE', 'FALSE'),  
ksppdesc, 
ksppstcmnt, 
ksppihash  
from x$ksppi x, x$ksppcv y
where (x.indx = y.indx) and (translate(ksppinm,'_','#') like '##%');

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值