甲骨文系列脚本1:救命的应急会话处理脚本

  

<强>背景:数据库出现死锁会话飙升的情况通过下列预计可以快速定位常见的锁,快速干预处理,恢复数据库性能。通过下列语句长期运维? T以上数据库?个,屡试不爽。

  

<强>一、查询出死锁的SID等信息
选择l。session_id sid, s.serial #, l.locked_mode、l.oracle_username l.os_user_name,
s.machine, s.terminal o.object_name, s。logon_time
从v $ locked_object l, all_objects o、v $会话s
在l。object_id=o。object_id和l。session_id=id
命令sid, s.serial #;

  

<强>二,根据SID定位阻塞语句
/ + PUSH_SUBQ选择/
Command_Type Sql_Text, Sharable_Mem, Persistent_Mem, Runtime_Mem,排序,Version_Count, Loaded_Versions, Open_Versions, Users_Opening,处决,Users_Executing,负载,First_Load_Time,失效,Parse_Calls, Disk_Reads, Buffer_Gets, Rows_Processed, SYSDATE Start_Time,
SYSDATE Finish_Time,“在”| |地址Sql_Address ' N '状态从V $ sqlarea

地址=(选择Sql_Address V $会话,SID=?);

  

<强>三、杀死锁
——杀死锁(数据库层次,适合不太紧急场合)
选择“更改系统杀死会话”| |科(39)| | t2.sid | |”、“| | t2.serial # | |科(39)| |”立即;“
从v $ locked_object t1, t2
v $会话t1.session_id=t2。sid order by t2.logon_time

  

——杀死锁(操作系统层次,适合紧急场合)
选择“kill - 9”| | t3。spid
从v $ locked_object t1, v会话t2美元,美元过程t3
t1.session_id=t2。席德,t2。paddr=t3。addr order by t2.logon_time

  

<强>附日常会话查询语句:
——所有会话信息
从v $会话选择
Select Count (
) v $会话
——会话关键信息
选择用户名、状态、状态机、logon_time v $会话命令用户名、机

甲骨文系列脚本1:救命的应急会话处理脚本