MINI MINI MANI MO
Rem
Rem $Header: rdbms/admin/utljavrm.sql /main/2 2017/05/28 22:46:12 stanaya Exp $
Rem
Rem utljavarm.sql
Rem
Rem Copyright (c) 1999, 2017, Oracle and/or its affiliates.
Rem All rights reserved.
Rem
Rem NAME
Rem utljavarm.sql - Remove all java objects
Rem
Rem DESCRIPTION
Rem This removes all the java objects from the data dictionary.
Rem
Rem NOTES
Rem WARNING: This script is highly destructive. It should
Rem only be run if you upgrading to or downgrading
Rem from 8.1.5. Once this script is run all of your
Rem java objects will be gone unless you have a backup!!!
Rem
Rem This script requires a significant amount of rollback
Rem to execute.
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: rdbms/admin/utljavrm.sql
Rem SQL_SHIPPED_FILE: rdbms/admin/utljavrm.sql
Rem SQL_PHASE: UTILITY
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: NONE
Rem END SQL_FILE_METADATA
Rem
Rem MODIFIED (MM/DD/YY)
Rem rshaikh 01/12/99 - Created (for mjungerm)
Rem
REM Java objects have a format change between 8.1.4 and 8.1.5.
REM We have to remove all java objects between these releases
REM because they are not compatible.
set serveroutput on
drop trigger AURORA$SERVER$SHUTDOWN
/
drop trigger AURORA$SERVER$STARTUP
/
DECLARE
obj_number number := 0;
cursor C1 is select o1.obj#,
'DROP PUBLIC SYNONYM "' || o1.name || '"'
from obj$ o1, obj$ o2
where o1.obj# > obj_number and
o1.name=o2.name and
o1.type#=5 and
o2.type#=29
order by o1.obj#;
DDL_CURSOR integer;
ddl_statement varchar2(200);
iterations number;
loop_count number;
my_err number;
BEGIN
loop_count := 0;
-- To make sure we eventually stop, pick a max number of iterations
select count(*) into iterations from obj$ o1,obj$ o2
where o1.name=o2.name and o1.type#=5 and o2.type#=29;
DDL_CURSOR := dbms_sql.open_cursor;
OPEN C1;
LOOP
BEGIN
FETCH C1 INTO obj_number, ddl_statement;
EXIT WHEN C1%NOTFOUND OR loop_count > iterations;
EXCEPTION
WHEN OTHERS THEN
my_err := SQLCODE;
IF my_err = -1555 THEN -- snapshot too old, re-execute fetch query
CLOSE C1;
-- Here is why C1 orders by obj#. When we restart the query, we
-- will only find object with obj# greater than the last one tried.
-- This keeps us from re-trying objects that failed.
OPEN C1;
GOTO continue;
ELSE
RAISE;
END IF;
END;
BEGIN
-- Issue the Alter Statement (Parse implicitly executes DDLs)
dbms_sql.parse(DDL_CURSOR, ddl_statement, dbms_sql.native);
EXCEPTION
WHEN OTHERS THEN
null; -- ignore, and proceed.
END;
<<continue>>
loop_count := loop_count + 1;
END LOOP;
dbms_sql.close_cursor(DDL_CURSOR);
CLOSE C1;
END;
/
commit
/
alter system flush shared_pool
/
alter system flush shared_pool
/
alter system flush shared_pool
/
delete from dependency$ where p_obj# in (select obj# from obj$ where type#=29)
/
commit
/
delete from objauth$ where obj# in (select obj# from obj$
where type#>27 and type#<31)
/
commit
/
delete from javasnm$
/
commit
/
REM
REM We don't need to do these deletes since the idl tables
REM will be truncated when we do an upgrade or a downgrade
REM
REM delete from idl_ub1$ where obj# in (select obj# from obj$
REM where type#>27 and type#<31)
REM delete from idl_ub2$ where obj# in (select obj# from obj$
REM where type#>27 and type#<31)
REM delete from idl_char$ where obj# in (select obj# from obj$
REM where type#>27 and type#<31)
REM delete from idl_sb4$ where obj# in (select obj# from obj$
REM where type#>27 and type#<31)
REM
REM only delete from obj$ if all the java information was delete
REM from the other tables correctly. Once we run this delete
REM there is no going back to remove the information from
REM syn$, objauth$ and dependency$ using this script.
REM
DECLARE
c1 number;
c2 number;
c3 number;
c4 number;
BEGIN
select count(*) into c1 from syn$ where obj# in
(select o1.obj# from obj$ o1,obj$ o2
where o1.name=o2.name and
o1.type#=5 and o2.type#=29);
select count(*) into c2 from dependency$ where p_obj# in
(select obj# from obj$ where type#=29);
select count(*)into c3 from objauth$ where obj# in (select obj# from obj$
where type#>27 and type#<31);
select count(*)into c4 from javasnm$;
IF c1 = 0 AND c2 = 0 AND c3 = 0 AND c4 = 0 THEN
delete from obj$ where type#>27 and type#<31;
dbms_output.put_line('All java object removed');
ELSE
dbms_output.put_line('Java objects not completely removed. Rerun utljavarm.sql');
END IF;
END;
/
alter system flush shared_pool
/
alter system flush shared_pool
/
alter system flush shared_pool
/
REM
REM end java object removal
REM
OHA YOOOO