SQL & PL/SQL :: ORA-06508 / Could Not Find Program Unit Being Called
Apr 5, 2010
I am getting below error when SP (Packaged Procedure) is called from application...
ORA-06508: PL/SQL: could not find program unit being called
After checking DB, i found package to be valid and call to SP giving same error ORA-06588.If i fire alter command to compile the package..
alter package name compile; and then if i try to run the SP in db it runs sucessfully.again after some time ORA-06508 it occurs again. after compiling it starts working fine again.
I am facing below Oracle error when ever I am changing the contents of the package within it. %ORA-06508: PL/SQL: could not find program unit being called:
The packages and the dependents are recopmiled successfully and there are no invalid objects.The problem is resolved only if the database is reastarted.
What might be the problem?I am using a PL/SQL collection of record datatype in this package.
ERROR at line 1: ORA-04063: package body "SYS.DBMS_WORKLOAD_REPOSITORY" has errors ORA-06508: PL/SQL: could not find program unit being called: "SYS.DBMS_WORKLOAD_REPOSITORY" ORA-06512: at line 1
I am using oracle 10g and toad 11.5 . i am trying to call an api from an anonymous block . If i recompile the api after adding dbms_output.put_line and then try to execute the anonymous block ,it shows error as "ORA-06508: PL/SQL: could not find program unit being called". However if i end current session and open a new session , then the anonymous block will execute without the error. i am made to reconnect the session everytime i make a change to API. making any configurations in toad or database level.
ORA-06508: PL/SQL: could not find program unit being called ORA error, why it is getting, what is the corrective action for this error. i checked my package and dependent objects all are in VALID state only. But as soon as i get this error, LAST_DDL_TIME for my package is being changed to current time when the package was running.
Actually what happens is that we are connected to oracle through forms 6i. suddenly we receive the error " ORA-06508: PL/SQL: could not find program unit being called "
while doing some transaction. we have searched on net and meta link. they say that the package / procedure called has become invalid or recompilation has occurred and that is not compatible. Now we have monitored carefully that there are no changes what so ever has been made in the the package/ procedure.
what could be the reason behind this. we have also checked the global variable issue. we use package level variables but declared in the package body only. (so these are not public)
When I run my package in TOAD and SQL plus I am not getting any errors. My package is being compiled well. When I integrate my Package through WED ADI .I am getting the above error. I am new to oracle apps WEDADI. can any give your valuable sugessions. I have even bounched the apache two times.
The schema for my package is APPS. Can you tell us how to go check the schema of WEB ADI. We see my integrator created in BNE_INTEGRATORS_TL. Since it is store in BNE table, the schema for BNE table is 'BNE'?
How to provide the access of package to the WEB ADI?
i am creating a report using a function in the select query..suppose this is my function that i created in the program unit of the report
FUNCTION is_numeric_rep (p_strval in varchar2) RETURN NUMBER IS l_numval NUMBER; BEGIN l_numval := TO_NUMBER(p_strval); RETURN 1; EXCEPTION WHEN OTHERS THEN RETURN 0; END is_numeric_rep;
and also suppose this is the query of the report
Select is_numeric_rep('343aa43') From dual
when pressing ok on the query statment in the report it give me this error: ORA-00904 "is_numeric_rep":invalid identifier although when i create this function as a stored function in the database schema and use it in the report it works fine with no problems.
In my Organization I am trying to install oracle ODTwithODAC112030 but one Error showing that is java virtual machine could not find main class program will Exit.
Server Configuration Dell power Edge r510 Windows 2003 64 bit serv PAck 2 Citrix Presentation server 4.5 .
After our client upgraded to 11g database and application server, they are getting this error while trying to access another form from the option menu (The option menu is generated with a library, the values are taken from a database table). This issue occurs only in one particular scenerio, and only in on form, other forms with similar functionality and same structure are working perfectly fine. The error is written below.
FRM-21011: PL/SQL unhandled exception ORA-06508
I tried in my environment (10G), no error exist there.In 11G environment, I tried re-attaching a library in the form and compiling again, the error does not come after recompiliation. But the client can still see the error even after recompiling the form (after reattaching that particular library).I could find the below info on google:
FRM-21011: PL/SQL unhandled exception %s. Cause: An unhandled exception occurred while executing a menu trigger. Action: Examine the text of the exception in this message. If this indicates a cause, correct it. If the problem persists, contact Oracle Support Services. Level: 25 Trigger: None
I am using form builder 10G, will compiling the form using Form builder 11G?
ORA-06550: line 26, column 30: PL/SQL: ORA-06552: PL/SQL: Compilation unit analysis terminated ORA-06553: PLS-320: the declaration of the type of this expression is incomplete or malformed ORA-06550: line 7, column 6: PL/SQL: SQL Statement ignored
I am getting the error when i run the below anonymous block. Historic_report_data has got plenty of columns and using only the columns that are in tb_Statement in the query. It is working fine if i use a table with same number of columns as tb_statement instead of historic_report_data.
DECLARE v_cnt NUMBER:=0; v_data_load_error EXCEPTION; BEGIN dbms_output.put_line('Reconciliation scripts'); dbms_output.put_line('Reconcile tb_bank_Account_month and report_hist_data');
When I list the parameters with "show parameter", I get only numeric value for hash_area_size with no unit, what is the unit for that value and conversion of it to MegaBytes.
I have a table called "Subjects" which lists subjects to match with notations in another table I have created a simple sequence (CREATE sequence subjectid) to created the subject id for the table. But I notice that if there is a skip in the date, the sequence increments automatically when I am not even using it. It even appears to be incrementing even when I am not doing any database activity.
This is not an issue of data integrity, because the values in the subject_id column do not need to be sequential, they just need to be unique. But it really has me curious. I created another table called "keep_track" to keep track of what is happening:
I have a procedure in the live environment , which operate in 2 mode.
1 regular load at 10 min 2 nightly
The code is same except they set the last loaded time for both in 2 dfferent rows, so that next time run will get incremental data.
I can trace this procedure on mode 1 that is is scheduled but unable to find how the 2nd one is getting trigger every night. there is no jobs corresponding to that. Is there any way i can find which method is trigger the procedure during night.
I am trying to select the owner of a certain object, only knowing the name of the object and the user calling it.
Problem is this object might exist in more than one schema with the same name, and I only need the one that is called by the active user, which himself/herself might have access to other schemas containing their own copy of the object.
Example:
SELECT OWNER INTO v_schema_name FROM ALL_OBJECTS WHERE OBJECT_NAME = p_object_name;
This works fine, until the object exists in more than one schema to which the current user has access.
A Java program would call a sequence of 5 PLSQL procedures, and they all need to participates the Tranasction defined in Java.
What do I do for the transactions inside PLSQL to ensure all 5 pariticpate in the Java transaction? I suppose I just do not specify any COMMIT in the PLSQL, but that probably would not work as PLSQL would COMMIT by default after exiting the proc?
Wanted to know whether it is possible to know a trigger is getting fired due to which all packages/procedures. If it has got fired for a particular transaction say multiple times, then wanted to get details of the packages/procedures which caused an event so that trigger got fired?
is it possible to obtain a called procedure/function name within package?
For a measuring and tracing purpose, I would like to store an info at the beginning of each procedure/function in package with timestamp + additional details if needed.
For example:
CREATE OR REPLACE PACKAGE BODY "TEST_PACKAGE" IS PROCEDURE proc_1 IS BEGIN
[Code]....
I would like to replace "???????" with a function which would return a name of called procedure, so result of trace data after calling TEST_PACKAGE.proc_2 would be:
In the below SQL, I am calling a function "listagg_nm(deptno)", and function is to get all the employee name for a particular department with comma separated
output is: ------------------------------------------------- DEPTNO SAL LISTAGG_NM(DEPTNO) 10 5000 KING,CLARK,MILLER 10 1300 KING,CLARK,MILLER 10 2450 KING,CLARK,MILLER 20 2975 JONES,SCOTT,FORD,SMITH,ADAMS
[code]....
below are the code
select deptno,sal,listagg_nm(deptno) from emp order by deptno; FUNCTION listagg_nm (p_deptno NUMBER) RETURN CLOB IS v_str CLOB;
[code]....
My doubt/question is for every row in the SQL the function is being called. t means that for 1st row deptno=10, the function is called and return all concatenated name for department 10, then again for 2nd row deptno=10, it again do the same, similarly for all other department.
Can we avoid this, I mean, if function is already returned a concatenated string of ename for deptno=10, then in the next function call it will checks if it is for same department (i.e. deptno=10) then the function will not go into for loop and it will directly return the concatenated string of ename for deptno=10 which we already done for the first row and so on for other department number ( something like storing the value in variable. Is it possible to achive this and does this is good for performance as we are not going into loop inside the function to return the concatenated string of ename for the same deptno everytime ( I have to return more than 10000 char., so i used clob in function and similarly the numbers of row return by SQL is more than 1000)and also how to code this, I tried but unable to achive.
Whenever I export a schema, the logical backup (dmp file) is created with errors. The following Error is thrown. I need to know what step should I have to take to correct it.
EXP-00008: ORACLE error 4063 encountered ORA-04063: package body "SYS.DBMS_REPCAT_UTL" has errors ORA-06508: PL/SQL: could not find program unit being called: "SYS.DBMS_REPCAT_UTL" ORA-06512: at "SYS.DBMS_REPCAT_EXP", line 87 ORA-06512: at line 1 EXP-00083: The previous problem occurred when calling SYS.DBMS_REPCAT_EXP.schema_info_exp . exporting statistics Export terminated successfully with warnings.
I have researched this problem and checked my variable sizes over and over again. I have tested the procedure within the Oracle Express environment and it works fine; HOWEVER, when the procedure is called from my C# app it produces the ORA-06502 error.
The stored procedure signature looks like this...
Original - SQL Code
create or replace save_new_project (p_custorgid in number, p_title in varchar2, p_AOIName in varchar2, p_description in varchar2, p_receiveddate in date, p_deadlinedate in date, p_startdate in date,
[code]....
The OracleParameter in my C# app for the last out param is defined as such...
As I said at the beginning of this post, the procedure works fine in the Oracle environment. So why is it not working by simply calling it from C#? I've tried changing the OracleDbType to CLOB which eliminates the error but it returns a bizarre result. It returns this string, "Oracle.DataAccess.Types.OracleClob".
Since CLOB doesn't really work either I switch back to Varchar2 and specify a size of 5000 (in the database the field I am querying is defined as Varchar(30)). I still get the ORA-06502 error.
I am clueless as to what the problem is. It should work and it does if I run a series of SQL statements in an Oracle SQL Command window. The test that works fine looks like this...
Original - SQL Code
declare v_projid projects.projectid%type; v_statustypedescrip projectstatustypes.type%type; /* this is a varchar(30) */ begin save_new_project(2, 'Some input text goes here', 'More input text', 'And more again','26-APR-2007','26-APR-2007','26-APR-2007','26-APR-2007','users name as inpujt text
[code]....
But calling save_new_project from C# throws ORA-06502. It identifies line 40 of my stored procedure. This is line 40...