MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/rdbms/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/rdbms/admin/f1201000.sql

Rem
Rem $Header: rdbms/admin/f1201000.sql /main/32 2017/09/26 09:53:16 alestrel Exp $
Rem
Rem f1201000.sql
Rem
Rem Copyright (c) 2012, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      f1201000.sql - Use PL/SQL packages for downgrade 
Rem                     from 12.1.0.2 patch release
Rem
Rem    DESCRIPTION
Rem
Rem      This scripts is run from catdwgrd.sql to perform any actions
Rem      using PL/SQL packages needed to downgrade from the current 
Rem      12.1 patch release to prior 12.1 patch releases
Rem
Rem    NOTES
Rem      * This script needs to be run in the current release environment
Rem        (before installing the release to which you want to downgrade).
Rem      * This script must be run using SQL*PLUS.
Rem      * You must be connected AS SYSDBA to run this script.
Rem
Rem    BEGIN SQL_FILE_METADATA
Rem    SQL_SOURCE_FILE: rdbms/admin/f1201000.sql
Rem    SQL_SHIPPED_FILE: rdbms/admin/f1201000.sql
Rem    SQL_PHASE:DOWNGRADE
Rem    SQL_STARTUP_MODE: DOWNGRADE
Rem    SQL_IGNORABLE_ERRORS: NONE
Rem    SQL_CALLING_FILE: rdbms/admin/catdwgrd.sql
Rem    END SQL_FILE_METADATA
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    alestrel   09/10/17 - Bug 25992938. Drop AUTO_SQL_TUNING_PROG in f file
Rem    raeburns    03/25/17 - Bug 25752691: Use SQL_PHASE DOWNGRADE
Rem    pyam        09/26/16 - RTI 19634111: convert types to local
Rem    gravipat    09/19/16 - 24690877: move call to update_version from f
Rem                           script to catdwgrd
Rem    jlingow     07/01/16 - dropping scheduler subscriber and registration to
Rem                           sys$service_metrics queue
Rem    welin       06/02/16 - invoking subsequent release
Rem    thbaby      04/13/16 - Bug 23039033: drop and re-create 
Rem                           cleanup_transient_type, cleanup_transient_pkg
Rem    thbaby      04/13/16 - Bug 23030152: drop and re-create 
Rem                           cleanup_online_pmo
Rem    jmuller     02/25/16 - Move dbms_pdb.check_nft() call to f1201000.sql
Rem    sjanardh    11/25/15 - Replace dbms_aqadm_syscalls APIs w/ dbms_aqadm_sys APIs
Rem    shbose      11/17/15 - bug 21193221: drop eviction table from sharded
Rem                           queues
Rem    desingh     09/07/15 - bug21797512: ugrade 12c view
Rem    yanlili     06/22/15 - Fix bug 20897609: Revoke XSCONNECT from RAS
Rem                            principals
Rem    molagapp    06/17/15 - bug-21132967
Rem    yanlili     06/10/15 - Fix lrg 16743762: drop schema acl
Rem    hlakshma    03/20/15 - Delete rows in ilm_param$ corresponding to 12.2
Rem                           features
Rem    atomar      12/17/14 - atomar_proj_45944_exception_q_phase_2
Rem    desingh     12/17/14 - sharded queue delay
Rem    jomcdon     10/09/14 - bug 19571350: restore old DBRM internal_plan
Rem    svivian     09/09/14 - bug 18529468: downgrade logminer spill
Rem    claguna     07/17/14 - Downgrade Job Incompat and Resource Constraints
Rem    jaeblee     06/24/14 - update version in container$
Rem    amozes      05/11/14 - ODM 12.2 changes
Rem    jomcdon     04/11/14 - implement profiles functionality
Rem    devghosh    04/02/14 - bug17709018: public grant for unflushed_dequeues
Rem    cdilling    01/22/14 - bug 18117095 - set version to truncated current version (i.e. 12.1.0)
Rem    cdilling    12/23/13 - remove version from downgraded as it will be set to prv_version in the function itself
Rem    cdilling    12/16/13 - bug 17961326
Rem    cdilling    10/16/12 - patch downgrade back to 12.1.0.1
Rem    cdilling    10/16/12 - Created
Rem

