【Database】Oracle10g檢視正在執行的儲存過程

landf發表於2012-06-05
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE 1、檢視ORACLE中正在執行的儲存過程

SQL> select owner,name from v$db_object_cache where type like '%PROCE%' and locks >0 and pins >0;

OWNER          NAME

--------       ------

SYS            FULL_SCAN_BERTHDATAENTITY

 

SQL> select * from v$access o where o.OBJECT like 'FULL_SCAN_BERTHDATAENTITY%';

 

       SID OWNER    OBJECT                      TYPE

---------- -------  --------------------------  --------

1047 SYS      FULL_SCAN_BERTHDATAENTITY   PROCEDURE

 SQL> select * from v$session a WHERE A.SID=1047

2、停止正在執行的儲存過程
可以檢視正在執行的SESSION,把相應儲存過程的SESSIONKILL掉即可!儲存過程中的SQL都是可以跟蹤到的(SESSION
select * from v$access o where o.OBJECT like 'FULL_SCAN_BERTHDATAENTITY%'
select * from v$session a WHERE A.SID=sid
alter system kill session 'sid,serial#'

3、動態效能表--V$DB_OBJECT_CACHE

  本檢視提供物件在library cache(shared pool)中物件統計,提供比v$librarycache更多的細節,並且常用於找出shared pool中的活動物件。

v$db_object_cache中的常用列:

OWNER:物件擁有者
NAME
:物件名稱
TYPE
:物件型別(如,sequence,procedure,function,package,package body,trigger)
KEPT
:告知是否物件常駐shared pool(yes/no),有賴於這個物件是否已經利用PL/SQL 過程DBMS_SHARED_POOL.KEEP“保持(永久固定在記憶體中)
SHARABLE_MEM
:共享記憶體佔用
PINS
:當前執行物件的session
LOCKS
:當前鎖定物件的session

瞬間狀態列:
下列列保持物件自初次載入起的統計資訊:
LOADS
:物件被載入次數。

示例:
1.shared pool
執行以及記憶體使用總計
下列查詢顯示出shared pool記憶體對不同類別的物件
同時也顯示是否有物件通過DBMS_SHARED_POOL.KEEP()過程常駐shared pool
SELECT type, kept, COUNT(*), SUM(sharable_mem)
FROM V$DB_OBJECT_CACHE
GROUP BY type, kept;

2.通過載入次數找出物件
SELECT owner, name sharable_mem, kept, loads
FROM V$DB_OBJECT_CACHE
WHERE loads > 1 ORDER BY loads DESC;

3.找出使用的記憶體超過10M並且不在常駐記憶體的物件。
SELECT owner, name, sharable_mem, kept
FROM V$DB_OBJECT_CACHE
WHERE sharable_mem > 102400 AND kept = 'NO'
ORDER BY sharable_mem DESC;

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14359/viewspace-731941/,如需轉載,請註明出處,否則將追究法律責任。

相關文章