MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/javavm/install/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/javavm/install/initjvm.sql

Rem    BEGIN SQL_FILE_METADATA
Rem    SQL_SOURCE_FILE: javavm/install/initjvm.sql
Rem    SQL_SHIPPED_FILE: javavm/install/initjvm.sql
Rem    SQL_PHASE: INITJVM
Rem    SQL_STARTUP_MODE: NORMAL
Rem    SQL_IGNORABLE_ERRORS: NONE
Rem    END SQL_FILE_METADATA


-- Setup a database for running Java

-- This script can not function properly in SVRMGR.  The following 
-- lines are intended to abort the script if it is being run with
-- SVRMGR, but will be interpreted simply as remarks by SQLPLUS.
rem -
set stoponerror on
rem -
initjvm.sql must be run with SQLPLUS, not SVRMGRL


whenever sqlerror exit;

variable test_for_1335603 varchar2(30)

--- bug 22733507
ALTER SESSION SET NLS_LENGTH_SEMANTICS=BYTE; 

/*
#######################################################################
#######################################################################
  If the following   :test_for_1335603 := 'x'   statement causes
  a PLS-00553 error, and thereby terminates the sqlplus connection,
  simply restart the script in a new sqlplus session.
  This error can occur if the script is run in the same session where
  the database was started.  To avoid this problem, always start a new
  session to run scripts after starting the database.
#######################################################################
#######################################################################
*/

execute :test_for_1335603 := 'x';

whenever sqlerror continue;

-- longer identifiers status; do this early enough
-- the table creation and initialization here takes care of the DB creation
-- case whereas the one in initjvma.sql takes care of the DB upgrade case
create table javanamestatus$(phase varchar2(20), identifier_length number);

create table javasnm_tmp$
(short         varchar2(128) not null,            /* shortened form of name */
 longname      long raw not null,                      /* long form of name */
 longdbcs      varchar2(4000)
);

declare
  compatible varchar2(12);
  val number;
begin
  select value into compatible from v$parameter where name = 'compatible';
  if compatible like '12.2%' then
    val := 128;
  else
    val := 30;
  end if;
  insert into javanamestatus$ values('SYNONYMS', val);
  insert into javanamestatus$ values('JAVA', val);
end;
/

-- Load support packages, including rmjvm
@@initjvma

-- try to determine whether this script is running in the same instance
-- where rmjvm.run was done

whenever sqlerror exit;

/*
#######################################################################
#######################################################################
##  If the following  rmjvm.check_for_rmjvm()  statement results in
##  ORA-00028 it means that the database has not been restarted 
##  since the rmjvm script was run.  If so, restart the database and
##  retry this script.
#######################################################################
#######################################################################
*/

call rmjvm.check_for_rmjvm();

set serveroutput on size 999999

-- State start of LOAD action
/*
#######################################################################
#######################################################################
##  If the following statement causes an
##  ORA-29539: Java system classes already installed
##  error, and thereby terminates the sqlplus connection,
##  initjvm.sql is being run in a database in which it has
##  has already been run to completion.  This is not allowed.  
#######################################################################
#######################################################################
*/
declare foo exception;
pragma exception_init(foo, -29539);
action varchar2(30) := 'LOAD';
begin
  initjvmaux.startaction_outarg(action);
  if action != 'LOAD' then
    initjvmaux.endaction;
    initjvmaux.abort_message(
        'Aborting because initjvm.sql has already been run');
    raise foo;
  end if;
exception when no_data_found then null;
end;
/

/*
#######################################################################
#######################################################################
##  The following statement may cause an
##  ORA-29554: unhandled Java out of memory condition
##  error, and thereby terminate the sqlplus connection.
##  If so, this is because there is insufficient system tablespace,
##  shared or java pool size, or some other resource value is too small.
##  An additional message describing the problem will be output by
##  the statement.
#######################################################################
#######################################################################
*/
execute initjvmaux.check_sizes_for_cjs;

whenever sqlerror continue;

begin if initjvmaux.startstep('SET_REGISTRY_LOADING') then
  initjvmaux.setloading();
  initjvmaux.endstep;
end if; end;
/

