[20220531]模拟inactive session等待事件.txt --//上个星期做了生产系统inactive session等待事件的探究.猜测可能是防水墙审计一些应用无法登陆,通过job kill这些回话导致的情 --//况.有许多问题不是很理解,在测试环境模拟看看. 1.环境: SCOTT@book> @ ver1 PORT_STRING VERSION BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production SYS@book> @ ev_name "inactive session" EVENT# EVENT_ID NAME PARAMETER1 PARAMETER2 PARAMETER3 WAIT_CLASS_ID WAIT_CLASS# WAIT_CLASS ---------- ---------- ---------------------------------------- -------------------- -------------------- -------------------- ------------- ----------- --------------- 422 3757863830 inactive session session# waited instance|serial 1893977003 0 Other 2.建立测试脚本: $ cat ee1.txt --//select count(*) from emp,all_objects,all_objects; select /*+ test &&1 */ count(*) from emp,all_objects,all_objects; --//host sleep &1 quit --//注:采用host sleep &1测试不出来或者讲问题不能再现。我就不贴出测试host sleep &1的结果了. $ cat ee2.txt set head off feedback off select sid,serial# from v$session where username='SCOTT' and module='SQL*Plus'; set head on feedback on quit $ cat ee3.txt --//alter system kill session '&&1,&&2' ; alter system kill session '&&1,&&2' immediate; quit --//简单说明:使用ee1.txt 脚本启动多个回话. ee2.txt 脚本收集要kill session的sid,serial#. --//ee3.txt执行kill session. 注意测试存在两个方式没有immediate以及有immediate的情况. 3.测试1: --//先测试采用immediate kill session的情况。 --//同时启动10个回话. $ seq 10 | xargs -IQ -P 10 sqlplus -s -l scott/book @ee1.txt Q zzdate sqlplus -s -l / as sysdba @ ee2.txt | xargs -IQ -P 10 echo sqlplus -s -l / as sysdba @ee3.txt Q | bash zzdate SYS@book> @ wcy trunc(sysdate)+09/24+29/1440+17/86400 trunc(sysdate)+09/24+29/1440+48/86400 "event='inactive session'" -- Display ASH Wait Chain Signatures script v0.6 BETA by Tanel Poder ( http://blog.tanelpoder.com ) no rows selected --//可以看出采用immediate kill session 不会出现inactive session 等待事件。 4.测试2: --//修改ee3.txt 脚本,不采用immediate参数。 $ cat ee3.txt alter system kill session '&&1,&&2' ; --//alter system kill session '&&1,&&2' immediate; quit --//同时启动10个回话.session 1: $ seq 10 | xargs -IQ -P 10 sqlplus -s -l scott/book @ee1.txt Q --//session 2: SYS@book> select sid,serial#,sql_id from v$session where username='SCOTT' and module='SQL*Plus'; SID SERIAL# SQL_ID ---------- ---------- ------------- 53 47 7zu90y1p0hgc5 70 15 1ntbg5gvxqpfd 104 9 11m3ncc7m3yx8 122 9 fa54u9k0r8dfn 138 9 4309m1zs0dt31 154 9 cqq7gtq45wxxj 172 7 apqywqcrmj20g 189 7 9wbujw07bx159 206 7 37b3pyat08r6m 223 7 d91dc8j7j5w99 10 rows selected. --//这样10个session执行的sql语句sql_id不同。 zzdate sqlplus -s -l / as sysdba @ ee2.txt | xargs -IQ echo sqlplus -s -l / as sysdba @ee3.txt Q | bash --//注意xargs 没有-P 10参数。 zzdate --//session 2: SYS@book> @ wcy trunc(sysdate)+09/24+37/1440+19/86400 trunc(sysdate)+09/24+37/1440+58/86400 "event='inactive session'" -- Display ASH Wait Chain Signatures script v0.6 BETA by Tanel Poder ( http://blog.tanelpoder.com ) %This SECONDS AAS #Blkrs WAIT_CHAIN FIRST_SEEN LAST_SEEN ------ ---------- ---------- ------ ------------------------------------------------------------------- ------------------- ------------------- 10% 1 0 1 -> 104,9,@1=>240,17,@1=>inactive session -> [idle blocker 1,104,9] 2022-05-31 09:37:44 2022-05-31 09:37:44 10% 1 0 1 -> 138,9,@1=>53,51,@1=>inactive session -> [idle blocker 1,138,9] 2022-05-31 09:37:46 2022-05-31 09:37:46 10% 1 0 1 -> 154,9,@1=>53,53,@1=>inactive session -> [idle blocker 1,154,9] 2022-05-31 09:37:47 2022-05-31 09:37:47 10% 1 0 1 -> 206,7,@1=>53,59,@1=>inactive session -> [idle blocker 1,206,7] 2022-05-31 09:37:50 2022-05-31 09:37:50 10% 1 0 1 -> ,,@=>53,61,@1=>inactive session 2022-05-31 09:37:51 2022-05-31 09:37:51 10% 1 0 1 -> ,,@=>53,55,@1=>inactive session 2022-05-31 09:37:48 2022-05-31 09:37:48 10% 1 0 1 -> ,,@=>240,13,@1=>inactive session 2022-05-31 09:37:42 2022-05-31 09:37:42 10% 1 0 1 -> ,,@=>53,49,@1=>inactive session 2022-05-31 09:37:45 2022-05-31 09:37:45 10% 1 0 1 -> 70,15,@1=>240,15,@1=>inactive session -> [idle blocker 1,70,15] 2022-05-31 09:37:43 2022-05-31 09:37:43 10% 1 0 1 -> 189,7,@1=>53,57,@1=>inactive session -> [idle blocker 1,189,7] 2022-05-31 09:37:49 2022-05-31 09:37:49 10 rows selected. SYS@book> @ashtop event,sid,serial "event='inactive session'" trunc(sysdate)+09/24+37/1440+19/86400 trunc(sysdate)+09/24+37/1440+58/86400 Total Distinct Distinct Seconds AAS %This EVENT SID SERIAL FIRST_SEEN LAST_SEEN Execs Seen Tstamps --------- ------- ------- ---------------- ---- ---------- ------------------- ------------------- ---------- -------- 1 .0 10% | inactive session 53 49 2022-05-31 09:37:45 2022-05-31 09:37:45 1 1 1 .0 10% | inactive session 53 51 2022-05-31 09:37:46 2022-05-31 09:37:46 1 1 1 .0 10% | inactive session 53 53 2022-05-31 09:37:47 2022-05-31 09:37:47 1 1 1 .0 10% | inactive session 53 55 2022-05-31 09:37:48 2022-05-31 09:37:48 1 1 1 .0 10% | inactive session 53 57 2022-05-31 09:37:49 2022-05-31 09:37:49 1 1 1 .0 10% | inactive session 53 59 2022-05-31 09:37:50 2022-05-31 09:37:50 1 1 1 .0 10% | inactive session 53 61 2022-05-31 09:37:51 2022-05-31 09:37:51 1 1 1 .0 10% | inactive session 240 13 2022-05-31 09:37:42 2022-05-31 09:37:42 1 1 1 .0 10% | inactive session 240 15 2022-05-31 09:37:43 2022-05-31 09:37:43 1 1 1 .0 10% | inactive session 240 17 2022-05-31 09:37:44 2022-05-31 09:37:44 1 1 10 rows selected. --//sid=53,注意serial的变化+2.为什么会出现这样的变化。开始以为我没人登录了,仔细看前面的执行,实际上瞬间开启了10个kill session的进程。 --//注意xargs 我没有使用-p 参数,也就是在kill 会话不带immediate时影响了阻塞了后续登录。 sqlplus -s -l / as sysdba @ ee2.txt | xargs -IQ echo sqlplus -s -l / as sysdba @ee3.txt Q | bash --//注意看一个细节。出现sid=240 3行,FIRST_SEEN=2022-05-31 09:37:42最早出现,也是这一个会话kill sid=53,等3秒后sid=53可以重用,执行完成完成后不断退出。 --//这样出现SERIAL +2(sid=53)的情况,这样就可以很好的解析上面看到的情况。 --//也就是使用kill参数immediae时,如果有用户登录,会收到阻塞,出现inactive session 等待事件。 5.测试3: --//如果我顺序kill这些会话情况如何呢?修改ee3.txt脚本注解quit。 $ cat ee3.txt alter system kill session '&&1,&&2' ; --alter system kill session '&&1,&&2' immediate; --quit --//session 1: $ seq 10 | xargs -IQ -P 10 sqlplus -s -l scott/book @ee1.txt Q zzdate sqlplus -s -l / as sysdba @ ee2.txt | xargs -IQ echo @ee3.txt Q >| ee4.txt $ cat ee4.txt @ee3.txt 53 81 @ee3.txt 70 25 @ee3.txt 104 13 @ee3.txt 122 11 @ee3.txt 138 11 @ee3.txt 154 11 @ee3.txt 172 9 @ee3.txt 189 9 @ee3.txt 206 9 @ee3.txt 223 9 --//等ee4.txt执行后执行如下: zzdate --//session 2: SYS@book> @ee4.txt SYS@book> @ wcy trunc(sysdate)+09/24+54/1440+41/86400 trunc(sysdate)+09/24+55/1440+41/86400 "event='inactive session'" -- Display ASH Wait Chain Signatures script v0.6 BETA by Tanel Poder ( http://blog.tanelpoder.com ) %This SECONDS AAS #Blkrs WAIT_CHAIN FIRST_SEEN LAST_SEEN ------ ---------- ------- ------ -------------------------------------------------------------------- ------------------- ------------------- 30% 3 .1 1 -> ,,@=>87,25,@1=>inactive session 2022-05-31 09:55:27 2022-05-31 09:55:32 20% 2 .0 1 -> 104,13,@1=>87,25,@1=>inactive session -> [idle blocker 1,104,13] 2022-05-31 09:55:29 2022-05-31 09:55:31 20% 2 .0 1 -> 206,9,@1=>87,25,@1=>inactive session -> [idle blocker 1,206,9] 2022-05-31 09:55:35 2022-05-31 09:55:36 10% 1 .0 1 -> 122,11,@1=>87,25,@1=>inactive session -> [idle blocker 1,122,11] 2022-05-31 09:55:30 2022-05-31 09:55:30 10% 1 .0 1 -> 172,9,@1=>87,25,@1=>inactive session -> [idle blocker 1,172,9] 2022-05-31 09:55:33 2022-05-31 09:55:33 10% 1 .0 1 -> 189,9,@1=>87,25,@1=>inactive session -> [idle blocker 1,189,9] 2022-05-31 09:55:34 2022-05-31 09:55:34 6 rows selected. --//有点小小意外,我开始以为这样就不会出现inactive session等待事件,实际上还是出现。而sid=87正是session 2,我执行ee4.txt的会话。 SYS@book> @ spid SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50 ---------- ---------- ------------------------ --------- ------ ------- ---------- -------------------------------------------------- 87 25 47655 DEDICATED 47656 29 12 alter system kill session '87,25' immediate; SYS@book> @ashtop event,sid,serial,BLOCKING_SESSION,BLOCKING_SESSION_SERIAL# "event='inactive session'" trunc(sysdate)+09/24+54/1440+41/86400 trunc(sysdate)+09/24+55/1440+41/86400 Total Distinct Distinct Seconds AAS %This EVENT SID SERIAL BLOCKING_SESSION BLOCKING_SESSION_SERIAL# FIRST_SEEN LAST_SEEN Execs Seen Tstamps --------- ------- ------- ---------------- --- ---------- ---------------- ------------------------ ------------------- ------------------- ---------- -------- 3 .1 30% | inactive session 87 25 2022-05-31 09:55:27 2022-05-31 09:55:32 1 3 2 .0 20% | inactive session 87 25 104 13 2022-05-31 09:55:29 2022-05-31 09:55:31 1 2 2 .0 20% | inactive session 87 25 206 9 2022-05-31 09:55:35 2022-05-31 09:55:36 1 2 1 .0 10% | inactive session 87 25 122 11 2022-05-31 09:55:30 2022-05-31 09:55:30 1 1 1 .0 10% | inactive session 87 25 172 9 2022-05-31 09:55:33 2022-05-31 09:55:33 1 1 1 .0 10% | inactive session 87 25 189 9 2022-05-31 09:55:34 2022-05-31 09:55:34 1 1 6 rows selected. $ cat ee4.txt @ee3.txt 53 81 @ee3.txt 70 25 @ee3.txt 104 13 @ee3.txt 122 11 @ee3.txt 138 11 @ee3.txt 154 11 @ee3.txt 172 9 @ee3.txt 189 9 @ee3.txt 206 9 @ee3.txt 223 9 --//3+2+2+1+1+1 = 10秒。 6.测试4: --//--//如果我顺序kill这些会话情况, 并且每次kill 后,sleep 1秒呢。 --//session 1: $ seq 10 | xargs -IQ -P 10 sqlplus -s -l scott/book @ee1.txt Q zzdate sqlplus -s -l / as sysdba @ ee2.txt | xargs -IQ echo -e "@ee3.txt Q \nhost sleep 1" >| ee4_1.txxt $ cat ee4_1.txt @ee3.txt 104 17 host sleep 1 @ee3.txt 122 13 host sleep 1 @ee3.txt 138 13 host sleep 1 @ee3.txt 154 13 host sleep 1 @ee3.txt 172 11 host sleep 1 @ee3.txt 189 11 host sleep 1 @ee3.txt 206 11 host sleep 1 @ee3.txt 223 11 host sleep 1 @ee3.txt 240 29 host sleep 1 @ee3.txt 257 61 host sleep 1 --//等ee4_1.txt执行后执行如下: zzdate --//session 2: SYS@book> @ ee4_1.txt SYS@book> @ wcy trunc(sysdate)+10/24+09/1440+05/86400 trunc(sysdate)+10/24+11/1440+19/86400 "event='inactive session'" -- Display ASH Wait Chain Signatures script v0.6 BETA by Tanel Poder ( http://blog.tanelpoder.com ) %This SECONDS AAS #Blkrs WAIT_CHAIN FIRST_SEEN LAST_SEEN ------ ---------- ------- ------ ------------------------------------------------------------------- ------------------- ------------------- 50% 5 .0 1 -> ,,@=>87,25,@1=>inactive session 2022-05-31 10:10:54 2022-05-31 10:11:12 20% 2 .0 1 -> 172,11,@1=>87,25,@1=>inactive session -> [idle blocker 1,172,11] 2022-05-31 10:11:02 2022-05-31 10:11:04 10% 1 .0 1 -> 206,11,@1=>87,25,@1=>inactive session -> [idle blocker 1,206,11] 2022-05-31 10:11:06 2022-05-31 10:11:06 10% 1 .0 1 -> 138,13,@1=>87,25,@1=>inactive session -> [idle blocker 1,138,13] 2022-05-31 10:10:58 2022-05-31 10:10:58 10% 1 .0 1 -> 240,29,@1=>87,25,@1=>inactive session -> [idle blocker 1,240,29] 2022-05-31 10:11:10 2022-05-31 10:11:10 --//sleep 2秒呢?重复测试,结果如下: SYS@book> @ wcy trunc(sysdate)+10/24+13/1440+57/86400 trunc(sysdate)+10/24+14/1440+52/86400 "event='inactive session'" -- Display ASH Wait Chain Signatures script v0.6 BETA by Tanel Poder ( http://blog.tanelpoder.com ) %This SECONDS AAS #Blkrs WAIT_CHAIN FIRST_SEEN LAST_SEEN ------ ---------- ------- ------ ---------------------------------- ------------------- ------------------- 100% 10 .2 1 -> ,,@=>87,25,@1=>inactive session 2022-05-31 10:14:12 2022-05-31 10:14:39 SYS@book> @ashtop event,sid,serial,BLOCKING_SESSION,BLOCKING_SESSION_SERIAL# "event='inactive session'" trunc(sysdate)+10/24+13/1440+57/86400 trunc(sysdate)+10/24+14/1440+52/86400 Total Distinct Distinct Seconds AAS %This EVENT SID SERIAL BLOCKING_SESSION BLOCKING_SESSION_SERIAL# FIRST_SEEN LAST_SEEN Execs Seen Tstamps --------- ------- ------- ---------------- --- ---------- ---------------- ------------------------ ------------------- ------------------- ---------- -------- 10 .2 100% | inactive session 87 25 2022-05-31 10:14:12 2022-05-31 10:14:39 1 10 --//这样就不存在阻塞了。但是可以看出每次kill 一个会话就出现1次inactive session等待事件。应该是每次等待1秒。 --//补充我还测试了sleep 1.9秒的情况: SYS@book> @ wcy trunc(sysdate)+10/24+22/1440+47/86400 trunc(sysdate)+10/24+24/1440+57/86400 "event='inactive session'" -- Display ASH Wait Chain Signatures script v0.6 BETA by Tanel Poder ( http://blog.tanelpoder.com ) %This SECONDS AAS #Blkrs WAIT_CHAIN FIRST_SEEN LAST_SEEN ------ ---------- ------- ------ ------------------------------------------------------------------ ------------------- ------------------- 90% 9 .1 1 -> ,,@=>87,25,@1=>inactive session 2022-05-31 10:24:05 2022-05-31 10:24:31 10% 1 .0 1 -> 70,47,@1=>87,25,@1=>inactive session -> [idle blocker 1,70,47] 2022-05-31 10:24:07 2022-05-31 10:24:07 7.附上测试脚本: $ alias zzdate alias zzdate='date +"trunc(sysdate)+%H/24+%M/1440+%S/86400 == %Y/%m/%d %T == timestamp'\''%Y-%m-%d %T'\''"' --//wcy.sql 脚本利用tpt的ash_wait_chains.sql脚本。 $ cat wcy.sql @ tpt/ash/ash_wait_chains BLOCKING_SESSION||','||BLOCKING_SESSION_SERIAL#||',@'||BLOCKING_INST_ID||'=>'||session_id||','||SESSION_SERIAL#||',@'||inst_id||'=>'||event "&&3" "&&1" "&&2"
[20220531]模拟inactive session等待事件.txt
来源:这里教程网
时间:2026-03-03 17:40:51
作者:
编辑推荐:
- Windows oracle 11g rman备份恢复到linux系统03-03
- [20220531]模拟inactive session等待事件.txt03-03
- 快手Q1:一面向阳而生,一面难寻光亮03-03
- [20220531]测试quiz night.txt03-03
- [重庆思庄每日技术分享]-RMAN-08137 主库无法删除归档文件03-03
- Oracle的OEM enterprise manager mail notificatio 邮件告警通知设置03-03
- [重庆思庄每日技术分享]-ORA-1142 signalled during: ALTER DATABASE END BACKUP03-03
- 数据库运维的那些难题,深信服DMP给解决了03-03
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Windows oracle 11g rman备份恢复到linux系统
Windows oracle 11g rman备份恢复到linux系统
26-03-03 - 快手Q1:一面向阳而生,一面难寻光亮
快手Q1:一面向阳而生,一面难寻光亮
26-03-03 - Oracle的OEM enterprise manager mail notificatio 邮件告警通知设置
- [重庆思庄每日技术分享]-ORA-1142 signalled during: ALTER DATABASE END BACKUP
- oracle 专用服务器连接和共享服务器连接
oracle 专用服务器连接和共享服务器连接
26-03-03 - 如何同时查询韵达的快递单号?有上千单
如何同时查询韵达的快递单号?有上千单
26-03-03 - 语音合成商业化:科大讯飞向左,魔音工坊向右
语音合成商业化:科大讯飞向左,魔音工坊向右
26-03-03 - 自动驾驶卷到了卡车领域?
自动驾驶卷到了卡车领域?
26-03-03 - 从 Oracle 日志解析学习数据库内核原理
从 Oracle 日志解析学习数据库内核原理
26-03-03 - Oracle:Oracle RAC 11.2.0.4 升级为 19c
Oracle:Oracle RAC 11.2.0.4 升级为 19c
26-03-03
