Oracle中查询和定位数据库问题的SQL语句

时间:2022-09-14 07:31:38

--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. &ast;&ast;&ast;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. android 入门-基础了解

    strings.xml – 文字資源. colors.xml – 顏色資源. dimens.xml – 尺寸資源. arrays.xml – 陣列資源. styles.xml – 樣式資源. #RGB ...

  2. h5 canvas 小球移动

    h5 canvas 小球移动 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  3. 为ecshop红包增加”转赠”功能

    ecshop促销中使用红包激励用户购物,要想炒热活动,红包就需要有物以稀为贵的感觉.有人求有人送,这样红包之间的转赠有助于拉动第二梯队的顾客.但是如果已经把红包添加到自己的账户了怎么办?如果ecsho ...

  4. C&num; winform线程的使用 制作提醒休息小程序(长时间计算机工作者必备)

    最近发现日常的工作中,经常因为敲代码而忘记了休息,晚上眼睛特别的累. 并且经常长时间看着显示器,对眼睛一定是不好的,所以今天开发了一个小程序,用于提醒休息. 下面先看看运行效果: 1.程序启动后,后台 ...

  5. C&num; 类型的创建

    类 类是最普通的引用类型,最简单的声明如下所示: class YourNameClass { } 更复杂的类可以拥有以下这些选项: 置于关键字class前面的:属性(attributes)与class ...

  6. 并发的核心:CAS 是什么?Java8是如何优化 CAS 的?

    大家可能都听说说 Java 中的并发包,如果想要读懂 Java 中的并发包,其核心就是要先读懂 CAS 机制,因为 CAS 可以说是并发包的底层实现原理. 今天就带大家读懂 CAS 是如何保证操作的原 ...

  7. Mac本地搭建kubernetes环境

    前言:之前在windows上面的虚拟机上面手工搭建了kubernetes集群,但是环境被破坏了,最近想要继续学习k8s,手工搭建太费事,所以选择了minikube,完全能够满足个人的需求,其实在Win ...

  8. 架构师技能图谱 V1&period;2

    系统架构能力 基本理论 扩展性设计 可用性设计 可靠性设计 一致性设计 负载均衡设计 过载保护设计 灾难恢复和备份 协议设计 二进制协议 文本协议 接入层架构设计 DNS 轮询 动静态分离 静态化 反 ...

  9. 自学Java第三个星期的总结

    在这一周里我在网上学习了java的分支结构.Number&Matht类.Character类.string类.String Buffer和String Builder类以及数组和日期时间等有关 ...

  10. 守护线程&lpar;Daemon Thread&rpar;

    在Java中有两类线程:用户线程 (User Thread).守护线程 (Daemon Thread). 所谓守护 线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称 ...