MINI MINI MANI MO
Rem Copyright (c) 2009, 2017, Oracle and/or its affiliates.
Rem All rights reserved.
Rem
Rem NAME
Rem sdoupggeom.sql - SDOUPgradeGEOMetry.sql
Rem
Rem DESCRIPTION
Rem Use this script to upgrade the SDO_GEOMETRY type to extend
Rem the SDO_ORDINATES varray to 10M numbers.
Rem Run the script while connected as SYSDBA user.
Rem
Rem NOTES
Rem <other useful comments, qualifications, etc.>
Rem
Rem BEGIN SQL_FILE_METADATA
Rem SQL_SOURCE_FILE: sdo/admin/sdoupggeom.sql
Rem SQL_SHIPPED_FILE: md/admin/sdoupggeom.sql
Rem SQL_PHASE: UTILITY
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 - Add SYS/MDSYS prefixes
Rem rjanders 05/10/17 - #26037683: Raise 'when other' exceptions
Rem rjanders 04/27/17 - Correct "SQL_PHASE" metadata values
Rem rjanders 03/24/17 - #25779070: sdoeoper.sql drops SDO_STATISTICS type
Rem rjanders 03/23/17 - #25437999: Remove 'when others then NULL'
Rem handlers
Rem rjanders 03/09/17 - Add missing SQL_FILE_METADATA information
Rem sravada 01/11/17 - bug 25370681
Rem rjanders 01/02/15 - long identifier project phase 1
Rem yhu 04/01/14 - bug 18282238: tests for very large geometries
Rem sravada 01/21/14 - bug 18089987
Rem rjanders 05/30/13 - System-Managed IndexType ("spatial_index_v2")
Rem rjanders 03/15/13 - #16473696: Start/End _ORACLE_SCRIPT
Rem initialization
Rem rjanders 04/22/12 - Correct open cursor exception handling
Rem sravada 06/02/11 - XbranchMerge sravada_bug-12617136 from
Rem st_sdo_11.2.0
Rem sravada 05/05/09 - Created
Rem
Rem ********************************************************************
Rem #16473696: Indicate Oracle-Supplied object
@@?/rdbms/admin/sqlsessstart.sql
Rem ********************************************************************
alter session set current_schema=MDSYS;
-- This drops the SDO_STATISTICS type because we need to drop all the
-- associated objects to keep the indexes valid when we run the
-- sdoupggeom script.
@@sdoeoper.sql
/* Alter all the indexes to make them unusable */
create or replace function md_isversioned(iowner varchar2, iname varchar2)
return varchar2 as
tname varchar2(260);
begin
tname := NULL;
begin
select distinct c.TABLE_NAME into tname
from mdsys.all_sdo_index_info b,
all_wm_versioned_tables c
where
b.SDO_INDEX_OWNER = iowner and
b.INDEX_NAME = iname and
c.TABLE_NAME||'_LT' = b.TABLE_NAME and
c.owner = b.TABLE_OWNER and
c.state = 'VERSIONED' ;
exception
when others then
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[sdoupggeom.sql(' || $$PLSQL_LINE || ')1]: ' || SQLERRM); RAISE;
end;
return tname;
end;
/
declare
type cursor_type is REF CURSOR;
query_crs cursor_type ;
owner varchar2(260);
iname varchar2(260);
pname varchar2(260);
tname varchar2(260);
begin
OPEN query_crs for ' select SDO_INDEX_OWNER,SDO_INDEX_NAME ' ||
' from mdsys.all_sdo_index_metadata ' ||
' where nvl(SDO_PARTITIONED,0) = 0 ';
LOOP
FETCH query_crs into owner, iname;
EXIT when query_crs%NOTFOUND ;
tname := md_isversioned(owner, iname);
if (tname is NULL ) then /* not versioned */
execute immediate ' alter index '|| sys.dbms_assert.enquote_name(owner,false)
||'.' || sys.dbms_assert.enquote_name(iname,false) || ' unusable ';
else
dbms_wm.AlterVersionedTable(owner||'.'
||tname, 'DDL',
'ddl="alter index '||owner||'.'
||iname||' unusable", force=true') ;
end if;
END LOOP;
CLOSE query_crs;
OPEN query_crs for ' select SDO_INDEX_OWNER,SDO_INDEX_NAME, SDO_INDEX_PARTITION ' ||
' from mdsys.all_sdo_index_metadata ' ||
' where SDO_PARTITIONED = 1 ';
LOOP
FETCH query_crs into owner, iname, pname;
EXIT when query_crs%NOTFOUND ;
tname := md_isversioned(owner, iname);
if (tname is NULL) then
execute immediate ' alter index '|| sys.dbms_assert.enquote_name(owner,false)
||'.' || sys.dbms_assert.enquote_name(iname,false) || ' modify partition '
|| sys.dbms_assert.enquote_name(pname,false) || ' unusable ';
else
dbms_wm.AlterVersionedTable(owner||'.'||tname, 'DDL',
'ddl="alter index '|| owner||'.'||iname||
' modify partition '||pname||' unusable", force=true' ) ;
end if;
END LOOP;
CLOSE query_crs;
EXCEPTION
WHEN OTHERS THEN
if query_crs%ISOPEN then
close query_crs;
end if;
RAISE; -- re-raise the current exception
end;
/
alter type mdsys.sdo_ordinate_array modify limit 10000000 cascade;
@@prvtsidx.plb
@@prvtoper.plb
alter type SDO_GEOMETRY compile body;
alter view MDSYS.USER_SDO_INDEX_METADATA compile;
alter view MDSYS.ALL_SDO_INDEX_METADATA compile;
alter view MDSYS.USER_SDO_INDEX_INFO compile;
alter view MDSYS.ALL_SDO_INDEX_INFO compile;
declare
type cursor_type is REF CURSOR;
query_crs cursor_type ;
oname varchar2(130);
begin
OPEN query_crs for
' select object_name from SYS.all_objects where status = ''INVALID''
and object_type = ''PACKAGE'' and owner = ''MDSYS'' ';
LOOP
FETCH query_crs into oname;
EXIT when query_crs%NOTFOUND ;
execute immediate ' alter package ' || oname || ' compile ';
END LOOP;
CLOSE query_crs;
OPEN query_crs for
' select object_name from SYS.all_objects where status = ''INVALID''
and object_type = ''PACKAGE BODY'' and owner = ''MDSYS'' ';
LOOP
FETCH query_crs into oname;
EXIT when query_crs%NOTFOUND ;
execute immediate ' alter package ' || oname || ' compile body ';
END LOOP;
CLOSE query_crs;
OPEN query_crs for
' select object_name from SYS.all_objects where status = ''INVALID''
and object_type = ''TYPE BODY'' and owner = ''MDSYS'' ';
LOOP
FETCH query_crs into oname;
EXIT when query_crs%NOTFOUND ;
execute immediate ' alter type ' || oname || ' compile body ';
END LOOP;
CLOSE query_crs;
OPEN query_crs for
' select object_name from SYS.all_objects where status = ''INVALID''
and object_type = ''TRIGGER'' and owner = ''MDSYS'' ';
LOOP
FETCH query_crs into oname;
EXIT when query_crs%NOTFOUND ;
execute immediate ' alter trigger ' || oname || ' compile ';
END LOOP;
CLOSE query_crs;
OPEN query_crs for
' select object_name from SYS.all_objects where status = ''INVALID''
and object_type = ''VIEW'' and owner = ''MDSYS'' ';
LOOP
FETCH query_crs into oname;
EXIT when query_crs%NOTFOUND ;
execute immediate ' alter view ' || oname || ' compile ';
END LOOP;
CLOSE query_crs;
OPEN query_crs for
' select object_name from SYS.all_objects where status = ''INVALID''
and object_type = ''FUNCTION'' and owner = ''MDSYS'' ';
LOOP
FETCH query_crs into oname;
EXIT when query_crs%NOTFOUND ;
execute immediate ' alter function ' || oname || ' compile ';
END LOOP;
CLOSE query_crs;
EXCEPTION
WHEN OTHERS THEN
if query_crs%ISOPEN then
close query_crs;
end if;
RAISE; -- re-raise the current exception
end;
/
declare
indextype_not_found exception;
pragma exception_init(indextype_not_found, -29833);
begin
begin
begin
execute immediate ' alter indextype mdsys.spatial_index compile';
EXCEPTION
WHEN indextype_not_found THEN NULL;
WHEN OTHERS THEN
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[sdoupggeom.sql(' || $$PLSQL_LINE || ')2]: ' || SQLERRM); RAISE;
end;
begin
execute immediate ' alter indextype mdsys.spatial_index_v2 compile';
EXCEPTION
WHEN indextype_not_found THEN NULL;
WHEN OTHERS THEN
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[sdoupggeom.sql(' || $$PLSQL_LINE || ')3]: ' || SQLERRM); RAISE;
end;
begin
execute immediate ' alter indextype mdsys.RTREE_INDEX compile';
EXCEPTION
WHEN indextype_not_found THEN NULL;
WHEN OTHERS THEN
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[sdoupggeom.sql(' || $$PLSQL_LINE || ')4]: ' || SQLERRM); RAISE;
end;
begin
execute immediate ' alter operator mdsys.RTREE_NN compile';
EXCEPTION
WHEN indextype_not_found THEN NULL;
WHEN OTHERS THEN
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[sdoupggeom.sql(' || $$PLSQL_LINE || ')5]: ' || SQLERRM); RAISE;
end;
begin
execute immediate ' alter operator mdsys.RTREE_FILTER compile';
EXCEPTION
WHEN OTHERS THEN
SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
'EXCEPTION[sdoupggeom.sql(' || $$PLSQL_LINE || ')6]: ' || SQLERRM); RAISE;
end;
end;
end;
/
select * from SYS.all_objects where status = 'INVALID' and owner = 'MDSYS';
declare
type cursor_type is REF CURSOR;
query_crs cursor_type ;
owner varchar2(260);
iname varchar2(260);
pname varchar2(260);
tname varchar2(260);
begin
OPEN query_crs for ' select SDO_INDEX_OWNER,SDO_INDEX_NAME ' ||
' from mdsys.all_sdo_index_metadata ' ||
' where nvl(SDO_PARTITIONED,0) = 0 ';
LOOP
FETCH query_crs into owner, iname;
EXIT when query_crs%NOTFOUND ;
tname := md_isversioned(owner, iname);
if (tname is NULL ) then /* not versioned */
execute immediate ' alter index '|| sys.dbms_assert.enquote_name(owner,false)
||'.' || sys.dbms_assert.enquote_name(iname,false) ||
' rebuild parameters (''index_status=usable'') ';
else
dbms_wm.AlterVersionedTable(owner||'.'||tname, 'DDL',
'ddl="alter index '||owner||'.'||iname||
' rebuild parameters (''index_status=usable'') ", force=true') ;
end if;
END LOOP;
CLOSE query_crs;
OPEN query_crs for 'select SDO_INDEX_OWNER,SDO_INDEX_NAME,SDO_INDEX_PARTITION'
|| ' from mdsys.all_sdo_index_metadata ' ||
' where SDO_PARTITIONED = 1 ';
LOOP
FETCH query_crs into owner, iname, pname;
EXIT when query_crs%NOTFOUND ;
tname := md_isversioned(owner, iname);
if (tname is NULL) then
execute immediate ' alter index '|| sys.dbms_assert.enquote_name(owner,false)
||'.' || sys.dbms_assert.enquote_name(iname,false) ||
' rebuild partition ' || sys.dbms_assert.enquote_name(pname,false) ||
' parameters (''index_status=usable'') ';
else
dbms_wm.AlterVersionedTable(owner||'.'||tname, 'DDL',
'ddl="alter index '||owner||'.'||iname||
' rebuild partition ' || pname ||
' parameters (''index_status=usable'') ",force=true') ;
end if;
END LOOP;
CLOSE query_crs;
EXCEPTION
WHEN OTHERS THEN
if query_crs%ISOPEN then
close query_crs;
end if;
RAISE; -- re-raise the current exception
end;
/
drop function md_isversioned;
-- #25779070: Re-create the SDO_STATISTICS type
@@sdostats.plb
Rem ********************************************************************
Rem #16473696: Indicate Oracle-Supplied object
@?/rdbms/admin/sqlsessend.sql
Rem ********************************************************************
OHA YOOOO