Rem *************************************************************************
Rem BEGIN f1201000.sql
Rem *************************************************************************

Rem =========================================================================
Rem BEGIN STAGE 1: downgrade from the current release
Rem =========================================================================

@@f1202000.sql

Rem =========================================================================
Rem END STAGE 1: downgrade from the current release
Rem =========================================================================

Rem =========================================================================
Rem BEGIN STAGE 2: downgrade dictionary to 12.1.0
Rem =========================================================================

BEGIN
   dbms_registry.downgrading('CATALOG');
   dbms_registry.downgrading('CATPROC');
END;
/

execute dbms_scheduler.disable('FILE_SIZE_UPD', TRUE);
BEGIN
  dbms_scheduler.stop_job('FILE_SIZE_UPD', TRUE);
EXCEPTION
  WHEN others THEN
  IF sqlcode = -27366 THEN
    NULL; --Supress job not running error
  ELSE
    raise;
  END IF;
END;
/
execute dbms_scheduler.drop_job('FILE_SIZE_UPD', TRUE);


Rem =========================================================================
Rem ALTER SHARDED QUEUE TABLE FOR EXCEPTION QUEUES
Rem =========================================================================

DECLARE
CURSOR dql_alter IS
select name, TABLE_OBJNO from system.aq$_queues where sharded =1;
stmt varchar2(500);
tab_name VARCHAR2(128);
usern VARCHAR2(128);
BEGIN
sys.dbms_aqadm_sys.Mark_Internal_Tables(dbms_aqadm_sys.ENABLE_AQ_DDL);
    FOR dql_alter_rec IN dql_alter LOOP
      select name into usern from sys.user$
      where user#=(select owner# from sys.obj$ where obj#=dql_alter_rec.TABLE_OBJNO);

      BEGIN

        stmt := 'alter table '||DBMS_ASSERT.ENQUOTE_NAME(usern)|| '.'||
                 dql_alter_rec.name || ' drop (old_msgid,exception_queue)' ;

                EXECUTE IMMEDIATE stmt;

      exception when others then
        if sqlcode in (-904) then null;
        end if;
      end;

    end loop;
sys.dbms_aqadm_sys.Mark_Internal_Tables(dbms_aqadm_sys.DISABLE_AQ_DDL);
end;
/

Rem =========================================================================
Rem BEGIN AQ Correct grant for aq$_unflushed_dequeues 
Rem =========================================================================

DECLARE
  stmt  VARCHAR2(500);
BEGIN

  -- only when it has flags multiple deq(1), multi-cosnumer(8)
  -- and 10i style queue tables(8192)
  FOR cur_rec IN (
                  SELECT schema, name, flags
                  FROM system.aq$_queue_tables
                  WHERE bitand(flags, 1)=1 and
                        bitand(flags, 8)=8 and
                        bitand(flags, 8192)=8192
                 )
  LOOP
    BEGIN

      sys.dbms_prvtaqim.create_base_view(
               cur_rec.schema, cur_rec.name, cur_rec.flags);

    END;
  END LOOP;
  EXCEPTION
    WHEN OTHERS THEN
      DBMS_SYSTEM.ksdwrt(DBMS_SYSTEM.trace_file,
                         'error in view creation' || sqlcode);
      RAISE;

END;
/

Rem =========================================================================
Rem END AQ Correct grant for aq$_unflushed_dequeues
Rem =========================================================================

