Oracle 11g最大进程/会话/事务限制

时间:2018-09-27 11:29:06

标签: oracle oracle11g oci oracle-xe

我在做什么

我正在研究包含OCI的Oracle驱动程序。为了对其进行测试(主要是稳定性和修复内存泄漏),我正在使用Oracle Database 11g Express Edition(我不是Oracle专家,所以我不知道这是否是正确的版本)。为此,它需要一次提交大量事务:同时进行数十个连接,每个连接维护一个会话池,其中数十个会话同时创建表,插入大量数据并删除表。

无论如何,我很快就遇到了以下错误:

  

ORA-12516:TNS:listener找不到匹配的可用处理程序   协议栈

事实证明,这是因为进程/会话/交易限制不够高。在互联网上搜索时,有人告诉我可以这样设置:

alter system set processes=1000 scope=spfile;
alter system set sessions=1000 scope=spfile;
alter system set transactions=1000 scope=spfile;

显然,事实要复杂得多,因为这些值是相互依赖设置的,并且每个版本的工作方式似乎都不同。根据Oracle的文档here,这完全取决于流程

  

SESSIONS和TRANSACTIONS参数的默认值为   从此参数派生。

并且进程不能更改:

  

可修改的编号

...同时它正在谈论更改它时会发生什么:

  

因此,如果您更改PROCESSES [...]

的值

所以这不是很有帮助。也许我在这里误解了什么。无论如何,使用上面的alter system调用,我更改了值,更改成功。当我打电话时

(select 'sessions', current_utilization, limit_value from v$resource_limit where resource_name='sessions')
union
(select 'processes', current_utilization, limit_value from v$resource_limit where resource_name='processes')
union
(select 'transactions', current_utilization, limit_value from v$resource_limit where resource_name='transactions');

我得到以下结果:

'SESSIONS'   CURRENT_UTILIZATION LIMIT_VALUE
------------ ------------------- ----------------------------------------
processes                    314       1000
sessions                     317       1524
transactions                   2  UNLIMITED

与Oracle文档所说的不同,似乎可以更改流程,将会话设置为比hereprocesses * 1.5 + 22规则多2个,并且事务似乎是无限的。该更改是有效的,我现在可以进行更多的连接和会话,而不会遇到错误ORA-12516。到目前为止,一切都很好。

我的问题

我想要更多的连接,所以我尝试将其设置为10000。但是,当我这样做时,数据库甚至无法正常启动。当我尝试使用sqlplus连接到它时,出现以下消息:

  

已连接到空闲实例

我无法以任何方式使用数据库,startup也将无法使用。我重新安装了数据库,将其设置为1000,重新启动后就可以了。在不更改设置的情况下重新安装和重新引导也可以。重新安装它,将其设置为10000,然后重新启动,但是不起作用。这使我相信可以设置这些值的上限是有限制的,超过该限制将使数据库无法正常启动。

所以我的问题是:我可以为Oracle Database 11g Express Edition设置的最大进程/会话/事务限制是多少?是否有任何因素影响我可以控制/更改的限制?还是我对所有这些都产生了严重的误解,而解决方案却完全不同?我在其上运行的计算机是运行Windows 10的功能相当强大的计算机,因此电源不应该成为问题。除非软件强制实施人为限制,但我确实在搜索中找到了此类注释。

谢谢。

0 个答案:

没有答案