Launching inspection form MAI3808 results in error message ORA-04063: package body "atlas.mai" has errors.Form used daily to log safety defects in exor "Maintenance Manager, Inspections, Inspection" . Now it will not allow us to complete/log a defect against an inspection. Same might happen to MAI3660 Budgets form.
Recompiling module MAI gives:
Errors for PACKAGE BODY MAI:3354/5 PL/SQL: SQL Statement ignored3354/12 PL/SQL: ORA-01775: looping chain of synonyms
Cause was a missing table HHINV_LOAD_3 that needed re-creating in highways owner account, without that, package doesn't compile.
The reason why HHINV_LOAD_3 is missing might be the Inventory Loader process that includes a drop and recreate of that table. Sometimes a loading error occurs after the drop and before the recreate, leaving the system without an HHINV_LOAD_3 table at all.
Please contact Bentley Support to discuss.
Recompiling package resulted in the following from sqlplus as atlas
alter package mai compile body;
Errors for PACKAGE BODY MAI:3354/5 PL/SQL: SQL Statement ignored3354/12 PL/SQL: ORA-01775: looping chain of synonymsSQL> spool off
1 select * 2 from dba_synonyms ds 3 where ds.TABLE_OWNER = upper('ATLAS') 4 and not exists (select 'x' 5 from all_objects ao 6 where ao.OWNER = ds.TABLE_OWNER 7 and ao.object_NAME = ds.TABLE_NAME) 8* order by ownerSQL> /
a number of rows appear, but this is the one we need to know about
synonym exists , table doesnt.
OWNER SYNONYM_NAME TABLE_OWNER TABLE_NAMEPUBLIC HHINV_LOAD_3 ATLAS HHINV_LOAD_3
SQL> select table_name from user_tables 2 where table_name like 'HHINV%';
10 rows selected.
SQL> desc hhinv_load_3SP2-0749: Cannot resolve circular path of synonym "hhinv_load_3"
The synonym exists but table doesn't. To find users who do have the table use this:
1 select a.owner,b.created from all_objects a,dba_users b 2 where a.object_type = 'TABLE' 3 and a.object_name = 'HHINV_LOAD_3' 4 and a.owner = b.username 5* order by b.created desc
Copy the table from a user who does have it using this command:
create table atlas.hhinv_load_3 as select * from <subuser>.hhinv_load_3 where 1<1;
Then recompile all invalid objects using the compile_invalid_objs.sql script.
Product TechNotes and FAQs
Bentley Technical Support KnowledgeBase
Bentley LEARN Server
Bentley's Technical Support Group requests that you please confine any comments you have on this Wiki entry to this "Comments or Corrections?" section. THANK YOU!