oracle性能查询

项目运维过程中有关项目性能相关查询

1:查询某句sql的执行次数

SELECT SQL_ID, SQL_TEXT,FIRST_LOAD_TIME,last_load_time, EXECUTIONS
FROM V$SQLAREA
WHERE SQL_TEXT LIKE '%m_account%'

 通过执行次数对比,可以看到项目优化前后的效果。,项目优化过程发现,对于manytomany的jpa表关联关系设置,
没有必要的话设置成lazy加载,即时加载会执行表关联查询,发现项目有一个无用的查询语句平均每天执行2000W次,太可怕了。

2:查询某句sql占用cpu的时间

select * from (select sql_text,sql_id,cpu_time from v$sql order by cpu_time desc) where rownum<=10
AND sql_text like '%from m_%'
order by
rownum asc ;

定位程序中的sql,分析是否可以优化,减少cpu使用时间

3:查询会造成死锁的表

select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode,
SESS.machine
from v$locked_object lo,
dba_objects ao,
v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid;
select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode,
SESS.machine
from v$locked_object lo,
dba_objects ao,
v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid;

debug项目,可以看到哪个表操作会有死锁产生,这个死锁在事务提交可能会处理,如果程序有不合理的地方,严重会导致死锁无法释放

系统崩溃,需要重启oracle. 在优化项目过程中,发现jpa关联表操作问题,新增一条表1记录,设置关联表2,那么表2的修改应该在关联表1之前

完成,观察程序执行过程发现,如果表2在关联表1后有修改操作,会导致表1被锁。

4:清空共享池

alter system flush shared_pool 

方便对比优化前后结果

找到那个感觉 就算打开了那个脑洞

本文来自博客园,作者:xiao~xiao,转载请注明原文链接:https://www.cnblogs.com/angin-iit/p/13038379.html

原文地址:https://www.cnblogs.com/angin-iit/p/13038379.html