数据字典和性能视图
2013-11-15 10:21
197 查看
数据字典:
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 等有描述
(
4000
其实这里也包含一类 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 '##%');
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 等有描述
(
4000
其实这里也包含一类 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 '##%');
相关文章推荐
- Silverlight访问页面dom元素
- 如何判断一个请求是否为AJAX请求
- Java虚拟机(JVM)中的内存设置详解
- 三国演义告诉你的60条真理
- iOS7设置状态栏颜色
- Android TextWatcher监控EditText中的输入内容并限制其输入字符个数
- ACE主动对象模式(2)
- java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
- OCP-1Z0-051-V9.02-13题
- clearfix:after 清除css浮动
- 视图
- TCL 事务控制语言
- 用户和权限
- Mysql SQL CAST()函数
- [LeetCode] Add Binary
- 数据类型
- JAVA File类操作(键人岐)
- 日期控件WdatePicker
- ACE主动对象模式(1)
- Unity NGUI 3.0.4版本 制作网络版斗地主