性能测试 数据库优化调试之oracle10046事件跟踪

性能测试 数据库优化调试之oracle10046事件跟踪 最近在测试一个项目的过程中,发现当数据量达到百万条级别的时候,ORACLE数据库CPU达到100%,并且长时间的CPU100%导致Linux OS 保护性自动重启。就冲CPU100%,很明显的肯定是劣质的SQL语句执行造成的,那么如何入手解决SQL语句的问题呢?使用oracle 10046事件跟踪是个不错的选择。 下面就拿此次Linux环境下的ORACLE性能优化调试为例子: * 首先,在Linux上,找到ORACLE正在执行的PID。方法是top命令或者ps命令,找到活动比较频繁,CPU占用高,内存也占用比较高的PID。比如PID=2166 * 接着,打开sqlplus,需要使用sysdba角色用户登录。 SQL> select b.spid,a.sid,a.serial#,a.machine from v$session a,v$process b where a.paddr = b.addr SPID SID SERIAL# ---------------------------------------------------------------- 2166 152 213 2286 159 223 2316 156 203 ..... 从结果集中找到SPID=2166 这行数据 * 启动10046 跟踪 SQL>execute sys.dbms_system.set_ev(152,213,10046,1,''); procedure successfully completed. --set_ev函数中的第4个参数1代表开启跟踪。 * 对被测试的系统进行操作比如CRUD等。如果手头有自动化测试工具,可以适当的给系统加加压。 * 关闭10046事件跟踪 SQL>execute sys.dbms_system.set_ev(152,213,10046,0,''); procedure successfully completed. --set_ev函数中的第4个参数0代表关闭跟踪。 * 获取trc文件,一般是oracle的在udump目录下,trc文件名为ora_SPID名称.trc(如ora_2166.trc) * 执行oracle的tkprof命令,将ora_2166.trc转化为文本文件。 tkprof ora_2166.trc ora_2166.sql * 打开trc ora_2166.sql文件可以看到sql执行语句以及sql执行占用CPU的时间、执行计划等。 * 最后找出占用CPU比较高的 sql语句,进行优化(表结构优化、sql语句优化等)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值