[20230216]数据库连接访问asm相关视图2.txt

来源:这里教程网 时间:2026-03-03 18:21:20 作者:

[20230216]数据库连接访问asm相关视图2.txt --//前几天验证了连接数据库的进程在访问asm相关视图时会启动一个访问asm实例的进程,然后将相关信息返回给数据库进程. --//当时访问v$asm_disk视图时出现一个奇怪现象,就是完成后会关闭asm的连接,今天再验证一些细节问题. 1.环境: SYS@127.0.0.1:9014/ywdb> @ 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 2.测试补充: --//我测试中还遇到1个奇特的现象记录如下: --//session 1: SYS@127.0.0.1:9014/ywdb/ywdb1> @ spid        SID    SERIAL# PROCESS                  SERVER    SPID       PID  P_SERIAL# C50 ---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------       3115      42709 39285                    DEDICATED 31494      491         98 alter system kill session '3115,42709' immediate; SYS@127.0.0.1:9014/ywdb/ywdb1> select count(*) from v$asm_disk;   COUNT(*) ----------          8 # ps -eLf | grep 3149[4] oracle   31494     1 31494  0    1 08:49 ?        00:00:00 oracleywdb1 (LOCAL=NO) --//可以发现这样并没有启动连接asm实例,我前面一直认为访问asm相关视图就会出现asm的连接,看来失算了. --//也许访问v$asm_diskgroup非常特殊,它是已经汇总统计信息的视图. --//注:看来生产系统前几天遇到的问题还很复杂,因为当时执行访问v$asm_disk视图也出现挂起情况. --//后记:前面内容是我当时测试时的推测,仔细想想可能不对!!因为当时出现问题时我确实访问v$asm_disk视图也出现挂起情况. --//一定asm实例出现问题,我猜测访问v$asm_disk时先要连接asm实例,完成后关闭asm实例.我后面的测试验证这个细节. SYS@127.0.0.1:9014/ywdb/ywdb1> select count(*) from V$ASM_DISKGROUP;   COUNT(*) ----------          2 # ps -eLf | grep 3149[4] grid     10122     1 10122  0    1 08:51 ?        00:00:00 oracle+ASM1_user31494_ywdb1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle   31494     1 31494  0    1 08:49 ?        00:00:00 oracleywdb1 (LOCAL=NO) --//session 1: SYS@127.0.0.1:9014/ywdb/ywdb1> select sysdate from dual ; SYSDATE ------------------- 2023-02-15 08:52:10 --//再次访问v$asm_disk视图: SYS@127.0.0.1:9014/ywdb/ywdb1> select count(*) from v$asm_disk;   COUNT(*) ----------          8 # ps -eLf | grep 3149[4] oracle   31494     1 31494  0    1 08:49 ?        00:00:00 oracleywdb1 (LOCAL=NO) --//连接asm实例进程关闭了. SYS@127.0.0.1:9014/ywdb/ywdb1> select count(*) from V$ASM_DISKGROUP;   COUNT(*) ----------          2 # ps -eLf | grep 3149[4] grid     17002     1 17002  0    1 08:53 ?        00:00:00 oracle+ASM1_user31494_ywdb1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) oracle   31494     1 31494  0    1 08:49 ?        00:00:00 oracleywdb1 (LOCAL=NO) --//再次打开建立新的连接,但是进程号已经变了. 4.继续测试: --//session 1: SYS@127.0.0.1:9014/ywdb/ywdb1> @ spid        SID    SERIAL# PROCESS                  SERVER    SPID       PID  P_SERIAL# C50 ---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------       3681      55919 15583                    DEDICATED 4259       493         12 alter system kill session '3681,55919' immediate; cat aa.txt select count(*) from v$asm_disk; / . / --//加入1000个/.这样连续执行1000次select count(*) from v$asm_disk;命令. --//session 2: # seq 30000 | xargs -IQ ps -ef | grep oracle+ASM1_user31494_ywdb1 | tee /tmp/asm.tmp # tail -6 /tmp/asm.tmp grid     25252     1  1 08:57 ?        00:00:00 oracle+ASM1_user4259_ywdb1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) grid     25256     1  0 08:57 ?        00:00:00 oracle+ASM1_user4259_ywdb1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) grid     25256     1  1 08:57 ?        00:00:00 oracle+ASM1_user4259_ywdb1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) grid     25260     1  0 08:57 ?        00:00:00 oracle+ASM1_user4259_ywdb1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) grid     25264     1  0 08:57 ?        00:00:00 oracle+ASM1_user4259_ywdb1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) --//第2列进程号发生变化. # ps -ef | grep 425[9] oracle    4259     1  2 08:47 ?        00:00:06 oracleywdb1 (LOCAL=NO) grid     22237     1  2 08:50 ?        00:00:00 oracle+ASM1_user4259_ywdb1 (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) --//你可以发现访问 v$asm_disk视图一样会建立连接,而且每次连接完成都会断开建立新的连接. # ps -ef | grep 425[9] oracle    4259     1  2 08:47 ?        00:00:22 oracleywdb1 (LOCAL=NO) --//至于为什么出现这样的情况,我不知道.

相关推荐