alter system set timed_statistics=true;SELECT a.sid,b.spid,status,
       a.program,a.terminal,a.osuser,VALUE/60/100 mins
FROM V$session a,
     v$process b,
     v$sesstat c
WHERE c.statistic#=12
AND c.sid=a.sid
AND a.paddr=b.addr
看一下是哪个进程

解决方案 »

  1.   

    如果总是100%那就需要调优了。给你个参考:
    (1).init配置文件,新机器上的配置文件是否已经按照你的机器资源的状况作过调整,你可以使用旧机器上的配置文件做对比,甚至可以直接使用旧机器的配置文件做测试。
    (2).sga区域的划分,建议你将sga的大小设定为内存的一半或一半略大一些,sga的其他内存分区也要做相应的调整。
    (3).新机器的表空间的大下,特别是rollback表空间和system表空间的大小,此外你的业务数据是否单独建立了自己的表空间,这是很重要的。
    (4).检查你的template表空间是否与system表空间和业务数据表空间分开了,对于大量数据处理的复杂查询需要一个独立的template表空间。
    (5).检查你的rollabck segment的大小和个数的设置,如果rollback segment太小,会出现速度很慢的情况。
    (6).新机器的索引是否全部建立,检查你的数据库设计文档或旧机器的数据库,那里应该有你的数据库全部索引,对应他们分别创建起来。
    (7).如果数据量比较大,数据修改频率较高,需要为索引单独建立表空间,这样会提高效率。
    (8).如果上述都不能起作用,建议你在sqlplus中单步执行你的复杂的查询,以确定引起速度缓慢的具体原因和具体的表,如果有必要,可以重新导入某个表(此表需要先导出)。我曾遇到过由于oracle内部错误导致的上述问题,但那是由于将低版本的数据导入高版本时产生的