Solved

PL/SQL: could not find program unit being called, in LBACSYS.LBAC_EVENTS

Posted on 2001-08-27
2
2,523 Views
Last Modified: 2010-05-18
I have an Oracle 9i database
installed on an SuSE 7.2 Linux system.
It's mostly brand new.
I've copied most of the schema I'm working with from another database/site of ours, because we want to put a new face on an existing model.

While I was porting the schema (side note, does anybody know of a single tool that actually does this correctly????????), I ran into a missing requirement: in one of my procedures, I use DBMS_SQL to dynamically evaluate an SQL statement. When compiling this procedure, I got "package not found" errors.  (Yes, I've since learned about "EXECUTE IMMEDIATE" in trying to find a solution to my problem...)

So, I went over to the database machine, su'd to oracle, and located the dbmssql.sql script. I executed the following commands:
sqlplus /nolog
connect sys/*******@database as sysdba
@dbmssql

From that moment, I've been unable to update any complex items on my database. I keep seeing this error block:

ORA-04045: errors during recompilation/revalidation of STATS.TRG_LOG_SITEINFO
ORA-06508: PL/SQL: could not find program unit being called
ORA-06512: at "LBACSYS.LBAC_EVENTS", line 440
ORA-06512: at line 2
ORA-06508: PL/SQL: could not find program unit being called
ORA-06512: at "LBACSYS.LBAC_EVENTS", line 440
ORA-06512: at line 2 (DBD ERROR: OCIStmtExecute)


IN attempting to make this error go away, I've even gone so far as to locate the definition of LBACSYS.LBAC_EVENTS in the original installation media, and manually recompile:
connect / as sysdba
@prvtlbac.plb

But it seems to be self-referential, and when one part of the file is evaluated, it nukes the state of the rest of it... <sigh>

HELP!!!
0
Comment
Question by:lordvorp
2 Comments
 
LVL 3

Accepted Solution

by:
ramkb earned 300 total points
ID: 6430100

Hi,

Don't try to recompile SYS objects manually (it will drive you crazy).  To compile all invalid objects, use utlrp.sql
This file is located under $ORACLE_HOME/rdbms/admin

Login as sqlplus internal and run
SQL> @?/rdbms/admin/utlrp.sql

SQL> SELECT COUNT(*) FROM ALL_OBJECTS WHERE STATUS = 'INVALID';

If still there are any invalid objects
SQL> SELECT OWNER, OBJECT_NAME, OBJECT_TYPE
FROM ALL_OBJECTS WHERE STATUS = 'INVALID'

Pls. let us know if the invalidation gets resolved.

Cheers,
Ramesh
0
 
LVL 1

Author Comment

by:lordvorp
ID: 6430241
De nada.  Same error block.

I even tried to rebuild prvtsql.plb:
@prvtsql.plb
That made my problems even worse.  Now, instead of the original error block on @utlrp, it complains about the missing package body. <sigh>

Tellya what, you can have the points.  I'm not getting this database back.  It's a good thing I hadn't actually put any data into it.
0

Featured Post

Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Article by: Swadhin
From the Oracle SQL Reference (http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/queries006.htm) we are told that a join is a query that combines rows from two or more tables, views, or materialized views. This article provides a glimps…
Why doesn't the Oracle optimizer use my index? Querying too much data Most Oracle developers know that an index is useful when you can use it to restrict your result set to a small number of the total rows in a table. So, the obvious side…
This video shows how to Export data from an Oracle database using the Datapump Export Utility.  The corresponding Datapump Import utility is also discussed and demonstrated.
Via a live example, show how to restore a database from backup after a simulated disk failure using RMAN.

776 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question