Skip to main content

Recompiling Invalid/All schema objects in the database

Identifying Invalid Objects: Use all_objects table to identity invalid schema objects. Oracle has given the default pkg to recompiling invalid/all schema objects in the database.

SELECT owner,
       object_type,
       object_name,
       status
  FROM all_objects
 WHERE status = 'INVALID'
 ORDER BY owner,
          object_type,
          object_name;

Custom Script: When you have to compile "N" no of invalid objects in one go, the best approach is to write custom script as below,

BEGIN
  FOR cur IN(SELECT object_name,
                    object_type,
                    owner
               FROM sys.all_objects
              WHERE object_type   = 'MY_OBJECTS'
                AND owner         = 'MY_SCHEMA'
                AND status        = 'INVALID' -- For all objects, it should be excluded
             )
  LOOP
    BEGIN
      IF cur.object_type = 'PACKAGE BODY' THEN
        EXECUTE IMMEDIATE 'alter ' || cur.object_type || ' "' || cur.owner || '"."' || cur.object_name || '" compile body';
      ELSE
        EXECUTE IMMEDIATE 'alter ' || cur.object_type || ' "' || cur.owner || '"."' || cur.object_name || '" compile';
      END IF;
    EXCEPTION
    WHEN OTHERS THEN
      NULL;
    END;
  END LOOP;

END;

Manual Execution: Manual execution is sufficient, when you have to compile small no of objects.
  • ALTER PROCEDURE <<my_procedure>> COMPILE;
  • ALTER FUNCTION <<my_function>> COMPILE;
  • ALTER PACKAGE <<my_package>> COMPILE;
  • ALTER PACKAGE <<my_package>> COMPILE BODY;
  • ALTER VIEW <<my_view>> COMPILE;
  • ALTER TRIGGER <<my_trigger>> COMPILE;
DBMS_DDL.alter_compile: An alternative approach is to use the DBMS_DDL pkg,
  • exec dbms_ddl.alter_compile('PROCEDURE', 'MY_SCHEMA', 'MY_PROCEDURE');
  • exec dbms_ddl.alter_compile('FUNCTION', 'MY_SCHEMA', 'MY_FUNCTION');
  • exec dbms_ddl.alter_compile('PACKAGE', 'MY_SCHEMA', 'MY_PACKAGE');
  • exec dbms_ddl.alter_compile('PACKAGE BODY', 'MY_SCHEMA', 'MY_PACKAGE');
  • exec dbms_ddl.alter_compile('VIEW', 'MY_SCHEMA', 'MY_VIEW');
  • exec dbms_ddl.alter_compile('TRIGGER', 'MY_SCHEMA', 'MY_TRIGGER');
DBMS_UTILITY.compile_schema: The DBMS_UTILITY.compile_schema procedure used to compiles all procedures, functions, packages, views, and triggers in the specified schema.

exec dbms_utility.compile_schema(SCHEMA => 'FXO', compile_all => FALSE);


Comments

Post a Comment

Popular posts from this blog

Printing Page Numbers in RTF Template [Oracle BI Publisher]

Here I am giving an example to print the page numbers dynamically in the RTF (Rich Text Format) template. Step 1:  Go to page footer and copy and paste the below script. Page |  <?fo:page-number?>  of  <?fo:page-number-citation:xdofo:lastpage-joinseq?> <fo:page-number> :   This is the object, which is used to represent the current page-number. <?fo:page-number-citation:xdofo:lastpage-joinseq?> :  This is the syntax, which is used to represent the total number of pages. Step 2:  Load the XML and preview the result. Output: That's it. References: fo:page-number Printing Page Number Code in Oracle XMLP RTF Template

Friendly URL: Redirect to Different Page after Login in Oracle APEX 20.1

Oracle has updated apex.oracle.com to APEX 20.1 which includes among other features the new Friendly URL option. Here i am giving an example to redirect to different page after login in Oracle APEX 20.1 [Friendly URL Enabled] Step 1: Define home page for each user in emp master table as below Step 2: To enable Friendly URL Syntax, follow below steps, 1) On the Workspace home page, click the App Builder icon. 2) Select an application (The Application home page appears). 3) From Application home page, you can access the Definition page in TWO ways: Click the Edit Application Properties button. From Shared Components:              1) Click Shared Components .              2) Under Application Logic, click Application Definition Attributes . The Definition page appears. 4) Under Properties, configure the Friendly URL s attribute: Click Apply Changes to save your ch...

Open modal/inline dialog in Oracle APEX using JS

Analysis: From Oracle Apex 4.2,  Inline dialog can be opened as modal dialog/popup using JS. Open inline dialog region as modal dialog: Step 1: Create static region. Step 2:  Set Template => Inline Dialog. Step 3:  Assign the static id to the region. Fig 1: Set template and Static ID Step 4:  Create button or change one of the report column type to Link. (Action: Redirect URL). Step 5:  Put the below JS to open the region as modal dialog.                javascript:openModal('unitpricedetails');            Fig 2:  Open simple modal dialog Open inline dialog region as modal dialog and pass values to the items: Common Steps:  Step 1 to Step 4. Step 5:  To pass value to that region, create P1_UNIT_ID in the inline  dialog.       javascript:$s('P1_UNIT_ID','#UNIT_ID#');javascript:openModal('unitpricedetai...