MINI MINI MANI MO

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

Rem Copyright (c) 2002, 2013, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      dbmsupgnv.sql - DBMS UPGrade NatiVe
Rem
Rem    DESCRIPTION
Rem      This script provides a compact way to convert all PL/SQL in the
Rem      database to use native compilation (NCOMP).
Rem
Rem      By default, this script will not recompile package and type specs
Rem      since package generally do not have substantial amounts of code 
Rem      that benefit from native compilation while type specs do not 
Rem      allow for initialization code.
Rem
Rem    USAGE
Rem      To use this script, execute the following sequence of actions:
Rem      1. Shut down the database and restart in UPGRADE mode
Rem         (using STARTUP UPGRADE or ALTER DATABASE OPEN UPGRADE)
Rem      2. Run this script: @dbmsupgnv TRUE. If compilation of
Rem         package specs is desired, invoke @dbmsupgnv FALSE
Rem      3. Shut down the database and restart in normal mode
Rem      4. Run utlrp.sql to recompile invalid objects. 
Rem
Rem    NOTES
Rem    * This script creates a significant change to the database so
Rem      users should not be logged on when this script is run.
Rem    * This script expects the following files to be available in the
Rem      current directory:
Rem      standard.sql
Rem      dbmsstdx.sql
Rem    * There should be no other DDL on the database while running the
Rem      script.  Not following this recommendation may lead to deadlocks.
Rem    * This script does not automatically recompile invalid objects.
Rem    * This script does not invalidate type specs.
Rem    * This script prepares the database for native recompilation.
Rem      To prepare the database for interpreted recompilation, see
Rem      dbmsupgin.sql
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    lvbcheng    07/25/13 - enable for CDB
Rem    traney      09/02/08 - removing redundant drop pkg
Rem    gviswana    03/09/06 - Add utlrdt 
Rem    lvbcheng    06/24/05 - message defining default value for setup call
Rem    jmuller     11/18/04 - Fix bug 3958988: protect against failed 
Rem                           compilation of dbmsncdb 
Rem    lvbcheng    04/14/05 - Add package spec parameterization 
Rem    gviswana    12/09/03 - 3302294: UPGRADE mode 
Rem    gviswana    08/11/03 - Use utlirp.sql 
Rem    rpang       04/23/03 - Use plsql_code_type flag
Rem    lvbcheng    07/18/02 - lvbcheng_bug-2188517
Rem    lvbcheng    04/11/02 - Change to setup call
Rem    lvbcheng    04/01/02 - Restricted session
Rem    lvbcheng    03/13/02 - restrict further logins
Rem    lvbcheng    03/08/02 - Add system change
Rem    lvbcheng    02/08/02 - Created
Rem

SET ECHO ON
SET FEEDBACK 1
SET NUMWIDTH 10
SET LINESIZE 80
SET TRIMSPOOL ON
SET TAB OFF
SET PAGESIZE 100

WHENEVER SQLERROR EXIT;

DOC
#######################################################################
#######################################################################
   The following statement will cause an "ORA-01722: invalid number"
   error if there the database was not opened in UPGRADE mode

   If you encounter this error, check that the database/pluggable
   database is set for migration
#######################################################################
#######################################################################
#
declare
  container_id   pls_integer := sys_context('USERENV', 'CON_ID');
  dummy          pls_integer;
  status         varchar2(12);
  open_mode      varchar2(10);
  resp           varchar2(3);
begin
  -- We do things differently in root than in the PDB
  if(container_id <= 1) then
    SELECT status into status FROM v$instance;
    if(status != 'OPEN MIGRATE') then 
      raise invalid_number; 
    end if;
  else
    SELECT OPEN_MODE, RESTRICTED into open_mode, resp from v$pdbs
      where con_id = container_id;
  
    if(NOT (((open_mode = 'READ WRITE') AND (resp = 'YES')) OR
            ((open_mode = 'MIGRATE') AND (resp = 'YES')))) then
      raise invalid_number;
     end if;
  end if;
  -- all is good
end;
/

Rem We set plsql_code_type so that from here on out,
Rem everything gets recompiled native including standard.
alter session set plsql_code_type = NATIVE;

Rem dbmsncdb is not vital for proper database operation so
Rem it is arguable that a DBA may remove it after use.
Rem Also, it may not be there in all PDBs.
Rem Thus, continue even if errors are issued from dropping the
Rem package and package body for dbmsncdb.

WHENEVER SQLERROR CONTINUE;
drop package body sys.dbmsncdb;
drop package sys.dbmsncdb;

WHENEVER SQLERROR EXIT;

DOC

#######################################################################
#######################################################################
  Failure when loading the DBMSNCDB package would indicate an 
  environment issue. Please fix the problem and rerun this script.
#######################################################################
#######################################################################
#

Rem Load the native comp package.  
Rem Ensure short-circuit compilation doesn't come into play.
@@dbmsncdb
@@prvtncdb.plb

WHENEVER SQLERROR EXIT;
Rem Ensure the package was created cleanly
select to_number('MUST BE VALID') from dba_objects
where owner = 'SYS' and object_name = 'DBMSNCDB' 
and OBJECT_TYPE IN ('PACKAGE', 'PACKAGE BODY') 
and status != 'VALID'; 

select to_number('MUST BE NATIVE') from dba_stored_settings
where owner = 'SYS' and object_name = 'DBMSNCDB' 
and param_name = 'plsql_code_type' and param_value != 'NATIVE'; 

DOC

#######################################################################
#######################################################################
  Call dbmsncdb.setup_for_native_compile(TRUE) for bodyOnly setup.
  Call dbmsncdb.setup_for_native_compile(FALSE) to set up package specs
  as well.
#######################################################################
#######################################################################
#

Rem Set all functions, procedures, package bodies, triggers and 
Rem type bodies to be compiled native.
prompt "Enter TRUE to obtain default behavior."
prompt "See this file for documentation."
begin
    dbmsncdb.setup_for_native_compile(&1);
end;
/

ALTER SYSTEM FLUSH SHARED_POOL;

@@utlrdt

DOC
#######################################################################
#######################################################################
   dbmsupgnv.sql completed successfully. All PL/SQL procedures, 
   functions, type bodies, triggers, and type bodies objects in the 
   database have been invalidated and their settings set to native.

   Shut down and restart the database in normal mode and 
   run utlrp.sql to recompile invalid objects.
#######################################################################
#######################################################################
#


OHA YOOOO