Skip to main content

Nightly we receive a Warning from each execution of the “Heavy Cleanup” Database Background Job.

Is there an existing fix, and can anyone explain the risks we may encounter prior to addressing this?

 

Description:

Schedule id 83 : Heavy Cleanup

 

Function

Batch_Sys.Fnd_Heavy_Cleanup_

 

Text:

Security_SYS.Cleanup__ failed ORA-12899: value too large for column "IFSAPP"."SECURITY_SYS_PRIVS_TAB"."TABLE_NAME" (actual: 40, maximum: 30)

 

Status Type:

WARNING

Hi @tking,

This is usually caused by a custom view or package created by someone.


Please run following queries on the database to identify any database objects that exceed this limits
 

SELECT * FROM (
SELECT grantee, table_name, privilege
FROM all_tab_privs_made
WHERE owner = 'IFSAPP' AND privilege IN ('EXECUTE', 'SELECT')
AND grantee IN (SELECT role FROM fnd_role_tab)
AND table_name IN (SELECT object_name FROM user_objects WHERE object_type IN ('PACKAGE', 'VIEW')
AND grantor = 'IFSAPP')) t
WHERE length(t.table_name) > 30;

 

select * from SYS.DBA_VIEWS 
where length(view_name) > 30;

 

select * from SYS.DBA_OBJECTS
where owner = 'IFSAPP' and object_type = 'PACKAGE' and length(object_name) > 30 and object_name like '%API';


select * from SYS.DBA_TABLES where length(table_name) > 30;

Hope this helps!


Thank you Charith.

I appreciate the insight and the code.

 

Interestingly “no rows selected.” from each of the queries.

 

Tim

 


If there are custom objects (tables, sequences) grants done through SQLPLUS those can be found by altering Charith’s first SQL a little as below.

 

SELECT *

  FROM (SELECT grantee, table_name, privilege

          FROM all_tab_privs_made

         WHERE owner = 'IFSAPP'

           AND privilege IN ('EXECUTE', 'SELECT')

           AND grantee IN (SELECT role FROM fnd_role_tab)

           AND table_name IN (SELECT object_name

                                FROM user_objects

                               WHERE object_type IN

                                     ('PACKAGE', 'VIEW', 'TABLE', 'SEQUENCE')

                                 AND grantor = 'IFSAPP')) t

 WHERE length(t.table_name) > 30;


Ruchira,

Many thanks to you also for taking the time to reply with a suggestion.

Unfortunately, your query also results in no rows selected.

Sincerely,

Tim


hmmm maybe a col comment is causing the issue. My last SQL for the week 

 

SELECT table_name,

       Dictionary_SYS.Comment_Value_('LU', comments) 

       FROM fnd_tab_comments WHERE LENGTH(Dictionary_SYS.Comment_Value_('LU', comments)) > 30