zoukankan      html  css  js  c++  java
  • Now trying to drop the old temporary tablespace, the session hangs.

    1.描述
    问题描述:删除临时表空间时,会话Hangs挂起
    SQL> drop tablespace TEMP_B including contents and datafiles; 
    2.故障诊断思路
    2.1查看alert日志:
    Sun Apr 01 05:32:40 2018
    
    ORA-1013 signalled during: drop tablespace TEMP_B including contents and datafiles...
    
    Sun Apr 01 05:33:56 2018
    
    drop tablespace TEMP_B including contents and datafiles
     2.2查询会话等待事件:
     
    select sid,program,status,blocking_session,event from v$session where type='USER'
    
     
    
       SID PROGRAM                          STATUS    BLOCKING_SESSION EVENT
    
    ---- ------------- ---------- ---------------- ------------------------------------------------
    
       1 sqlplus@enmo(TNS V1-V3)  ACTIVE             13                     enq: TS - contention 
    
         
    
      40 oracle@enmo ( J001)          ACTIVE                                       jobq slave wait
    
         
    
      43 oracle@enmo (J000)           ACTIVE                                       jobq slave wait
    
         
    
      46 sqlplus@enmo(TNS V1-V3)ACTIVE                                     SQL*Net message to client
    
    SID                       会话标识符
    
    PROGRAM           操作系统程序名称
    
    STATUS                正在执行的SQL会话:active
    
    BLOCKING_SESSION  阻塞会话的标识符 sid
    
    EVENT                       等待事件类型:
    
    TYPE                          会话类型:用户 USER
    
         
    
    #查询:会话id=13的信息:
    
    SQL> select sid,program,status,blocking_session,event from v$session where sid=13;
    
     
    
    SID PROGRAM                         STATUS     BLOCKING_SESSION EVENT
    
    ---- ------------- ---------- ---------------- ------------------------------
    
      13 oracle@enmo ( SMON)    ACTIVE                      smon timer


     2.3本次操作,sqlplus本地登录,查询spid

    #查询spid
    
    [oracle@enmo app]$ ps -ef|grep LOCAL=YES  本地连接会话的操作系统进程号
    
    oracle   15576 14800  0 03:27 ?        00:00:19 oracleENMO (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    
     
    
    [oracle@enmo app]$ ps -ef|grep 14800           查询父进程:为sqlplus工具 
    
    UID      PID     PPID
    
    oracle   14800 14778  0 02:40 pts/1    00:00:00 sqlplus   as sysdba
    
    oracle   15576 14800  0 03:27 ?        00:00:21 oracleENMO (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
    
     
    
     
    
    SQL> select sid,sql_id,status,event from v$session where paddr=(select addr from v$process where spid=15576);
    
     
    
           SID SQL_ID        STATUS                 EVENT
    
    ----------------------------------------------------------------
    
             1 5y9u0m6wv4mch ACTIVE     enq: TS - contention

    2,4:oradebug跟踪进程:

    SQL> oradebug setospid 15576
    
    Oracle pid: 19, Unix process pid: 15576, image: oracle@enmo (TNS V1-V3)
    
     
    
    SQL> oradebug unlimit
    
    Statement processed.
    
     
    
    SQL> oradebug dump systemstate 258
    
    Statement processed.
    
    SQL> oradebug dump systemstate 258
    
    Statement processed.
    
    SQL> exit
    
     
    
    SQL>  show parameter user_dump
    
    /u01/app/oracle/diag/rdbms/enmo/ENMO/trace
    
     
    
    [oracle@enmo trace]$ ls -lrt
    
    -rw-r----- 1 oracle oinstall 2127846 Apr  1 05:41 ENMO_ora_15576.trc
    
     
    
    sftp> get ENMO_ora_15576.trc C:\Users\Administrator\Desktop\.
    
    2.5:trace文件查看:
    [oracle@enmo trace]$ more ENMO_ora_15576.trc
    
    Oracle Database 11g Enterprise Edition Release 11.2.0.4.0
    
    - 64bit Production
    
    Instance name: ENMO
    
    Redo thread mounted by this instance: 1
    
    Oracle process number: 19
    
    Unix process pid: 15576, image: oracle@enmo (TNS V1-V3)
    
     
    
    ######根据spid查询没发现什么有效信息:
    
    /ospid: 15576 
    
    ...skipping
    
        (latch info) wait_event=0 bits=0x0
    
        Process Group: DEFAULT, pseudo proc: 0x7ed5ac30
    
        O/S info: user: oracle, term: UNKNOWN, ospid: 15576
    
        OSD pid info: Unix process pid: 15576, image: oracle@e
    
    nmo (TNS V1-V3)
    
     
    
    #####根据:ospid: 14800 
    
     
    
    ----------------------------------------
    
    SO: 0x7e892b40, type: 4, owner: 0x7ecc5220, flag: INIT/-/-/0x00 if: 0x3 c: 0x3
    
    proc=0x7ecc5220, name=session, file=ksu.h LINE:12729, pg=0
    
    (session) sid: 1 ser: 5 trans: 0x7ccb8a68, creator: 0x7ecc5220
    
    flags: (0x41) USR/- flags_idl: (0x1) BSY/-/-/-/-/-
    
    flags2: (0x48009) -/DDLT2/INC
    
    DID: , short-term DID:
    
    txn branch: (nil)
    
    edition#: 100 oct: 41, prv: 0, sql: 0x7f76ef79fdf0, psql: 0x78f50ad0, user: 0/SYS
    
    ksuxds FALSE at location: 0
    
    service name: SYS$USERS
    
    client details:
    
    O/S info: user: oracle, term: pts/1, ospid: 14800
    
    machine: enmo program: sqlplus@enmo (TNS V1-V3)
    
    application name: sqlplus@enmo (TNS V1-V3), hash value=1501019605
    
    Current Wait Stack:
    
    0: waiting for 'enq: TS - contention'
    
    name|mode=0x54530006, tablespace ID=0x1c, dba=0x1
    
    wait_id=14569 seq_num=14571 snap_id=1
    
    wait times: snap=7 min 28 sec, exc=7 min 28 sec, total=7 min 28 sec
    
    wait times: max=infinite, heur=7 min 28 sec
    
    wait counts: calls=151 os=151
    
    in_wait=1 iflags=0x15a0
    
    #  有一个会话被阻塞
    
    There are 1 sessions blocked by this session.
    
    Dumping one waiter:
    
    inst: 1, sid: 39, ser: 153         
    
    #等待事件
    
    wait event: 'enq: TT - contention'
    
    #############################根据:会话ID,查询操作系统进程号####
    
    SQL> select spid from v$process where addr=(select paddr from v$session where sid=13);
    
    SPID
    
    ------------------------
    
    15542
    
    #############根据操系统进程查询:SMON进程#####################
    
    [root@enmo ~]# ps -ef|grep 15542
    
    oracle   15542     1  0 03:27 ?        00:00:01 ora_smon_ENMO
    
     
    
    p1: 'name|mode'=0x54540004
    
    p2: 'tablespace ID'=0x1a
    
    p3: 'operation'=0x0
    
    row_wait_obj#: 4294967295, block#: 0, row#: 0, file# 0
    
    min_blocked_time: 232 secs, waiter_cache_ver: 2576
    
    Wait State:
    
    fixed_waits=0 flags=0x2b boundary=0x7e894a28/0
    
    Session Wait History:
    
    elapsed time of 25375533 min 56 sec since current wait
    
    0: waited for 'ksdxexeotherwait'
    
    =0x0, =0x0, =0x0
    
    wait_id=14585 seq_num=14587 snap_id=1
    
    等待时间
    
    wait times: snap=0.042447 sec, exc=0.042447 sec, total=0.042447 sec
    
    wait times: max=30.000000 sec
    
    wait counts: calls=0 os=0
    
    在经过时间:s后发生
    
    occurred after 0.000000 sec of elapsed time
    
    等待:
    
    1: waited for 'ksdxexeotherwait'
    
    =0x0, =0x0, =0x0
    
    wait_id=14584 seq_num=14586 snap_id=1
    
    wait times: snap=0.045086 sec, exc=0.045086 sec, total=0.045086 sec
    
    wait times: max=30.000000 sec
    
    wait counts: calls=0 os=0
    
    occurred after 0.000000 sec of elapsed time
    
    2: waited for 'ksdxexeotherwait'
    
    =0x0, =0x0, =0x0
    
    wait_id=14583 seq_num=14585 snap_id=1
    
    wait times: snap=0.030094 sec, exc=0.030094 sec, total=0.030094 sec
    
    wait times: max=29.990000 sec
    
    wait counts: calls=0 os=0
    
    occurred after 0.000000 sec of elapsed time
    
    3: waited for 'ksdxexeotherwait'
    
    =0x0, =0x0, =0x0
    
    wait_id=14582 seq_num=14584 snap_id=1
    
    wait times: snap=0.030958 sec, exc=0.030958 sec, total=0.030958 sec
    
    wait times: max=30.000000 sec
    
    wait counts: calls=0 os=0
    
    occurred after 0.000000 sec of elapsed time
    
    4: waited for 'ksdxexeotherwait'
    
    =0x0, =0x0, =0x0
    
    wait_id=14581 seq_num=14583 snap_id=1
    
    wait times: snap=0.033920 sec, exc=0.033920 sec, total=0.033920 sec
    
    wait times: max=30.000000 sec
    
    wait counts: calls=0 os=0
    
    occurred after 0.000000 sec of elapsed time
    
    5: waited for 'ksdxexeotherwait'
    
    =0x0, =0x0, =0x0
    
    wait_id=14580 seq_num=14582 snap_id=1
    
    wait times: snap=0.029040 sec, exc=0.029040 sec, total=0.029040 sec
    
    wait times: max=30.000000 sec
    
    wait counts: calls=0 os=0
    
    occurred after 0.000000 sec of elapsed time
    
    6: waited for 'ksdxexeotherwait'
    
    =0x0, =0x0, =0x0
    
    wait_id=14579 seq_num=14581 snap_id=1
    
    wait times: snap=0.031045 sec, exc=0.031045 sec, total=0.031045 sec
    
    wait times: max=29.990000 sec
    
    wait counts: calls=0 os=0
    
    occurred after 0.000000 sec of elapsed time
    
    7: waited for 'ksdxexeotherwait'
    
    =0x0, =0x0, =0x0
    
    wait_id=14578 seq_num=14580 snap_id=1
    
    wait times: snap=0.027048 sec, exc=0.027048 sec, total=0.027048 sec
    
    wait times: max=30.000000 sec
    
    wait counts: calls=0 os=0
    
    occurred after 0.000000 sec of elapsed time
    
    8: waited for 'ksdxexeotherwait'
    
    =0x0, =0x0, =0x0
    
    wait_id=14577 seq_num=14579 snap_id=1
    
    wait times: snap=0.029306 sec, exc=0.029306 sec, total=0.029306 sec
    
    wait times: max=30.000000 sec
    
    wait counts: calls=0 os=0
    
    occurred after 0.000000 sec of elapsed time
    
    9: waited for 'ksdxexeotherwait'
    
    =0x0, =0x0, =0x0
    
    wait_id=14576 seq_num=14578 snap_id=1
    
    wait times: snap=0.031989 sec, exc=0.031989 sec, total=0.031989 sec
    
    wait times: max=30.000000 sec
    
    wait counts: calls=0 os=0
    
    occurred after 0.000000 sec of elapsed time
    
    #会话1,序列号5的采样会话历史记录
    
    Sampled Session History of session 1 serial 5
    
    ---------------------------------------------------
    


     

    匹配:
    mos文章SMON Blocking Drop Temporary Tablespace (文档 ID 1500044.1)描述的现象符合
    This seems to be caused by Bug 13028161:
    DROP TEMP TABLESPACE HANGS DUE TO TS ENQUEUE CONTENTION which was closed as duplicate of Bug 15913577 : 
    MAIN_LINUX.X64 LRG9H8 RUNS WILL BE SUSPENDED 12/02/12; TOO MANY HANGS 
    #提示:是一个BUG,查询文章:SMON进程堵塞了drop tempfile的会话,会话当前等待
     
    SMON Blocking Drop Temporary Tablespace (文档 ID 1500044.1)
    The following steps have been performed successfully:
    - Create a new temporary tablespace
    - Declare as the new default temp
    - Make sure that no users have the old temp as their default
     
     
    #匹配
    Now trying to drop the old temporary tablespace, the session hangs.
    
    Analyzing the problem shows the following:
    
    
    - Tracing the session using 10046 shows that the session is waiting for event "enq: TS - contention'"
    
    - System state dump shows that the session is blocked by SMON
    
    - SMON is waiting for event "SMON TIMER"
    
    
    drop old temporary tablespace,session hangs故障现象符合
    
    等待事件: TS - contention 符合
    
    10046:跟踪,查询堵塞进程 SMON 符合
    


     

    #故障解释说明
    由bug13028161引起的:由于TS ENQUEUE CONTENTION 导致DROP TEMP TABLESPACE HANGS被关闭为Bug 15913577的副本:MAIN_LINUX.X64 LRG9H8 RUNS将暂停12/02/12; TOO MANY HANGS
    
    #建议
    
    如果可用于您的平台或使用以下解决方法,请安装修补程序15913577
    
    #解决
    
    检查前提条件是否满足:创建新的临时表空间,指定新临时表空间为默认值,确保没有用户分配使用旧临时表空间
    
    EXIT 退出SQL*PLUS,重新登录执行
    
    #涉及版本、操作系统:11.2.0.3以上,大部分操作系统都符合
    Range of versions believed to be affected    Versions BELOW 12.2
    
    Versions confirmed as being affected    
    
    11.2.0.4
    
    11.2.0.3
    
    Platforms affected    Generic (all / most platforms affected)Fixed:
    


    ###建议操作

    #如果有历史会话,使用旧的临时表空间,如下sql,找出会话信息,kill
    
    -Change temporary tablespace of all the users to different temporary tablespace (If not yet done)
    
    SQL> SELECT s.username,sid,serial#,contents,sql_address,extents,last_call_et
    
        FROM v$session s,v$tempseg_usage t;
    
    WHERE s.saddr = t.session_addr;
    
     
    
    -Kill those sessions:
    
    alter system kill session '< sid >, < Serial# >';
    #实际操作:
     
    exit
    [oracle@enmo ~]$ sqlplus / as sysdba
    SQL> drop tablespace TEMP_B including contents and datafiles;  [OK]
     
    #记录人生中遇到的第一个bug 开心
  • 相关阅读:
    0101-ioc
    通过Android studio手动触发Android 上层GC(垃圾回收)的方法
    【Win10】BeyondCompare时提示"许可证密钥已被撤销"的解决办法
    Android Historian安装使用
    初探OpenCL之Mac OS上的hello world示例
    python画高斯分布图形
    深度学习优化算法总结
    《用Python玩转数据》项目—线性回归分析入门之波士顿房价预测(二)
    《用Python玩转数据》项目—线性回归分析入门之波士顿房价预测(一)
    (转)导数、偏导数、方向导数、梯度、梯度下降
  • 原文地址:https://www.cnblogs.com/lvcha001/p/8878196.html
Copyright © 2011-2022 走看看