Monday, November 11, 2013

Oracle Apex Upgrade to 4.2.3 fails with package Invalid in Apex_040200 scehma

Issue Description :
After upgrading the oracle APEX from 4.2.2 to 4.2.3 the Apex application did not start and throws package invalid errors:

LINE/COL ERROR
-------- -----------------------------------------------------------------
0/0      PLS-00907: cannot load library unit APEX_040200.WWV_FLOW_SECURITY
         (referenced by APEX_040200.WWV_FLOW_PAGE)
0/0      PLS-00907: cannot load library unit APEX_040200.WWV_FLOW_SECURITY
         (referenced by APEX_040200.WWV_FLOW_DYNAMIC_EXEC)
0/0      PLS-00907: cannot load library unit APEX_040200.WWV_FLOW_SECURITY
         (referenced by APEX_040200.WWV_FLOW_DYNAMIC_EXEC)
0/0      PLS-00907: cannot load library unit APEX_040200.WWV_FLOW_SECURITY
         (referenced by APEX_040200.WWV_FLOW_DYNAMIC_EXEC)
Even UTLRP.sql does not help.

Solution:
The issue here is Missing grants on SYS and many other objects to APEX_040200 schema.

grant EXECUTE on SYS.OWA to APEX_040200;
grant EXECUTE on SYS.OWA_COOKIE to APEX_040200;
grant EXECUTE on SYS.OWA_CUSTOM to APEX_040200;
grant EXECUTE on SYS.OWA_UTIL to APEX_040200;
grant SELECT on SYS.USER$ to APEX_040200;
grant SELECT on SYS.V_$PARAMETER to APEX_040200;
grant SELECT on SYS.V_$OBJECT_DEPENDENCY to APEX_040200;
grant SELECT on SYS.V_$TIMER to APEX_040200;
grant SELECT on SYS.V_$VERSION to APEX_040200;
grant EXECUTE on SYS.WPG_DOCLOAD to APEX_040200;
grant SELECT on SYS.GV_$OPEN_CURSOR to APEX_040200;
grant SELECT on SYS.GV_$PROCESS to APEX_040200;
grant SELECT on SYS.GV_$SESSION to APEX_040200;
grant SELECT on SYS.GV_$SESSION_LONGOPS to APEX_040200;
grant SELECT on SYS.GV_$SESSION_WAIT to APEX_040200;
grant SELECT on SYS.GV_$SESSTAT to APEX_040200;
grant SELECT on SYS.GV_$SESS_IO to APEX_040200;
grant SELECT on SYS.GV_$SQL to APEX_040200;
grant SELECT on SYS.GV_$SQL_PLAN to APEX_040200;
grant SELECT on SYS.GV_$STATNAME to APEX_040200;
grant SELECT on SYS.GV_$SYSSTAT to APEX_040200;
grant SELECT on SYS.V_$DATABASE to APEX_040200;
grant SELECT on SYS.V_$DBLINK to APEX_040200;
grant SELECT on SYS.DBA_SEGMENTS to APEX_040200;
grant SELECT on SYS.DBA_SEQUENCES to APEX_040200;
grant SELECT on SYS.DBA_SNAPSHOTS to APEX_040200;
grant SELECT on SYS.DBA_SOURCE to APEX_040200;
grant SELECT on SYS.USER_SOURCE to APEX_040200;
grant SELECT on SYS.USER_SYS_PRIVS to APEX_040200;
grant SELECT on SYS.USER_TAB_COLUMNS to APEX_040200;
grant SELECT on SYS.GV_$INSTANCE to APEX_040200;
grant SELECT on SYS.GV_$LOCKED_OBJECT to APEX_040200;
grant SELECT on SYS.GV_$MYSTAT to APEX_040200;
grant SELECT on SYS.ALL_OBJECTS to APEX_040200;
grant SELECT on SYS.ALL_SCHEDULER_JOBS to APEX_040200;
grant SELECT on SYS.DBA_INDEXES to APEX_040200;
grant SELECT on SYS.DBA_IND_COLUMNS to APEX_040200;
grant SELECT on SYS.DBA_IND_EXPRESSIONS to APEX_040200;
grant SELECT on SYS.DBA_JOBS to APEX_040200;
grant SELECT on SYS.DBA_LOCK to APEX_040200;
grant SELECT on SYS.DBA_OBJECTS to APEX_040200;
grant SELECT on SYS.DBA_PROCEDURES to APEX_040200;
grant SELECT on SYS.DBA_PROFILES to APEX_040200;
grant EXECUTE on SYS.DBMS_RANDOM to APEX_040200;
grant EXECUTE on SYS.DBMS_REGISTRY to APEX_040200;
grant SELECT on SYS.SEG$ to APEX_040200;
grant SELECT on SYS.DBA_ERRORS to APEX_040200;
grant SELECT on SYS.DBA_EXTENTS to APEX_040200;
grant SELECT on SYS.DBA_FEATURE_USAGE_STATISTICS to APEX_040200;
grant SELECT on SYS.DBA_FREE_SPACE to APEX_040200;
grant EXECUTE on SYS.WWV_DBMS_SQL to APEX_040200;
grant SELECT on SYS.WWV_FLOW_GV$SESSION to APEX_040200;
grant EXECUTE on SYS.WWV_FLOW_KEY to APEX_040200;
grant EXECUTE on SYS.WWV_FLOW_VAL to APEX_040200;
grant SELECT on SYS.USER_OBJECTS to APEX_040200;
grant SELECT on SYS.USER_ROLE_PRIVS to APEX_040200;
grant SELECT on SYS.V_$ENCRYPTION_WALLET to APEX_040200;
grant EXECUTE on SYS.DBMS_APPLICATION_INFO to APEX_040200;
grant EXECUTE on SYS.DBMS_SQL to APEX_040200;
grant EXECUTE on SYS.DBMS_STATS to APEX_040200;
grant EXECUTE on SYS.UTL_ENCODE to APEX_040200;
grant EXECUTE on SYS.UTL_HTTP to APEX_040200;
grant EXECUTE on SYS.UTL_LMS to APEX_040200;
grant EXECUTE on SYS.UTL_RAW to APEX_040200;
grant EXECUTE on SYS.KU$_DDL to APEX_040200;
grant EXECUTE on SYS.KU$_DDLS to APEX_040200;
grant SELECT on SYS.DBA_RECYCLEBIN to APEX_040200;
grant SELECT on SYS.DBA_ROLE_PRIVS to APEX_040200;
grant SELECT on SYS.DBA_ROLLBACK_SEGS to APEX_040200;
grant SELECT on SYS.DBA_RSRC_CONSUMER_GROUPS to APEX_040200;
grant SELECT on SYS.DBA_RSRC_CONSUMER_GROUP_PRIVS to APEX_040200;
grant SELECT on SYS.DBA_RSRC_PLAN_DIRECTIVES to APEX_040200;
grant SELECT on SYS.ALL_SYNONYMS to APEX_040200;
grant SELECT on SYS.ALL_TAB_COLUMNS to APEX_040200;
grant SELECT on SYS.ALL_TAB_COMMENTS to APEX_040200;
grant SELECT on SYS.ALL_USERS to APEX_040200;
grant SELECT on SYS.ALL_VIEWS to APEX_040200;
grant SELECT on SYS.DBA_COL_COMMENTS to APEX_040200;
grant SELECT on SYS.DBA_COL_PRIVS to APEX_040200;
grant SELECT on SYS.DBA_CONSTRAINTS to APEX_040200;
grant SELECT on SYS.DBA_CONS_COLUMNS to APEX_040200;
grant SELECT on SYS.DBA_DATA_FILES to APEX_040200;
grant SELECT on SYS.DBA_DB_LINKS to APEX_040200;
grant SELECT on SYS.DBA_DEPENDENCIES to APEX_040200;
grant SELECT on SYS.DBA_SYNONYMS to APEX_040200;
grant SELECT on SYS.DBA_SYS_PRIVS to APEX_040200;
grant SELECT on SYS.DBA_TABLES to APEX_040200;
grant SELECT on SYS.DBA_TABLESPACES to APEX_040200;
grant SELECT on SYS.DBA_TAB_COLUMNS to APEX_040200;
grant SELECT on SYS.DBA_TAB_PRIVS to APEX_040200;
grant SELECT on SYS.DBA_TRIGGERS to APEX_040200;
grant SELECT on SYS.DBA_TRIGGER_COLS to APEX_040200;
grant SELECT on SYS.DBA_TS_QUOTAS to APEX_040200;
grant SELECT on SYS.DBA_TYPES to APEX_040200;
grant SELECT on SYS.DBA_USERS to APEX_040200;
grant SELECT on SYS.DBA_VIEWS to APEX_040200;
grant EXECUTE on SYS.DBMS_SCHEDULER to APEX_040200;
grant EXECUTE on SYS.DBMS_SESSION to APEX_040200;
grant EXECUTE on SYS.DBMS_TYPES to APEX_040200;
grant EXECUTE on SYS.DBMS_UTILITY to APEX_040200;
grant EXECUTE on SYS.DBMS_XMLGEN to APEX_040200;
grant EXECUTE on SYS.DBMS_ASSERT to APEX_040200;
grant EXECUTE on SYS.DBMS_CRYPTO to APEX_040200;
grant EXECUTE on SYS.DBMS_DB_VERSION to APEX_040200;
grant SELECT on SYS.OBJ$ to APEX_040200;
grant EXECUTE on SYS.DBMS_JOB to APEX_040200;
grant EXECUTE on SYS.DBMS_LDAP to APEX_040200;
grant EXECUTE on SYS.DBMS_LDAP_UTL to APEX_040200;
grant EXECUTE on SYS.DBMS_LOB to APEX_040200;
grant EXECUTE on SYS.DBMS_LOCK to APEX_040200;
grant EXECUTE on SYS.DBMS_METADATA to APEX_040200;
grant EXECUTE on SYS.DBMS_OBFUSCATION_TOOLKIT to APEX_040200;
grant EXECUTE on SYS.DBMS_OUTPUT to APEX_040200;
grant EXECUTE on SYS.DBMS_FLASHBACK to APEX_040200;
grant SELECT on SYS.ARGUMENT$ to APEX_040200;
grant SELECT on SYS.ALL_DEPENDENCIES to APEX_040200;
grant SELECT on SYS.ALL_COL_COMMENTS to APEX_040200;
grant SELECT on SYS.ALL_CONSTRAINTS to APEX_040200;
grant EXECUTE on SYS.HTF to APEX_040200;
grant EXECUTE on SYS.HTP to APEX_040200;
grant SELECT on SYS.USER_CONSTRAINTS to APEX_040200;
grant SELECT on SYS.NLS_DATABASE_PARAMETERS to APEX_040200;
grant SELECT on SYS.NLS_SESSION_PARAMETERS to APEX_040200;
grant SELECT on SYS.TS$ to APEX_040200;
grant SELECT on SYS.GV_$BACKUP to APEX_040200;
grant SELECT on SYS.DBA_ARGUMENTS to APEX_040200;
grant FLASHBACK on SYS.DUAL to APEX_040200;
grant EXECUTE on SYS.UTL_SMTP to APEX_040200;
grant EXECUTE on SYS.UTL_URL to APEX_040200;
grant ALTER on FLOWS_FILES.WWV_FLOW_FILE_OBJECTS$ to APEX_040200;
grant DELETE on FLOWS_FILES.WWV_FLOW_FILE_OBJECTS$ to APEX_040200;
grant INDEX on FLOWS_FILES.WWV_FLOW_FILE_OBJECTS$ to APEX_040200;
grant INSERT on FLOWS_FILES.WWV_FLOW_FILE_OBJECTS$ to APEX_040200;
grant SELECT on FLOWS_FILES.WWV_FLOW_FILE_OBJECTS$ to APEX_040200;
grant UPDATE on FLOWS_FILES.WWV_FLOW_FILE_OBJECTS$ to APEX_040200;
grant REFERENCES on FLOWS_FILES.WWV_FLOW_FILE_OBJECTS$ to APEX_040200;
grant ON COMMIT REFRESH on FLOWS_FILES.WWV_FLOW_FILE_OBJECTS$ to APEX_040200;
grant QUERY REWRITE on FLOWS_FILES.WWV_FLOW_FILE_OBJECTS$ to APEX_040200;
grant FLASHBACK on FLOWS_FILES.WWV_FLOW_FILE_OBJECTS$ to APEX_040200;
grant EXECUTE on XDB.DBMS_XMLDOM to APEX_040200;
grant EXECUTE on XDB.DBMS_XMLPARSER to APEX_040200;
grant EXECUTE on FLOWS_030100.WWV_FLOWS_VERSION to APEX_040200;

The above grants should resolve the issue. Even if some of the above grants fails with object does not exist errors, its okay.

- saket goenka

No comments:

Post a Comment