Rem =========================================================================
Rem BEGIN AQ sharded queues queue table changes
Rem =========================================================================
DECLARE
CURSOR dql_alter IS
select name, TABLE_OBJNO from system.aq$_queues where sharded =1;
stmt varchar2(500);
usern VARCHAR2(128);
BEGIN
sys.dbms_aqadm_sys.Mark_Internal_Tables(dbms_aqadm_sys.ENABLE_AQ_DDL);

    FOR dql_alter_rec IN dql_alter LOOP
      select name into usern from sys.user$
      where user#=(select owner# from sys.obj$ 
      where obj#=dql_alter_rec.TABLE_OBJNO);

      BEGIN

        stmt := 'alter table '||DBMS_ASSERT.ENQUOTE_NAME(usern)|| '.'||
                dql_alter_rec.name || ' rename column delivery_time TO delay' ;

                EXECUTE IMMEDIATE stmt;

        stmt := 'alter table '||DBMS_ASSERT.ENQUOTE_NAME(usern)|| '.'||
                 dql_alter_rec.name || ' drop (subshard)' ;

                EXECUTE IMMEDIATE stmt;

        stmt := TO_CLOB('DROP INDEX '                              ||
                        dbms_assert.enquote_name(usern, FALSE) || '.'     ||
                        dbms_assert.enquote_name('qt' || 
                            dql_alter_rec.TABLE_OBJNO || '_delay_idx', FALSE));

                EXECUTE IMMEDIATE stmt;
 
      exception when others then
        if sqlcode in (-904) then null;
        end if;
      end;

    end loop;

sys.dbms_aqadm_sys.Mark_Internal_Tables(dbms_aqadm_sys.DISABLE_AQ_DDL);

end;
/
Rem =========================================================================
Rem END AQ sharded queues queue table changes
Rem =========================================================================

Rem =======================================================================
Rem  Begin changes : downgrade queue table for long identifiers
Rem =======================================================================
declare
  cursor allqueues is
  select t.schema schema, q.name qname , q.table_objno qobj, t.flags qt_flags,
  q.usage qtype
  from system.aq$_queues q, system.aq$_queue_tables t
  WHERE q.table_objno = t.objno AND NVL(q.sharded,0)=0;

  tabn varchar2(30);
  owner number;
  usern varchar2(30);
  qtabnm varchar2(300);
  altstmt  varchar2(300);
  COLUMN_NONEXISTENT EXCEPTION;
  TABLE_NONEXISTENT EXCEPTION;

  pragma EXCEPTION_INIT(COLUMN_NONEXISTENT, -904);
  pragma EXCEPTION_INIT(TABLE_NONEXISTENT, -942);
begin
  sys.dbms_aqadm_sys.Mark_Internal_Tables(dbms_aqadm_sys.ENABLE_AQ_DDL);
  for allrow in allqueues loop
    begin
    select owner# into owner from sys.obj$ where obj#= allrow.qobj;
    select name into usern from sys.user$ where user# =owner;
    select name into tabn from sys.obj$ where obj#= allrow.qobj;

    qtabnm := DBMS_ASSERT.ENQUOTE_NAME(usern) || '.' ||
              DBMS_ASSERT.ENQUOTE_NAME(tabn);
    if(tabn = 'AQ_EVENT_TABLE' or tabn = 'DEF$_AQCALL' or tabn = 'DEF$_AQERROR')
    then
      altstmt := 'alter table ' || qtabnm || ' modify(q_name varchar2(30),' ||
               ' exception_qschema varchar2(30),'||
               '  exception_queue varchar2(30))';
      execute immediate altstmt;
    else
      altstmt := ' alter table ' || qtabnm ||
                 ' modify(sender_name varchar2(30),' ||
                 ' q_name varchar2(30), exception_qschema varchar2(30), ' ||
                 'exception_queue varchar2(30))';
      execute immediate altstmt;
    end if;
    IF bitand(allrow.qt_flags, 8192) = 8192 THEN
      BEGIN
      altstmt := ' alter table ' || qtabnm ||
                 ' modify(enq_uid varchar2(30),' ||
                 ' deq_uid varchar2(30))';
      execute immediate altstmt;
      exception  when COLUMN_NONEXISTENT then
      NULL;
      END;
    END IF;

    exception  when COLUMN_NONEXISTENT then
      NULL;
    when TABLE_NONEXISTENT then
      NULL;
    when OTHERS THEN
     raise;
    end;
  end loop;
  sys.dbms_aqadm_sys.Mark_Internal_Tables(dbms_aqadm_sys.DISABLE_AQ_DDL);
