ITPub博客

首页 > 应用开发 > IT综合 > 较为常用优化方式

较为常用优化方式

原创 IT综合 作者:chance2000 时间:2006-03-26 00:31:14 0 删除 编辑
较为常用优化方式[@more@]

1、logmnr对日志文件进行分析:
sql>exec dbms_logmnr_d.build('esal.ora','/home/oracle/logmnr');
sql>exec dbms_logmnr.add_logfile('&log_file',dbms_logmnr.new);
sql>exec dbms_logmnr.add_logfile('&log_file',dbms_logmnr.addfile);
sql>exec dbms_logmnr.start_logmnr('/home/oracle/logmnr/esal.ora');
sql>exec dbms_logmnr.end_logmnr();
2、对session进行跟踪
对当前会话的活动进行跟踪和停止跟踪:
alter session set sql_trace=true/false;
alter session set events '&event trace name context forever,level &level';
alter session set events '&event trace name context off';
对任意的会话进行跟踪和停止跟踪:
exec dbms_system.set_sql_trace_in_session(&id,&serial#,&sql_trace);&sql_trace=true/false
exec dbms_system.set_ev(&id,&serial#,&event_10046,&level_12,'');
oradebug event 10046 trace name context forever,level 12
tkprof
得到跟踪文件的脚本:
select d.value||'/'||lower(rtrim(i.instance,chr(0)))||'_ora_'||p.spid||'.trc' trace_file_name
from (select p.spid
from sys.v$mystat m,sys.v$session s,sys.v$process p
where m.statistic# = 1 and s.sid = m.sid and p.addr = s.paddr) p,
(select t.instance from sys.v$thread t,sys.v$parameter v
where v.name = 'thread' and (v.value = 0 or t.thread# = to_number(v.value))) i,
(select value from sys.v$parameter where name = 'user_dump_dest') d
;
读取当前session设置的参数:
set feedback off
set serveroutput on
declare
event_level number;
begin
for event_number in 1000..10999
loop
sys.dbms_system.read_ev(event_number,event_level);
if levent_level > 0
then
sys.dbms_output.put_line('Event '||to_char(event_number)||
' is set at level '||to_char(event_level));
end if;
end loop;
end;
/
3、监控表和索引
alter table &table_name monitoring;
alter table &table_name nomonitoring;
查看dba_tab_modifications字典
alter index &index_name monitoring usage;
alter index &index_name nomonitoring usage;
查看v$object_usage字典
4、通过优化sql消除temp表空间的膨胀
temp增长过快是由于disk sort过多造成的。可以通过对v$sqlarea或v$sql字典表进行监控,把需要优化的sql找出来,并优化它们。从根本上降低temp表空间膨胀的方法:设置合理的PGA或sort_area_size和优化引起disk sort的sql。

5、通过trace文件查看数据块中的数据

得到文件号,select file_id from dba_data_files;

得到块号,select dbms_rowid.rowid_block_number(rowid) from table_name;

dump块数据,alter system dump datafile file_id block block_number;

在udump目录下查看trace文件的内容。

对trace文件其中的一些信息做一些解释:

Fb:H是指行记录的头,L是指行记录的最后一列,F是指行记录的第一列。

Cc:列的数量。

Nrid:对于行链接或者行迁移来说的下一个row id的值。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/802415/viewspace-823057/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 分区表的使用
请登录后发表评论 登录
全部评论
  • 博文量
    78
  • 访问量
    843594