研究发现,oracle数据库使用的索引不会跨越总数的25%,或者不易他们期望被使用的体例使用。经由过程 监控数据库索引的使用,释放那些未被使用的索引,年夜而节约维护索引的开销,优化机能。 1、在oracle8i中,确定使用了阿谁索引的体例意味着要对存在语共享SQL区中的所有语句运行EXPLIAN PALN,然后发芽打算表中的OPERATION列,年夜而识别有OBJECT_OWNER和OBJECT_NAME列所确定的阿谁索引上的索引访谒。 下面是一个监控索引使用的剧本,这个剧本仅仅是一个样品,在某种前提下成立: 前提: 运行这个剧本的用户拥有权限诠释所有的v$sqlarea中的sql,除了不是被SYS装载的。plan_table.remarks能够别用来抉择与特权习惯的错误。对所有的共享池中SQL,参数OPTIMIZER_GOAL是一个常量,无视v$sqlarea.optimizer_mode。两次快照之间,统计资料被再次剖析过。没有语句别截断。所有的对象都是局部的。所有被引用的表或视图或者是被运行剧本的用户所拥有,或者完全有资格的名字或同义词被使用。自年夜上次快照以来,没有不受"接待"的语句被冲刷出共享池(例如,在装载)。对于所有的语句,v$sqlarea.version_count = 1 (children)。 剧本:
2 ` j% u1 i) p1 A c/ x7 z Code: [Copy to clipboard] set echo off Rem Drop and recreate PLAN_TABLE for EXPLAIN PLAN drop table plan_table; create table PLAN_TABLE ( statement_id varchar2(30), timestamp date, remarks varchar2(80), operation varchar2(30), options varchar2(255), object_node varchar2(128), object_owner varchar2(30), object_name varchar2(30), object_instance numeric, object_type varchar2(30), optimizer varchar2(255), search_columns number, id numeric, parent_id numeric, position numeric, cost numeric, cardinality numeric, bytes numeric, other_tag varchar2(255), partition_start varchar2(255), partition_stop varchar2(255), partition_id numeric, other long, distribution varchar2(30), cpu_cost numeric, io_cost numeric, temp_space numeric, access_predicates varchar2(4000), filter_predicates varchar2(4000)); Rem Drop and recreate SQLTEMP for taking a snapshot of the SQLAREA drop table sqltemp; create table sqltemp ( ADDR VARCHAR2 (16), SQL_TEXT VARCHAR2 (2000), DISK_READS NUMBER, EXECUTIONS NUMBER, PARSE_CALLS NUMBER); |