oracle 如何查找和kill 對應(yīng)的job進(jìn)程
成都創(chuàng)新互聯(lián)公司秉承實(shí)現(xiàn)全網(wǎng)價值營銷的理念,以專業(yè)定制企業(yè)官網(wǎng),成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè),微信小程序開發(fā),網(wǎng)頁設(shè)計制作,手機(jī)網(wǎng)站制作設(shè)計,營銷型網(wǎng)站建設(shè)幫助傳統(tǒng)企業(yè)實(shí)現(xiàn)“互聯(lián)網(wǎng)+”轉(zhuǎn)型升級專業(yè)定制企業(yè)官網(wǎng),公司注重人才、技術(shù)和管理,匯聚了一批優(yōu)秀的互聯(lián)網(wǎng)技術(shù)人才,對客戶都以感恩的心態(tài)奉獻(xiàn)自己的專業(yè)和所長。
查找當(dāng)前被鎖住的進(jìn)程:
SELECT object_name, s.sid, s.serial#, p.spid
FROM v$locked_object l, dba_objects o, v$session s, v$process p
WHERE l.object_id = o.object_id
AND l.session_id = s.sid
AND s.paddr = p.addr;
Kill 對應(yīng)的Oracle Session
應(yīng)為BROKEN后該JOB還在運(yùn)行,如果要求該JOB立刻停止,就需要找到該job的對應(yīng)SESSION(SID,SERIAL#),然后執(zhí)行以下命令:
ALTER SYSTEM KILL SESSION 'sid,serial#';
將Job Queue Processes的數(shù)目修改為0
首先確認(rèn)當(dāng)前的Job Queue Processes的數(shù)目
SQL select name,value from v$parameter where name ='job_queue_processes';
然后將Job Queue Processes的數(shù)目修改為0
ALTER SYSTEM SET job_queue_processes = 0;
保證所有的JOB都會停止。
恢復(fù)job_queue_processes的原始值
ALTER SYSTEM SET job_queue_processes = original_value;
查看ORACLE最大進(jìn)程數(shù):
SQL select count(*) from v$session #連接數(shù)
SQL Select count(*) from v$session where status='ACTIVE' #并發(fā)連接數(shù)
SQL show parameter processes #最大連接
SQL alter system set processes = value scope = spfile;重啟數(shù)據(jù)庫 #修改連接
unix 1個用戶session 對應(yīng)一個操作系統(tǒng) process
而 windows體現(xiàn)在線程
------------------------------------------------------------------------------
修改ORACLE最大進(jìn)程數(shù):
使用sys,以sysdba權(quán)限登錄:
SQL show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 150
SQL alter system set processes=300 scope = spfile;
系統(tǒng)已更改。
SQL show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 150
SQL create pfile from spfile;
文件已創(chuàng)建。
重啟數(shù)據(jù)庫,
SQL show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 1
db_writer_processes integer 1
job_queue_processes integer 10
log_archive_max_processes integer 1
processes integer 300
1:首先使用TOP命令傳到占用CPU高的SPID號
PID USERNAME THR PRI NICE SIZE RES STATE TIME CPU COMMAND
3575 oracle 1 12 0 0K 0K run 748.6H 24.98% oracle
3571 oracle 1 22 0 0K 0K sleep 706.2H 22.84% oracle
2:使用DBA賬戶登錄數(shù)據(jù)庫,使用以下SQL語句查詢:
SELECT * FROM V$PROCESS WHERE spid=3575;查詢到SQL相關(guān)信息
3:根據(jù)以上查詢到的信息使用以下SQL查詢:
SELECT sid, program FROM V$SESSION S WHERE EXISTS(SELECT 1 FROM V$PROCESS WHERE spid=3575 AND ADDR = S.PADDR);
可以查詢到具體那個客戶端查詢一直在不斷占用ORACLE資源!
最后對這個查詢進(jìn)行處理!
4.根據(jù)SID查得SQLITPUB復(fù)制代碼代碼如下:select sql_textITPUB
from v$sqltext
where a.hashvalue=(select sql_hash_value
from v$session b
where b.SID='sid')
0order by piece ASC;
根據(jù)lockwait字段可以查詢當(dāng)前正在等待的鎖的相關(guān)信息:復(fù)制代碼代碼如下:select * from v$lock where kaddr in (select lockwait from v$session where sid= $sid);
(sql_address,sql_hash_value),(prev_sql_addr,prev_hash_value) 根據(jù)這兩組字段, 可以查詢到當(dāng)前session正在執(zhí)行的或最近一次執(zhí)行的sql語句的詳細(xì)信息:
select * from v$sqltext where address = sql_address and hash_value = sql_hash_value;
根據(jù)PID查SQL相關(guān)信息:復(fù)制代碼代碼如下:select id,serial# ,username,osuser,machine,program,process,to_char(logon_time,'yyyy/mm/dd hh24:mi:ss') logon from v$session where paddr in ( select addr from v$process where spid in('pid'));
根據(jù)PID查SQL語句復(fù)制代碼代碼如下:SELECT a.username,a.machine,a.program,a.sid,a.serial#,a.status,c.piece,c.sql_text FROM v$session a,v$process b,v$sqltext c WHERE b.spid='spid' AND b.addr=a.paddr AND a.sql_address=c.address(+) ORDER BY c.piece;
得到進(jìn)程的sid號:復(fù)制代碼代碼如下:select id,serial# ,username,osuser,machine,program,process,to_char(logon_time,'yyyy/mm/dd hh24:mi:ss') logon from v$session where paddr in ( select addr from v$process where spid in('pid'));
得到session的sqltext語句:復(fù)制代碼代碼如下:select sql_text from v$sqltext_with_newlines where hash_value in (select SQL_HASH_VALUE from v$session where paddr in (select addr from v$process where spid= 'pid')) order by piece;
oracle進(jìn)程數(shù)查詢
1.cmd
2.sqlplus /nolog
3.connect sys/test@test as sysdba
SQL show parameter process;
NAME???????????????????????????????? TYPE??????? VALUE
------------------------------------ ----------- -----
aq_tm_processes????????????????????? integer???? 0
db_writer_processes????????????????? integer???? 1
gcs_server_processes???????????????? integer???? 0
job_queue_processes????????????????? integer???? 10
log_archive_max_processes??????????? integer???? 2
processes??????????????????????????? integer???? 1000
再查進(jìn)程數(shù)
SQL select count(*) from v$session;
COUNT(*)
----------
224
查看ORACLE最大進(jìn)程數(shù):
SQL select count(*) from v$session ?#連接數(shù)
SQL Select count(*) from v$session where status='ACTIVE' #并發(fā)連接數(shù)
SQL show parameter processes ?#最大連接
SQL alter system set processes = value scope = spfile;重啟數(shù)據(jù)庫 ?#修改連接
unix 1個用戶session 對應(yīng)一個操作系統(tǒng) process
而 windows體現(xiàn)在線程
------------------------------------------------------------------------------
修改ORACLE最大進(jìn)程數(shù):
使用sys,以sysdba權(quán)限登錄:
SQL show parameter processes;
NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE ? ? ? ?VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes ? ? ? ? ? ? ? ? ? ? ?integer ? ? 1
db_writer_processes ? ? ? ? ? ? ? ? ?integer ? ? 1
job_queue_processes ? ? ? ? ? ? ? ? ?integer ? ? 10
log_archive_max_processes ? ? ? ? ? ?integer ? ? 1
processes ? ? ? ? ? ? ? ? ? ? ? ? ? ?integer ? ? 150
SQL alter system set processes=300 scope = spfile;
系統(tǒng)已更改。
SQL show parameter processes;
NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE ? ? ? ?VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes ? ? ? ? ? ? ? ? ? ? ?integer ? ? 1
db_writer_processes ? ? ? ? ? ? ? ? ?integer ? ? 1
job_queue_processes ? ? ? ? ? ? ? ? ?integer ? ? 10
log_archive_max_processes ? ? ? ? ? ?integer ? ? 1
processes ? ? ? ? ? ? ? ? ? ? ? ? ? ?integer ? ? 150
SQL create pfile from spfile;
文件已創(chuàng)建。
重啟數(shù)據(jù)庫,
SQL show parameter processes;
NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? TYPE ? ? ? ?VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes ? ? ? ? ? ? ? ? ? ? ?integer ? ? 1
db_writer_processes ? ? ? ? ? ? ? ? ?integer ? ? 1
job_queue_processes ? ? ? ? ? ? ? ? ?integer ? ? 10
log_archive_max_processes ? ? ? ? ? ?integer ? ? 1
processes ? ? ? ? ? ? ? ? ? ? ? ? ? ?integer ? ? 300
Oracle數(shù)據(jù)庫查看一個進(jìn)程是如何執(zhí)行相關(guān)的實(shí)際SQL語句
SELECT b.sql_text, sid, serial#, osuser, machine
FROM v$session a, v$sqlarea b
WHERE a.sql_address = b.address;
查詢前臺發(fā)出的SQL語句.
select user_name,sql_text
from v$open_cursor
where sid in
(select sid from (select sid,serial#,username,program from v$session where status='ACTIVE'));
根據(jù)SPID查詢session
SELECT * FROM v$session WHERE paddr IN
(SELECT addr FROM v$process WHERE spid=spid);
根據(jù)SID查詢process
SELECT * FROM v$process WHERE addr IN
(SELECT paddr FROM v$session WHERE sid=sid);
DBA如何查詢其他用戶所進(jìn)行的操作
SELECT sql_text
FROM v$sql t1, v$session t2
WHERE t1.address = t2.sql_address
AND t2.sid = sid;
根據(jù)process查詢sql語句
SELECT sql_text
FROM v$sqltext a
WHERE (a.hash_value, a.address) IN (
SELECT DECODE (sql_hash_value,0, prev_hash_value,sql_hash_value ),
DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)
FROM v$session b
WHERE b.paddr = (SELECT addr
FROM v$process c
WHERE c.spid = '$processID'))
ORDER BY piece ASC;
其他
執(zhí)行下列命令語句
sqlplus / as sysdba EOF
create tablespace test datafile '/data/test01.dbf' size 10240M;
quit;
EOF
通過ps -ef|grep sqlplus命令得到上面所執(zhí)行的命令的進(jìn)程id為:12345
(1)關(guān)于v$process
執(zhí)行下面的SQL是查不到相關(guān)的信息:
select * from v$process where spid='12345';
因為這個spid字段對應(yīng)的并不是我們用ps命令從系統(tǒng)中查詢到的進(jìn)程id,而是這個進(jìn)程執(zhí)行的當(dāng)前SQL的進(jìn)程id,
也就是上面命令中的“create tablespace test datafile '/data/test01.dbf' size 10240M;”所對應(yīng)的進(jìn)程id,如果想
通過用ps命令從系統(tǒng)中查詢到的進(jìn)程id查看對應(yīng)的信息,那么必須使用下面語句:
select spid,sid,process,sql_address from v$session where process='12345'
上面sql中的process就是通過ps查看的進(jìn)程id,而spid就是里面的sql語句所對應(yīng)的進(jìn)程id。
還可以通過上面的sql_address 查看正在執(zhí)行的SQL語句內(nèi)容:
select sql_text from v$sqlarea s,v$session ses where s.address=ses.sql_address and ses.process='12345';
(2)關(guān)于v$session
在查詢 v$session 視圖的時候,我們根據(jù)command字段內(nèi)部表示解碼每一個字段,當(dāng)我們需要快速找出他們的 Oracle 系統(tǒng)的內(nèi)部情況時非常有用。
select
substr(s.username,1,18) username,substr(s.program,1,15) program,p.spid,s.process,
decode(s.command,
0,'No Command',
1,'Create Table',
2,'Insert',
3,'Select',
6,'Update',
7,'Delete',
9,'Create Index',
15,'Alter Table',
21,'Create View',
23,'Validate Index',
35,'Alter Database',
39,'Create Tablespace',
41,'Drop Tablespace',
40,'Alter Tablespace',
53,'Drop User',
62,'Analyze Table',
63,'Analyze Index',
s.command||': Other') command
from
v$session s,
v$process p,
v$transaction t,
v$rollstat r,
v$rollname n
where s.paddr = p.addr
and s.taddr = t.addr (+)
and t.xidusn = r.usn (+)
and r.usn = n.usn (+)
order by username
(3)幾個相關(guān)的SQL
--查看系統(tǒng)進(jìn)程對應(yīng)的信息
select se.saddr,se.sid,se.serial#,p.pid,se.paddr,s.sql_id,s.sql_text
from v$session se ,v$process p, v$sqlarea s
where se.paddr=p.addr and se.sql_address=s.address and se.process='1'
and se.username is not null
--查看所有的會話
select se.username,se.saddr,se.sid,se.serial#,se.process,s.sql_id
from v$session se,v$sqlarea s
where se.sql_address=s.address
--查看會話對應(yīng)的sql內(nèi)容
select se.username,se.process,s.sql_text
from v$session se,v$sqlarea s
where se.sql_address=s.address and s.sql_id='1'
新聞標(biāo)題:oracle如何查看進(jìn)程,oracle查看線程
分享鏈接:http://www.chinadenli.net/article38/dscospp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、標(biāo)簽優(yōu)化、定制網(wǎng)站、、手機(jī)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)