当前位置:文档之家› oracle数据字典详解

oracle数据字典详解

学习笔记:oracle数据字典详解---本文为TTT学习笔记,首先介绍数据字典及查看方法,然后分类总结各类数据字典的表和视图。

然后列出一些附例。

数据字典系统表,保存在system表空间中。

由表和视图组成,由服务器在安装数据库时自动创建,用户不可以直接修改数据库字典,在执行DDL 语句时,oracle会自动修改。

记录一些表和视图(只读的),新建的表不要和这空间建在一起(9i以前的版本新用户建的表默认表空间为system,注意修改)--查询数据字典:select * from dictionary--数据字典导出方法:conn / as sysdbaspool onspool c:\dic.txtselect * from dictionaryspool off主要四部分:1,内部RDBMS表:x$……2,数据字典表:……$3,动态性能视图:gv$……,v$……4,数据字典视图:user_……,all_……,dba_……数据库启动时,动态创建x$,在X$基础上创建GV$,在GV$基础上创建V$X$表-->GV$(视图)--->V$(视图)+++一,内部RDBMS表x$……,例如:x$kvit,x$bh,x$ksmsp,x$ksppi和x$ksppcv核心部分,用于跟踪内部数据库信息,维持DB的正常运行。

是加密命名的,不允许sysdba以外的用户直接访问,显示授权不被允许。

最好不要修改.x$kvit=Kernel Layer Performance Layer V Information tables Transitory Instance parameter 数据库启动时,动态创建x$……+++二,数据字典表……$,如tab$,obj$,ts$……--用来存储表、索引、约束以及其他数据库结构的信息。

--创建数据库时通过脚本sql.bsq来创建,脚本:$oracle_home/rdbms/admin/sql.bsq+++三,动态性能视图gv$……,v$……,如V$parameter--记录了DB运行时信息和统计数据,大部分动态性能视图被实时更新以反映DB当前状态。

--数据库创建时建立的。

--只有sysdba可以直接访问。

--查看表v$fixed_view_definition(***),可以查看GV$和V$视图的创建语句。

(oracle提供一些特殊视图,用来记录其他视图的创建方式,v$fixed_view_definition就是其中之一)--select view_definition from v$fixed_view_definition where view_name='V$FIXED_TABLE';--gv$……=Global V$,在X$……基础上创建,是为了满足OPS环境(多个实例)的需要面产生的,可以返回多个实例的信息。

V$……,在GV$……基础上创建,只返回当前实例的信息。

定义语句都带有:where inst_id=USERENV('Instance')--GV$和V$之后,oracle建立了GV_$和V_$视图,又为这些视图建立了公用同义词。

由脚本catalog.sql 实现的,脚本:$oracle_home/rdbms/admin/catalog.sqlcreate or replace view v_$process as select * from v$process;create or replace public synonym v$process for v_$process;create or replace view gv_$process as select * from gv$process;create or replace public synonym gv$process for gv_$process;-->可以看出:V$(视图)-->V_$(视图)-->V$(公用同义词)GV$(视图)-->GV_$(视图)-->GV$(公用同义词)这样做的目的:通过V_$和GV_$,oracle把V$视图和GV视图和普通用户隔离开来。

(oracle允许V_$视图权限可以授权给其他用户,但不允许任何对于V$视图的直接授权。

)所以,在非Sys用户下,我们访问的都是同义词,而不是V$视图或GV视图。

--oracle访问数据顺序:view-->同义词。

+++四,数据库字典视图--是在X$表和数据字典表之上建立的视图。

--创建数据库时由脚本catalog.sql创建。

脚本:$oracle_home/rdbms/admin/catalog.sql--按前缀不同,作用范围的分为三类:1、以user开头的数据字典:包含当前用户所拥有的相关对象信息。

--能够查到对象的所有者是当前用户的所有对象select table_name from user_tables; (scott) 52、以all开头的数据字典:包含当前用户有权限访问的所有对象的信息。

--能够查到所有当前用户有权限访问的对象select table_name from all_tables; (scott) 963、以dba开头的数据字典:包含数据库所有相关对象的信息。

