Consultor Eletrônico



Kbase P32934: Error (1175) occurs for SQLSRV2 process when connecting SQL-92 clients to database on AIX
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   8/11/2006
Status: Verified

FACT(s) (Environment):

IBM AIX
Progress 9.1D
Progress 9.1E

SYMPTOM(s):

Error (1175) occurs for SQLSRV2 process when connecting SQL-92 clients to database on AIX

Maximum number of shared-memory segments per process exceeded. (1175)

Failure during dsmUserConnect (-1)

4GL clients connect to the database without problems.

The EXTSHM environment variable is set to OFF, allowing only 11 shared memory segments to be used.

proutil dbname -C dbipcs shows the Database is using 9 or more shared memory segments

Service Pack 1 or higher is installed for Progress 9.1D

CAUSE:


On 32-bit AIX there is a mapping limit of 11 shared memory sections unless the environment variable EXTSHM=ON. Setting the environment variable EXTSHM to ON allows the 11 shared memory segments to be exceeded.

By default the _sqlsrv2 process uses three shared memory segments. If EXTSHM is not set to ON and the database is using more then 8 shared memory segments the above error will occur.

The _sqlsrv2 process in Progress 9.1D01 or higher, when linked allocates 3 memory sections for use as stack and heap memory for processing threads (1 per connection). The amount of stack and heap storage needed by the _sqlsrv2 process results from both stack and heap
memory allocation.

FIX:

There are two ways to resolve this problem:

1. Set the EXTSHM environment variable to On. This will allow the Operating System to use more shared memory segments. For more information see Solution ID: P20901.

2. The EXTSHM set to on may cause performance degradation on the system. If the number of connections per SQL Server process is controlled along with SQL statement complexity, then reduction of shared memory segments in the _sqlsrv2 process from 3 to 2 can be a possibility. To drop the number of shared memory segments from 3 to 2 perform the following:


1. Log on the system with an user that has the correct privileges to the Progress installation such as root account
2. Ensure that there are no _sqlsrv2 processes currently running: ps -ef | grep _sqlsrv2
2. Backup $DLC/bin/_sqlsrv2 process
3. Run the following command against _sqlsrv2 from the $DLC/bin directory:
echo '\0040\0\0\0' | dd of=./_sqlsrv2 bs=4 count=1 seek=19 conv=notrunc
Since there is a possibility of the _sqlsrv2 running out of memory. Progress Technical Support highly recommends testing the modified version of _sqlsrv2 before use on production with queries that will run in the production environment and manipulating the same amount of data.

Stack allocation is governed by the number of threads with a default of 1MB of stack allocated per thread. Heap memory allocation is governed in part by the complexity of SQL statements being executed.