‎2007 Feb 08 1:14 PM
Can anybody give me some insight as why this error occurs 1st time when the database ( any table) is being accessed.
Runtime errors DBIF_RSQL_SQL_ERROR
Exception CX_SY_OPEN_SQL_DB
-
An SQL error occurred when accessing a table.
-
Error analysis
-
An exception occurred. This exception is dealt with in more detail below
. The exception, which is assigned to the class 'CX_SY_OPEN_SQL_DB', was
neither
caught nor passed along using a RAISING clause, in the procedure
"REPOSITORY_READ" "(FORM)"
.
Since the caller of the procedure could not have expected this exception
to occur, the running program was terminated.
The reason for the exception is:
-
How to correct the error
-
The exception must either be prevented, caught within the procedure
"REPOSITORY_READ"
"(FORM)", or declared in the procedure's RAISING clause.
To prevent the exception, note the following:
Database error text........: "ORA-04031: unable to allocate 4200 bytes of
shared memory ("shared pool","SELECT /*+ FIRST_ROWS */ * ...","library
cache","kkslpkp - literal info.")"
Internal call code.........: "[RSQL/FTCH/TRDIR ]"
Please check the entries in the system log (Transaction SM21).
You may able to find an interim solution to the problem
in the SAP note system. If you have access to the note system yourself,
use the following search criteria:
-
"DBIF_RSQL_SQL_ERROR" CX_SY_OPEN_SQL_DBC
"SAPICP__ " or "ICP__F01 "
"REPOSITORY_READ"
-
If you cannot solve the problem yourself, please send the
following documents to SAP:
1. A hard copy print describing the problem.
To obtain this, select the "Print" function on the current screen.
-
2. A suitable hardcopy prinout of the system log.
To obtain this, call the system log with Transaction SM21
and select the "Print" function to print out the relevant
part.
3. If the programs are your own programs or modified SAP programs,
supply the source code.
To do this, you can either use the "PRINT" command in the editor or
print the programs using the report RSINCL00.
4. Details regarding the conditions under which the error occurred
or which actions and input led to the error.
-
Information on where termination occurred
-
The termination occurred in the ABAP program "SAPICP__ " in "REPOSITORY_READ".
The main program was "RSABAPPROGRAM ".
The termination occurred in line 38 of the source code of the (Include)
program "ICP__F01 "
of the source code of program "ICP__F01 " (when calling the editor 380).
Processing was terminated because the exception "CX_SY_OPEN_SQL_DB" occurred in
the
procedure "REPOSITORY_READ" "(FORM)" but was not handled locally, not declared
in the
RAISING clause of the procedure.
The procedure is in the program "SAPICP__ ". Its source code starts in line 30
of the (Include) program "ICP__F01 ".
‎2007 Mar 01 4:05 AM
hi
Same error i am also getting. Please someone give a solution to this.
Subramanya
‎2007 Mar 01 4:29 AM
looks like there is come communication issues between SAP's application server and SAP's database server? some memory is not getting allocated initially. go to ST22 and c the detailed issue... in the description, u must find smthing try start doing something from the description of the analysis of problem..
hope this will help
Thanks
Ashwani
‎2007 Mar 01 9:07 AM
hi
I did the step 2 in the solution below. It worked me.
Thanks a lot to all
Subramanya
Solution
There are two possible steps to avoid the occurrence of ORA-04031 in an SAP R/3 system. The provided steps should be exactly applied in the following order. Only if a one step does not solve the problem the next step should be executed:
STEP 1: Reduce the memory consumption
Use the recommandations in Note 505246 together with Note 507254 to activate the CBO for the problematic statements.
STEP 2: Increase the size of the shared pool
To benefit from the improved scalability of having multiple subpoolsplease adjust your SHARED_POOL_SIZE init.ora parameter for Oracle 9i or 10g using the following formula:
SPS81 = old (current) SHARED_POOL_SIZE being used
SPS92 = new SHARED_POOL_SIZE needed for Oracle 9.2 or 10.x
cpus = CPU_COUNT
The existing values of SPS81 and cpus can be queried from v$parameter:
select name, value from v$parameter where name in ('SHARED_POOL_SIZE', 'CPU_COUNT');
SPS92 = max ( SPS81, min (( cpus / 4 * 350 MB + 300 MB ), 2.75 GB ))
Examples:
CPUs Shared_Pool_Size New Shared Pool Size
4 500M 650M
6 1G 1G
10 1G 1.175G
32 2G 2.75G
64 2G 2.75G
128 3G
‎2007 Mar 01 9:14 AM