這段時間忙死了﹐DB性能問題多多﹐其最主要的就是慢。很多DBA都說很爛的程式忙死優秀的DBA,我不是優秀的DBA,但DB有很多很爛的程式﹐害死我了。很多程式人員寫程式的時候根本沒有考慮該怎么去寫sql,而是想到哪里寫到哪里﹐哎沒辦法﹐只好去操作軟件﹐然后找到軟件慢的地方﹐再查到相應的程式﹐再查看執行計划﹐再進行調整。不知道其它的DBA遇到這種情況是怎么處理的。下面是執行計划的過程(基于oracle8i)。
1) 建立table
create table PLAN_TABLE (
statement_id varchar2(30),
timestamp date,
remarks varchar2(80),
operation varchar2(30),
options varchar2(30),
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));
2)執行sql分析
explain plan set statement_id='test'
for
select * from y_bom where rownum<10;
3)查看執行計划
select lpad(' ',2*level)||operation||' '||options||' '||object_name q_plan from plan_table
where statement_id='test'
connect by prior id=parent_id and
statement_id='test' start with id=0
and statement_id='test'
關于autotrace的使用
查看這個網頁就好了﹐很詳細﹕
http://qiuyb.itpub.net/post/8049/67501