官方文档:

seesions和processes的关系

seesion是oracle层面的回话数量,processes是OS层面的进程数,windows叫线程,linux进程

Oracle 11gR2之前:sessions=(1.1*processes) + 5

Oracle 11gR2之后:sessions=(1.5*porcesses) + 22

当Oracle需要启动新的process而又已经达到processes参数时,就会报错:

00020, 00000, "maximum number of processes (%s) exceeded"
// *Cause: All process state objects are in use.
// *Action: Increase the value of the PROCESSES initialization parameter.

当数据库连接的并发用户已经达到sessions这个值时,又有新session连进来,就会报错

00018, 00000, "maximum number of sessions exceeded"
// *Cause: All session state objects are in use.
// *Action: Increase the value of the SESSIONS initialization parameter.

如何使用sqlplus查看、修改processes呢?

使用sys,以sysdba权限登录

1、查看processes和sessions参数

SQL> show parameter processes
SQL> show parameter sessions

2、修改processes和sessions值

SQL> alter system set processes=500 scope=spfile;
系统已更改。
SQL> alter system set sessions=555 scope=spfile;
系统已更改。

3、修改processes和sessions值必须重启oracle服务器才能生效

ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:
sessions=(1.1*process+5)

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

SQL> select count(*) from v$process;

5、查看数据库当前会话的连接数

SQL> select count(*) from v$session;

6、查看数据库的并发连接数

SQL> select count(*) from v$session where status='ACTIVE';

7、查看当前数据库建立的会话情况

SQL> select sid,serial#,username,program,machine,status from v$session;

8、查询数据库允许的最大连接数

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

或者:

SQL> show parameter processes;

9、重启数据库

shutdown immediate;
startup;

注:如果修改出错ORA-32001: 已请求写入 SPFILE, 但是在启动时未指定 SPFIL

<1> 此时查看数据库是spfile还是pfile启动

SQL> show parameter spfile
NAME TYPE VALUE
------ ----------- ------------------------------------------
spfile string %ORACLE_HOME%DATABASESPFILEORACLE_SID%.ORA

value有值代表由spfile启动,如果为空值代表pfile启动

<2>如果用pfile启动,startup 加上参数pfile=‘路径\initorcl.ora’
<3>pfile spfile转换create pfile from spfile;

参考:
谢可爱在学习:https://blog.csdn.net/lids_nm/article/details/121410452
Aloys寒风: https://www.136.la/mysql/show-31322.html

最后修改:2022 年 06 月 10 日
如果觉得我的文章对你有用,请随意赞赏