itpub论坛提出的问题_为何dba_objects和dba_indexes中同一个user的index数量不一致

个人简介:
    8年oracle从业经验,具备丰富的oracle技能,目前在国内北京某专业oracle服务公司从事高级技术顾问。
   
   服务过的客户:
          中国电信
          中国移动
          中国联通
          中国电通
          国家电网
          四川达州商业银行
          湖南老百姓大药房
          山西省公安厅
          中国邮政
          北京302医院     
          河北廊坊新奥集团公司
  
 项目经验:
           中国电信3G项目AAA系统数据库部署及优化
           中国联通CRM数据库性能优化
           中国移动10086电商平台数据库部署及优化
           湖南老百姓大药房ERR数据库sql优化项目
           四川达州商业银行TCBS核心业务系统数据库模型设计和RAC部署及优化
           四川达州商业银行TCBS核心业务系统后端批处理存储过程功能模块编写及优化
           北京高铁信号监控系统RAC数据库部署及优化
           河南宇通客车数据库性能优化
           中国电信电商平台核心采购模块表模型设计及优化
           中国邮政储蓄系统数据库性能优化及sql优化
           北京302医院数据库迁移实施
           河北廊坊新奥data guard部署及优化
           山西公安厅身份证审计数据库系统故障评估
           
  
 联系方式:
           手机:18201115468
           qq   :   305076427
           qq微博: wisdomone1
           
           新浪微博:wisdomone9
          
           qq群:275813900    
          
           itpub博客名称:wisdomone1     http://blog.itpub.net/9240380/




网友问题
itpub论坛提出的问题,链接见下:
http://www.itpub.net/thread-1883724-1-2.html


创建测试表
SQL> conn u_zxy/system
Connected.

SQL> select * from user_objects;

no rows selected

SQL> create table t_ind(a int);

Table created.

创建索引
SQL> create index idx_t_ind  on t_ind(a);

Index created.

查看用户u_zxy的表及索引的个数
SQL> select object_type,count(*) from dba_objects where owner='U_ZXY' group by object_type;

OBJECT_TYPE           COUNT(*)
------------------- ----------
INDEX                        1
TABLE                        1

SQL> select owner,index_name,table_name from dba_indexes where owner='U_ZXY';

OWNER                          INDEX_NAME                     TABLE_NAME
------------------------------ ------------------------------ ------------------------------
U_ZXY                          IDX_T_IND                      T_IND

SQL> 

小结:
      dba_objects与dba_indexes查询出关于索引的记录是一致的


为测试表添加blob列
SQL> conn u_zxy/system
Connected.
SQL> alter table t_ind add b clob;

Table altered.


表如有blob或者clob,在dba_indexes会有一条记录
SQL> select owner,index_name,index_type,table_name from dba_indexes where owner='U_ZXY';

OWNER                          INDEX_NAME                     INDEX_TYPE                  TABLE_NAME
------------------------------ ------------------------------ --------------------------- ------------------------------
U_ZXY                          IDX_T_IND                      NORMAL                      T_IND
U_ZXY                          SYS_IL0000075556C00002$$       LOB                         T_IND


SQL> truncate table  u_zxy.t_ind;

Table truncated.


SQL> select owner,index_name,index_type,table_name from dba_indexes where owner='U_ZXY';

OWNER                          INDEX_NAME                     INDEX_TYPE                  TABLE_NAME
------------------------------ ------------------------------ --------------------------- ------------------------------
U_ZXY                          IDX_T_IND                      NORMAL                      T_IND
U_ZXY                          SYS_IL0000075546C00002$$       LOB                         T_IND



截断表,则表上面的索引及clob或blob会消失
SQL> drop table u_zxy.t_ind purge;

Table dropped.

SQL> select owner,index_name,index_type,table_name from dba_indexes where owner='U_ZXY';

no rows selected 



SQL> conn /as sysdba
Connected.
SQL> select object_type,count(*) from dba_objects where owner='U_ZXY' group by object_type;

OBJECT_TYPE           COUNT(*)
------------------- ----------
LOB                          1
INDEX                        1
TABLE                        1

SQL>
SQL>
SQL>  select owner,index_name,table_name from dba_indexes where owner='U_ZXY';

OWNER                          INDEX_NAME                     TABLE_NAME
------------------------------ ------------------------------ ------------------------------
U_ZXY                          IDX_T_IND                      T_IND
U_ZXY                          SYS_IL0000075556C00002$$       T_IND


SQL> col owner for a10
SQL> col column_name for a10
SQL> select owner,table_name,column_name,segment_name,tablespace_name,index_name from dba_lobs where owner='U_ZXY';

OWNER      TABLE_NAME                     COLUMN_NAM SEGMENT_NAME                   TABLESPACE_NAME                INDEX_NAME
---------- ------------------------------ ---------- ------------------------------ ------------------------------ ------------------------------
U_ZXY      T_IND                          B          SYS_LOB0000075556C00002$$      TBS_ZXY                        SYS_IL0000075556C00002$$


小结:1,index_type为LOB是表lob列的的存储信息
      
          2,如果表中有lob类型的列,会在dba_indexes存储1条记录

          3,lob类型的表列,会与表的其它列分属不同的segment

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-1252103/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9240380/viewspace-1252103/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值