--1)查询和定位数据库问题的SQL语句
--Oracle常用性能监控SQL语句.sql

--1查询锁表信息

select vp.SPID,
vs.P1,
vs.P1RAW,
vs.P2,
vs.EVENT,
vsql.SQL_TEXT,
vsql.SQL_FULLTEXT,
vsql.SQL_ID
from v$session vs, v$sql vsql, v$process vp
where vs.SQL_ID = vsql.SQL_ID
and vs.PADDR = vp.ADDR
and vs.WAIT_CLASS <> 'Idle'
order by vs.EVENT

select vp.spid,
lo.session_id,
lo.oracle_username,
lo.os_user_name,
ao.object_name
from v$process vp, v$session vs, v$locked_object lo, all_objects ao
where vp.addr = vs.paddr
and vs.process = lo.process
and lo.object_id = ao.object_id

--2解锁被锁的表(sid,serial#)
alter system kill session '324,50855';

--3当前活跃会话历史表
select *
from dba_hist_active_sess_history
where session_id = 324 --sid
order by sample_time desc;

--2)索引优化

--开启监控会话的语句
alter session set sql_trace = true;
dbms_system.set_sql_trace_in_session(sid, serial#, true);
dbms_session.set_sql_trace(true);

--索引分析
analyze index act_idx_task_procinst validate structure;

--索引使用分析 lfPercent>20 需要重建索引
select (idx.del_lf_rows_len / idx.lf_rows_len) * 100 as lfPercent
from index_stats idx;

--索引重建
alter index act_idx_task_procinst rebuild;

---ACT_HI_TASKINST (TRUNC(START_TIME_))

--获取sql_id
select vs.sql_id, vs.sql_fulltext, vs.runtime_mem
from v$sqlarea vs
where vs.sql_fulltext like '%papc_bdqd_orders%'
order by vs.last_load_time desc;

--根据SQL_ID得到SQL语句的执行计划
select plan_table_output
from table(dbms_xplan.display_cursor('0sb2f19wmm82u', '0', 'all'));

--3)分析sql性能问题需要关注的表
--根据SQL语句中的条件字段,确定每一项条件中返回的记录数有多少,
--做表连接时应该按照尽量用记录数(或者中间结果集)小的表作为驱动表的原则

--查询表信息 是否进行了收集统计信息
--表信息
select dt.owner, dt.table_name, dt.last_analyzed, dt.num_rows, dt.blocks
from dba_tables dt
where dt.owner = 'papcdata'
and dt.table_name = 'papc_bse_city';

--查询索引信息
--最理想的情况 CLUSTERING_FACTOR = 表的数据块总数 BLOCKS
--表的索引信息
select di.index_name,
di.index_type,
di.blevel,
di.leaf_blocks,
di.last_analyzed,
di.distinct_keys,
di.clustering_factor
from dba_indexes di
where di.owner = 'papcdata'
and di.table_name = 'papc_bse_city';

--查询表的列上使用了索引信息
select dic.index_name, dic.column_name, dic.column_position
from dba_ind_columns dic
where dic.table_owner = 'papcdata'
and dic.table_name = 'papc_bse_city';

--查询表中使用相关列的信息1
select dtcs.column_name,
dtcs.num_distinct,
dtcs.num_nulls,
dtcs.density,
dtcs.low_value,
dtcs.high_value,
dtcs.last_analyzed,
dtcs.histogram
from dba_tab_col_statistics dtcs
where dtcs.owner = 'papcdata'
and dtcs.table_name = 'papc_bse_city';

--查询表中使用相关列的信息2
select dtc.column_name,
dtc.num_distinct,
dtc.num_nulls,
dtc.density,
dtc.low_value,
dtc.high_value,
dtc.histogram,
dtc.last_analyzed
from dba_tab_columns dtc
where dtc.owner = 'papcdata'
and dtc.table_name = 'papc_bse_city';

/*+ INDEX(image_for_policy, IX_IMAGE_FOR_POLICY_CODE) */
exec dbms_stats.GATHER_TABLE_STATS(ownname => 'LIFEDATA',
tabname => 'IMAGE_FOR_POLICY',
estimate_percent => 100,
method_opt => 'FOR COLUMNS DOCUMENT_CODE SIZE 1');

select sql_id,
round(cpu_time / executions / 1000000, 2) cpu_time_s,
round(elapsed_time / executions / 1000000, 2) elapsed_time_s,
round(buffer_gets / executions, 2) buffer_gets,
executions,
parsing_user_id,
round(ROWS_PROCESSED / executions, 2) ROWS_PROCESSED
from v$sql
where sql_id in ('c8t01f69awtw9', 'f0kr8h3dq7dxm');

