Oracle(5): 查看oracle数据库的连接数和会话

一、 查看oracle数据库的连接数和会话

1、切换到oracle用户

[root@oracledb ~]# su - oracle
Last login: Tue Jun  1 01:48:10 PDT 2021 on pts/5

2、以dba身份进入sql语句

[oracle@oracledb ~]$ sqlplus "/as sysdba"

3、查看连接数

#查询当前数据库进程的连接数

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.






4、查看oracle资源利用率

Oracle(5): 查看oracle数据库的连接数和会话_第1张图片

参考:

查看oracle数据库的连接数以及用户 - 漠漠颜 - 博客园

二、备注

1、#查看数据库设置的最大连接数和最大session数量

#查询设置的最大连接数:

select value from v$parameter where name ='processes'; 

 #查看的是汇总的信息:

show parameter processes

Oracle(5): 查看oracle数据库的连接数和会话_第2张图片

这里为允许访问2240个用户。

PROCESS
  该参数指定同时连接到Oracle服务器上的最大用户进程数。该参数值包括6个后台进程和一个登录,因此,该参数值为20,则只能有13或14个并发用户连接到服务器。

 2、查询会话数

SQL>select * from v$license;

Oracle(5): 查看oracle数据库的连接数和会话_第3张图片

 其中sessions_highwater纪录曾经到达的最大会话数
************************************
SESSION_MAX
  该参数指出允许并发用户会话的最大数。若此参数为0,则不能实施并发。若并发的用户会话数已达到此极限,则只有具有RESTRICTED SESSION权限的用户才能连接到服务器。
****************************************
USERS_MAX
  该参数指出在一个数据库上可建立的最大用户数。当达到最大值时,便不能再建新用户,可改变此值以放松限制。在SESSION_MAX_或USER_MAX为0时,则并发会话或任何用户都不能用。若对不同的实例,此参数不同时,则以第一个登录的数据库实例的参数为准。
*******************************************

3、查看连接数

.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;

修改连接数(oracle 19时下面命令不能用)

#修改数据库允许的最大连接数:
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;

1、压测100个线程,检查oracle的连接数

Oracle(5): 查看oracle数据库的连接数和会话_第4张图片

2、压测400时,查看连接数

Oracle(5): 查看oracle数据库的连接数和会话_第5张图片

 

参考:oracle修改最大连接数

ORA-01652: unable to extend temp segment by 128 in tablespace TEMP解决办法

压测时遇到问题,参考下面解决办法,我用第二种。

如果临时表空间没有设置为自动扩展,则临时表空间不够时事务执行将会报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.

你可能感兴趣的:(#,Oracle数据库,数据库,oracle,sql)