end;
/

Rem =======================================================================
Rem  End changes: downgrade queue table for long identifiers
Rem =======================================================================

Rem =========================================================================
Rem BEGIN downgrade 12C Queue View
Rem =========================================================================

DECLARE
BEGIN

  FOR cur_rec IN (
                  SELECT t.schema, t.name, t.flags, q.eventid
                  FROM system.aq$_queue_tables t, system.aq$_queues q
                  WHERE t.objno = q.table_objno and q.sharded =1 
                 )
  LOOP
    BEGIN

      sys.dbms_prvtaqim.create_base_view_12101(
               cur_rec.schema, cur_rec.name, cur_rec.eventid, 
               sys.dbms_aqadm_sys.mcq_12gJms(cur_rec.flags));

    END;
  END LOOP;
  EXCEPTION
    WHEN OTHERS THEN
      DBMS_SYSTEM.ksdwrt(DBMS_SYSTEM.trace_file,
                         'error in 12C view creation' || sqlcode);
      RAISE;

END;
/

Rem =========================================================================
Rem BEGIN downgrade 12C Queue View
Rem =========================================================================

Rem =======================================================================
Rem  Begin Downgrade eviction table for Sharded Queues AQ
Rem =======================================================================

DECLARE
   TYPE CurTyp  IS REF CURSOR;  -- define weak REF CURSOR type
   tab_cv          CurTyp;      -- declare cursor variable
   schemaname       varchar2(128);
   tabname          varchar2(128);
   sel_stmt         varchar2(500);
BEGIN
      sys.dbms_aqadm_sys.Mark_Internal_Tables
      (dbms_aqadm_sys.ENABLE_AQ_DDL);
      sel_stmt := 'select t.schema, t.name from system.aq$_queue_tables t where 
      bitand(flags, 67108864)=67108864';
      open tab_cv for sel_stmt;
     LOOP
       FETCH tab_cv INTO schemaname, tabname;
       EXIT WHEN tab_cv%NOTFOUND;
       BEGIN

       sys.dbms_aqadm_sys.drop_eviction_table(schemaname, tabname);
       commit;
       END;
     END LOOP;
      sys.dbms_aqadm_sys.Mark_Internal_Tables
      (dbms_aqadm_sys.DISABLE_AQ_DDL);

     EXCEPTION
        WHEN OTHERS THEN
          sys.dbms_aqadm_sys.Mark_Internal_Tables
             (dbms_aqadm_sys.DISABLE_AQ_DDL);

          dbms_system.ksdwrt(dbms_system.trace_file,
                             'error in sharded queue drop eviction table ' || 
                              sqlcode ||
                             ' schema ' || schemaname || ' tabname ' ||
                             tabname);

          IF SQLCODE = -1647 THEN
            dbms_system.ksdwrt(dbms_system.alert_file,
                               ' There is no impact of this error on ' ||
                               ' Sharded Queue operation');
          END IF;
         

        RAISE;
END;
/

Rem =======================================================================
Rem  End Downgrade eviction table for Sharded Queues AQ
Rem =======================================================================


Rem=========================================================================
Rem BEGIN Resource Manager downgrade items
Rem=========================================================================

Rem Disable Resource Manager plan and drop the built-in plans
Rem Also drop all PROFILE directives in the CDB plans
alter system set resource_manager_plan='' sid='*';
exec dbms_rmin_sys.downgrade_prep(drop_all_profiles => TRUE);

Rem The definition of INTERNAL_PLAN changes in 12.2. Revert to the old
Rem definition on downgrade. This procedure only does an action if
Rem INTERNAL_PLAN has the new definition.
exec dbms_rmin_sys.restore_old_internal_plan;

Rem=========================================================================
Rem END Resource Manager downgrade items
Rem=========================================================================


