Oracle 死锁、指标汇总

一、Oracle RAC 架构 

       待~

"SYS"."V_$SESSION" 与 "SYS"."GV_$SESSION"的区别
    哪个列可以区分V$和GV$: 添加条件 S.INST_ID = USERENV('INSTANCE')

SELECT * FROM GV$SESSION S WHERE S.USERNAME = 'SCOTT' AND S.INST_ID = USERENV('INSTANCE')

    查看当前是第几个实例

SELECT USERENV('INSTANCE') FROM DUAL;

二、Oracle 死锁的查询与处理

-- 1.查看EVENT字段中是否出现row block,则表示此SQL被阻塞
SELECT'alter system disconnect session ''' || s.sid || ', ' || s.serial# || ''' immediate;'  kill_session,s.inst_id,s.event, --是否含有row blocks.blocking_session, -- 阻塞别人SQL的那条sids.last_call_et,a.sql_text,s.machine,s.osuser,s.program,s.module,s.action,s.username,a.sql_id,a.child_number,s.logon_time,s.service_name,a.sql_fulltext
FROMgv$session s,gv$sql a  
WHEREs.sql_id = a.sql_id (+)AND   s.sql_child_number = a.child_number (+)AND   s.status = 'ACTIVE'AND   s.username <> 'SYS'AND   s.last_call_et > 10AND   s.inst_id = a.inst_id
ORDER BY  s.last_call_et DESC; -- 2.知道堵塞别人的sid后,根据sid和inst_id 查找出serial#
select * from gv$session where sid=1522 and inst_id=2;-- 3.然后去对应的实例上,替换'sid,serial#'的sid与serial#,杀死阻塞别人的session
alter system disconnect session 'sid,serial#' immediate;-- 4.确认有没有杀干净,正常情况下结果为空,否则用步骤3再杀一次
select a.spid,b.sid,b.serial#,b.username,b.osuser,a.program from gv$process a,gv$session b where a.ADDR=b.PADDR and b.STATUS='KILLED'
and a.inst_id = b.inst_id;-- 5.通过步骤1的SQL_ID,确认有没有同一SQL_ID,但status是INACTIVE的,用步骤3杀掉
select * from gv$session a where a.SQL_ID='fmcuc8whh75ys';

三、Oracle查询实时运行语句及时间花费

--查询实时运行的语句
SELECT'ps -ef | grep '|| spid ps,b.sid,b.username,a.sql_id,b.inst_id,b.event,round(b.last_call_et / 3600) "ses_T(小时)",trunc( ( (a.elapsed_time / DECODE(executions,0,1,executions) ) / 1000000),2) "etime(s)",round(a.buffer_gets / DECODE(a.executions,0,1,a.executions) ) per_bu,a.executions,a.sql_fulltext fullsql,a.sql_text,a.disk_reads,a.buffer_gets,b.osuser,b.machine,b.program,a.module,a.cpu_time,a.last_load_time,a.last_active_time
FROMgv$sqlarea a, gv$session b, gv$process p
WHEREexecutions >= 0AND   b.status = 'ACTIVE'AND   a.hash_value = b.sql_hash_valueAND   a.sql_id = b.sql_idAND   b.paddr = p.addrAND   a.inst_id = b.inst_idAND   b.inst_id = p.inst_id
ORDER BY round(b.last_call_et / 3600) desc;--( cpu_time / DECODE(executions,0,1,executions) ) DESC,a.buffer_gets DESC,a.executions DESC,a.sql_id;

四、Oracle各项指标查询

