我们有 Oracle 10 g 数据库,我们收到消息为 ORA-00018: maximum number of sessions exceeded 。我们配置参数如下;
会话 600 进程:600
及其共享服务器模式。我们将其更新为会话:900 和进程:750。现在 Oracle 正在运行,但我需要知道这是否有助于我们继续,或者我还需要做一些其他更改以避免错误“ORA-00018:最大超出会话数"
任何人都可以帮助请您的回复非常感谢
问候约瑟夫
我们有 Oracle 10 g 数据库,我们收到消息为 ORA-00018: maximum number of sessions exceeded 。我们配置参数如下;
会话 600 进程:600
及其共享服务器模式。我们将其更新为会话:900 和进程:750。现在 Oracle 正在运行,但我需要知道这是否有助于我们继续,或者我还需要做一些其他更改以避免错误“ORA-00018:最大超出会话数"
任何人都可以帮助请您的回复非常感谢
问候约瑟夫
您可能有用户进行会话并且根本不释放它们,或者长时间保持它们。当您遇到该异常时,请查看是否有任何长时间运行的事务。
了解这一点的最佳方法是每隔 5-10 分钟连接到数据库并转储 v$session 表。通过这种方式,您可以了解有时所有进程/应用程序都与数据库保持连接。这可能是一个长期运行的进程/守护进程/服务根本没有释放会话的错误。一个简单的脚本,如果您可以作为 cron 作业运行以转储 v$session 表,它可能会变得可见。
对于 12c 数据库,这是我解决它的方法:
1控制正在使用的连接数
登录您的 PDB
sqlplus <username>/<pswd>@<hostname>:1521/<ServiceName>
检查连接数
SELECT
'Currently, '
|| (SELECT COUNT(*) FROM V$SESSION)
|| ' out of '
|| VP.VALUE
|| ' connections are used.' AS USAGE_MESSAGE
FROM
V$PARAMETER VP
WHERE
VP.NAME = 'sessions'
它显示“当前使用了 m 个连接中的 n 个”。这里 n > m。应该是相反的。
2更改最大会话数
在您的 PDB 中以 sys 身份登录
quit
sqlplus / as sysdba
alter session set container = PDB1;
更改会话数
alter system set sessions=100 scope=both sid='*';
3弹回数据库
SQL> shutdown immediate
SQL> startup
打开所有 PDB(由弹跳关闭)
ALTER PLUGGABLE DATABASE ALL OPEN;
4再次控制
sqlplus <username>/<pswd>@<hostname>:1521/<ServiceName>
运行控制 SQL 查询
SELECT
'Currently, '
|| (SELECT COUNT(*) FROM V$SESSION)
|| ' out of '
|| VP.VALUE
|| ' connections are used.' AS USAGE_MESSAGE
FROM
V$PARAMETER VP
WHERE
VP.NAME = 'sessions'
它显示“当前使用了 m 个连接中的 n 个”。现在 n < m。