Subject: ORA-3113 Unable To Compile Procedure With Debug Option
Doc ID: Note:1066326.6 Type: PROBLEM
Last Revision Date: 24-JUN-2005 Status: PUBLISHED
Problem Description:
In Procedure Builder, run a procedure or package not getting => showing uhichp
in interpreter at break point or any stack information, e.g., variable values
Stack reads something like : [1] Program Unit line 8
Reproduces with a basic procedure which is on the server.
A local procedure does not reproduce the problem and shows all stack information.
If this is a private procedure in a package then see Bug 669489
Try executing in SQL*Plus:
SQL> ALTER PACKAGE <package_name> COMPILE DEBUG;
Causes ORA-3113: END-OF-FILE ON COMMUNICATION CHANNEL
Problem Explanation:
Executed the following SQL statement in SQL*Plus to prevent the ORA-3113 error:
SQL> ALTER SESSION SET plsql_debug=FALSE;
This means that the procedure/package gets compiled without the debug option.
Without debug no stack information is generated and therefore Procedure Builder
does not show it.
The ORA-3113 error is generated because of Bug 593630, which is resolved by
application of Server Patch 8.0.5.1.
Additional problems may also affect a final solution:
For example:-
- The compiler may successfully compile some syntactically incorrect
code. Moving code locally may help solve this problem.
e.g., If the variable is not null and it is a complex datatype, then
initialize the variable as “variable.item != 0”
Reference: PLSQL Manual; chapter 8; page 4-30
- The compiler accepts undeclared variables
- It seems that in Procedure Builder, doing a Compile->Compile All does not
save stack information while Save does.
Search Words:
PROCEDURE BUILDER STACK ORA-3113 COMPILE PACKAGE DEBUG
Solution Description:
After applying patch for 8.0.5.1.
Execute the following in SQL*Plus:
SQL> ALTER PACKAGE COMPILE DEBUG;
for every procedure or package.
This can be done by creating a script using user_objects
or
Resave every package in Procedure Builder.
Note: The user logged into the database must be the owner of the procedure
or package to see the stack information.