--1.Oracle正在执行的语句和拼接杀进程
SELECT 'ALTER SYSTEM KILL SESSION ''' || A.SID ||',' ||A.SERIAL#||''' IMMEDIATE;' AS KILL_SESSION,A.SID,A.SERIAL#,A.USERNAME,A.INST_ID,A.MACHINE,A.PADDR,B.SPID,C.SQL_TEXT,C.SQL_FULLTEXT       
FROM GV$SESSION A, GV$PROCESS B, GV$SQLAREA C 
WHERE A.PADDR = B.ADDR AND A.SQL_HASH_VALUE = C.HASH_VALUE --AND A.OSUSER = '系统用户名'AND A.INST_ID = B.INST_ID AND B.INST_ID = C.INST_ID;--1.1 当前用户正在执行的语句
SELECTa.sid,a.serial#,a.paddr,a.username,a.inst_id,a.machine,A.SQL_ID,A.PREV_SQL_ID,nvl(a.sql_id,a.prev_sql_id) sql_id,b.sql_text,b.sql_fulltext,b.executions,b.first_load_time,b.last_load_time,b.last_active_time,b.disk_reads,b.direct_writes,b.buffer_gets
FROM            
gv$session a, gv$sql b
WHERE a.username = sys_context('USERENV','CURRENT_USER') -- 获取当前的用户
AND a.status = 'ACTIVE'
AND nvl(a.sql_id,a.prev_sql_id) = b.sql_id
AND a.inst_id = b.inst_id;--2.锁表语句和拼接杀进程
SELECT 'ALTER SYSTEM KILL SESSION ''' || A.SID ||',' ||A.SERIAL#||''' IMMEDIATE;' AS KILL_SESSION,B.SESSION_ID,A.SERIAL#,A.EVENT,             --是否含有row blockA.BLOCKING_SESSION,  -- 阻塞别人SQL的那条sidB.LOCKED_MODE,B.ORACLE_USERNAME,A.USER#,B.OS_USER_NAME,A.MACHINE,A.TERMINAL,C.SQL_TEXT,C.ACTION
FROM GV$SESSION A, GV$LOCKED_OBJECT B, GV$SQLAREA C 
WHERE A.SID = B.SESSION_ID AND A.PREV_SQL_ADDR = C.ADDRESSAND A.INST_ID = B.INST_ID AND B.INST_ID = C.INST_IDAND A.STATUS = 'ACTIVE' AND A.USERNAME <> 'SYS'
ORDER BY A.SID, A.SERIAL#;--3.最耗费CPU
SELECT  TRUNC(CPU_TIME / 1000000 / decode(executions, 0, 1, executions), 2) CPU_SEC,BUFFER_GETS,DISK_READS,SORTS,EXECUTIONS,SQL_TEXT,ROWS_PROCESSED
FROM GV$SQLSTATS ORDER BY CPU_SEC DESC;--4.汇总指标
SELECTt.inst_id,t.sql_id,t.last_active_time,t.sql_profile,         --如果该字段有值,就是按固化走执行计划t.plan_hash_value,t.child_number      "执行计划版本号",trunc( (t.cpu_time / t.executions / 1000000),4)  "每次cpu时间",trunc( (t.elapsed_time - t.cpu_time) / t.executions / 1000000,4) "每次等待时间",t.executions        "总执行次数",round(t.rows_processed / t.executions,2) "平均返回行数",trunc(t.elapsed_time / t.executions / 1000000,4) "每次执行(秒)",trunc( (t.buffer_gets / t.executions / 1000000),4) "每次逻辑读",trunc( (t.disk_reads / t.executions / 1000000),4) "每次物理读",trunc( (t.cluster_wait_time / t.executions / 1000000),4) "每次集群等待",trunc( (t.user_io_wait_time / t.executions / 1000000),4) "每次io等待",trunc( (t.application_wait_time / t.executions / 1000000),4) "每次应用等待",trunc( (t.concurrency_wait_time / t.executions / 1000000),4) "每次并发等待",t.first_load_time   "首次硬解析时间",t.last_load_time    "上次硬解析时间",t.module,t.action,t.parsing_schema_name,trunc(t.elapsed_time / 1000000,4) "执行时间(秒)",trunc(t.cpu_time / 1000000,4) "cpu时间",t.parse_calls       "总解析次数",t.loads             "硬解析次数",t.buffer_gets,t.cluster_wait_time,t.user_io_wait_time,t.application_wait_time,t.concurrency_wait_time,t.plan_hash_value,t.sql_fulltextFROMgv$sql tWHEREt.executions > 0ORDER BYt.cpu_time DESC;--5.最耗缓存
SELECTsql_fulltext   sql,buffer_gets,executions,buffer_gets / executions "Gets/Exec",hash_value,address,last_active_time
FROMv$sqlarea
WHEREbuffer_gets > 10000
ORDER BYbuffer_gets DESC;--6.最多物理读取
SELECTsql_fulltext   sql,disk_reads,executions,disk_reads / executions "Reads/Exec",hash_value,address,last_active_time
FROMv$sqlarea
WHEREdisk_reads > 1000
ORDER BYdisk_reads DESC;--7.最多执行
SELECTsubstr(sql_text,1,40) sql,sql_fulltext,executions,rows_processed,rows_processed / executions "Rows/Exec",hash_value,address,last_active_time
FROMv$sqlarea
WHEREexecutions > 100
ORDER BYexecutions DESC;-- 8.最耗内存
SELECTsubstr(sql_text,1,40) sql,sharable_mem,executions,hash_value,address,last_active_time
FROMv$sqlarea
WHEREsharable_mem > 1048576
ORDER BYsharable_mem DESC;--9.阻塞等待语句
SELECTblocksession.sid          AS block_session_sid,blocksession.serial#      AS block_session_serial#,blocksession.username     AS block_session_username,blocksession.osuser       AS block_session_osuser,blocksession.machine      AS block_session_machine,blocksession.status       AS block_session_status,blockobject.object_name   AS blocked_table,waitsession.sid           AS wait_session_sid,waitsession.serial#       AS wait_session_serial#,waitsession.username      AS wait_session_username,waitsession.osuser        AS wait_session_osuser,waitsession.machine       AS wait_session_machine,waitsession.status        AS wait_session_status
FROMv$lock blocklock,v$lock waitlock,v$session blocksession,v$session waitsession,v$locked_object lockedobject,dba_objects blockobject
WHEREblocklock.block = 1AND blocklock.sid != waitlock.sidAND blocklock.id1 = waitlock.id1AND blocklock.id2 = waitlock.id2AND blocklock.sid = blocksession.sidAND waitlock.sid = waitsession.sidAND lockedobject.session_id = blocksession.sidAND lockedobject.object_id = blockobject.object_id;    --10.失效索引查询与重建    
SELECT'alter index '|| a.index_name|| ' rebuild online;',a.*
FROMuser_indexes a
WHEREa.status <> 'VALID'AND a.index_name NOT LIKE '%$$';

