[root@oracledb ~]# su - oracle
Last login: Tue Jun 1 01:48:10 PDT 2021 on pts/5
[oracle@oracledb ~]$ sqlplus "/as sysdba"
#查询当前数据库进程的连接数
SQL> select count(*) from v$process;
#查询数据库当前会话的连接数
SQL> select count(*) from v$session;
#查询oracle的并发连接数
SQL> select count(*) from v$session where status='ACTIVE';
#查询不同用户的连接数
SQL> select username,count(username) from v$session where username is not null group by username;
#查询当前数据库进程的连接数
SQL> select count(*) from v$process;
COUNT(*)
----------
31
#查询数据库当前会话的连接数
SQL> select count(*) from v$session;
COUNT(*)
----------
28
#查询oracle的并发连接数
SQL> select count(*) from v$session where status='ACTIVE';
COUNT(*)
----------
23
#查询不同用户的连接数
SQL> select username,count(username) from v$session where username is not null group by username;
USERNAME COUNT(USERNAME)
------------------------------ ---------------
WLY 3
HMF 2
SYS 1
#查看数据库设置的最大连接数和最大session数量,show parameter processes命令查看的是汇总的信息,也可以直接select value from v$parameter where name ='processes'; 语句查看,最大进程连接数为150.
SQL> show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
aq_tm_processes integer 0
db_writer_processes integer 2
gcs_server_processes integer 0
global_txn_processes integer 1
job_queue_processes integer 1000
log_archive_max_processes integer 4
processes integer 150
SQL> select value from v$parameter where name ='processes';
VALUE
--------------------------------------------------------------------------------
150
#当数据库连接数需要调整时,可以用alter system set processes = 200 scope = spfile;修改连接数。
SQL> alter system set processes = 200 scope = spfile;
System altered.
#修改processes和sessions值必须重启oracle服务器才能生效
shutdown immediate;关闭实例
startup启动
#可以用如下命令查看数据库连接的消耗情况:
select b.MACHINE, b.PROGRAM, b.USERNAME, count(*) from v$process a, v$session b where a.ADDR = b.PADDR and b.USERNAME is not null group by b.MACHINE, b.PROGRAM, b.USERNAME order by count(*) desc;
SQL> select b.MACHINE, b.PROGRAM, b.USERNAME, count(*) from v$process a, v$session b where a.ADDR = b.PADDR and b.USERNAME is not null group by b.MACHINE, b.PROGRAM, b.USERNAME order by count(*) desc;
MACHINE
----------------------------------------------------------------
PROGRAM USERNAME
------------------------------------------------ ------------------------------
COUNT(*)
----------
DESKTOP-S9K68TG
DBeaver 6.3.0 - Metadata WLY
1
LAPTOP-VKRM9M36
DBeaver 6.3.0 - Metadata HMF
1
MACHINE
----------------------------------------------------------------
PROGRAM USERNAME
------------------------------------------------ ------------------------------
COUNT(*)
----------
LAPTOP-VKRM9M36
DBeaver 6.3.0 - Main WLY
1
oracledb
sqlplus@oracledb (TNS V1-V3) SYS
MACHINE
----------------------------------------------------------------
PROGRAM USERNAME
------------------------------------------------ ------------------------------
COUNT(*)
----------
1
LAPTOP-VKRM9M36
DBeaver 6.3.0 - Main HMF
1
DESKTOP-S9K68TG
MACHINE
----------------------------------------------------------------
PROGRAM USERNAME
------------------------------------------------ ------------------------------
COUNT(*)
----------
DBeaver 6.3.0 - Main WLY
1
6 rows selected.
参考:
查看oracle数据库的连接数以及用户 - 漠漠颜 - 博客园
#查询设置的最大连接数:
select value from v$parameter where name ='processes';
#查看的是汇总的信息:
show parameter processes
这里为允许访问2240个用户。
PROCESS
该参数指定同时连接到Oracle服务器上的最大用户进程数。该参数值包括6个后台进程和一个登录,因此,该参数值为20,则只能有13或14个并发用户连接到服务器。
SQL>select * from v$license;
其中sessions_highwater纪录曾经到达的最大会话数
************************************
SESSION_MAX
该参数指出允许并发用户会话的最大数。若此参数为0,则不能实施并发。若并发的用户会话数已达到此极限,则只有具有RESTRICTED SESSION权限的用户才能连接到服务器。
****************************************
USERS_MAX
该参数指出在一个数据库上可建立的最大用户数。当达到最大值时,便不能再建新用户,可改变此值以放松限制。在SESSION_MAX_或USER_MAX为0时,则并发会话或任何用户都不能用。若对不同的实例,此参数不同时,则以第一个登录的数据库实例的参数为准。
*******************************************
.1、#查询数据库允许的最大连接数:
SQL> select value from v$parameter where name = 'processes';
或者命令:show parameter processes;
2、#查询数据库当前进程的连接数:
SQL> select count(*) from v$process;
3、查看数据库当前会话的连接数:
SQL> select count(*) from v$session;
4、查看数据库的并发连接数:
SQL> select count(*) from v$session where status='ACTIVE';
5、#查看不同用户的连接数
SQL> select username,count(username) from v$session where username is not null group by username;
6、#查看当前数据库建立的会话情况:
SQL> select sid,serial#,username,program,machine,status from v$session;
#修改数据库允许的最大连接数:
SQL> alter system set processes = 300 scope = spfile;#修改最大会话数:
SQL> alter system set sessions=1105 scope=spfile;
(需要重启数据库才能实现连接数的修改)
#重启数据库:
SQL> shutdown immediate;
SQL> startup;
参考:查看oracle当前连接数和进程数
$select count(*) from v$process;
$select count(*) from v$session;
$select count(*) from v$session where status='ACTIVE';
$select username,count(username) from v$session where username is not null group by username;
参考:oracle修改最大连接数
压测时遇到问题,参考下面解决办法,我用第二种。
如果临时表空间没有设置为自动扩展,则临时表空间不够时事务执行将会报ora-01652 无法扩展临时段的错误。
解决方法比较简单:
1、设置临时数据文件自动扩展。
2、增大临时表空间。查询临时表空间状态:
SQL> select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files;
TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------
FILE_SIZE AUT
---------- ---
TEMP
/data/oracle/oradata/orcl/temp01.dbf
100 YES扩展临时表空间:
方法一、增大临时文件大小:
SQL> alter database tempfile '/data/oracle/oradata/orcl/temp01.dbf' resize 100M;
Database altered.
方法二、将临时数据文件设为自动扩展:
SQL> alter database tempfile '/data/oracle/oradata/orcl/temp01.dbf' autoextend on next 3M maxsize unlimited;
Database altered.
方法三、向临时表空间中添加数据文件:
SQL> alter tablespace temp add tempfile '/data/oracle/oradata/orcl/temp01.dbf' size 10M;
Tablespace altered.