標籤

4GL (1) 人才發展 (10) 人物 (3) 太陽能 (4) 心理 (3) 心靈 (10) 文學 (31) 生活常識 (14) 光學 (1) 名句 (10) 即時通訊軟體 (2) 奇狐 (2) 爬蟲 (1) 音樂 (2) 產業 (5) 郭語錄 (3) 無聊 (3) 統計 (4) 新聞 (1) 經濟學 (1) 經營管理 (42) 解析度 (1) 遊戲 (5) 電學 (1) 網管 (10) 廣告 (1) 數學 (1) 機率 (1) 雜趣 (1) 證券 (4) 證券期貨 (1) ABAP (15) AD (1) agentflow (4) AJAX (1) Android (1) AnyChart (1) Apache (14) BASIS (4) BDL (1) C# (1) Church (1) CIE (1) CO (38) Converter (1) cron (1) CSS (23) DMS (1) DVD (1) Eclipse (1) English (1) excel (5) Exchange (4) Failover (1) Fedora (1) FI (57) File Transfer (1) Firefox (3) FM (2) fourjs (1) Genero (1) gladiatus (1) google (1) Google Maps API (2) grep (1) Grub (1) HR (2) html (23) HTS (8) IE (1) IE 8 (1) IIS (1) IMAP (3) Internet Explorer (1) java (4) JavaScript (22) jQuery (6) JSON (1) K3b (1) ldd (1) LED (3) Linux (117) Linux Mint (4) Load Balance (1) Microsoft (2) MIS (2) MM (51) MSSQL (1) MySQL (27) Network (1) NFS (1) Office (1) OpenSSL (1) Oracle (126) Outlook (3) PDF (6) Perl (60) PHP (33) PL/SQL (1) PL/SQL Developer (1) PM (3) Postfix (2) postfwd (1) PostgreSQL (1) PP (50) python (5) QM (1) Red Hat (4) Reporting Service (28) ruby (11) SAP (234) scp (1) SD (16) sed (1) Selenium (3) Selenium-WebDriver (5) shell (5) SQL (4) SQL server (8) sqlplus (1) SQuirreL SQL Client (1) SSH (2) SWOT (3) Symantec (2) T-SQL (7) Tera Term (2) tip (1) tiptop (24) Tomcat (6) Trouble Shooting (1) Tuning (5) Ubuntu (37) ufw (1) utf-8 (1) VIM (11) Virtual Machine (2) VirtualBox (1) vnc (3) Web Service (2) wget (1) Windows (19) Windows (1) WM (6) Xvfb (2) youtube (1) yum (2)

2012年9月4日 星期二

Library cache lock 解決方式


>>1 讓Oracle dump trace file 
SQL> ALTER SESSION SET EVENTS 'IMMEDIATE TRACE NAME SYSTEMSTATE LEVEL 8'; 

>>2 dump 的目錄 
SQL> show parameter user_dump_dest 

NAME                                 TYPE       VALUE 
------------------------------------ ---------- ------------------------------ 
user_dump_dest                       string     /opt/oracle/diag/rdbms/dwp01/dwp01/trace 

SQL> exit 

>>3 去alert file找出trace file檔名 
oracle@aot-dwp01:/opt/oracle/diag/rdbms/dwp01/dwp01/trace$ tail -100 alert_dwp01.log 

... 
... 
... 
Tue Sep 04 11:40:30 2012 
Thread 1 advanced to log sequence 135140 (LGWR switch) 
  Current log# 2 seq# 135140 mem# 0: /oracle/dwp01/redo02.log 
Tue Sep 04 11:42:55 2012 
System State dumped to trace file /opt/oracle/diag/rdbms/dwp01/dwp01/trace/dwp01_ora_13383.trc <<剛剛的動作,讓Oracle dump此trace file 

>>4 找出被block pid,再去trace file 用vi找出 PROCESS <pid> 
SQL > select sid from v$session_wait where event = 'library cache lock'; <<找出被librarya cache lock的session 
SQL > SELECT PID FROM V$PROCESS WHERE ADDR = (SELECT PADDR FROM V$SESSION WHERE SID='355');  <<找出上一行session的pid 

>>5 找到 PROCESS <pid>後,用 waiting for字眼找出block別人的handle address (此次例子是handle address=0x158bf4188) 
     0: waiting for 'library cache lock' 
        handle address=0x158bf4188, lock address=0x12bf22a60, 100*mode+namespace=0x1888a00010003 
        wait_id=123 seq_num=124 snap_id=1 
        wait times: snap=6 min 47 sec, exc=6 min 47 sec, total=6 min 47 sec 
        wait times: max=infinite, heur=6 min 47 sec 
        wait counts: calls=137 os=137 
        in_wait=1 iflags=0x15a2 

>>6 用vi找出哪一個PROCESS擁有此handle address,以下為此次例子,並往上用vi移動,找出是哪一個PROCESS <pid> 
    Dumping one waiter: 
      inst: 1, sid: 355, ser: 23 
      wait event: 'library cache lock' 
        p1: 'handle address'=0x158bf4188 
        p2: 'lock address'=0x12bf22a60 
        p3: '100*mode+namespace'=0x1888a00010003 
      row_wait_obj#: 4294967295, block#: 0, row#: 0, file# 0 
      min_blocked_time: 407 secs, waiter_cache_ver: 55785 
    Wait State: 
      fixed_waits=0 flags=0x22 boundary=(nil)/-1 

>>7 找出其os process id後,用os指令 kill -9 <spid> 解決 
select a.spid 
  from v$process a,v$session b 
 where a.pid = 87 
   and a.addr = b.paddr 

>>8 kill -9 <spid> 
oracle@aot-dwp01:~$ kill -9 <spid> 

沒有留言:

張貼留言