Rem ========================================================================
Rem BEGIN Downgrade Scheduler Job incompatibilities and resource constraints
Rem ========================================================================

DECLARE
  cursor jrs is
    select  owner, resource_name from dba_scheduler_resources;
BEGIN
  FOR jr_info IN jrs
  LOOP
    dbms_scheduler.drop_resource('"'||jr_info.owner||'"."'||
                                   jr_info.resource_name||'"');
  END LOOP;
END;
/

DECLARE
  cursor ics is
    select  owner, incompatibility_name from dba_scheduler_incompats;
BEGIN
  FOR ic_info IN ics
  LOOP
    dbms_scheduler.drop_incompatibility('"'||ic_info.owner||'"."'||
                                   ic_info.incompatibility_name||'"');
  END LOOP;
END;
/

Rem ========================================================================
Rem END Downgrade Scheduler Job incompatibilities and resource constraints
Rem ========================================================================

Rem =====================
Rem Begin ODM changes
Rem =====================

Rem ODM model downgrades
exec dmp_sys.downgrade_models('12.2.0');
/

Rem =====================
Rem End ODM changes
Rem =====================

Rem ========================================================================
Rem BEGIN Downgrade Scheduler Load Balancing
Rem ========================================================================

DECLARE 
  reginfo sys.aq$_reg_info;
  reglist sys.aq$_reg_info_list;
BEGIN
  reginfo := sys.aq$_reg_info('SYS.SYS$SERVICE_METRICS:"SCHEDULER$_LBAGT"', 
      dbms_aq.namespace_aq,'plsql://SYS.SCHEDULER$NTFY_SVC_METRICS',NULL);
  reglist := sys.aq$_reg_info_list(reginfo);
  dbms_aq.unregister ( reglist, 1 );
END;
/

DECLARE subscriber sys.aq$_agent;
BEGIN
  subscriber := sys.aq$_agent('SCHEDULER$_LBAGT', NULL, NULL);
  dbms_aqadm.remove_subscriber(queue_name => 'SYS.SYS$SERVICE_METRICS',
    subscriber => subscriber);
END;
/

Rem ========================================================================
Rem END Downgrade Scheduler Load Balancing
Rem ========================================================================

Rem =======================================================================
Rem Begin Changes for Logical Standby
Rem =======================================================================

Rem BUG 18529468:
Rem Convert Logical Standby Ckpt data from 12.2 format to 12.1 format
Rem

begin
  sys.dbms_logmnr_internal.agespill_122to12;
end;
/

Rem =======================================================================
Rem End Changes for Logical Standby
Rem =======================================================================

Rem =======================================================================
Rem Begin Drop scheduler job
Rem =======================================================================

BEGIN
  dbms_scheduler.disable('CLEANUP_UNNEEDED_122_METADATA', TRUE);
EXCEPTION
  WHEN others THEN
  IF sqlcode = -27476 THEN
    NULL; --Supress job doesn't exist error
  END IF;
END;
/

BEGIN
  dbms_scheduler.stop_job('CLEANUP_UNNEEDED_122_METADATA', TRUE);
EXCEPTION
  WHEN others THEN
  IF sqlcode = -27475 THEN
    NULL; --Supress unknown job error
  END IF;
END;
/
 
BEGIN
  dbms_scheduler.drop_job('CLEANUP_UNNEEDED_122_METADATA', TRUE);
EXCEPTION
  WHEN others THEN
  IF sqlcode = -27475 THEN
    NULL; --Supress unknown job error
  END IF;
END;
/

Rem =======================================================================
Rem End Drop scheduler job
Rem =======================================================================

Rem =======================================================================
Rem BEGIN changes for Proj 47808: Transportable PDB backups
Rem =======================================================================

BEGIN
   dbms_scheduler.drop_job(
      job_name => 'SYS.ORA$PREPLUGIN_BACKUP_JOB',
      force    => TRUE);
   commit;
