知识大全 Oracle9i新特性-索引监视及注意事项[修正版]

Posted 索引

篇首语:面对艰难困苦,懦弱者被磨去棱角;勇敢者将意志品质磨砺得更为坚强。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle9i新特性-索引监视及注意事项[修正版]相关的知识,希望对你有一定的参考价值。

Oracle9i新特性-索引监视及注意事项[修正版]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  对于DML操作来说 索引对于数据库是一个性能负担 如果索引没有被有效的使用 那么其存在性就值得从新考虑 从Oracle i开始 Oracle允许你监视索引的使用:

  SQL> connect scott/tiger@connerConnected to Oracle i Enterprise Edition Release Connected as scott

  SQL> select index_name from user_indexes;

  INDEX_NAME PK_DEPTPK_EMP

  开始监视pk_dept索引:

  SQL> alter index pk_dept monitoring usage;

  Index altered

  在此过程中 如果查询使用索引 将会记录下来:

  SQL> select * from dept where deptno= ;

  DEPTNO DNAME          LOC     ACCOUNTING     NEW YORK

  停止监视:

  SQL> alter index pk_dept nomonitoring usage;

  Index altered

  查询索引使用情况 YES表示在监视过程中索引被使用到:

  SQL> select * from v$object_usage;

  INDEX_NAME        TABLE_NAME         MONITORING USED START_MONITORING    END_MONITORING PK_DEPT           DEPT               NO         YES  / / : : / / : :

  SQL>                        

   Oracle i的Bug

  在 之前 如果你不慎监控了SYS I_OBJAUTH 索引 并且不幸在重起数据库之前没有停止它 那么你的数据库将会无法启动 并且不会给出任何错误信息

  以下这条简单的语句可以轻易再现这个问题:

   ALTER INDEX SYS I_OBJAUTH MONITORING USAGE

  如果你有了足够好的备份(严重警告 请不要拿你的生产数据库进行测试) 你可以尝试一下:

  [oracle@jumper oradata]$ sqlplus / as sysdba SQL*Plus: Release Production on Sat Dec : :

  Copyright (c) Oracle Corporation All rights reserved

  Connected to:Oracle i Enterprise Edition Release ProductionWith the Partitioning optionJServer Release Production

  SQL> alter index SYS I_OBJAUTH monitoring usage ;

  Index altered

  SQL> shutdown immediate;Database closed Database dismounted ORACLE instance shut down SQL> startupORACLE instance started

  Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesDatabase mounted

  此时 数据库挂起 而且不会有任何提示 在alert<sid> log文件中 你可以看到:

  [oracle@jumper bdump]$ tail f alert_conner log Completed: ALTER DATABASE   MOUNTSat Dec  : : ALTER DATABASE OPENSat Dec  : : LGWR: Primary database is in CLUSTER CONSISTENT modeThread opened at log sequence   Current log# seq# mem# : /opt/oracle/oradata/conner/redo logSuccessful open of redo thread Sat Dec  : : SMON: enabling cache recoverySat Dec  : : Restarting dead background process QMN QMN started with pid=

  然后数据库将会停在此处

  如果不知道此bug存在 你可能会一筹莫展的

  现在你能做的就是从备份中恢复 或者升级

  [oracle@jumper oradata]$ rm rf conner[oracle@jumper oradata]$ cp R connerbak/ conner[oracle@jumper oradata]$ sqlplus / as sysdba SQL*Plus: Release Production on Sat Dec : :

  Copyright (c) Oracle Corporation All rights reserved

  Connected to an idle instance

  SQL> startupORACLE instance started

  Total System Global Area bytesFixed Size bytesVariable Size bytesDatabase Buffers bytesRedo Buffers bytesDatabase mounted Database opened SQL>  

   在特殊的情况下 你可能需要清除这个v$object_usage视图中的信息

  Oracle的说法是 在下一次收集该对象的索引使用情况时会自动覆蓋上一次的信息 不提供清除手段

  稍微研究了一下

  v$object_usage是基于以下基表建立起来的:

  create or replace view v$object_usage(index_name table_name monitoring used start_monitoring end_monitoring)asselect io name t name        decode(bitand(i flags ) NO YES )        decode(bitand(ou flags ) NO YES )        ou start_monitoring        ou end_monitoringfrom sys obj$ io sys obj$ t sys ind$ i sys object_usage ouwhere io owner# = userenv( SCHEMAID )  and i obj# = ou obj#  and io obj# = ou obj#  and t obj# = i bo#/                       

  注意到v$object_usage关键信息来源于OBJECT_USAGE表 另外我们可以注意一下 此处v$object_usage的查询基于userenv( SCHEMAID )建立 所以以不同用户登录 你是无法看到其他用户的索引监视信息的 即使是dba 但是可以从object_usage表中得到

  SQL> select * from v$object_usage;

  INDEX_NAME                     TABLE_NAME                     MON USE START_MONITORING    END_MONITORING PK_DEPT                        DEPT                           NO  YES / / : : / / : :

  SQL> select * from object_usage;select * from object_usage              *ERROR at line :ORA : table or view does not exist

  SQL> connect /as sysdbaConnected SQL> /

  OBJ#      FLAGS START_MONITORING    END_MONITORING                 / / : : / / : :                        

  实际上我们清除了object_usage表的记录 实际上也就清空了v$object_usage的信息

  SQL> delete from object_usage;

   row deleted

  SQL> mit;

  Commit plete

  SQL> select * from v$object_usage;

  no rows selected        

cha138/Article/program/Oracle/201311/17979

相关参考

知识大全 Oracle9i自动PGA管理的新特性

Oracle9i自动PGA管理的新特性  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在Orac

知识大全 oracle9i新特性概要

Oraclei电子商务平台       Oraclei通过提供旨在用于电子商务环境的一系列特定功能和产品束像Oraclei那样继续

知识大全 在Oracle9i里基于函数的仅索引扫描

在Oracle9i里基于函数的仅索引扫描  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Orac

知识大全 监视未使用索引

  作者gototop    索引可以加快查询的速度但索引会占用许多存储空间在插入和删除行的时候索引还会引入额外的开销因此确保索引得到有效利用是我们很关注的一个问题在Oraclei之前要知道一个索引是

知识大全 11G的不可见索引

11G的不可见索引  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  不可见索引是G的新特性不可见并

知识大全 Oracle 9i新特性研究系列之四 -- 延续性初始化参数文件

Oracle9i新特性研究系列之四--延续性初始化参数文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 教你怎么样卸载Oracle9i

教你怎么样卸载Oracle9i  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在win企业版操作

《刑法修正案(八)》对假释有新修改,下列关于假释的说法正确的是

《刑法修正案(八)》对假释有新修改,下列关于假释的说法正确的是_____。A、假释只适用于被判处有期徒刑或者无期徒刑的犯罪分子B、被判处有期徒刑的犯罪分子,执行原判刑期1/2以上,才可以适用假释C、被

什么是监视段压力?

  调节汽室压力及各段抽汽压力统称为监视段压力。凝汽式汽轮机除末一、二级以外,调节汽室压力及各段抽汽压力与蒸汽流量近似成正比关系,运行中监视这些压力的变化可以判断新蒸汽流量的变化,负荷的高低以及通流部

什么是监视段压力?

  调节汽室压力及各段抽汽压力统称为监视段压力。凝汽式汽轮机除末一、二级以外,调节汽室压力及各段抽汽压力与蒸汽流量近似成正比关系,运行中监视这些压力的变化可以判断新蒸汽流量的变化,负荷的高低以及通流部