参考资料:

https://www.cnblogs.com/shouke/p/17437893.html

https://docs.oracle.com/database/121/REFRN/GUID-2B9340D7-4AA8-4894-94C0-D5990F67BE75.htm#REFRN30246

https://docs.oracle.com/database/121/REFRN/GUID-09D5169F-EE9E-4297-8E01-8D191D87BDF7.htm#REFRN30259

https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/V-SESSION.html

https://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/V-LOCKED_OBJECT.html#GUID-3F9F26AA-197F-4D36-939E-FAF1EFD8C0DD

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SimplifyRODataLoads - 优化阅读笔记

// 只支持 X86 static cl::opt<bool> SimplifyRODataLoads("simplify-rodata-loads",cl::desc("通过用相应节中找到的常数替换内存操作数&#xff0c;简化来自只读节的加载"),cl::cat(BoltOptCategory));测试用例&#xff1a; ./build4/bin/llvm-li…

如何在Linux部署Docker Registry本地镜像仓库并实现无公网IP远程连接

文章目录 1. 部署Docker Registry2. 本地测试推送镜像3. Linux 安装cpolar4. 配置Docker Registry公网访问地址5. 公网远程推送Docker Registry6. 固定Docker Registry公网地址 Docker Registry 本地镜像仓库,简单几步结合cpolar内网穿透工具实现远程pull or push (拉取和推送)…

Linux/Ubuntu/Debian基本命令:文本操作

Linux系统真的超级好用&#xff0c;免费&#xff0c;有很多开源且功能强大的软件。尤其是Ubuntu&#xff0c;真的可以拯救十年前的老电脑。 下面是用于在命令行界面&#xff08;Terminal&#xff09;中进行文本操作的键盘快捷键&#xff0c; 这些快捷方式对于高效的文本编辑非常…

为什么拥有C语言基础的人,依然学不会C++?

为什么拥有C语言基础的人&#xff0c;依然学不会C? 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C语言 的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&am…

Vue+OpenLayers7入门到实战:OpenLayers加载必应地图(BingMap)

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7入门到实战 前言 本章介绍如何使用OpenLayers7在地图上如何加载必应地图(BingMap)。 需要提前到必应开发者中心申请对应的地图访问api key才可以加载地图。 二、依赖和使用 "ol": "7.5.2"使用npm安装…

使用uni-app开发并申请微信小程序的流程

使用uni-app开发并申请微信小程序的流程 准备阶段 申请微信小程序账号&#xff1a; 登录微信公众平台&#xff08;mp.weixin.qq.com&#xff09;&#xff0c;按照指引注册并申请一个微信小程序账号。需要提供相关的企业或个人资质&#xff0c;以及未绑定过微信开放平台的邮箱…

docker引擎

目录 一、Docker引擎发展历程 二、docker引擎架构 三、docker引擎分类 四、docker引擎安装 4.1安装条件 4.2 使用rpm存储库安装 4.2.1设置存储库 4.2.2安装docker引擎 4.2.3启动docker,并设置docker开机自启动 五、卸载docker引擎 5.1.卸载 Docker 引擎、CLI、conta…

