ORA-12810: PARALLEL_MAX_SERVERS must be less than or equal to string
Cause: An attempt was made to set the PARALLEL_MAX_SERVERS parameter to a value higher than the maximum allowed by the system.
Action: Set PARALLEL_MAX_SERVERS to a value less than or equal to the maximum specified in the accompanying message and retry.
ORA-12810 : PARALLEL_MAX_SERVERS must be less than or equal to string是当PARALLEL_MAX_SERVERS参数的值大于给定的值时,抛出的错误。可以使用v$resource_limit视图查看当前用户设置的PARALLEL_MAX_SERVERS参数值和允许的最大值。
ORA-12810 表明 Simple Class Operating System-wide Resource Manager 的名义分配的 OS 进程数不能大于指定的数字. 这个限制指定每一个CPU多少个进程可以同时运行。
常见情况:
这种情况通常出现在在 Linux 或 Solaris 上启动多个并行会话时,如果你设置了 PARALLEL_MAX_SERVERS 参数大于系统设置的最大进程数时会报错 。
可以使用以下 SQL 语句查看系统设置给每个 CPU 允许的最大 OFS 进程数:
SQL> SELECT * FROM v$resource_limit WHERE resource_name=’processor’ AND limit_name=’processor_count’;
LIMIT_NAME PROCESSOR_COUNT
HARD_LIMIT
若想避免报这个错,需使用操作系统提供的工具(如/usr/sbin/psrset)或者是编辑/etc/project 文件,来设置要求的OFSS的最大进程数。
1. 查看每个 cpu 允许的最大 OFS 进程数;
2. 使用操作系统提供的工具或者编辑 /etc/project 文件,设置合理的最大进程数;
3. 使用 ALTER SYSTEM 语句,设置PARALLEL_MAX_SERVERS参数为合理的值;
4. 重新查看当前 PARALLEL_MAX_SERVERS 参数;
5. 重新启动多个并行会话,查看是否能正常运行。