当前位置: 主页 > 数据库

修改数据库最大连接数-大数据第一股 数联铭品

发布时间:2023-03-10 07:03   浏览次数:次   作者:佚名

问题1:

oracle进程数和会话数最大值是否很小?

查看命令

ps -ef|grep oracle
ps -ef|grep ora   
show parameters processes; 

问题2:

dblink的连接数是否很小?

查看命令:

> show parameters open_links;

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 
Connected as sys@orcl AS SYSDBA
SQL> ps -ef|grep oracle
  2  
SQL>  ps -ef|grep ora
  2  
SQL> show parameters 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> show parameters open_links;
NAME                                 TYPE        VALUE
-------------------------------------------------------
open_links                           integer     4
open_links_per_instance              integer     4
SQL> 

问题3:

定时任务的最大使用量是否很小

查看数据库中定时任务的最多并发数(默认:1000)

 show parameter job_queue_processes -- 超过了,就得排队

设置数据库中定时任务的最多并发数(比如:1000)

 alter system set job_queue_processes = 1000

额外问题一解决:job不主动执行的问题的解决办法修改数据库最大连接数,查看job_queue_process参数是否为0,如果为0就增加数量。

额外问题二描述:客户端连接数据库报错

ORA-12516: TNS: 监听程序无法找到匹配协议栈的可用句柄

解决:修改processes和sessions值

查看定时任务的最大使用量

查看最大进程数:

show parameters processes;

最大进程数改为5000

alter system set processes=5000 scope = spfile;

查看dblink的连接数:

show parameters open_links;

dblink的连接数改为50

alter system set open_links=50 scope=spfile;
alter system set open_links_per_instance=50 scope=spfile;

查看最大会话数

show parameter sessions;

最大会话数改为5000

alter system set sessions=5000 scope=spfile;

查看数据库中定时任务的最多并发数(默认:1000)

 show parameter job_queue_processes -- 超过了,就得排队

3.设置数据库中定时任务的最多并发数(比如:1000)

  alter system set job_queue_processes = 1000

SQL> show parameter job_queue_process;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------
job_queue_processes                  integer     0

最大连接数和最大会话数修改后,要重启数据库,才能生效,重启查看

重启数据库,使更改生效

SQL> shutdown immediate
SQL> startup
SQL> show parameter processes

登入服务器重新查看

最大连接数会话数与连接数的关系为sessions=(1.1*process+5)

job_queue_processes总结:

1)job_queue_processes参数决定了job作业能够使用的总进程数。

2)当该参数为0值,任何job都不会被执行,建议合理设置该值且至少大于1。

3)对于job运行时间也应该尽量合理的设置间隔以及启动时间。

4)如果同一时间内运行的Job数很多修改数据库最大连接数,过小的参数值导致job不得不进行等待。而过大的参数值则消耗更多的系统资源。

5)job_queue_processes取值范围为0到1000,总共可创建多少个job进程由job_queue_processes参数来决定。

6)当job_queue_processes大于1时,且并行执行job时,至少一个为协调进程。其总数不会超出job_queue_processes的值。

7)job_queue_processes参数的值为且DBMS_JOB与DBMS_SCHEDULER共享。

8)job_queue_processes参数,当设定该值为0的时候则任意方式创建的job都不会运行。

9)非零值的job_queue_processes,其job子进程数依赖于可用资源,资源配置方式以及当前运行的job数来自行调整。

10)此外对于Scheduler jobs方式还受限制于scheduler属性MAX_JOB_SLAVE_PROCESSES的设置。

11)可以通过DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE来设置max_job_slave_processes

命令总结

查看最大进程数:

show parameters processes;

最大进程数改为5000

alter system set processes=5000 scope = spfile;

查看dblink的连接数:

show parameters open_links;

dblink的连接数改为50

alter system set open_links=50 scope=spfile;
alter system set open_links_per_instance=50 scope=spfile;

查看最大会话数

show parameter sessions;

最大会话数改为5000

alter system set sessions=5000 scope=spfile;

查看数据库中定时任务的最多并发数(默认:1000)

 show parameter job_queue_processes -- 超过了,就得排队

3.设置数据库中定时任务的最多并发数(比如:1000)

  alter system set job_queue_processes = 1000

使用SQL语句查询

当前连接数

select count(*) from v$process where program ='Oracle.EXE(SHAD)';

允许最大连接数:

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

当前的session连接数:

select count(*) from v$session; 

并发连接数

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