查看oracle資料庫連接數
1. 如何查看oracle資料庫某一張表的最大連接數
用putty連接linux伺服器,切換到
su
-
oracle
sqlplus
/nolog
連接到資料庫;
conn
/
as
sysdba
show
parameter
session
alter
system
set
sessions
=
values(比如400)
scope
=
spfile;//注意此處的分號;
show
parameter
process
alter
system
set
processes
=
values(比如450)scope
=
spfile;//注意此處的分號;
show
parameter
license
//查看最大的process;
重新啟動伺服器;
oracle的連接數(sessions)與其參數文件中的進程數(process)有關,它們的關系如下:
sessions=(1.1*process+5)
但是我們增加process數時,往往資料庫不能啟動了。這因為我們還漏調了一個unix系統參數:它是/etc/system/中semmns,這是unix系統的信號量參數。每個process會佔用一個信號量。semmns調整後,
需要重新啟動unix操作系統,參數才能生效。不過它的大小會受制於硬體的內存或oracle
sga。范圍可從200——2000不等。
semmns的計算公式為:semmns>processes+instance_processes+system
processes=資料庫參數processes的值
instance_processes=5(smon,pmon,dbwr,lgwr,arch)
system=系統所佔用信號量。系統所佔用信號量可用下列命令查出:#ipcs
-sb
2. 查看oracle當前連接數和進程數
查詢當前資料庫的進程連接數:
使用SQL語句:`select count(*) from v$process;`
查看當前資料庫的會話連接數:
使用SQL語句:`select count(*) from v$session;`
查詢資料庫的並發連接數:
使用SQL語句:`select count(*) from v$session where status='ACTIVE';`
查看資料庫建立的會話情況:
使用SQL語句:`select sid,serial#,username,program,machine,status from v$session;`
獲取資料庫允許的最大連接數:
使用SQL語句:`select value from v$parameter where name = 'processes';` 或者 `show parameter processes;`
查詢所有資料庫的連接數
使用SQL語句:`selectschemaname,count(*)fromv$sessiongroupbyschemaname;`
查詢終端用戶使用資料庫的連接情況:
使用SQL語句:`selectosuser,schemaname,count(*)fromv$sessiongroupbyschemaname,osuser;`
修改資料庫最大連接數:
使用SQL命令:`alter system set processes = value scope = spfile;`
重啟資料庫以實現連接數修改:
命令:`shutdown immediate;`
`startup;`
查看當前使用的資料庫用戶:
使用SQL語句:`select osuser,a.username,cpu_time/executions/1000000||'s',sql_fulltext,machine from v$session a,v$sqlarea b where a.sql_address = b.address order by cpu_time/executions desc;`
查詢並釋放被鎖的表的session:
使用SQL語句:`SELECT A.OWNER,A.OBJECT_NAME,B.XIDUSN,B.XIDSLOT,B.XIDSQN,B.SESSION_ID,B.ORACLE_USERNAME, B.OS_USER_NAME,B.PROCESS, B.LOCKED_MODE, C.MACHINE,C.STATUS,C.SERVER,C.SID,C.SERIAL#,C.PROGRAM FROM ALL_OBJECTS A,V$LOCKED_OBJECT B,SYS.GV_$SESSION C WHERE ( A.OBJECT_ID = B.OBJECT_ID ) AND (B.PROCESS = C.PROCESS ) ORDER BY 1,2;`
釋放指定session:
命令:`alter system kill session 'sid, serial#';`
查看佔用系統IO較大的session:
使用SQL語句:`SELECT se.sid,se.serial#,pr.SPID,se.username,se.status,se.terminal,se.program,se.MODULE,se.sql_address,st.event,st.p1text,si.physical_reads,si.block_changes FROM v$session se, v$session_wait st,v$sess_io si,v$process pr WHERE st.sid=se.sid AND st.sid=si.sid AND se.PADDR=pr.ADDR AND se.sid>6 AND st.wait_time=0 AND st.event NOT LIKE '%SQL%' ORDER BY physical_reads DESC;`
找出耗用CPU較多的session:
使用SQL語句:`select a.sid,spid,status,substr(a.program,1,40) prog,a.terminal,osuser,value/60/100 value from v$session a,v$process b,v$sesstat c where c.statistic#=12 and c.sid=a.sid and a.paddr=b.addr order by value desc;`
3. 怎樣查看oracle當前的連接數
1,查看當前會話數
SQL>conn/assysdba
已連接。
SQL>selectcount(*)fromv$session;
COUNT(*)
----------
45
註:session值=processes值*1.1+5
2,查看資料庫最大進程數
SQL>showparameterprocesses
NAMETYPEVALUE
---------------------------------------------------------
aq_tm_processesinteger0
db_writer_processesinteger1
gcs_server_processesinteger0
job_queue_processesinteger10
log_archive_max_processesinteger2
processesinteger50
3,查看資料庫最大會話數
SQL>showparametersessions
NAMETYPEVALUE
---------------------------------------------------------
java_max_sessionspace_sizeinteger0
java_soft_sessionspace_limitinteger0
license_max_sessionsinteger0
license_sessions_warninginteger0
logmnr_max_persistent_sessionsinteger1
sessionsinteger60
shared_server_sessionsinteger
4,修改processes和sessions值
SQL>altersystemsetprocesses=300scope=spfile;
系統已更改。
SQL>altersystemsetsessions=300scope=spfile;
系統已更改。
註:一般只執行第一個命令就可以,session自動更改
5,創建pfile
SQL>createpfilefromspfile;
註:如果不做此步,可能會導致更改最大連接數之後資料庫不能啟動現象
6,重啟資料庫,使更改生效
SQL>shutdownimmediate
SQL>startup
註:shutdownnormal正常關閉資料庫可能會相當相當的慢呢
shutdownabort可能會導致啟動資料庫時很慢。
7,查看進程數,會話數,已經修改過來了
SQL>showparameterprocesses
NAMETYPEVALUE
----------------------------------------------------------
aq_tm_processesinteger0
db_writer_processesinteger1
gcs_server_processesinteger0
job_queue_processesinteger10
log_archive_max_processesinteger2
processesinteger300
SQL>showparametersessions
NAMETYPEVALUE
-----------------------------------------------------------
java_max_sessionspace_sizeinteger0
java_soft_sessionspace_limitinteger0
license_max_sessionsinteger0
license_sessions_warninginteger0
logmnr_max_persistent_sessionsinteger1
sessionsinteger335
shared_server_sessionsinteger