MINI MINI MANI MO
Rem
Rem $Header: sdo/admin/locdbmig.sql /main/24 2017/07/05 11:00:10 rjanders Exp $
Rem
Rem locdbmig.sql
Rem
Rem Copyright (c) 2005, 2017, Oracle and/or its affiliates.
Rem All rights reserved.
Rem
Rem NAME
Rem locdbmig.sql - LOCatorDBMIGration
Rem
Rem DESCRIPTION
Rem Used for upgrading the Locator as part of DB upgrade if SDO is not
Rem present
Rem
Rem NOTES
Rem <other useful comments, qualifications, etc.>
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: sdo/admin/locdbmig.sql
Rem SQL_SHIPPED_FILE: md/admin/locdbmig.sql
Rem SQL_PHASE: UPGRADE
Rem SQL_STARTUP_MODE: NORMAL
Rem SQL_IGNORABLE_ERRORS: NONE
Rem SQL_CALLING_FILE: NONE
Rem END SQL_FILE_METADATA
Rem
Rem MODIFIED (MM/DD/YY)
Rem rjanders 06/30/17 - Fix SYS/MDSYS prefix
Rem sravada 06/05/17 - add more NULL exceptions for upgrade
Rem sravada 05/31/17 - add already_revoked
Rem rjanders 05/10/17 - #26037683: Raise 'when other' exceptions
Rem rjanders 04/27/17 - Correct "SQL_PHASE" metadata values
Rem rjanders 03/23/17 - #25437999: Remove 'when others then NULL'
Rem handlers
Rem sravada 01/11/17 - bug 25370681
Rem sravada 08/27/15 - bug 21610321
Rem rjanders 01/02/15 - long identifier project phase 1
Rem sravada 05/06/14 - XbranchMerge sravada_lrg-11866119 from
Rem st_sdo_12.1.0
Rem rjanders 03/15/13 - #16473696: Start/End _ORACLE_SCRIPT
Rem initialization
Rem sravada 09/27/12 - lrg 7270325
Rem sravada 06/25/12 - lrg 6948309
Rem sravada 02/20/12 - bug 13729392
Rem rjanders 02/07/12 - Remove DOC> C-style comments (security)
Rem sravada 01/18/12 - grant trigger privs
Rem zzhang 12/06/11 - Fix lrg 6584678
Rem sravada 10/17/11 - inherit privs for Locator install case
Rem sravada 10/05/10 - XbranchMerge sravada_lrg-4680044 from
Rem st_sdo_11.2.0
Rem sravada 08/20/09 - bug 8740141
Rem sravada 08/27/06 - bug 5453881
Rem sravada 05/25/05 - sravada_cleanup_label_difs_2
Rem sravada 05/25/05 - Created
Rem
Rem ********************************************************************
Rem #16473696: Indicate Oracle-Supplied object
@@?/rdbms/admin/sqlsessstart.sql
Rem ********************************************************************
-- bug 13561951
grant ADMINISTER DATABASE TRIGGER to MDSYS;
Alter session set current_schema=MDSYS;
/* Perform any upgrade actions if SDO is not installed.
If SDO is installed, all of these actions are done as part of
sdodbmig.sql script. */
COLUMN :script_name NEW_VALUE comp_file NOPRINT
Variable script_name varchar2(50)
Variable sdo_cnt number;
declare
sdo_status VARCHAR2(20) := NULL;
begin
-- Check whether SDO is installed.
-- If not, install Locator
select count(*) into :sdo_cnt from SYS.all_objects where owner='MDSYS' and
object_name = 'SDO_GEOMETRY';
sdo_status := dbms_registry.status('SDO');
if (:sdo_cnt = 0) then
:script_name := '?/rdbms/admin/nothing.sql';
elsif (sdo_status is NULL or sdo_status = 'OPTION OFF' or
sdo_status = 'REMOVED') then
:script_name := '@sdomigrt.sql';
else
:script_name := '?/rdbms/admin/nothing.sql';
end if;
end;
/
select :script_name from SYS.DUAL;
@&comp_file
-- /* unload all the java classes so that they can be recreated with catmloc.sql
-- or catmd.sql. This will prevent java classes from being invalid
-- if the seed is used with SE install */
COLUMN loc_fname NEW_VALUE loc_file NOPRINT;
SELECT dbms_registry.script('JAVAVM','@sdounloadj.sql') AS loc_fname FROM SYS.DUAL;
@&loc_file
alter session set current_schema=MDSYS;
-- If we are coming from SE, then drop Spatial objects if present due to seed
declare
stmt varchar2(1000);
obj_name varchar2(260);
type cursor_type is REF CURSOR;
query_crs cursor_type ;
begin
stmt := ' select object_name from SYS.all_objects where ' ||
' object_type = ''FUNCTION'' and owner = ''MDSYS'' ';
OPEN query_crs FOR stmt;
LOOP
fetch query_crs into obj_name;
EXIT when query_crs%NOTFOUND ;
begin
EXECUTE immediate ' drop function mdsys.'||obj_name;
EXCEPTION
WHEN OTHERS THEN
obj_name := ' ';
end;
END LOOP;
close query_crs;
commit;
-- PACKAGE BODY
stmt := ' select object_name from SYS.all_objects where ' ||
' object_type = ''PACKAGE BODY'' and owner = ''MDSYS'' ';
OPEN query_crs FOR stmt;
LOOP
fetch query_crs into obj_name;
EXIT when query_crs%NOTFOUND ;
begin
EXECUTE immediate ' drop PACKAGE BODY mdsys.'||obj_name;
EXCEPTION
WHEN OTHERS THEN
obj_name := ' ';
end;
END LOOP;
close query_crs;
commit;
-- PROCEDURE
stmt := ' select object_name from SYS.all_objects where ' ||
' object_type = ''PROCEDURE'' and owner = ''MDSYS'' ';
OPEN query_crs FOR stmt;
LOOP
fetch query_crs into obj_name;
EXIT when query_crs%NOTFOUND ;
begin
EXECUTE immediate ' drop PROCEDURE mdsys.'||obj_name;
EXCEPTION
WHEN OTHERS THEN
obj_name := ' ';
end;
END LOOP;
close query_crs;
commit;
-- TYPE
stmt := ' select object_name from SYS.all_objects where ' ||
' object_type = ''TYPE'' and owner = ''MDSYS'' ' ||
' and object_name in ( ''NDM_VECTOR_2D'', ''NUM_ARRAY'', ''OPENLS_ORDINATES'' ) ' ;
OPEN query_crs FOR stmt;
LOOP
fetch query_crs into obj_name;
EXIT when query_crs%NOTFOUND ;
begin
EXECUTE immediate ' drop TYPE mdsys.'||obj_name;
EXCEPTION
WHEN OTHERS THEN
obj_name := ' ';
end;
END LOOP;
close query_crs;
commit;
-- TYPE BODY
stmt := ' select object_name from SYS.all_objects where ' ||
' object_type = ''TYPE BODY'' and owner = ''MDSYS'' ' ;
OPEN query_crs FOR stmt;
LOOP
fetch query_crs into obj_name;
EXIT when query_crs%NOTFOUND ;
begin
EXECUTE immediate ' drop TYPE BODY mdsys.'||obj_name;
EXCEPTION
WHEN OTHERS THEN
obj_name := ' ';
end;
END LOOP;
close query_crs;
commit;
-- VIEW
stmt := ' select object_name from SYS.all_objects where ' ||
' object_type = ''VIEW'' and owner = ''MDSYS'' ' ||
' and object_name like ''%GEOR%'' ' ||
' OR object_name like ''%NET%'' ' ||
' OR object_name like ''%TIN%'' ' ||
' OR object_name like ''%SESSION%'' ' ||
' OR object_name like ''%TOKEN%'' ' ;
OPEN query_crs FOR stmt;
LOOP
fetch query_crs into obj_name;
EXIT when query_crs%NOTFOUND ;
begin
EXECUTE immediate ' drop view mdsys.'||obj_name;
EXCEPTION
WHEN OTHERS THEN
obj_name := ' ';
end;
END LOOP;
close query_crs;
commit;
stmt := ' select NAME from sys.all_dependencies ' ||
' where OWNER= ''PUBLIC'' and referenced_owner=''MDSYS'' ';
OPEN query_crs FOR stmt;
LOOP
BEGIN
fetch query_crs into obj_name;
EXIT when query_crs%NOTFOUND ;
begin
EXECUTE immediate ' drop public synonym "'||obj_name||'"';
EXCEPTION
WHEN OTHERS THEN
obj_name := ' ';
end;
end;
END LOOP;
close query_crs;
end;
/
declare
begin
begin
execute immediate 'drop package MDSYS.SDO_NET_PARTITION ';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[locdbmig.sql(' || $$PLSQL_LINE || ')1]: ' ||SQLERRM); RAISE;
end;
begin
execute immediate 'drop package MDSYS.MD_NET ';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[locdbmig.sql(' || $$PLSQL_LINE || ')2]: ' ||SQLERRM); RAISE;
end;
begin
execute immediate 'drop package MDSYS.PRVTPC ';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[locdbmig.sql(' || $$PLSQL_LINE || ')3]: ' ||SQLERRM); RAISE;
end;
begin
execute immediate 'drop package MDSYS.PRVTTNPC ';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[locdbmig.sql(' || $$PLSQL_LINE || ')4]: ' ||SQLERRM); RAISE;
end;
begin
execute immediate 'drop package MDSYS.PRVT_PC ';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[locdbmig.sql(' || $$PLSQL_LINE || ')5]: ' ||SQLERRM); RAISE;
end;
begin
execute immediate 'drop package MDSYS.PRVT_TIN ';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[locdbmig.sql(' || $$PLSQL_LINE || ')6]: ' ||SQLERRM); RAISE;
end;
begin
execute immediate 'drop package MDSYS.PRVT_SAM ';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[locdbmig.sql(' || $$PLSQL_LINE || ')7]: ' ||SQLERRM); RAISE;
end;
begin
execute immediate 'drop package MDSYS.SDO_ROUTER_PARTITION ';
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[locdbmig.sql(' || $$PLSQL_LINE || ')8]: ' ||SQLERRM); RAISE;
end;
end;
/
/* Now load catmdloc.sql only of SDO is not installed. If SDO is installed,
the top level script will load catmd.sql */
grant inherit any privileges to MDSYS;
grant inherit privileges on user SYS to MDSYS;
COLUMN :script_name NEW_VALUE comp_file NOPRINT
Variable script_name varchar2(50)
declare
sdo_status VARCHAR2(20) := NULL;
begin
-- Check whether SDO is installed.
-- If not, install Locator
sdo_status := dbms_registry.status('SDO');
if (sdo_status is NULL or sdo_status = 'OPTION OFF'
or sdo_status = 'REMOVED') then
:script_name := '@catmdloc.sql';
else
:script_name := '?/rdbms/admin/nothing.sql';
end if;
end;
/
select :script_name from SYS.DUAL;
@&comp_file
-- for upgrade each time we see a different error, just ignore
-- everything as there is nothing special here in this block
declare
begin
begin
execute immediate 'revoke inherit privileges on user MDSYS from public';
exception
when others then null;
end;
begin
execute immediate 'revoke inherit privileges on user MDDATA from public';
exception
when others then null;
end;
end;
/
-- reset the session id back to SYS
Alter session set current_schema=SYS;
Rem ********************************************************************
Rem #16473696: Indicate Oracle-Supplied object
@?/rdbms/admin/sqlsessend.sql
Rem ********************************************************************
OHA YOOOO