在UNIX或者LINUX中可以比較方便的管理ORACLE運(yùn)行的進(jìn)程,但在WINDOWS中ORACLE的每個(gè)會(huì)話是采用線程的機(jī)制進(jìn)行管理,所以通過普通的任務(wù)管理器不能查看到具體的ORACLE用戶線程。
創(chuàng)新互聯(lián)10多年成都企業(yè)網(wǎng)站建設(shè)服務(wù);為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì)及高端網(wǎng)站定制服務(wù),成都企業(yè)網(wǎng)站建設(shè)及推廣,對(duì)除甲醛等多個(gè)領(lǐng)域擁有豐富的網(wǎng)站運(yùn)維經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。
當(dāng)然,通過專用的線程管理工具是可以看到的,如WINDOWS附加工具箱中的Qslice(線程分析器)就可以。
查看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ù)庫(kù) #修改連接
unix 1個(gè)用戶session 對(duì)應(yīng)一個(gè)操作系統(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ù)庫(kù),
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
查詢數(shù)據(jù)庫(kù)當(dāng)前進(jìn)程的連接數(shù)
select count(*) from v$process;
查看數(shù)據(jù)庫(kù)當(dāng)前會(huì)話的連接數(shù)
elect count(*) from v$session;
查看數(shù)據(jù)庫(kù)的并發(fā)連接數(shù)
select count(*) from v$session where status= ACTIVE ;
查看當(dāng)前數(shù)據(jù)庫(kù)建立的會(huì)話情況
select sid serial# username program machine status from v$session;
查詢數(shù)據(jù)庫(kù)允許的最大連接數(shù)
select value from v$parameter where name = processes ;
或者命令 show parameter processes;
修改數(shù)據(jù)庫(kù)允許的最大連接數(shù)
alter system set processes = scope = spfile;
(需要重啟數(shù)據(jù)庫(kù)才能實(shí)現(xiàn)連接數(shù)的修改)
重啟數(shù)據(jù)庫(kù)
SQLshutdown immediate;
SQLstartup;
查看當(dāng)前有哪些用戶正在使用數(shù)據(jù)
SQLselect osuser a username cpu_time/executions/ || s sql_fulltext machine
SQLfrom v$session a v$sqlarea b
SQLwhere a sql_address = b address
SQLorder by cpu_time/executions desc;
備注 UNIX 個(gè)用戶session對(duì)應(yīng)一個(gè)操作系統(tǒng)process 而Windows體現(xiàn)在線程
啟動(dòng)oracle
su oracle
SQLsqlplus system/pwd as sysdba???? //進(jìn)入sql
SQLstartup????????????????????????????????????? //啟動(dòng)數(shù)據(jù)庫(kù)
SQLlsnrctl start?????????????????????????????? //啟動(dòng)監(jiān)聽
sqlplus /as sysdba
SQLshutdown immediate;? //關(guān)閉數(shù)據(jù)庫(kù)
SQLstartup mount;
lishixinzhi/Article/program/Oracle/201311/18867
1. 先通過top命令查看產(chǎn)用資源較多的spid號(hào)
2.查詢當(dāng)前耗時(shí)的會(huì)話ID,用戶名,sqlID等:
select sid,serial#,machine,username,program,sql_hash_value,sql_id,
? to_char(logon_time,'yyyy/mm/dd hh24:mi:ss') as login_time from v$session
where paddr in (select addr from v$process where spid in ('5648612','256523'));
3. 如果上一步sql_id或者 hash_value不為空,則可用v$sqlarea查出當(dāng)前正在使用的sql
select sql_text
from v$sqltext_with_newlines
where hash_value = hash_value
order by piece;
也可直接使用:
select a.*,b.SQL_TEXT from (
select sid,serial#,machine,username,program,sql_hash_value,sql_id,
? to_char(logon_time,'yyyy/mm/dd hh24:mi:ss') as login_time from v$session
where paddr in (select addr from v$process where spid in ('23226'))
) a,v$sql b
where a.sql_id? = b.SQL_ID(+)
4.kill占用大資源的session
Alter system kill session 'SID,SERIAL#'
解鎖:
1.查詢哪些對(duì)象被鎖:
select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid;
2.下面的語(yǔ)句用來殺死一個(gè)進(jìn)程:
alter system kill session '524,1095'; (其中24,111分別是上面查詢出的sid,serial#)
3.再一次查詢目前鎖定的對(duì)象,若發(fā)現(xiàn)以上方法不能解除鎖定的表,則用以下方法:
3.1 執(zhí)行下面的語(yǔ)句獲得進(jìn)程(線程)號(hào):
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=524 (524是上面的sid)
windows里所有oracle事務(wù)統(tǒng)一由一個(gè)oracle.exe進(jìn)程管理,pmon、smon等表現(xiàn)為oracle.exe內(nèi)的線程。
linux系統(tǒng)里pmon、smon都是獨(dú)立的進(jìn)程。
線程是進(jìn)程的組成部分,進(jìn)程中的資源由多個(gè)線程共享。你可以把它們想象成:
進(jìn)程是老大,手上有的是鈔票、棍棒;
線程是他的小弟們,身無(wú)分文;
老大提供棍棒給小弟們出去辦事,辦事需要錢的時(shí)候由老大分配,小弟們搶來的鈔票歸老大統(tǒng)一支配。
1、連接上相應(yīng)的linux主機(jī),進(jìn)入到等待輸入shell指令的linux命令行狀態(tài)下。
2、在命令行下輸入shell指令:whereis oracle。
3、最后,按下回車鍵執(zhí)行shell指令,此時(shí)會(huì)看到數(shù)據(jù)庫(kù)oracle的具體位置被打印了出來。