MINI MINI MANI MO

Path : /opt/oracle/product/18c/dbhomeXE/md/admin/
File Upload :
Current File : //opt/oracle/product/18c/dbhomeXE/md/admin/sdoupggeom.sql

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