ITPub博客

首页 > 数据库 > Oracle > [20220228]测试Max_idle_blocker_time 参数.txt

[20220228]测试Max_idle_blocker_time 参数.txt

原创 Oracle 作者:lfree 时间:2022-03-01 16:42:59 0 删除 编辑

[20220228]测试Max_idle_blocker_time 参数.txt

--//今天本来想测试Max_idle_blocker_time在19c的情况,发现不起作用,我使用sys用户测试,我估计可能对于sys用户这样的设置可能不
--//起作用.我又做了max_idle_time的测试发现问题依旧,我没有19c的测试环境,先在18c上测试Max_idle_blocker_time的情况.

1.环境:
SYS@xxx.xxx.x.x:1521/orclcdb> @ prxx
==============================
PORT_STRING                   : x86_64/Linux 2.4.xx
VERSION                       : 18.0.0.0.0
BANNER                        : Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
BANNER_FULL                   : Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0
BANNER_LEGACY                 : Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
CON_ID                        : 0
PL/SQL procedure successfully completed.

SYS@xxx.xxx.x.x:1521/orclcdb> alter system set max_idle_time=1 scope=memory;
System altered.
--//1分钟.

2.登录普通用户的PDB会话测试:
--//session 1:
TTT@xxx.xxx.x.x:1521/orcl> show parameter max_idle_
PARAMETER_NAME TYPE    VALUE
-------------- ------- -----
max_idle_time  integer 1

TTT@xxx.xxx.x.x:1521/orcl> @ spid
 SID    SERIAL# PROCESS SERVER    SPID       PID  P_SERIAL# C50
---- ---------- ------- --------- ------ ------- ---------- --------------------------------------------------
  45      63449 54371   DEDICATED 15672       48     298944 alter system kill session '45,63449' immediate;
--//记下sid=45.

TTT@xxx.xxx.x.x:1521/orcl> host sleep 122

TTT@xxx.xxx.x.x:1521/orcl> show parameter max_idle_
ORA-03113: end-of-file on communication channel
Process ID: 15071
Session ID: 280 Serial number: 37330
--//我以前的测试必须等待2*max_idle_time时间。而不是max_idle_time.
--//重新登陆,我的测试环境就我一个人使用,一般情况下sid依旧等于45.
--//session 1:
SYS@xxx.xxx.x.x:1521/orcl> select sysdate from dual;
SYSDATE
-------------------
2022-02-28 15:21:53

--//session 2:
TTT@xxx.xxx.x.x:1521/orcl> select SECONDS_IN_WAIT,event from v$session where sid=45 ;
SECONDS_IN_WAIT EVENT
--------------- ---------------------------
             97 SQL*Net message from client

TTT@xxx.xxx.x.x:1521/orcl> select SECONDS_IN_WAIT,event from v$session where sid=45 ;
SECONDS_IN_WAIT EVENT
--------------- ----------------------------------------
            122 SQL*Net message from client

TTT@xxx.xxx.x.x:1521/orcl> @ sid 45
sid = 45
SPID       PID        SID    SERIAL# CLIENT_INFO          PNAME  TRACEFILE                                                                    PROGRAM                                  TERMINAL     SQL_ID                     STATUS           C50
------ ------- ---------- ---------- -------------------- ------ ---------------------------------------------------------------------------- ---------------------------------------- ------------ -------------------------- ---------------- --------------------------------------------------
15672       48         45      63449                             /u01/app/oracle/diag/rdbms/orclcdb/orclcdb/trace/orclcdb_ora_15672.trc       sqlplus@gxqyydg4 (TNS V1-V3)             pts/2                                   INACTIVE         alter system kill session '45,63449' immediate;
--//过去122秒,进程还在.视乎总是多一点点,不知道具体算法,我估计一段时间轮询。

TTT@xxx.xxx.x.x:1521/orcl> @ sid 45
sid = 45
no rows selected
--//sid=45消失.

--//回到会话执行:
--//session 1:

TTT@xxx.xxx.x.x:1521/orcl> select sysdate from dual;
ERROR:
ORA-03114: not connected to ORACLE
--//已经kill 。

--//如果是sys用户登录呢?
--//session 1:
SYS@xxx.xxx.x.x:1521/orcl> show user
USER is "SYS"
--//当前时sys用户.

SYS@xxx.xxx.x.x:1521/orcl> @ spid
 SID    SERIAL# PROCESS SERVER             SPID       PID  P_SERIAL# C50
---- ---------- ------- ------------------ ------ ------- ---------- --------------------------------------------------
  38      37824 54481   DEDICATED          17224       64     132996 alter system kill session '38,37824' immediate;

--//打开另外会话:
--//session 2:
TTT@xxx.xxx.x.x:1521/orcl> select SECONDS_IN_WAIT,event from v$session where sid=38 ;
SECONDS_IN_WAIT EVENT
--------------- ----------------------------------------
            133 SQL*Net message from client

--//回到原来会话:
--//session 1:
SYS@xxx.xxx.x.x:1521/orcl> select sysdate from dual;
SYSDATE
-------------------
2022-02-28 17:22:53

--//可以发现对于sys用户该参数max_idle_time无效。

3.换一种方式测试:
--//session 1:
TTT@xxx.xxx.x.x:1521/orcl> @ spid
SID    SERIAL# PROCESS SERVER             SPID       PID  P_SERIAL# C50
--- ---------- ------- ------------------ ------ ------- ---------- --------------------------------------------------
291      35911 59525   DEDICATED          18855       62      30182 alter system kill session '291,35911' immediate;

--//session 2:
$ seq 200 | xargs -IQ echo -e 'set head off verify off \nselect SECONDS_IN_WAIT,SERIAL#,event from v$session where sid=&1 ;\nhost sleep 1\n'| sqlplus -s -l ttt/oracle@xxx.xxx.x.x:1521/orcl @ ver1 291
            172 SQL*Net message from client
no rows selected
            151      44251 SQL*Net message from client
no rows selected
            144      33075 SQL*Net message from client
no rows selected
            154       5619 SQL*Net message from client
no rows selected
            137      45124 SQL*Net message from client
no rows selected
            169      46894 SQL*Net message from client
no rows selected

--//可以发现并不是max_idle_time*2.

--//我设置alter system set max_idle_time=3 scope=memory;重复测试仅仅记录结果。
          298        265 SQL*Net message from client
          298        265 SQL*Net message from client
          294      29591 SQL*Net message from client
          244      44065 SQL*Net message from client
          259      38284 SQL*Net message from client
--//不知道为什么仅仅做一个记录吧。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2861722/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7971267