EXCEPTION
   WHEN OTHERS THEN
      IF (SQLCODE = -27475) THEN
         NULL;
      ELSE
         RAISE;
      END IF;
END;
/

BEGIN
   dbms_scheduler.drop_program(
      program_name => 'SYS.ORA$PREPLUGIN_BACKUP_PRG',
      force        => TRUE);
   commit;
EXCEPTION
   WHEN OTHERS THEN
      IF (SQLCODE = -27476) THEN
         NULL;
      ELSE
         RAISE;
      END IF;
END;
/


BEGIN
   dbms_aqadm.stop_queue('SYS.ORA$PREPLUGIN_BACKUP_QUE');
   commit;
EXCEPTION
   WHEN OTHERS THEN
      IF (SQLCODE = -24010) THEN
         NULL;
      ELSE
         RAISE;
      END IF;
END;
/

BEGIN
   dbms_aqadm.drop_queue('SYS.ORA$PREPLUGIN_BACKUP_QUE');
   commit;
EXCEPTION
   WHEN OTHERS THEN
      IF (SQLCODE = -24010) THEN
         NULL;
      ELSE
         RAISE;
      END IF;
END;
/

BEGIN
   dbms_aqadm.drop_queue_table('SYS.ORA$PREPLUGIN_BACKUP_QTB');
   commit;
EXCEPTION
   WHEN OTHERS THEN
      IF (SQLCODE = -24010) THEN
         NULL;
      ELSE
         RAISE;
      END IF;
END;
/

Rem =======================================================================
Rem END changes for Proj 47808: Transportable PDB backups
Rem =======================================================================

Rem **************************************************************************
Rem BEGIN Downgrade ilm_param$ to 12.1
Rem **************************************************************************

begin
delete from sys.ilm_param$ where param#=DBMS_ILM_ADMIN.ABS_JOBLIMIT;
delete from sys.ilm_param$ where param#=DBMS_ILM_ADMIN.JOB_SIZELIMIT;
commit;
end;
/

Rem **************************************************************************
Rem END Downgrade ilm_param$ to 12.1
Rem **************************************************************************

Rem ========================================================================
Rem BEGIN Downgrade RAS Schema ACL
Rem ========================================================================

-- Drop schema ACL
DECLARE
qaclname  VARCHAR2(300) := NULL;
CURSOR schemaacl_users IS
select owner from sys.xs$obj where name = 'XS$SCHEMA_ACL' and type = 3;
BEGIN
FOR schemaacl_users_crec IN schemaacl_users LOOP
  qaclname := sys.dbms_assert.enquote_name(schemaacl_users_crec.owner, false)
              ||'.'||sys.dbms_assert.enquote_name('XS$SCHEMA_ACL', false);
  sys.xs_acl.delete_acl(qaclname, XS_ADMIN_UTIL.CASCADE_OPTION);
END LOOP;
END;
/

Rem ========================================================================
Rem END Downgrade RAS Schema ACL
Rem ========================================================================

Rem *************************************************************************
Rem Begin Bug 20897609 
Rem *************************************************************************

-- Revoke XSCONNECT role from RAS principals
DECLARE
CURSOR xsconnect_principals IS
select grantee from dba_xs_role_grants where granted_role = 'XSCONNECT';
BEGIN
FOR xsconnect_crec IN xsconnect_principals LOOP
 sys.xs_principal.revoke_roles(xsconnect_crec.grantee, 'XSCONNECT');
END LOOP;
END;
/

Rem *************************************************************************
Rem End Bug 20897609
Rem *************************************************************************

Rem =======================================================================
Rem  Begin Changes for bug 19328303
Rem =======================================================================

exec dbms_pdb.check_nft();

Rem =======================================================================
Rem  End Changes for bug 19328303
Rem =======================================================================

Rem =======================================================================
Rem Bug 23039033: drop and re-create scheduler job cleanup_transient_type
Rem               drop and re-create scheduler job cleanup_transient_pkg
Rem =======================================================================

