How do you compile your wrapped functions

  • From: Juan Carlos Reyes Pacheco <jcdrpllist@xxxxxxxxx>
  • To: ORACLE-L <oracle-l@xxxxxxxxxxxxx>
  • Date: Wed, 22 Oct 2014 16:09:57 -0400

I d on't understand why Oracle don fix the recompilation of wrapped
procedures and the problem of the links (I cna't mention here).

it works until 11g, and I'm adequating to 12c, because it has the
editionable and noneditionable additional words.

This scripts recompiles,
generates a ddl and adds an enter at the end for wrapped files
then the rest of no compiled files
and finally enables the triggers, etc.

I was asking if you have a better method to recompile wrapped files.

Thank you:)


execute utl_recomp.recomp_serial();

REPLACE (
REPLACE (
REPLACE (

DBMS_METADATA.GET_DDL( CASE WHEN OBJECT_TYPE='PACKAGE BODY' THEN 'PACKAGE'
ELSE OBJECT_TYPE END,OBJECT_NAME,OWNER)||CHR(10)||'/'||CHR(10)||CHR(10)

, 'CREATE OR REPLACE PACKAGE BODY', CHR(10)||'/'||CHR(10)||CHR(10)||'CREATE
OR REPLACE PACKAGE BODY')
, 'CREATE OR REPLACE EDITIONABLE PACKAGE BODY' ,
CHR(10)||'/'||CHR(10)||CHR(10)||'CREATE OR REPLACE PACKAGE BODY')
, 'CREATE OR REPLACE NONEDITIONABLE PACKAGE BODY',
CHR(10)||'/'||CHR(10)||CHR(10)||'CREATE OR REPLACE PACKAGE BODY')
  CMD


, /**/ 'XXXYYYYDDMMSSSSS' /**/ DAZ_VERSION
FROM sys.procedure$,DBA_OBJECTS A
WHERE  object_id = obj# AND STATUS = 'INVALID' --AND OBJECT_TYPE IN
('FUNCTION', 'PROCEDURE','PACKAGE')
AND NOT bitand(options,2) = 0 /*WRAPPED*/
/


execute utl_recomp.recomp_serial();
-- unidades que no se han podido compilar para revisión
SELECT B.REL_COD,
DECODE( OBJECT_TYPE,
          'PACKAGE BODY', 'ALTER PACKAGE ' || OWNER||'."'||OBJECT_NAME ||
'" COMPILE BODY;',
          'TYPE BODY',    'ALTER ' || 'TYPE' || ' ' ||
OWNER||'."'||OBJECT_NAME || '" COMPILE BODY;',
          'ALTER ' || OBJECT_TYPE || ' ' || OWNER||'."'||OBJECT_NAME || '"
COMPILE;' ) RECOMPILAR,B.ULTVER,
          /**/ 'SYS2010092752026' /**/ DAZ_VERSION
FROM
DBA_OBJECTS A, DAZ.ULTVER_UDP B
WHERE B.DSV_SISTEMA(+)=A.OWNER
AND B.DSV_NOMBREUNIDAD(+)=A.OBJECT_NAME
AND A.STATUS = 'INVALID'
AND A.OBJECT_TYPE NOT IN ( 'SYNONYM' )
ORDER BY
OBJECT_TYPE,
OBJECT_NAME
/


begin
for a in (SELECT 'ALTER TABLE '||OWNER||'.'||TABLE_NAME||' LOGGING;' A
              FROM DBA_TABLES
             WHERE NOT LOGGING='YES'
               AND NOT OWNER IN ('SYSTEM','SYS','MDSYS','WMSYS','DBSNMP')
AND TEMPORARY='N'

            UNION ALL
SELECT 'ALTER INDEX '||OWNER||'.'||INDEX_NAME||' LOGGING;' A
              FROM DBA_INDEXES
            WHERE NOT LOGGING='YES' AND NOT (INDEX_TYPE='LOB' OR
OWNER='SYSTEM')
            UNION ALL
SELECT 'ALTER TRIGGER '||OWNER||'.'||TRIGGER_NAME||' ENABLE;' A
              FROM DBA_TRIGGERS
             WHERE NOT STATUS ='ENABLED'
            UNION ALL
SELECT 'ALTER TABLE '||OWNER||'.'||TABLE_NAME||' ENABLE NOVALIDATE
CONSTRAINT  '|| CONSTRAINT_NAME||';' A
              FROM DBA_CONSTRAINTS
             WHERE NOT STATUS='ENABLED' ) loop
 execute immediate (a.a);
end loop;
end;
/

Other related posts:

  • » How do you compile your wrapped functions - Juan Carlos Reyes Pacheco