| 在Oracle9i中,如何监视索引并清除监视信息 |
| it.no1edu.net 佚名 不详 2006-12-15【字体:小 大】 |
|
|
Variable Size 37748736 bytes Database Buffers 41943040 bytes Redo Buffers 667648 bytes Database mounted. Database opened. SQL> 3. 在特殊的情况下,你可能需要清除这个v$object_usage视图中的信息. Oracle的说法是,在下一次收集该对象的索引使用情况时会自动覆盖上一次的信息,不提供清除手段.
稍微研究了一下. v$object_usage是基于以下基表建立起来的:
create or replace view v$object_usage (index_name, table_name, monitoring, used, start_monitoring, end_monitoring) as select io.name, t.name, decode(bitand(i.flags, 65536), 0, 'NO', 'YES'), decode(bitand(ou.flags, 1), 0, 'NO', 'YES'), ou.start_monitoring, ou.end_monitoring from sys.obj$ io, sys.obj$ t, sys.ind$ i, sys.object_usage ou where 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 10/28/2004 10:55:19 10/28/2004 10:55:47
SQL> select * from object_usage;
select * from object_usage
*
ERROR at line 1:
ORA-00942: table or view does not exist
SQL> connect /as sysdba
Connected.
SQL> /
OBJ# FLAGS START_MONITORING END_MONITORING
---------- ---------- ------------------- -------------------
6288 1 10/28/2004 10:55:19 10/28/2004 10:55:47
上一页 [1] [2] [3] [4] 下一页
|
文章录入:anycall 责任编辑:anycall |
|
上一篇文章: [转贴]如何正确利用Rownum来限制查询所返回的行数?
下一篇文章: 安装文档ORACLE9i for sun solaris
|
 |
赞助商链接 |
|