如何使用vscode创建Node.js服务并结合内网穿透实现远程访问本地服务

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

【C语言】函数与递归算法(附经典例题代码)

函数 ○ 一个函数只能完成一个功能. ○ 定义函数&#xff1a; 返回值类型 函数名 (参数列表&#xff09;{ 函数体 } ○ 定义函数的作用 &#xff1a;代码复用 模块化开发 ○ 函数是不能嵌套定义的,但能嵌套调用.…

当代计算机语言占比分析

在当今快速发展的科技领域&#xff0c;计算机语言作为程序员的工具之一&#xff0c;扮演着至关重要的角色。随着技术的不断演进&#xff0c;各种编程语言层出不穷&#xff0c;但在实际开发中&#xff0c;哪些计算机语言占据主导地位&#xff1f;本文将对当代计算机语言的占比进…

使用API有效率地管理Dynadot域名,使用API设置域名隐私保护

关于Dynadot Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮…

成员函数版本实现算术运算符的重载 全局函数版本实现算术运算符的重载

#include <iostream>using namespace std; class Per { private:friend const Per operator-(const Per &L,const Per &R);int a;int b; public:Per(){cout<<"无参构造"<<endl;}Per(int a,int b):a(a),b(b){cout<<"有参构造&qu…

26-1 SQL 注入攻击 - delete注入

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、注入原理: 对于后台来说,delete操作通常是将对应的id传递到后台,然后后台会删除该id对应的数据。 如果后台没有对接收到的 id 参数进行充分的验证和过滤,恶意用户可能会…

linux系统对于docker容器的监控

容器监控 容器监控原生命令操作问题 容器监控三剑客CAdvisorInfluxDBGranfana compose编排监控工具新建目录创建CIG.yml文件启动docker-compose测试 容器监控 CAdvisorInfluxDBGranfana 原生命令 操作 docker stats问题 通过docker stats命令可以很方便的看到当前宿主机上所…

CSS选择器-一文搞懂CSS选择器

CSS选择器 一、简单选择器和权值1. 通配符选择器 &#xff08;权值 - 0&#xff09;2. 标签选择器 &#xff08;权值 - 1&#xff09;3. 类选择器和伪类 &#xff08;权值 - 10 &#xff09;4. ID选择器 &#xff08;权值 - 100&#xff09;-精确制导行内样式 - 它不是选择器-权…

Cassandra 集群安装部署

文章目录 一、概述1.官方文档2. 克隆服务器3.安装说明4.安装准备4.1.安装 JDK 114.2.安装 Python4.3.下载文件 二、安装部署1.配置 Cassandra2.启动 Cassandra3.关闭Cassandra4.查看状态5.客户端连接服务器6.服务运行脚本 开源中间件 # Cassandrahttps://iothub.org.cn/docs/m…

3.2 Beautiful Soup 的使用

目录 一、Beautiful Soup 的简介 二、解析器 三、基本使用 四、节点选择器 1 选择元素 2 获取名称、属性、文本内容 五、方法选择器 1 find_all 传入 name 节点名 传入 attrs 属性 传入 text 2 find 六、CSS 选择器 1 实例 2 获取属性 3 获取文本 七、结语 一…

从政府工作报告探计算机行业发展(在医疗健康领域)

从政府工作报告探计算机行业发展 政府工作报告作为政府工作的全面总结和未来规划&#xff0c;不仅反映了国家整体的发展态势&#xff0c;也为各行各业提供了发展的指引和参考。随着信息技术的快速发展&#xff0c;计算机行业已经成为推动经济社会发展的重要引擎之一。因此&…

暴雨信息:可持续转型更需要“以人为本”

数字化正在开启新的商业模式和价值流&#xff0c;为企业与组织带来巨大收益。其中&#xff0c;“人 (People)”这一因素至关重要。 提供更好的工作与生活体验&#xff0c;应对人口老龄化、劳动力短缺等挑战。对于企业而言&#xff0c;解决这些问题既是社会责任&#xff0c;也是…

代码随想录算法训练营第五十五天| 583. 两个字符串的删除操作 、72. 编辑距离

文章目录 1.两个字符串的删除操作2.编辑距离 1.两个字符串的删除操作 给定两个单词 word1 和 word2&#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步可以删除任意一个字符串中的一个字符。 示例 1&#xff1a; 输入: word1 “sea”, word2 “eat” 输出: 2 …