修改数据库最大连接数-大数据第一股 数联铭品
问题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';