日期:2011-03-21 00:21:00 来源:本站整理
<b>Oracle数据库中索引的保护</b>[Oracle防范]
本文“<b>Oracle数据库中索引的保护</b>[Oracle防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
本文只谈论Oracle中最常见的索引,便是B-tree索引.本文中触及的数据库版本是Oracle8i.
一. 查看系统表中的用户索引
在Oracle中,SYSTEM表是安装数据库时自动成立的,它包含数据库的全部数据字典,存储历程、包、函数和触发器的定义以及系统回滚段.
普通来说,应当尽大概避免在SYSTEM表中存储非SYSTEM用户的对象.因为这样会带来数据库保护和管理的很多问题.一旦SYSTEM表破坏了,只能重新生成数据库.我们可以用下面的语句来查抄在SYSTEM表内有没有其他用户的索引存在.
select count(*) from dba_indexes where tablespace_name = 'SYSTEM' and owner not in ('SYS','SYSTEM') / |
二. 索引的存储情形查抄
Oracle为数据库中的全部数据分配逻辑构造空间.数据库空间的单位是数据块(block)、范围(extent)和段(segment).
Oracle数据块(block)是Oracle利用和分配的最小存储单位.它是由数据库成立时设置的DB_BLOCK_SIZE决意的.一旦数据库生成了,数据块的大小不能改变.要想改变只能重新成立数据库.(在Oracle9i中有一些差别,不过这不在本文谈论的范围内.)
Extent是由一组持续的block构成的.一个或多个extent构成一个segment.当一个segment中的全部空间被用完时,Oracle为它分配一个新的extent.
Segment是由一个或多个extent构成的.它包含某表空间中特定逻辑存储构造的全部数据.一个段中的extent可以是不持续的,乃至可以在差别的数据文件中.
一个object只能对应于一个逻辑存储的segment,我们通过查看该segment中的extent,可以看出呼应object的存储情形.
(1)查看索引段中extent的数目:
select segment_name, count(*) from dba_extents where segment_type='INDEX' and owner=UPPER('&owner') group by segment_name / |
(2)查看表空间内的索引的扩大情形:
select substr(segment_name,1,20) "SEGMENT NAME", bytes, count(bytes) from dba_extents where segment_name in ( select index_name from dba_indexes where tablespace_name=UPPER('&表空间')) group by segment_name,bytes order by segment_name / |
以上是“<b>Oracle数据库中索引的保护</b>[Oracle防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论