| 在Oracle9i中,如何监视索引并清除监视信息 |
| it.no1edu.net 佚名 不详 2006-12-15【字体:小 大】 |
|
|
对于DML操作来说,索引对于数据库是一个性能负担.如果索引没有被有效的使用,那么其存在性就值得从新考虑. 1. 从Oracle9i开始,Oracle允许你监视索引的使用: SQL> connect scott/tiger@conner
Connected to Oracle9i Enterprise Edition Release 9.2.0.4.0
Connected as scott
SQL> select index_name from user_indexes;
INDEX_NAME
------------------------------
PK_DEPT
PK_EMP
开始监视pk_dept索引:
SQL> alter index pk_dept monitoring usage;
Index altered
在此过程中,如果查询使用索引,将会记录下来:
SQL> select * from dept where deptno=10;
DEPTNO DNAME LOC
------ -------------- -------------
10 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 10/28/2004 10:55:19 10/28/2004 10:55:47
SQL>
2.Oracle9i的Bug 在9205之前,如果你不慎监控了SYS.I_OBJAUTH1索引,并且不幸在重起数据库之前没有停止它,那么你的数据库将会无法启动,并且 不会给出任何错误信息。 以下这条简单的语句可以轻易再现这个问题: 'ALTER INDEX SYS.I_OBJAUTH1 MONITORING USAGE' 如果你有了足够好的备份(严重警告,请不要拿你的生产数据库进行测试),你可以尝试一下:
[oracle@jumper oradata]$ sqlplus "/ as sysdba" SQL*Plus: Release 9.2.0.4.0 - Production on Sat Dec 4 10:09:30 2004 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to: Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production With [1] [2] [3] [4] 下一页
|
文章录入:anycall 责任编辑:anycall |
|
上一篇文章: [转贴]如何正确利用Rownum来限制查询所返回的行数?
下一篇文章: 安装文档ORACLE9i for sun solaris
|
 |
赞助商链接 |
|