-- Roles for Security - must come before create java system
@@initjvm1

begin
  initjvmaux.drp('drop role dbjavascript');
  initjvmaux.exec('create role dbjavascript');
  initjvmaux.exec('grant dbjavascript to sys');
end;
/

-- Prevent the script from continuing in the case where create java system
-- detects existing java classes or there is any other kind of error.
whenever sqlerror exit;

-- Load all the Java classes
begin if initjvmaux.startstep('CREATE_JAVA_SYSTEM') then
  initjvmaux.rollbacksetup;
  commit;
  initjvmaux.rollbackset;
  initjvmaux.exec('create or replace java system');
  commit;
  initjvmaux.rollbackcleanup;
  initjvmaux.endstep;
  dbms_registry.update_schema_list('JAVAVM',
        dbms_registry.schema_list_t('OJVMSYS'));
end if; end;
/

whenever sqlerror continue;

-- create view javasnm
@@initjvm3

-- Java Sanity check for installation
-- Define package dbms_java
@@initjvm2


-- Java Sanity Checks

-- Check for any Java classes that are invalid.
-- The following query should return 0 rows.

select nvl(longdbcs,name) from obj$,javasnm$ 
      where type#=29 and status != 1 and name=short(+);

-- Verify that a simple java stored procedure works, and punt if it doesn't
whenever sqlerror exit;
select dbms_java.longname('foo') from dual;
whenever sqlerror continue;

-- Prepare for use of java$rmjvm$aux3 in initjvm4
insert into java$rmjvm$aux3 (select obj# from obj$ where type#=29);

-- Find all the error messages.
-- Create the get error package for LoadJava
@@initjvm4

-- initialize Java Security 
-- Keep this first in case any of the other inits want to run java

@@jvmsec0;

-- Aurora oracle.aurora.rdbms.Server lifecycle and state --
-- Put in the entries for Dynamic registration, by default.
-- Triggers to run startup and shutdown Java code
-- The configuration data for currently registered MTS listener endpoints
-- SQLJ initialization
-- XA JSP initialization

@@initjvm5

-- Install Package for export and import support

@@jvm_exp

-- Now check whether create java system worked correctly, and if not, back
-- out of everything done in this script
variable jvmrmaction varchar2(30)

declare
  ok int;
  bad int;
begin
  :jvmrmaction := 'NONE';
  select count(*) into ok from obj$ where status=1 and type#=29;
  select count(*) into bad from obj$ where status!=1 and type#=29 and owner#=0;
  if bad > 0 or ok < 100 then
    initjvmaux.abort_message(
     'CREATE JAVA SYSTEM did not complete successfully:',
     'number of java classes with status 1: '|| ok ||', with status != 1: '|| bad);
    initjvmaux.abort_message('Backing out of java installation...');
    :jvmrmaction := 'FULL_REMOVAL';
    initjvmaux.endaction;
  end if;
end;
/

--  create preferences table
@@initprefs.sql

-- create OJDS tables in OJVMSYS for JNDI native support
@@jvm_ojds

-- :jvmrmaction has been set to 'NONE' at this point if things are OK.
-- In that case the following inclusion will do nothing.
variable jvmudaction varchar2(30)
variable jvmdownto varchar2(30)
@@jvmrm

begin if :jvmrmaction = 'NONE' then
  initjvmaux.endaction;
  initjvmaux.setloaded;
 end if;
end;
/

begin if :jvmrmaction = 'NONE' then
   if dbms_java.full_ncomp_enabled = 'OK' then null; end if;
 end if;
end;
/

begin if :jvmrmaction != 'NONE' then
  dbms_output.put_line('drop package initjvmaux');
  execute immediate 'drop package initjvmaux';
  dbms_output.put_line('drop package rmjvm');
  execute immediate 'drop package rmjvm';
  dbms_output.put_line('drop table java$rmjvm$aux');
  execute immediate 'drop table java$rmjvm$aux';
  dbms_output.put_line('drop table java$rmjvm$aux2');
  execute immediate 'drop table java$rmjvm$aux2';
  dbms_output.put_line('#### Done backing out of java installation.');
 end if;
end;
/



OHA YOOOO