ORACLE最大進程數

 
查看ORACLE最大進程數:
SQL> select count(*) from v$session  #鏈接數
SQL> Select count(*) from v$session where status='ACTIVE' #併發鏈接數
SQL> show parameter processes  #最大鏈接
SQL> alter system set processes = value scope = spfile;重啓數據庫  #修改鏈接
unix 1個用戶session 對應一個操做系統 process
而 windows體如今線程
------------------------------------------------------------------------------
修改ORACLE最大進程數:
使用sys,以sysdba權限登陸:
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;
系統已更改。
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;
文件已建立。
 
重啓數據庫,
 
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
 
搞定!
 
 
------------------------------------------------------------------------------------------
 
能夠查詢
select username,machine,program,count(*) from gv$session
group by username,machine,program
看看主要集中在哪一個應用上

再查詢下主要是在進行什麼等待
select event,count(*)
from v$session
group by event
----------------------------------------------------------------------------------------------
 
太多的Inactive Sessions會吃掉Oracle資源
可依下列動做來清除Inactive Sessions:
1. 取得PID:
select concat('kill -9 ',pro.spid) from v$session ses,v$process pro where  ses.paddr=pro.addr and  ses.program='JDBC Thin Client';
會獲得像這樣的列表:
kill -9 12345
2. 再到系統執行上面的列表
 
----------------------------------------------------------------------------------------------

清除Oralcle的session的理由和方法

殺掉Oralcle的一些session,理由大致以下: 1、問題的提出    不少的時候咱們迅速的殺掉Oralcle的一些session,理由大致以下:       一、 一些時候,因爲咱們的數據量很大,相應的事務大而且多,在作shutdown immediate的時候會花費好多的時間,而咱們卻想用shutdown immediate的方式,而又要把數據庫迅速的shutdown下來。       二、 咱們的應用可能使用了會話控制,即在應用的層面控制了一些用戶的鏈接的數量。但有時可能網絡發生的瞬斷,從而就產生了一些死進程,他們的狀態爲Inactive的狀態。當咱們用alter system kill session ‘sid,serial#’進行清除時,這些session的狀態又變成了killed,這些就由Pmon進程來慢慢進行清除了,而你偏偏又是個急脾氣。       三、 系統突然慢了現來,你發現是某個session在作怪,想迅速把它迅速結束掉。       2、處理方法    其實處理方法很簡單,是被一些人稱爲「謀殺」的一種方法。由於一個session會對應着操做系統中相應的一個進程(process),咱們不使用Alter system kill session這種方式了,取而代之則是kill的方式,當session的後臺進程被殺掉了,便會促使懶散的Pmon進程迅速進行清理工做。       一、 以一個session作以示例,       a、 找到你要殺掉的那個session, 並記下paddr       select sid, username, paddr, status from v$session    where username = '用戶名' and    status = 'INACTIVE';       b、 找到這個session所對應的spid       select * from v$process where addr = '上面查尋的paddr';    c、 殺掉spid所標識的那個進程       若是你的Oracle是在Unix平臺上的,能夠用kill。       $kill spid       若是你的Oracle是在windown平臺上的,有一些的不一樣,由於windown是以thead來代替process的,須要用到sid和spid兩個值,所用的命令也由kill替換爲Orakill,格式爲rakill sid spid       C:\>orakill sid  spid       d、 再查一下v$session,看會話在不在了。       二、 如何謀殺掉全部的Oracle的用戶的進程呢?       a、windows的環境,執行以下圖中的SQL,並把結果存成.bat的文件,好比kill.bat, 執行一下kill.bat就能夠了。       select 'orakill '||sid||' '||spid as thread from    sys.v_$process p, sys.v_$session s    where sid > 6 and    p.addr = s.paddr ;       b、 Unix的環境相對來講就簡單多了,執行以下的命令就能夠了       $ ps -ef|grep $ORACLE_SID|grep -v ora_|grep LOCAL=NO|awk '{print $2}'|xargs kill       而後你再shutdown immediate就很快的了。       有一些死鎖進程,異常退出後用    alter system kill session 'sid, serial#';沒法釋放會話    可從操做系統直接處理。
相關文章
相關標籤/搜索