--只能是有dba权限的用户查询,能查到数据库中所有对象select table_name from dba_tables (sys system)+++附:比较user,all,dba数据字典视图各数据字典表数量比较表Dictionary与V$fixed_table比较通过V$parameter视图来追踪一下数据库的架构oracle如何通过同义词定位对象(10046事件)+++比较user,all,dba数据字典视图---可以查看脚本catalog.sql中的定义:+++--USER_TABLEScreate or replace view USER_TABLES(TABLE_NAME, TABLESPACE_NAME, CLUSTER_NAME, IOT_NAME, STATUS,PCT_FREE, PCT_USED,INI_TRANS, MAX_TRANS,INITIAL_EXTENT, NEXT_EXTENT,MIN_EXTENTS, MAX_EXTENTS, PCT_INCREASE,FREELISTS, FREELIST_GROUPS, LOGGING,BACKED_UP, NUM_ROWS, BLOCKS, EMPTY_BLOCKS,AVG_SPACE, CHAIN_CNT, AVG_ROW_LEN,AVG_SPACE_FREELIST_BLOCKS, NUM_FREELIST_BLOCKS,DEGREE, INSTANCES, CACHE, TABLE_LOCK,SAMPLE_SIZE, LAST_ANALYZED, PARTITIONED,IOT_TYPE, TEMPORARY, SECONDARY, NESTED,BUFFER_POOL, ROW_MOVEMENT,GLOBAL_STATS, USER_STATS, DURATION, SKIP_CORRUPT, MONITORING,CLUSTER_OWNER, DEPENDENCIES, COMPRESSION, DROPPED)asselect , decode(bitand(t.property, 2151678048), 0, , null),decode(bitand(t.property, 1024), 0, null, ),decode((bitand(t.property, 512)+bitand(t.flags, 536870912)),0, null, ),decode(bitand(t.trigflag, 1073741824), 1073741824, 'UNUSABLE', 'VALID'),decode(bitand(t.property, 32+64), 0, mod(t.pctfree$, 100), 64, 0, null),decode(bitand(ts.flags, 32), 32, to_number(NULL),decode(bitand(t.property, 32+64), 0, t.pctused$, 64, 0, null)), decode(bitand(t.property, 32), 0, t.initrans, null),decode(bitand(t.property, 32), 0, t.maxtrans, null),s.iniexts * ts.blocksize,decode(bitand(ts.flags, 3), 1, to_number(NULL),s.extsize * ts.blocksize),s.minexts, s.maxexts,decode(bitand(ts.flags, 3), 1, to_number(NULL),s.extpct), decode(bitand(ts.flags, 32), 32, to_number(NULL),decode(bitand(o.flags, 2), 2, 1, decode(s.lists, 0, 1, s.lists))), decode(bitand(ts.flags, 32), 32, to_number(NULL),decode(bitand(o.flags, 2), 2, 1, decode(s.groups, 0, 1, s.groups))), decode(bitand(t.property, 32+64), 0,decode(bitand(t.flags, 32), 0, 'YES', 'NO'), null), decode(bitand(t.flags,1), 0, 'Y', 1, 'N', '?'),t.rowcnt,decode(bitand(t.property, 64), 0, t.blkcnt, null),decode(bitand(t.property, 64), 0, t.empcnt, null),decode(bitand(t.property, 64), 0, t.avgspc, null),t.chncnt, t.avgrln, t.avgspc_flb,decode(bitand(t.property, 64), 0, t.flbcnt, null),lpad(decode(t.degree, 32767, 'DEFAULT', nvl(t.degree,1)),10),lpad(decode(t.instances, 32767, 'DEFAULT', nvl(t.instances,1)),10),lpad(decode(bitand(t.flags, 8), 8, 'Y', 'N'),5),decode(bitand(t.flags, 6), 0, 'ENABLED', 'DISABLED'),t.samplesize, t.analyzetime,decode(bitand(t.property, 32), 32, 'YES', 'NO'),decode(bitand(t.property, 64), 64, 'IOT',decode(bitand(t.property, 512), 512, 'IOT_OVERFLOW',decode(bitand(t.flags, 536870912), 536870912, 'IOT_MAPPING', null))),decode(bitand(o.flags, 2), 0, 'N', 2, 'Y', 'N'),decode(bitand(o.flags, 16), 0, 'N', 16, 'Y', 'N'),decode(bitand(t.property, 8192), 8192, 'YES',decode(bitand(t.property, 1), 0, 'NO', 'YES')),decode(bitand(o.flags, 2), 2, 'DEFAULT',decode(s.cachehint, 0, 'DEFAULT', 1, 'KEEP', 2, 'RECYCLE', NULL)),decode(bitand(t.flags, 131072), 131072, 'ENABLED', 'DISABLED'),decode(bitand(t.flags, 512), 0, 'NO', 'YES'),decode(bitand(t.flags, 256), 0, 'NO', 'YES'),decode(bitand(o.flags, 2), 0, NULL,decode(bitand(t.property, 8388608), 8388608,'SYS$SESSION', 'SYS$TRANSACTION')),decode(bitand(t.flags, 1024), 1024, 'ENABLED', 'DISABLED'),decode(bitand(o.flags, 2), 2, 'NO',decode(bitand(t.property, 2147483648), 2147483648, 'NO',decode(ksppcv.ksppstvl, 'TRUE', 'YES', 'NO'))),decode(bitand(t.property, 1024), 0, null, ),decode(bitand(t.flags, 8388608), 8388608, 'ENABLED', 'DISABLED'),decode(bitand(t.property, 32), 32, null,decode(bitand(s.spare1, 2048), 2048, 'ENABLED','DISABLED')),decode(bitand(o.flags, 128), 128, 'YES', 'NO')from sys.ts$ ts, sys.seg$ s, sys.obj$ co, sys.tab$ t, sys.obj$ o,sys.obj$ cx, er$ cu, x$ksppcv ksppcv, x$ksppi ksppi where o.owner# = userenv('SCHEMAID')and o.obj# = t.obj#and bitand(t.property, 1) = 0and bitand(o.flags, 128) = 0and t.bobj# = co.obj# (+)and t.ts# = ts.ts#and t.file# = s.file# (+)and t.block# = s.block# (+)and t.ts# = s.ts# (+)and t.dataobj# = cx.obj# (+)and cx.owner# = er# (+)and ksppi.indx = ksppcv.indxand ksppi.ksppinm = '_dml_monitoring_enabled'--可以看到限制条件:where o.owner# = userenv('SCHEMAID')+++--USER_ALL_TABLEScreate or replace view USER_ALL_TABLES(TABLE_NAME, TABLESPACE_NAME, CLUSTER_NAME, IOT_NAME, STATUS, PCT_FREE, PCT_USED,INI_TRANS, MAX_TRANS,INITIAL_EXTENT, NEXT_EXTENT,MIN_EXTENTS, MAX_EXTENTS, PCT_INCREASE,FREELISTS, FREELIST_GROUPS, LOGGING,BACKED_UP, NUM_ROWS, BLOCKS, EMPTY_BLOCKS,AVG_SPACE, CHAIN_CNT, AVG_ROW_LEN,AVG_SPACE_FREELIST_BLOCKS, NUM_FREELIST_BLOCKS,DEGREE, INSTANCES, CACHE, TABLE_LOCK,SAMPLE_SIZE, LAST_ANALYZED, PARTITIONED,IOT_TYPE, OBJECT_ID_TYPE,TABLE_TYPE_OWNER, TABLE_TYPE, TEMPORARY, SECONDARY, NESTED,BUFFER_POOL, ROW_MOVEMENT,GLOBAL_STATS, USER_STATS, DURATION, SKIP_CORRUPT, MONITORING,CLUSTER_OWNER, DEPENDENCIES, COMPRESSION, DROPPED)asselect TABLE_NAME, TABLESPACE_NAME, CLUSTER_NAME, IOT_NAME, STATUS, PCT_FREE, PCT_USED,INI_TRANS, MAX_TRANS,INITIAL_EXTENT, NEXT_EXTENT,MIN_EXTENTS, MAX_EXTENTS, PCT_INCREASE,FREELISTS, FREELIST_GROUPS, LOGGING,BACKED_UP, NUM_ROWS, BLOCKS, EMPTY_BLOCKS,AVG_SPACE, CHAIN_CNT, AVG_ROW_LEN,AVG_SPACE_FREELIST_BLOCKS, NUM_FREELIST_BLOCKS,DEGREE, INSTANCES, CACHE, TABLE_LOCK,SAMPLE_SIZE, LAST_ANALYZED, PARTITIONED,IOT_TYPE,NULL, NULL, NULL, TEMPORARY, SECONDARY, NESTED,BUFFER_POOL, ROW_MOVEMENT,GLOBAL_STATS, USER_STATS, DURATION, SKIP_CORRUPT, MONITORING,CLUSTER_OWNER, DEPENDENCIES, COMPRESSION, DROPPEDfrom user_tablesunion allselect TABLE_NAME, TABLESPACE_NAME, CLUSTER_NAME, IOT_NAME, STATUS, PCT_FREE, PCT_USED,INI_TRANS, MAX_TRANS,INITIAL_EXTENT, NEXT_EXTENT,MIN_EXTENTS, MAX_EXTENTS, PCT_INCREASE,FREELISTS, FREELIST_GROUPS, LOGGING,BACKED_UP, NUM_ROWS, BLOCKS, EMPTY_BLOCKS,AVG_SPACE, CHAIN_CNT, AVG_ROW_LEN,AVG_SPACE_FREELIST_BLOCKS, NUM_FREELIST_BLOCKS,DEGREE, INSTANCES, CACHE, TABLE_LOCK,SAMPLE_SIZE, LAST_ANALYZED, PARTITIONED,IOT_TYPE, OBJECT_ID_TYPE,TABLE_TYPE_OWNER, TABLE_TYPE, TEMPORARY, SECONDARY, NESTED,BUFFER_POOL, ROW_MOVEMENT,GLOBAL_STATS, USER_STATS, DURATION, SKIP_CORRUPT, MONITORING,CLUSTER_OWNER, DEPENDENCIES, COMPRESSION, DROPPEDfrom user_object_tables--扩展了关于用户有权限访问的对象信息,所以user_tables是all_tables的子集。

相关主题