ps -l 檢視系統程序
PID 每個程序的ID。
PPID 每個程序的父程序ID。
UID 每個程序所有者的UID 。
USER 每個程序所有者的使用者名。
PRI 每個程序的優先級别。
NI 該程序的優先級值。
SIZE 該程序的代碼大小加上資料大小再加上堆棧空間大小的總數。機關是KB。
TSIZE 該程序的代碼大小。對于核心程序這是一個很奇怪的值。
DSIZE 資料和堆棧的大小。
TRS 文本駐留大小。
D 被标記為“不幹淨”的頁項目。
LIB 使用的庫頁的大小。對于ELF程序沒有作用。
RSS 該程序占用的實體記憶體的總數量,機關是KB。
SHARE 該程序使用共享記憶體的數量。
STAT 該程序的狀态。其中S代表休眠狀态;D代表不可中斷的休眠狀态;R代表運作狀态;Z代表僵死狀态;
T代表停止或跟蹤狀态。
TIME 該程序自啟動以來所占用的總CPU時間。如果進入的是累計模式,那麼該時間還包括這個程序子程序所占用的時間。且标題會變成CTIME。根據OS程序号,應該可以查到它正在執行什麼SQL語句.
-- 查到oracle OS程序的sid編号:
select ses.sid from v$session ses,v$process pro where pro.spid=&spid and ses.paddr=pro.addr;
-- 查到此sid連接配接使用者正在執行的SQL語句:
select sql_text from v$sqltext_with_newlines where (hash_value,address)
in (select sql_hash_value,sql_address from v$session where sid=&sid) order by address,piece;
檢視oracle的鎖是sql語句引起的
檢視引起鎖的session_id
sync4j啟動的程序
select * from v$locked_object where os_user_name='sync4j'
找到seesion_ID=139
找到引起的sql語句
SELECT a.username,
a.machine,
a.program,
a.sid,
a.serial#,
a.status,
c.piece,
c.sql_text
FROM v$session a,
v$sqltext c
WHERE a.sid = 139
and a.sql_address=c.address(+)
ORDER BY c.piece
v$sqltext就是引起鎖的sql語句了
alter system kill session 'sid,serial#' 殺掉程序
sid,serial#在v$session中可以查到
==================================
1.首先通過v$session_wait确定library cache pin等待事件的會話
2.确定要pin的對象:
select kglnaobj
from sys.x$kglob
where inst_id = userenv('instance')
and kglhdadr = v$session_wait.P1RAW;
3.确定阻塞的會話:
select a.sid,a.serial#,a.username,a.paddr,a.logon_time,
a.sql_hash_value,b.kglpnmod
from v$session a,sys.x$kglpn b
where a.saddr = b.kglpnuse
and b.inst_id= userenv('instance')
and b.kglpnreq = 0
and b.kglpnmod not in (0,1)
and b.kglpnhdl = v$session_wait.P1RAW;
确定哪些會話正在使用某個包/過程/函數/視圖,如果有的話,這時就不要進行drop,complie之類的操作了
select c.sid
from sys.x$lglob a,sys.x$kglpn b,v$session c
where a.kglnaobj=大寫的你要進行操作的包/過程/函數/視圖
and a.kglhdadr=b.kglpnhdl
and b.kglpnuse=c.saddr;