execute dbms_scheduler.disable('CLEANUP_TRANSIENT_TYPE', TRUE);
BEGIN
  dbms_scheduler.stop_job('CLEANUP_TRANSIENT_TYPE', TRUE);
EXCEPTION
  WHEN others THEN
  IF sqlcode = -27366 THEN
    NULL; -- Suppress job not running error
  ELSE
    raise;
  END IF;
END;
/

execute dbms_scheduler.drop_job('CLEANUP_TRANSIENT_TYPE', TRUE);

-- create scheduler job to cleanup transient types
declare
  exist   number;
  jobname varchar2(128);
begin
  jobname := 'CLEANUP_TRANSIENT_TYPE';

  select count(*) into exist 
  from   dba_scheduler_jobs 
  where  job_name=jobname AND owner='SYS';

  if exist = 0 then 
    dbms_scheduler.create_job(
             job_name   => jobname,
             job_type   => 'PLSQL_BLOCK',
             -- cleanup_task with task id KPDB_FUNC_CLNUP_TRANS_TYP
             job_action => 
               'declare 
                  myinterval number; 
                begin 
                  myinterval := dbms_pdb.cleanup_task(4); 
                  if myinterval <> 0 then
                    next_date := systimestamp + 
                      numtodsinterval(myinterval, ''second'');
                  end if; 
                end;',
             start_date => systimestamp + numtodsinterval(150, 'second'),
             repeat_interval => 'FREQ = HOURLY; INTERVAL = 2',
             job_class => 'SCHED$_LOG_ON_ERRORS_CLASS', 
             enabled => TRUE,
             comments => 'Cleanup Transient Types');
  end if;
end;
/

execute dbms_scheduler.disable('CLEANUP_TRANSIENT_PKG', TRUE);
BEGIN
  dbms_scheduler.stop_job('CLEANUP_TRANSIENT_PKG', TRUE);
EXCEPTION
  WHEN others THEN
  IF sqlcode = -27366 THEN
    NULL; -- Suppress job not running error
  ELSE
    raise;
  END IF;
END;
/

execute dbms_scheduler.drop_job('CLEANUP_TRANSIENT_PKG', TRUE);

-- create scheduler job to cleanup cursor transient packages
declare
  exist   number;
  jobname varchar2(128);
begin
  jobname := 'CLEANUP_TRANSIENT_PKG';

  select count(*) into exist 
  from   dba_scheduler_jobs 
  where  job_name=jobname AND owner='SYS';

  if exist = 0 then 
    dbms_scheduler.create_job(
             job_name   => jobname,
             job_type   => 'PLSQL_BLOCK',
             -- cleanup_task with task id KPDB_FUNC_CLNUP_TRANS_PKG
             job_action => 
               'declare 
                  myinterval number; 
                begin 
                  myinterval := dbms_pdb.cleanup_task(5); 
                  if myinterval <> 0 then
                    next_date := systimestamp + 
                      numtodsinterval(myinterval, ''second'');
                  end if; 
                end;',
             start_date => systimestamp + numtodsinterval(160, 'second'),
             repeat_interval => 'FREQ = HOURLY; INTERVAL = 2',
             job_class => 'SCHED$_LOG_ON_ERRORS_CLASS', 
             enabled => TRUE,
             comments => 'Cleanup Transient Packages');
  end if;
end;
/

Rem =======================================================================
Rem Bug 23039033: drop and re-create scheduler job cleanup_transient_type
Rem               drop and re-create scheduler job cleanup_transient_pkg
Rem =======================================================================

Rem =======================================================================
Rem Bug 23030152: drop and re-create scheduler job cleanup_online_pmo
Rem =======================================================================

execute dbms_scheduler.disable('CLEANUP_ONLINE_PMO', TRUE);
BEGIN
  dbms_scheduler.stop_job('CLEANUP_ONLINE_PMO', TRUE);
EXCEPTION
  WHEN others THEN
  IF sqlcode = -27366 THEN
    NULL; -- Suppress job not running error
  ELSE
    raise;
  END IF;
END;
/

