❶ Oracle並發連接數的設置
不能連接Oracle資料庫了 提示相關的錯誤
OERR: ORA TNS:no appropriate service handler found
客戶端連接間歇性失敗 報錯ORA
Cause: the listener could not find any available service handlers that are
appropriate for the client connection
Action: run lsnrctl services to ensure that the instance(s) have registered
with the listener and are accepting connections 檢查lsnrctl service instance已經注冊
狀態顯示ready時 可以連接
When the listener believes the current number of connections has reached maximum load
it may set the state of the service handler for an instance to blocked and begin refusing
ining client connections with either of the following errors: ora or ora
採用服務動態注冊的方式 由PMON 通過SERVICE_UPDATE 來得到目前連接情況 但SERVICE_UPDATE 有時間間隔
所以 listener顯示的連接數和當前實際的連接數可能不同
查詢解決方法:
查看一下資料庫現有的進程數 是否已經達到參數processes的大小
select count(*) from v$process; 取得資料庫目前的進程數
select value from v$parameter where name = processes ; 取得進程數的上限
如已達到上限 修改initSID ora中的processes的大小
重新啟動資料庫到nomount狀態下 執行create spfile from pfile; 並startup open
查詢資料庫自啟動以來最大的並發數量
修改最大連接數:
alter system set processes = scope = spfile;
重啟資料庫:
shutdown immediate;
startup;
查看當前有哪些用戶正在使用數據
SELECT osuser a username cpu_time/executions/ || s sql_fulltext machine
from v$session a v$sqlarea b
where a sql_address =b address order by cpu_time/executions desc;
有的時候我們需要調整oracle資料庫的最大鏈接數 而這個鏈接數的調整是在oacle下的dbs目錄下init ora文件中調整的
ORACLE的連接數(sessions)與其參數文件中的進程數(process)有關 它們的關系如下
sessions=( *process+ )
但是我們增加process數時 往往資料庫不能啟動了 這因為我們還漏調了一個unix系統參數 它是核心參數中的semmns 這是unix系統的信號量參數 每個process會佔用一個信號量 semmns調整後 需要重新啟動unix操作系統 參數才能生效 不過它的大小會受制於硬體的內存或ORACLE SGA 范圍可從 —— 不等
但是 Processes的修改不僅應該調整init<sid> ora文件中的參數 而且應該調整OS的內核參數 象AIX HPUX Solaris SCO UNIXWare都是這樣 OS的調整是需要重新啟動的 而且這個參數的設置不能簡單按照多少個終端要連到這個伺服器上而定 最關鍵是考慮會有多少同時連上的session(在使用一些共享連接的中間件時 一般就不需要太大) 當然還要考慮一些Oracle的後台進程 還有一些系統維護工作需要多一些連接等
我的atmp大前置機器上對oracle調整的時候 其使用的是unixware操作系統 在做鏈接數調整的時候 要先對核心參數進行調整
核心主要相關的參數的調整如下
SHMMAX
SHMMIN
SHMMNI
SHMSEG
SEMMNI
SEMMSL
SEMMNS
SEMOPM
其中semmni semmns semmsl要加大 至少要比processes大
SEMMNI( ) 指定在核心中信號識別的數量 這是可以在任意給定時間被激活的唯一信號設置數量 預設值是 最大值由系統自動調整產生
SEMMSL( ) 指定每個信號識別中信號量的最大值 預設值是
SEMMNS 除最大db外的所有db 的PROCESSES之和+ *最大db的PROCESSES+ *
實例數 如 個實例進程數分別為 則=( + )+ * + * =
tyle= LINE HEIGHT: %; FONT FAMILY: 宋體 >SEMOPM( ) 指定在每個系統調用semop中能夠被執行的信號操作量的最大值 預設值是
SHMMAX( ) 指定了共享內存部分大小的最大值 等於
× 物理內存位元組數
SHMMNI( ) 指定了系統范圍內共享內存標識的最大值
SHMSEG( ) 指定了與每個進程相關連的共享內存塊(或標識)的數量 預設值是 與每個進程相關連的共享內存塊的最大值與進程擁有的未使用空間有關 因此 盡管一個進程擁有少於SHMSEG數值的共享內存塊 它也有可能因為其有限的空間而不能與其它進程相聯系
init ora中調整為
processes = # SMALL
#processes = # MEDIUM
# processes = # LARGE
From:! FE F A F! entry
修改oracle 的最大連接數
使用sys 以sysdba許可權登錄
c: sqlplus /nolog
SQL>conn / as sysdba
SQL> show parameter processes;
NAME TYPE VALUE
aq_tm_processes integer
db_writer_processes integer
job_queue_processes integer
log_archive_max_processes integer
processes integer
SQL> alter system set processes= scope = spfile;
系統已更改
SQL> show parameter processes;
NAME TYPE VALUE
aq_tm_processes integer
db_writer_processes integer
job_queue_processes integer
log_archive_max_processes integer
processes integer
SQL> create pfile from spfile;
文件已創建
lishixin/Article/program/Oracle/201311/18790
❷ 查看Oracle當前連接數的具體方案
以下的文章會教會你如何查看Oracle當前連接數 以及怎樣來查看關於Oracle資料庫的當前的相關連接數呢?我們只需要用到下面的相關的SQL語句來進行查詢一下即可 以下就是文章的具體內容的介紹
select * from v$session where username is not null select username count(username) from v$session where username is not null group by username 查看不同用戶的連接數
select count(*) from v$session 連接數
Select count(*) from v$session where status= ACTIVE 並發連接數
show parameter processes 最大連接
alter system set processes = value scope = spfile; 重啟資料庫 修改連接
lishixin/Article/program/Oracle/201311/16921
❸ 怎樣查看oracle當前的連接數
目前總結的語句,在查看數據的連接情況很有用 ,寫完程序一邊測試代碼一邊查看資料庫連接的釋放情況有助於分析優化出一個健壯的系統程序來。
1.
Sql代碼
1.select count(*) from v$process
select count(*) from v$process --當前的資料庫連接數
2.
Sql代碼
1.select value from v$parameter where name = 'processes'
select value from v$parameter where name = 'processes'--資料庫允許的最大連接數
3.
Sql代碼
1.alter system set processes = 300 scope = spfile;
alter system set processes = 300 scope = spfile;--修改最大連接數:
4.
Sql代碼
1.shutdown immediate;
2.startup;
shutdown immediate;
startup;--重啟資料庫
5.
Sql代碼
1.SELECT osuser, a.username,cpu_time/executions/1000000||'s', b.sql_text,machine
2.from v$session a, v$sqlarea b
3.where a.sql_address =b.address order by cpu_time/executions desc;
SELECT osuser, a.username,cpu_time/executions/1000000||'s', b.sql_text,machine
from v$session a, v$sqlarea b
where a.sql_address =b.address order by cpu_time/executions desc;
--查看當前有哪些用戶正在使用數據
6.
Sql代碼
1.select count(*) from v$session
select count(*) from v$session --當前的session連接數
7.
Sql代碼
1.select count(*) from v$session where status='ACTIVE'
select count(*) from v$session where status='ACTIVE'--並發連接數
8.
Sql代碼
1.show parameter processes
show parameter processes --最大連接
9.
Sql代碼
1.alter system set processes = value scope = spfile;
❹ 怎麼查看oracle資料庫並發
SQL> select count(*) from v$session #當前的連接數 SQL> Select count(*) from v$session where status='ACTIVE' #並發連接數 SQL> select value from v$parameter where name = 'processes' --資料庫允許的最大連接數 SQL> show parameter processes #最大連接 SQL> select username,count(username) from v$session where username is not null group by username; #查看不同用戶的連接數 希望能幫到你
❺ oracle能支持的最大連接數是多少解決方法
ORACLE的連接數理論上是沒有上限的,設置多少都可以。
但是實際上與伺服器的配置有關,配置越強悍,連接數可以設置的上限越高。
資料庫的連接數是指響應客戶端連接的最大進程數
注意:是有一個連接進程算一個session,不是指電腦台數。
❻ Oracle查看、修改連接數
查詢資料庫當前進程的連接數
select count(*) from v$process;
查看資料庫當前會話的連接數
elect count(*) from v$session;
查看資料庫的並發連接數
select count(*) from v$session where status= ACTIVE ;
查看當前資料庫建立的會話情況
select sid serial# username program machine status from v$session;
查詢資料庫允許的最大連接數
select value from v$parameter where name = processes ;
或者命令 show parameter processes;
修改資料庫允許的最大連接數
alter system set processes = scope = spfile;
(需要重啟資料庫才能實現連接數的修改)
重啟資料庫
SQL>shutdown immediate;
SQL>startup;
查看當前有哪些用戶正在使用數據
SQL>select osuser a username cpu_time/executions/ || s sql_fulltext machine
SQL>from v$session a v$sqlarea b
SQL>where a sql_address = b address
SQL>order by cpu_time/executions desc;
備注 UNIX 個用戶session對應一個操作系統process 而Windows體現在線程
啟動oracle
su oracle
SQL>sqlplus system/pwd as sysdba //進入sql
SQL>startup //啟動資料庫
SQL>lsnrctl start //啟動監聽
sqlplus /as sysdba
SQL>shutdown immediate; //關閉資料庫
SQL>startup mount;
lishixin/Article/program/Oracle/201311/18867
❼ 怎樣查看oracle當前的連接數
--當前的連接數
SQL>selectcount(*)fromv$session
--#並發連接數
SQL>Selectcount(*)fromv$sessionwherestatus='ACTIVE'
--資料庫允許的最大連接數
SQL>selectvaluefromv$parameterwherename='processes'
--#最大連接
SQL>showparameterprocesses
--#查看不同用戶的連接數
SQL>selectusername,count(username)fromv$;
❽ 如何查看oracle資料庫連接數
SQL> select count(*) from v$session ;--當前的連接數
SQL> Select count(*) from v$session where status='ACTIVE' ;--並發連接數
SQL> select value from v$parameter where name = 'processes' --資料庫允許的最大連接數
SQL> show parameter processes ;--最大連接
SQL> select username,count(username) from v$session where username is not null group by username; --查看不同用戶的連接數
❾ Oracle能支持的最大連接數是多少
ORACLE的連接數理論上是沒有上限的,設置多少都可以。實際上與伺服器的配置有關,配置越強悍,連接數可以設置的上限越高。
資料庫的連接數是指響應客戶端連接的最大進程數
注意 是有一個連接進程算一個 不是指電腦台數
❿ 如何查看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