--数据缓冲命中率 Buffer Hit% < 95% db_cache_size 需要调整,出现db file sequential read 内存排序的占比 In - memory Sort% <> 100% 需调整PGA的大小
--共享池中sql解析的命中率 Library Hit% < 95% 加大共享池,使用绑定变量 修改cursor_shring 软解析占比 Soft Parse% < 95% 需要使用绑定变量 < 80%SQL 没被重用 执行次数占分析次数的百分比 Execute to Parse %值偏小,说明软、硬解析比例过大、快速软解析比例小

Oracle中查询和定位数据库问题的SQL语句的更多相关文章

  1. 数据库中查询json 样式的值的sql语句

    参考:http://www.lnmp.cn/mysql-57-new-features-json.html 方式一: 可以查到json中的Key:value SELECT * FROM EDI.edi ...

  2. ***mysql中查询今天、昨天、上个月sql语句

    今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天Select * FROM 表名 Where TO_DAYS( NOW( ) ...

  3. Oracle中scott用户下基本表练习SQL语句

    --选择部门中30的雇员SELECT * from emp where DEPTNO=30;--列出所有办事员的姓名.部门.编号--采用内连接方式,也就是等值链接,也是最常用的链接SELECT ena ...

  4. oracle 实时查询最耗CPU资源的SQL语句

    1. 先通过top命令查看产用资源较多的spid号 2.查询当前耗时的会话ID,用户名,sqlID等: select sid,serial#,machine,username,program,sql_ ...

  5. Oracle中的表构造导出到word Sql语句

    select * from ( SELECT t1.Table_Name AS "表名称", t3.comments AS "表说明",  t1.Column_ ...

  6. oracle 中 某个字段的长度不够的sql 语句

    alter  table 表名 modify(字段名  类型)  之前字段type 的长度为50 现在改为100 举例 : alter table psp_model modify(type  var ...

  7. Oracle中统计block空闲情况的一个SQL语句

    此SQL来自网络,地址见具体内容.介绍表空间回收原理的文章参考此链接: https://oracle-base.com/articles/misc/reclaiming-unused-space#sh ...

  8. Oracle中查询当前数据库中的所有表空间和对应的数据文件语句命令

    Oracle中查询当前数据库中的所有表空间和对应的数据文件语句命令 ------------------------------------------------------------------ ...

  9. ORACLE中查询语句的执行顺及where部分条件执行顺序测试

    Oracle中的一些查询语句及其执行顺序 原文地址:https://www.cnblogs.com/likeju/p/5039115.html 查询条件: 1)LIKE:模糊查询,需要借助两个通配符, ...

随机推荐

  1. bzoj3569

    线性基 非常高端 强制在线动态图 我们先搞出一个dfs树,然后所有非树边都和树边形成一个环.我们考虑什么情况会不连通,当且仅当树边和dfs序大于当前点的返祖边都被断掉才不连通,那么我们给每个非树边赋一 ...

  2. 机器学习之PCA主成分分析

    前言            以下内容是个人学习之后的感悟,转载请注明出处~ 简介 在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性.人们自然希望变量个数较少而得到的 信息较多.在很 ...

  3. JQuery扩展插件Validate—5添加自定义验证方法

    从前面的示例中不难看出validate中自带的验证方法足以满足一般的要求,对于特别的要求可以使用addMethod(name,method,message)添加自定义的验证规则,下面的示例中添加了一个 ...

  4. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bireportSqlSessionFactory' defined in URL

    报错如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'birepo ...

  5. 技术胖Flutter第四季-22页面跳转并返回数据

    视频地址: https://www.bilibili.com/video/av35800108/?p=23 博客地址: https://jspang.com/post/flutter4.html#to ...

  6. Validtion

    今天在使用Validation框架实现验证时,出现以上的错误.查询资料后发现“validation-config.dtd”这个文件没有导入自己的工程,才会出现这样的错误. 将从文件导入后果然解决了问题 ...

  7. SPOJ CIRU The area of the union of circles (计算几何)

    题意:求 m 个圆的并的面积. 析:就是一个板子题,还有要注意圆的半径为0的情况. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024 ...

  8. JavaWeb学习——获取类路径下的资源

    对于JavaWeb而言,获取类路径下的资源,就是获取classes目录下的资源. 获取资源的方式有两种,利用Class或ClassLoader. Class类的getResourceAsStream( ...

  9. 项目中常用的js骚操作

    //打开网址window.open("http://www.runoob.com"); //判断是否为url var url = $("#url").val() ...

  10. Lightoj1122 【数位DP】

    题意: 给你m个数,让你在里面挑n个组合,保证位数相差不超过2,求能够组合多少种情况: 思路: dp[i][j]代表第i个结尾为j的方案数. #include<bits/stdc++.h> ...