execute dbms_scheduler.drop_job('CLEANUP_ONLINE_PMO', TRUE);

-- create scheduler job to perform online PMO cleanup
declare
  exist   number;
  jobname varchar2(128);
begin
  jobname := 'CLEANUP_ONLINE_PMO';

  select count(*) into exist 
  from   dba_scheduler_jobs 
  where  job_name=jobname AND owner='SYS';

  if exist = 0 then 
    dbms_scheduler.create_job(
             job_name   => jobname,
             job_type   => 'PLSQL_BLOCK',
             -- cleanup_task with task id KPDB_FUNC_ONLINE_PMOP
             job_action => 
               'declare 
                  myinterval number; 
                begin 
                  myinterval := dbms_pdb.cleanup_task(6); 
                  if myinterval <> 0 then
                    next_date := systimestamp + 
                      numtodsinterval(myinterval, ''second'');
                  end if; 
                end;',
             start_date => systimestamp + numtodsinterval(170, 'second'),
             repeat_interval => 'FREQ = HOURLY; INTERVAL = 1',
             job_class => 'SCHED$_LOG_ON_ERRORS_CLASS', 
             enabled => TRUE,
             comments => 'Cleanup after Failed PMO');
  end if;
end;
/

Rem =======================================================================
Rem Bug 23030152: drop and re-create scheduler job cleanup_online_pmo
Rem =======================================================================

Rem
Rem BEGIN RTI 19634111: make GSM_CHANGE_MESSAGE and %URITYPE local
Rem

exec dbms_pdb.convert_to_local('GSMADMIN_INTERNAL', 'GSM_CHANGE_MESSAGE', 1);
exec dbms_pdb.convert_to_local('SYS', 'FTPURITYPE', 2);
exec dbms_pdb.convert_to_local('SYS', 'HTTPURITYPE', 2);
exec dbms_pdb.convert_to_local('SYS', 'XDBURITYPE', 2);
exec dbms_pdb.convert_to_local('SYS', 'DBURITYPE', 2);
exec dbms_pdb.convert_to_local('SYS', 'URITYPE', 2);
exec dbms_pdb.convert_to_local('SYS', 'FTPURITYPE', 1);
exec dbms_pdb.convert_to_local('SYS', 'HTTPURITYPE', 1);
exec dbms_pdb.convert_to_local('SYS', 'XDBURITYPE', 1);
exec dbms_pdb.convert_to_local('SYS', 'DBURITYPE', 1);
exec dbms_pdb.convert_to_local('SYS', 'URITYPE', 1);

Rem
Rem   END RTI 19634111: make GSM_CHANGE_MESSAGE and %URITYPE local
Rem


Rem ====================================================================
Rem Begin Changes for SQL Tuning Advisor 
Rem ====================================================================
Rem 
Rem bug#16654392: drop the auto-sqltune program if already exists. 
Rem 
begin 
  -- drop program  
  dbms_scheduler.drop_program('AUTO_SQL_TUNING_PROG');

exception
  when others then
    if (sqlcode = -27476)     -- program does not exist
    then
      null;                   -- ignore it
    else
      raise;                  -- non expected errors
    end if;
end; 
/

Rem ====================================================================
Rem End Changes for SQL Tuning Advisor 
Rem ====================================================================

Rem Put ALL downgrade actions ABOVE these final actions!!!

Rem =========================================================================
Rem END STAGE 2: downgrade dictionary to 12.1.0
Rem =========================================================================

Rem =========================================================================
Rem Downgrade dictionary to 12.1.0
Rem =========================================================================

  --
  -- Set the version to 12.1.0, not the full version.
  -- This action applies to both non-CDB and CDB and ultimately
  -- helps to support handling of a plugged in PDB in the previous version.
  --
BEGIN
   dbms_registry.downgraded('CATALOG','12.1.0');
   dbms_registry.downgraded('CATPROC','12.1.0');
END;
/



Rem *************************************************************************
Rem END f1201000.sql
Rem *************************************************************************

OHA YOOOO