Oracle April 2021 Critical Patch Advisory - PL/SQL detailed changes

Oracle April 2021 Critical Patch Advisory changed objects performed by each database patch.

For more details and the catalog, check the main post: Dissecting 210420 BP, PSU, RU and RUR

What exactly changed for each?
(click to see detailed line changes)

Changed Objects

P.S:
> = Added Lines
< = Removed Lines

12.1.0.2

SYS.DBA_LOGSTDBY_NOT_UNIQUE - VIEW (BP):
1c1,13
< select owner, name table_name,
---
> with redo_compat as
>          (select nvl((select min(s.redo_compat)
>                       from system.logstdby$parameters p,
>                            system.logmnr_session$ s,
>                            sys.v$database d
>                       where p.name in ('LMNR_SID', 'FUTURE_SESSION') and
>                             p.value = s.session# and
>                             d.database_role = 'LOGICAL STANDBY'),
>                      (select p.value
>                       from sys.v$parameter p
>                       where p.name = 'compatible')) compat
>           from dual)
>   select owner, name table_name,
13c25,51
<   from table(logstdby$tabf) l, tab$ t
---
>   from (
>     select u.owner, u.name, u.type#, u.obj#, u.current_sby, u.gensby
>     from logstdby_support_tab_10_1 u, redo_compat c
>     where c.compat like '10.0%' or c.compat like '10.1%' or
>           c.compat like '8.%' or c.compat like '9.%'
>     UNION ALL
>     select u.owner, u.name, u.type#, u.obj#, u.current_sby, u.gensby
>     from logstdby_support_tab_10_2 u, redo_compat c
>     where c.compat like '10.2%'
>     UNION ALL
>     select u.owner, u.name, u.type#, u.obj#, u.current_sby, u.gensby
>     from logstdby_support_tab_11_1 u, redo_compat c
>     where c.compat like '11.0%' or c.compat like '11.1%'
>     UNION ALL
>     select u.owner, u.name, u.type#, u.obj#, u.current_sby, u.gensby
>     from logstdby_support_tab_11_2 u, redo_compat c
>     where c.compat like '11.2%' and c.compat not like '11.2.0.3%'
>                                 and c.compat not like '11.2.0.4%'
>     UNION ALL
>     select u.owner, u.name, u.type#, u.obj#, u.current_sby, u.gensby
>     from logstdby_support_tab_11_2b u, redo_compat c
>     where c.compat like '11.2.0.3%' or c.compat like '11.2.0.4%'
>     UNION ALL
>     select u.owner, u.name, u.type#, u.obj#, u.current_sby, u.gensby
>     from logstdby_support_tab_12_1 u, redo_compat c
>     where c.compat like '12.0%' or c.compat like '12.1%'
>   ) l, tab$ t
SYS.DBA_LOGSTDBY_UNSUPPORTED - VIEW (BP):
1c1,13
< select owner, table_name, column_name, attributes,
---
> with redo_compat as
>          (select nvl((select min(s.redo_compat)
>                       from system.logstdby$parameters p,
>                            system.logmnr_session$ s,
>                            sys.v$database d
>                       where p.name in ('LMNR_SID', 'FUTURE_SESSION') and
>                             p.value = s.session# and
>                             d.database_role = 'LOGICAL STANDBY'),
>                      (select p.value
>                       from sys.v$parameter p
>                       where p.name = 'compatible')) compat
>           from dual)
>   select owner, table_name, column_name, attributes,
36c48,80
<   from table (logstdby$utabf('LOGSTDBY'))
---
>   from (
>     select u.owner, u.table_name, u.column_name, u.scale, u.precision#,
>            u.charsetform, u.type#, u.attributes, u.gensby
>     from logstdby_unsupport_tab_10_1 u, redo_compat c
>     where c.compat like '10.0%' or c.compat like '10.1%' or
>           c.compat like '8.%' or c.compat like '9.%'
>     UNION ALL
>     select u.owner, u.table_name, u.column_name, u.scale, u.precision#,
>            u.charsetform, u.type#, u.attributes, u.gensby
>     from logstdby_unsupport_tab_10_2 u, redo_compat c
>     where c.compat like '10.2%'
>     UNION ALL
>     select u.owner, u.table_name, u.column_name, u.scale, u.precision#,
>            u.charsetform, u.type#, u.attributes, u.gensby
>     from logstdby_unsupport_tab_11_1 u, redo_compat c
>     where c.compat like '11.0%' or c.compat like '11.1%'
>     UNION ALL
>     select u.owner, u.table_name, u.column_name, u.scale, u.precision#,
>            u.charsetform, u.type#, u.attributes, u.gensby
>     from logstdby_unsupport_tab_11_2 u, redo_compat c
>     where c.compat like '11.2%' and c.compat not like '11.2.0.3%'
>                                 and c.compat not like '11.2.0.4%'
>     UNION ALL
>     select u.owner, u.table_name, u.column_name, u.scale, u.precision#,
>            u.charsetform, u.type#, u.attributes, u.gensby
>     from logstdby_unsupport_tab_11_2b u, redo_compat c
>     where c.compat like '11.2.0.3%' or c.compat like '11.2.0.4%'
>     UNION ALL
>     select u.owner, u.table_name, u.column_name, u.scale, u.precision#,
>            u.charsetform, u.type#, u.attributes, u.gensby
>     from logstdby_unsupport_tab_12_1 u, redo_compat c
>     where c.compat like '12.0%' or c.compat like '12.1%'
> )
SYS.DBA_LOGSTDBY_UNSUPPORTED_TABLE - VIEW (BP):
1,2c1,40
< select owner, name table_name
<   from table(sys.logstdby$tabf)
---
> with redo_compat as
>          (select nvl((select min(s.redo_compat)
>                       from system.logstdby$parameters p,
>                            system.logmnr_session$ s,
>                            sys.v$database d
>                       where p.name in ('LMNR_SID', 'FUTURE_SESSION') and
>                             p.value = s.session# and
>                             d.database_role = 'LOGICAL STANDBY'),
>                      (select p.value
>                       from sys.v$parameter p
>                       where p.name = 'compatible')) compat
>           from dual)
>   select owner, name table_name
>   from (
>     select u.owner, u.name, u.gensby
>     from logstdby_support_tab_10_1 u, redo_compat c
>     where c.compat like '10.0%' or c.compat like '10.1%' or
>           c.compat like '8.%' or c.compat like '9.%'
>     UNION ALL
>     select u.owner, u.name, u.gensby
>     from logstdby_support_tab_10_2 u, redo_compat c
>     where c.compat like '10.2%'
>     UNION ALL
>     select u.owner, u.name, u.gensby
>     from logstdby_support_tab_11_1 u, redo_compat c
>     where c.compat like '11.0%' or c.compat like '11.1%'
>     UNION ALL
>     select u.owner, u.name, u.gensby
>     from logstdby_support_tab_11_2 u, redo_compat c
>     where c.compat like '11.2%' and c.compat not like '11.2.0.3%'
>                                 and c.compat not like '11.2.0.4%'
>     UNION ALL
>     select u.owner, u.name, u.gensby
>     from logstdby_support_tab_11_2b u, redo_compat c
>     where c.compat like '11.2.0.3%' or c.compat like '11.2.0.4%'
>     UNION ALL
>     select u.owner, u.name, u.gensby
>     from logstdby_support_tab_12_1 u, redo_compat c
>     where c.compat like '12.0%' or c.compat like '12.1%'
>   )
SYS.DBA_ROLLING_UNSUPPORTED - VIEW (BP):
1c1,13
< select owner, table_name, column_name, attributes,
---
> with redo_compat as
>          (select nvl((select min(s.redo_compat)
>                       from system.logstdby$parameters p,
>                            system.logmnr_session$ s,
>                            sys.v$database d
>                       where p.name in ('LMNR_SID', 'FUTURE_SESSION') and
>                             p.value = s.session# and
>                             d.database_role = 'LOGICAL STANDBY'),
>                      (select p.value
>                       from sys.v$parameter p
>                       where p.name = 'compatible')) compat
>           from dual)
>   select owner, table_name, column_name, attributes,
36c48,80
<   from table (logstdby$utabf('ROLLING'))
---
>   from (
>    select u.owner, u.table_name, u.column_name, u.scale, u.precision#,
>            u.charsetform, u.type#, u.attributes, u.gensby
>     from logstdby_unsupport_tab_10_1 u, redo_compat c
>     where c.compat like '10.0%' or c.compat like '10.1%' or
>           c.compat like '8.%' or c.compat like '9.%'
>     UNION ALL
>    select u.owner, u.table_name, u.column_name, u.scale, u.precision#,
>            u.charsetform, u.type#, u.attributes, u.gensby
>     from logstdby_unsupport_tab_10_2 u, redo_compat c
>     where c.compat like '10.2%'
>     UNION ALL
>    select u.owner, u.table_name, u.column_name, u.scale, u.precision#,
>            u.charsetform, u.type#, u.attributes, u.gensby
>     from logstdby_unsupport_tab_11_1 u, redo_compat c
>     where c.compat like '11.0%' or c.compat like '11.1%'
>     UNION ALL
>    select u.owner, u.table_name, u.column_name, u.scale, u.precision#,
>            u.charsetform, u.type#, u.attributes, u.gensby
>     from logstdby_unsupport_tab_11_2 u, redo_compat c
>     where c.compat like '11.2%' and c.compat not like '11.2.0.3%'
>                                 and c.compat not like '11.2.0.4%'
>     UNION ALL
>     select u.owner, u.table_name, u.column_name, u.scale, u.precision#,
>            u.charsetform, u.type#, u.attributes, u.gensby
>     from logstdby_unsupport_tab_11_2b u, redo_compat c
>     where c.compat like '11.2.0.3%' or c.compat like '11.2.0.4%'
>     UNION ALL
>     select u.owner, u.table_name, u.column_name, u.scale, u.precision#,
>            u.charsetform, u.type#, u.attributes, u.gensby
>     from logstdby_ru_unsupport_tab_12_1 u, redo_compat c
>     where c.compat like '12.0%' or c.compat like '12.1%'
>   )
SYS.LOGSTDBY_SUPPORT - VIEW (BP):
1c1,13
< select owner, name, type#, obj#, gensby full_sby, current_sby,
---
> with redo_compat as
>          (select nvl((select min(s.redo_compat)
>                       from system.logstdby$parameters p,
>                            system.logmnr_session$ s,
>                            sys.v$database d
>                       where p.name in ('LMNR_SID', 'FUTURE_SESSION') and
>                             p.value = s.session# and
>                             d.database_role = 'LOGICAL STANDBY'),
>                      (select p.value
>                       from sys.v$parameter p
>                       where p.name = 'compatible')) compat
>           from dual)
>   select owner, name, type#, obj#, gensby full_sby, current_sby,
29c41,67
<      select * from table(logstdby$tabf)) l
---
>     select * from (
>     select u.owner, u.name, u.type#, u.obj#, u.current_sby, u.gensby
>     from logstdby_support_tab_10_1 u, redo_compat c
>     where c.compat like '10.0%' or c.compat like '10.1%' or
>           c.compat like '8.%' or c.compat like '9.%'
>     UNION ALL
>     select u.owner, u.name, u.type#, u.obj#, u.current_sby, u.gensby
>     from logstdby_support_tab_10_2 u, redo_compat c
>     where c.compat like '10.2%'
>     UNION ALL
>     select u.owner, u.name, u.type#, u.obj#, u.current_sby, u.gensby
>     from logstdby_support_tab_11_1 u, redo_compat c
>     where c.compat like '11.0%' or c.compat like '11.1%'
>     UNION ALL
>     select u.owner, u.name, u.type#, u.obj#, u.current_sby, u.gensby
>     from logstdby_support_tab_11_2 u, redo_compat c
>     where c.compat like '11.2%' and c.compat not like '11.2.0.3%'
>                                 and c.compat not like '11.2.0.4%'
>     UNION ALL
>     select u.owner, u.name, u.type#, u.obj#, u.current_sby, u.gensby
>     from logstdby_support_tab_11_2b u, redo_compat c
>     where c.compat like '11.2.0.3%' or c.compat like '11.2.0.4%'
>     UNION ALL
>     select u.owner, u.name, u.type#, u.obj#, u.current_sby, u.gensby
>     from logstdby_support_tab_12_1 u, redo_compat c
>     where c.compat like '12.0%' or c.compat like '12.1%')
> ) l

12.2.0.1

GSMADMIN_INTERNAL.DBMS_GSM_CLOUDADMIN - PACKAGE BODY (RU):
3028d3027
<  
3060c3059
<      || 'cross_shard=' || CROSS_SHARD);
---
>      || ' cross_shard=' || CROSS_SHARD);
3612c3611
<     PUBKEY    RAW(2000);
---
>     PUBKEY    RAW(4000);
GSMADMIN_INTERNAL.DBMS_GSM_NOPRIV - PACKAGE BODY (RU):
106c106,108
<     EXECUTE IMMEDIATE 'SELECT count(private_key) FROM gsmadmin_internal.cloud'
---
>     EXECUTE IMMEDIATE 
>     'SELECT count(*) 
>       FROM gsmadmin_internal.cloud where private_key is not null'
GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN - PACKAGE BODY (RU):
365a366
> 
391c392
<       CHUNK_NUMBER IN 
---
>       CHUNK_NUMBER IN
393c394
<        WHERE DATABASE_NUM = DBS(I).DATABASE_NUM AND 
---
>        WHERE DATABASE_NUM = DBS(I).DATABASE_NUM AND
395c396
<        ROWNUM <=DBS(I).SHAR;                          
---
>        ROWNUM <=DBS(I).SHAR;
398c399
< END  SPREADROONDG;
---
> END SPREADROONDG;
1355c1356
<   LOC_PUBKEY         RAW(2000);
---
>   LOC_PUBKEY         RAW(4000);
4410c4411
<   LOC_PUBKEY          RAW(2000);
---
>   LOC_PUBKEY          RAW(4000);
18324c18325
<     STMT  VARCHAR2(2000);
---
>     STMT  VARCHAR2(4000);
18340c18341
<     TMPVAR RAW(2000);
---
>     TMPVAR RAW(4000);
18755c18756
<                LEFT OUTER JOIN DATABASE D 
---
>                LEFT OUTER JOIN DATABASE D
18955d18955
< 

18.0.0.0

SYS.DBMS_BACKUP_RESTORE - PACKAGE (18.12RUR):
12c12
<   bannerVersion CONSTANT VARCHAR2(15) := '18.12.01.00';
---
>   bannerVersion CONSTANT VARCHAR2(15) := '18.12.02.00';
24,26c24,26
<   fsn  CONSTANT NUMBER := instr('18.12.01.00', '.');
<   msn  CONSTANT NUMBER := instr('18.12.01.00', '.', fsn + 1);
<   psn  CONSTANT NUMBER := instr('18.12.01.00', '.', msn + 1);
---
>   fsn  CONSTANT NUMBER := instr('18.12.02.00', '.');
>   msn  CONSTANT NUMBER := instr('18.12.02.00', '.', fsn + 1);
>   psn  CONSTANT NUMBER := instr('18.12.02.00', '.', msn + 1);
29c29
<                            to_number(substr('18.12.01.00', 1, fsn - 1));
---
>                            to_number(substr('18.12.02.00', 1, fsn - 1));
31c31
<                to_number(substr('18.12.01.00', fsn + 1, msn - fsn - 1));
---
>                to_number(substr('18.12.02.00', fsn + 1, msn - fsn - 1));
33c33
<               to_number(substr('18.12.01.00',  msn + 1, psn - msn - 1));
---
>               to_number(substr('18.12.02.00',  msn + 1, psn - msn - 1));
35c35
<                              to_number(substr('18.12.01.00',  psn + 1));
---
>                              to_number(substr('18.12.02.00',  psn + 1));
SYS.DBMS_BACKUP_RESTORE - PACKAGE (18.13RUR):
12c12
<   bannerVersion CONSTANT VARCHAR2(15) := '18.13.00.00';
---
>   bannerVersion CONSTANT VARCHAR2(15) := '18.13.01.00';
24,26c24,26
<   fsn  CONSTANT NUMBER := instr('18.13.00.00', '.');
<   msn  CONSTANT NUMBER := instr('18.13.00.00', '.', fsn + 1);
<   psn  CONSTANT NUMBER := instr('18.13.00.00', '.', msn + 1);
---
>   fsn  CONSTANT NUMBER := instr('18.13.01.00', '.');
>   msn  CONSTANT NUMBER := instr('18.13.01.00', '.', fsn + 1);
>   psn  CONSTANT NUMBER := instr('18.13.01.00', '.', msn + 1);
29c29
<                            to_number(substr('18.13.00.00', 1, fsn - 1));
---
>                            to_number(substr('18.13.01.00', 1, fsn - 1));
31c31
<                to_number(substr('18.13.00.00', fsn + 1, msn - fsn - 1));
---
>                to_number(substr('18.13.01.00', fsn + 1, msn - fsn - 1));
33c33
<               to_number(substr('18.13.00.00',  msn + 1, psn - msn - 1));
---
>               to_number(substr('18.13.01.00',  msn + 1, psn - msn - 1));
35c35
<                              to_number(substr('18.13.00.00',  psn + 1));
---
>                              to_number(substr('18.13.01.00',  psn + 1));
SYS.DBMS_BACKUP_RESTORE - PACKAGE (RU):
12c12
<   bannerVersion CONSTANT VARCHAR2(15) := '18.13.00.00';
---
>   bannerVersion CONSTANT VARCHAR2(15) := '18.14.00.00';
24,26c24,26
<   fsn  CONSTANT NUMBER := instr('18.13.00.00', '.');
<   msn  CONSTANT NUMBER := instr('18.13.00.00', '.', fsn + 1);
<   psn  CONSTANT NUMBER := instr('18.13.00.00', '.', msn + 1);
---
>   fsn  CONSTANT NUMBER := instr('18.14.00.00', '.');
>   msn  CONSTANT NUMBER := instr('18.14.00.00', '.', fsn + 1);
>   psn  CONSTANT NUMBER := instr('18.14.00.00', '.', msn + 1);
29c29
<                            to_number(substr('18.13.00.00', 1, fsn - 1));
---
>                            to_number(substr('18.14.00.00', 1, fsn - 1));
31c31
<                to_number(substr('18.13.00.00', fsn + 1, msn - fsn - 1));
---
>                to_number(substr('18.14.00.00', fsn + 1, msn - fsn - 1));
33c33
<               to_number(substr('18.13.00.00',  msn + 1, psn - msn - 1));
---
>               to_number(substr('18.14.00.00',  msn + 1, psn - msn - 1));
35c35
<                              to_number(substr('18.13.00.00',  psn + 1));
---
>                              to_number(substr('18.14.00.00',  psn + 1));
SYS.DBMS_REGISTRY - PACKAGE (18.13RUR):
13c13
<                                '18.13.0.0.0';
---
>                                '18.13.1.0.0';
SYS.DBMS_REGISTRY - PACKAGE (18.12RUR):
13c13
<                                '18.12.1.0.0';
---
>                                '18.12.2.0.0';
SYS.DBMS_REGISTRY - PACKAGE (RU):
13c13
<                                '18.13.0.0.0';
---
>                                '18.14.0.0.0';
SYS.DBMS_RCVMAN - PACKAGE BODY (18.13RUR):
122c122
< CATALOGVERSION CONSTANT VARCHAR2(11) := '18.13.00.00'; 
---
> CATALOGVERSION CONSTANT VARCHAR2(11) := '18.13.01.00'; 
SYS.DBMS_RCVMAN - PACKAGE BODY (RU):
122c122
< CATALOGVERSION CONSTANT VARCHAR2(11) := '18.13.00.00'; 
---
> CATALOGVERSION CONSTANT VARCHAR2(11) := '18.14.00.00'; 
SYS.DBMS_RCVMAN - PACKAGE BODY (18.12RUR):
122c122
< CATALOGVERSION CONSTANT VARCHAR2(11) := '18.12.01.00'; 
---
> CATALOGVERSION CONSTANT VARCHAR2(11) := '18.12.02.00'; 
SYS.MON_MODS_V - VIEW (RU):
2c2
<   nvl(m.obj#, x.objn),
---
>   m.obj#,
15c15
< from sys.mon_mods_all$ m full outer join
---
> from sys.mon_mods_all$ m,
19c19,33
< on m.obj# = x.objn
---
> where m.obj# = x.objn(+)
> union all
> select
>   x.objn,
>   nvl(x.ins, 0),
>   nvl(x.upd, 0),
>   nvl(x.del, 0),
>   sysdate,                 /* assume sysdate as timestamp for mods in memory */
>   nvl(x.flags, 0),
>   nvl(x.dropseg, 0)
> from sys.mon_mods_all$ m,
>      (select objn, sum(ins) ins, sum(upd) upd, sum(del) del,
>       max(bitand(flags, 1)) flags, sum(dropseg) dropseg
>       from sys.gv$dml_stats group by objn) x
> where x.objn = m.obj#(+) and m.obj# is null

19.0.0.0

AUDSYS.DBMS_AUDIT_MGMT - PACKAGE BODY (RU):
2170a2171,2172
>       
>       
2172c2174
<              NAME = UPPER(SYS_CONTEXT('USERENV', 'CON_NAME'));
---
>              NAME = SYS_CONTEXT('USERENV', 'CON_NAME');
5583a5586,5589
>     
>     
>     EXECUTE IMMEDIATE 'alter session set "_skip_app_object_check" =true';
> 
5588a5595,5596
>     
>     EXECUTE IMMEDIATE 'alter session set "_skip_app_object_check" =false';
5596a5605,5606
>       
>       EXECUTE IMMEDIATE 'alter session set "_skip_app_object_check" =false';
5833a5844,5846
>     M_NO_ROWS_STAT    VARCHAR2(500);
>     M_CLI_TAB_NAME    VARCHAR2(128);
>     M_NO_CLI_ROWS     NUMBER := 0;
5848c5861,5874
<       RAISE_ORA_ERROR(46250, 'CONTAINER_GUID');
---
>       
>       
>       FOR C_CLI_SWP_TABLE IN
>         (SELECT NAME FROM SYS.CLI_TAB$ 
>          WHERE GUID=M_CONTAINER_GUID AND NAME LIKE '%CLI_SWP%')
>       LOOP
>         M_CLI_TAB_NAME := DBMS_ASSERT.ENQUOTE_NAME(C_CLI_SWP_TABLE.NAME,FALSE);
>         M_NO_ROWS_STAT := 'select count(*) from audsys.'||M_CLI_TAB_NAME;
>         EXECUTE IMMEDIATE M_NO_ROWS_STAT INTO M_NO_CLI_ROWS;
>         EXIT WHEN M_NO_CLI_ROWS > 0;
>       END LOOP;
>       IF M_NO_CLI_ROWS > 0 THEN
>         RAISE_ORA_ERROR(46250, 'CONTAINER_GUID');
>       END IF;
CTXSYS.CTX_REPORT - PACKAGE BODY (RU):
150c150,151
<   IF (DRVUTL.ISPDBLOCKDOWN() = TRUE) THEN
---
>   
>   IF (DRVUTL.ISLOGGINGLOCKDOWN() = TRUE) THEN
CTXSYS.DRVPARX - PACKAGE BODY (RU):
27a28,35
>       IF ((IDXO = CHR(0) OR IDXO IS NULL) OR
>          (IDXN = CHR(0) OR IDXN IS NULL) OR
>           IDXP = CHR(0)) THEN
>         DRUE.PUSH(DRIG.AC_OBJ_INVALID_FMT);
>         RAISE DR_DEF.TEXTILE_ERROR;
>       END IF;
> 
>       
CTXSYS.DRVRIO - PACKAGE BODY (RU):
211a212,226
> PROCEDURE EXEC_DDL (
>   STMT          IN CLOB,
>   IGNORE_ERRORS IN BOOLEAN DEFAULT FALSE
> ) IS
> BEGIN
> 
>   EXECUTE IMMEDIATE DBMS_ASSERT.NOOP(STMT);
> 
> EXCEPTION
>   WHEN OTHERS THEN
>     IF (NOT IGNORE_ERRORS) THEN
>       RAISE DR_DEF.TEXTILE_ERROR;
>     END IF;
> END EXEC_DDL;
> 
223a239,242
>   XPFX        DRVUTL.DR_QLID2;
>   I_SQL       DRVUTL.DR_EXTRABUF;
>   LOWNER      DRVUTL.DR_QID := DBMS_ASSERT.ENQUOTE_NAME(IDX.IDX_OWNER, FALSE);
>   LNAME       DRVUTL.DR_QID := DBMS_ASSERT.ENQUOTE_NAME(IDX.IDX_NAME, FALSE);
264c283,294
<     
---
> 
>   
> 
> 
>     XPFX  := DRIUTL.MAKE_PFX(LOWNER, LNAME, '$', NULL);
> 
>   IF(DRIXMD.CHKINDEXOPTION(IDX.IDX_ID, 'H') <>
>                           DRIXMD.CHKINDEXOPTION(IDX_SHADOW.IDX_ID, 'H')) THEN
>     I_SQL := 'alter table '||XPFX||'I" add token_offsets blob';
>     EXEC_DDL(I_SQL);
>   END IF;
> 
334c364
<   
---
> 
CTXSYS.DRVXTAB - PACKAGE BODY (RU):
449,453c449,457
<   IF(DRIXMD.CHKINDEXOPTION(IDXID, 'H') <>
<                         DRIXMD.CHKINDEXOPTION(SHADOW_IDXID, 'H')) THEN
<      I_SQL := 'alter table '||XPFX||'I" add token_offsets blob';
<      EXEC_DDL(I_SQL);
<   END IF;
---
> 
> 
>   
> 
> 
> 
> 
> 
>   
GSMADMIN_INTERNAL.DBMS_GSM_UTILITY - PACKAGE (19.10RUR):
1712a1713
> err_bad_ddl          constant number := -3893;
2311c2312,2313
< 
---
> bad_ddl  EXCEPTION;
> PRAGMA EXCEPTION_INIT(bad_ddl, -3893);
GSMADMIN_INTERNAL.DBMS_GSM_DBADMIN - PACKAGE BODY (19.10RUR):
3561a3562
>       DBMS_GSM_COMMON.WRITETOGWMTRACING('Sync: re-build DB-links');
4318a4320,4322
>   
>   SYS.DBMS_GSM_FIXED.SETCATALOGSYSLINK(GSMUSRPWD, GSM_ENDPOINT);
> 
4358a4363,4364
>   
>   
7158,7163c7164,7170
<          POS := INSTR(OP_STRING, ';');
<          CUR_USER := SUBSTR(OP_STRING, 1, POS-1);
<          OP_STRING := SUBSTR(OP_STRING, POS+1);
<          DBMS_GSM_COMMON.WRITETOGWMTRACING('executeGenericProcedure: Executing '
<              || OP_STRING || ' as ' || CUR_USER);
<          SYS.EXECASUSER(CUR_USER, TO_CLOB(OP_STRING));
---
>          NULL;
> 
> 
> 
> 
> 
> 
GSMADMIN_INTERNAL.DBMS_GSM_DBADMIN - PACKAGE BODY (RU):
1047a1048,1049
>    SINGLE       NUMBER;
>    UKN          NUMBER;
1055a1058,1076
>    
>    IF RAC_STATUS = GWM_RAC_ADMIN THEN
>       
>       SELECT COUNT(*) INTO SINGLE
>          FROM V$INSTANCE WHERE DATABASE_TYPE = 'SINGLE';
>       IF SINGLE > 0 THEN
>          
>          RAC_STATUS := GWM_RAC_SIHA;
>       END IF;
>       
>       SELECT COUNT(*) INTO UKN
>          FROM V$INSTANCE WHERE DATABASE_TYPE = 'UNKNOWN';
>       IF UKN > 0 THEN
>          
>          
>          RAC_STATUS := GWM_NORAC;
>       END IF;
>    END IF;
> 
4318a4340,4343
> 	
>   
>   SYS.DBMS_GSM_FIXED.SETCATALOGSYSLINK(GSMUSRPWD, GSM_ENDPOINT);
> 
4358a4384,4385
>   
>   
7158,7163c7185,7191
<          POS := INSTR(OP_STRING, ';');
<          CUR_USER := SUBSTR(OP_STRING, 1, POS-1);
<          OP_STRING := SUBSTR(OP_STRING, POS+1);
<          DBMS_GSM_COMMON.WRITETOGWMTRACING('executeGenericProcedure: Executing '
<              || OP_STRING || ' as ' || CUR_USER);
<          SYS.EXECASUSER(CUR_USER, TO_CLOB(OP_STRING));
---
>          NULL;
> 
> 
> 
> 
> 
> 
GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN - PACKAGE BODY (RU):
14075,14101d14074
<    IF NOT DB_ROLE = DBMS_GSM_COMMON.DB_ROLE_NONE
<      OR LAG = DBMS_GSM_COMMON.SPECIFIED_LAG
<      OR FAILOVER_PRIMARY = DBMS_GSM_COMMON.FAILOVER_PRIMARY_ON THEN
< 
<      IF LOC_POOL_TYPE = DBMS_GSM_COMMON.POOL_NOTSHARDED AND
<         NOT ISBROKERCONFIG(LOC_POOL_NAME) THEN
< 
<         IF NOT DB_ROLE = DBMS_GSM_COMMON.DB_ROLE_NONE THEN
<            SYS.DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(
<                                               DBMS_GSM_UTILITY.ERR_SVC_NON_BC);
<         END IF;
< 
<         IF LAG = DBMS_GSM_COMMON.SPECIFIED_LAG THEN
<            SYS.DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(DBMS_GSM_UTILITY.ERR_SVC_LAG);
<         END IF;
< 
<         IF FAILOVER_PRIMARY = DBMS_GSM_COMMON.FAILOVER_PRIMARY_ON THEN
<            SYS.DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(
<                                             DBMS_GSM_UTILITY.ERR_SVC_FAILOVER);
<         END IF;
< 
<      END IF;
< 
<    END IF;
< 
<    
<    
18872c18845,18846
<           ELSIF DEPLOY_STATE = SS_DEPLOYED THEN
---
>           ELSIF DEPLOY_STATE = SS_DEPLOYED 
>                 AND SKIP_MOVE = DBMS_GSM_COMMON.ISFALSE THEN
22506,22507c22480,22488
<      SYS.EXECASUSER(CUR_USER, TO_CLOB(L_STMT));
< 	 END IF;
---
>      BEGIN
> 	   DBMS_SESSION.SET_CONTEXT('shard_ctx', 'int_ddl', 'TRUE');
>        SYS.EXECASUSER(CUR_USER, TO_CLOB(L_STMT));
>        DBMS_SESSION.CLEAR_CONTEXT('shard_ctx', ATTRIBUTE=>'int_ddl');
>      EXCEPTION WHEN OTHERS THEN
>        DBMS_SESSION.CLEAR_CONTEXT('shard_ctx', ATTRIBUTE=>'int_ddl');
>        RAISE;
>      END;
>    END IF;
GSMADMIN_INTERNAL.DBMS_GSM_POOLADMIN - PACKAGE BODY (19.10RUR):
22506,22507c22506,22514
<      SYS.EXECASUSER(CUR_USER, TO_CLOB(L_STMT));
< 	 END IF;
---
>      BEGIN
> 	   DBMS_SESSION.SET_CONTEXT('shard_ctx', 'int_ddl', 'TRUE');
>        SYS.EXECASUSER(CUR_USER, TO_CLOB(L_STMT));
>        DBMS_SESSION.CLEAR_CONTEXT('shard_ctx', ATTRIBUTE=>'int_ddl');
>      EXCEPTION WHEN OTHERS THEN
>        DBMS_SESSION.CLEAR_CONTEXT('shard_ctx', ATTRIBUTE=>'int_ddl');
>        RAISE;
>      END;
>    END IF;
GSMADMIN_INTERNAL.DBMS_GSM_UTILITY - PACKAGE BODY (19.10RUR):
1230c1230,1237
<     SYS.EXECASUSERID(USER_ID, LOC_DDL_TEXT);
---
>     BEGIN
>        DBMS_SESSION.SET_CONTEXT('shard_ctx2', 'int_ddl', 'TRUE');
>        SYS.EXECASUSERID(USER_ID, LOC_DDL_TEXT);
>        DBMS_SESSION.CLEAR_CONTEXT('shard_ctx2', ATTRIBUTE=>'int_ddl');
>     EXCEPTION WHEN OTHERS THEN
>        DBMS_SESSION.CLEAR_CONTEXT('shard_ctx2', ATTRIBUTE=>'int_ddl');
>        RAISE;
>     END;
2728c2735,2742
<     SYS.EXECASUSER(USER_NAME, CRTSTMT);
---
>     BEGIN
> 	   DBMS_SESSION.SET_CONTEXT('shard_ctx2', 'int_ddl', 'TRUE');
>        SYS.EXECASUSER(USER_NAME, CRTSTMT);
>        DBMS_SESSION.CLEAR_CONTEXT('shard_ctx2', ATTRIBUTE=>'int_ddl');
>     EXCEPTION WHEN OTHERS THEN
>        DBMS_SESSION.CLEAR_CONTEXT('shard_ctx2', ATTRIBUTE=>'int_ddl');
>        RAISE;
>     END;
2834c2848,2855
<     SYS.EXECASUSER(USER_NAME, PRIVSTMT);
---
>     BEGIN
> 	   DBMS_SESSION.SET_CONTEXT('shard_ctx2', 'int_ddl', 'TRUE');
>        SYS.EXECASUSER(USER_NAME, PRIVSTMT);
>        DBMS_SESSION.CLEAR_CONTEXT('shard_ctx2', ATTRIBUTE=>'int_ddl');
>     EXCEPTION WHEN OTHERS THEN
>        DBMS_SESSION.CLEAR_CONTEXT('shard_ctx2', ATTRIBUTE=>'int_ddl');
>        RAISE;
>     END;
2929c2950,2957
<     SYS.EXECASUSER(USER_NAME, PRIVSTMT);
---
>     BEGIN
> 	   DBMS_SESSION.SET_CONTEXT('shard_ctx2', 'int_ddl', 'TRUE');
>        SYS.EXECASUSER(USER_NAME, PRIVSTMT);
>        DBMS_SESSION.CLEAR_CONTEXT('shard_ctx2', ATTRIBUTE=>'int_ddl');
>     EXCEPTION WHEN OTHERS THEN
>        DBMS_SESSION.CLEAR_CONTEXT('shard_ctx2', ATTRIBUTE=>'int_ddl');
>        RAISE;
>     END;
MDSYS.SDO_GEOR - PACKAGE (RU):
1984a1985,2011
> Function  generateStatistics
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     mask              IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_NUMBER_ARRAY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return MDSYS.SDO_NUMBER_ARRAY;
> 
> Function generateStatistics
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     mask              IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_GEOMETRY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     polygonClip       IN VARCHAR2 DEFAULT NULL,
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return MDSYS.SDO_NUMBER_ARRAY;
> 
2009a2037,2063
> Function generateStatisticsMax
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     mask              IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_NUMBER_ARRAY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return NUMBER;
> 
> Function generateStatisticsMax
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     mask              IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_GEOMETRY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     polygonClip       IN VARCHAR2 DEFAULT NULL,
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return NUMBER;
> 
2034a2089,2140
> Function generateStatisticsMin
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     mask              IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_NUMBER_ARRAY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return NUMBER;
> 
> Function generateStatisticsMin
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     mask              IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_GEOMETRY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     polygonClip       IN VARCHAR2 DEFAULT NULL,
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return NUMBER;
> 
> Function generateStatisticsMean
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_NUMBER_ARRAY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return NUMBER;
> 
> Function generateStatisticsMean
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_GEOMETRY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     polygonClip       IN VARCHAR2 DEFAULT NULL,
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return NUMBER;
> 
2037a2144
>     mask              IN MDSYS.SDO_GEORASTER,
2049a2157
>     mask              IN MDSYS.SDO_GEORASTER,
2058a2167
> 
2083a2193,2243
> Function generateStatisticsSTD
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     mask              IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_NUMBER_ARRAY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return NUMBER;
> 
> Function generateStatisticsSTD
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     mask              IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_GEOMETRY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     polygonClip       IN VARCHAR2 DEFAULT NULL,
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return NUMBER;
> 
> Function generateStatisticsMedian
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_NUMBER_ARRAY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return NUMBER;
> 
> Function generateStatisticsMedian
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_GEOMETRY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     polygonClip       IN VARCHAR2 DEFAULT NULL,
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return NUMBER;
2087a2248
>     mask              IN MDSYS.SDO_GEORASTER,
2099a2261,2286
>     mask              IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_GEOMETRY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     polygonClip       IN VARCHAR2 DEFAULT NULL,
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return NUMBER;
> 
> Function generateStatisticsMode
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_NUMBER_ARRAY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return NUMBER;
> 
> Function generateStatisticsMode
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
2112a2300
>     mask              IN MDSYS.SDO_GEORASTER,
2124a2313,2365
>     mask              IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_GEOMETRY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     polygonClip       IN VARCHAR2 DEFAULT NULL,
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return NUMBER;
> 
> Function generateStatisticsSum
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_NUMBER_ARRAY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return NUMBER;
> 
> Function generateStatisticsSum
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_GEOMETRY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     polygonClip       IN VARCHAR2 DEFAULT NULL,
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return NUMBER;
> 
> Function generateStatisticsSum
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     mask              IN MDSYS.SDO_GEORASTER,
>     pyramidLevel      IN NUMBER,
>     samplingFactor    IN VARCHAR2,
>     samplingWindow    IN MDSYS.SDO_NUMBER_ARRAY,
>     bandNumbers       IN VARCHAR2 DEFAULT NULL,
>     nodata            IN VARCHAR2 DEFAULT 'FALSE',
>     parallelParam     IN VARCHAR2 DEFAULT NULL
> )
> return NUMBER;
> 
> Function generateStatisticsSum
> (
>     georaster         IN MDSYS.SDO_GEORASTER,
>     mask              IN MDSYS.SDO_GEORASTER,
MDSYS.SDO_GEOR_AUX - PACKAGE (RU):
440a441,494
>   FUNCTION GENERATESTATISTICSMASKP
>   (
>     SRCRDT            IN VARCHAR2,
>     SRCRID            IN NUMBER,
>     X11               IN NUMBER,
>     Y11               IN NUMBER,
>     X12               IN NUMBER,
>     Y12               IN NUMBER,
>     MASKRDT           IN VARCHAR2,
>     MASKRID           IN NUMBER,
>     X21               IN NUMBER,
>     Y21               IN NUMBER,
>     X22               IN NUMBER,
>     Y22               IN NUMBER,
>     BANDS             IN VARCHAR2,
>     SAMPLINGFACTOR    IN PLS_INTEGER,
>     NODATA            IN PLS_INTEGER,
>     DEGREE            IN NUMBER,
>     PYRAMIDLEVEL      IN PLS_INTEGER,
>     POLYGONCLIP       IN PLS_INTEGER,
>     INTERGEOM         IN MDSYS.SDO_GEOMETRY,
>     STMTHP            IN SDO_GEOR_INT.PARALLELREFCUR
>   )RETURN SDO_GEOR_STATS
>     PIPELINED
>     PARALLEL_ENABLE (PARTITION STMTHP BY HASH(PID));
> 
>   FUNCTION GENERATESTATISTICSMASK1P
>   (
>     SRCRDT            IN VARCHAR2,
>     SRCRID            IN NUMBER,
>     X11               IN NUMBER,
>     Y11               IN NUMBER,
>     X12               IN NUMBER,
>     Y12               IN NUMBER,
>     MASKRDT           IN VARCHAR2,
>     MASKRID           IN NUMBER,
>     X21               IN NUMBER,
>     Y21               IN NUMBER,
>     X22               IN NUMBER,
>     Y22               IN NUMBER,
>     BANDS             IN VARCHAR2,
>     SAMPLINGFACTOR    IN PLS_INTEGER,
>     NODATA            IN PLS_INTEGER,
>     MMAX              IN NUMBER,
>     MMIN              IN NUMBER,
>     DEGREE            IN NUMBER,
>     PYRAMIDLEVEL      IN PLS_INTEGER,
>     POLYGONCLIP       IN PLS_INTEGER,
>     INTERGEOM         IN MDSYS.SDO_GEOMETRY,
>     STMTHP            IN SDO_GEOR_INT.PARALLELREFCUR
>   )RETURN SDO_GEOR_HIST_STATS
>     PIPELINED
>     PARALLEL_ENABLE (PARTITION STMTHP BY HASH(PID));
> 
MDSYS.SDO_GEOR_INT - PACKAGE (RU):
900a901,946
>   FUNCTION GENERATESTATISTICSMASKP
>   (
>     GROBJ             IN MDSYS.SDO_GEORASTER,
>     X11               IN NUMBER,
>     Y11               IN NUMBER,
>     X12               IN NUMBER,
>     Y12               IN NUMBER,
>     MASK              IN MDSYS.SDO_GEORASTER,
>     X21               IN NUMBER,
>     Y21               IN NUMBER,
>     X22               IN NUMBER,
>     Y22               IN NUMBER,
>     BANDS             IN VARCHAR2,
>     SAMPLINGFACTOR    IN PLS_INTEGER,
>     NODATA            IN PLS_INTEGER,
>     DEGREE            IN NUMBER,
>     PYRAMIDLEVEL      IN PLS_INTEGER,
>     POLYGONCLIP       IN PLS_INTEGER,
>     INTERGEOM         IN MDSYS.SDO_GEOMETRY,
>     STMTHP            IN SDO_GEOR_INT.PARALLELREFCUR
>   )RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC;
> 
>   FUNCTION GENERATESTATISTICSMASK1P
>   (
>     GROBJ             IN MDSYS.SDO_GEORASTER,
>     X11               IN NUMBER,
>     Y11               IN NUMBER,
>     X12               IN NUMBER,
>     Y12               IN NUMBER,
>     MASK              IN MDSYS.SDO_GEORASTER,
>     X21               IN NUMBER,
>     Y21               IN NUMBER,
>     X22               IN NUMBER,
>     Y22               IN NUMBER,
>     BANDS             IN VARCHAR2,
>     SAMPLINGFACTOR    IN PLS_INTEGER,
>     NODATA            IN PLS_INTEGER,
>     MMAX              IN NUMBER,
>     MMIN              IN NUMBER,
>     DEGREE            IN NUMBER,
>     PYRAMIDLEVEL      IN PLS_INTEGER,
>     POLYGONCLIP       IN PLS_INTEGER,
>     INTERGEOM         IN MDSYS.SDO_GEOMETRY,
>     STMTHP            IN SDO_GEOR_INT.PARALLELREFCUR
>   )RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC;
> 
910a957,978
>   )
>   RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC; 
> 
>   FUNCTION GENERATESTATISTICSMASK
>   (
>     GROBJ             IN MDSYS.SDO_GEORASTER,
>     X11               IN NUMBER,
>     Y11               IN NUMBER,
>     X12               IN NUMBER,
>     Y12               IN NUMBER,
>     MASK              IN MDSYS.SDO_GEORASTER,
>     X21               IN NUMBER,
>     Y21               IN NUMBER,
>     X22               IN NUMBER,
>     Y22               IN NUMBER,
>     BANDS             IN VARCHAR2,
>     SAMPLINGFACTOR    IN PLS_INTEGER,
>     NODATA            IN PLS_INTEGER,
>     NEEDMODEMEDIAN    IN PLS_INTEGER,
>     PYRAMIDLEVEL      IN PLS_INTEGER,
>     POLYGONCLIP       IN PLS_INTEGER,
>     INTERGEOM         IN MDSYS.SDO_GEOMETRY
MDSYS.SDO_GEOM - PACKAGE BODY (RU):
19a20,22
> DTW_H_VALUE NUMBER := 1000000000.0;
> 
> 
491c494
<      IF ( KIND <> 'ENGINEERING' ) AND ( KIND <> 'PROJECTED' ) THEN
---
>      IF (KIND NOT IN ('PROJECTED', 'ENGINEERING')) THEN
566a570
>   EVENT_LEVEL NUMBER;
661a666
>    EVENT_LEVEL := MDSYS.SDO_3GL.GET_EVENT(54713);
665a671
>      
669,670c675,678
<      IF ( KIND <> 'ENGINEERING' ) AND ( KIND <> 'PROJECTED' ) THEN
<        RETURN '13029';
---
>      IF (KIND NOT IN ('PROJECTED', 'ENGINEERING')) THEN
>        IF(EVENT_LEVEL = 0) THEN
>          RETURN '13029';
>        END IF;
674a683,717
>    IF ((NDIM = 3) AND (THELRSDIMPOS = 0)) THEN
>      IF(EVENT_LEVEL = 1) THEN 
>        IF (THEGEOMETRY.SDO_SRID IS NOT NULL) THEN
>          NULL;
> 
> 
> 
> 
> 
> 
> 
>        END IF;
>      ELSIF(FLAG10G = 'TRUE') THEN 
>        IF (THEGEOMETRY.SDO_SRID IS NOT NULL) THEN
>          EXECUTE IMMEDIATE
>           ' select count(*) from mdsys.sdo_coord_ref_system a ' || 
>             ' where a.coord_ref_sys_kind = ''GEOGRAPHIC2D'' and a.srid = :1 '
>              INTO CHCK3DSRID USING THEGEOMETRY.SDO_SRID;
>          IF (CHCK3DSRID = 1) THEN
>            RETURN '13029';
>          END IF;
>        END IF;
>      ELSE
>        IF (THEGEOMETRY.SDO_SRID IS NOT NULL) THEN
>          EXECUTE IMMEDIATE
>           ' select count(*) from mdsys.sdo_coord_ref_system a ' || 
>             ' where a.coord_ref_sys_kind in (''GEOGRAPHIC3D'', ''COMPOUND'') and a.srid = :1 '
>              INTO CHCK3DSRID USING THEGEOMETRY.SDO_SRID;
> 
>          IF (CHCK3DSRID = 0) THEN
>            RETURN '13029';
>          END IF;
>        END IF;
>      END IF;
>    END IF;
2173a2217,2218
>   GEOM_SRID_KIND VARCHAR2(24);
>   EVENT_LEVEL NUMBER;
2209a2255,2268
> 
>     IF(NOT(GEOM0.SDO_SRID IS NULL)) THEN
>       SELECT
>         COORD_REF_SYS_KIND
>       INTO
>         GEOM_SRID_KIND
>       FROM
>         SDO_COORD_REF_SYS CRS
>       WHERE
>         CRS.SRID = GEOM0.SDO_SRID;
>     ELSE
>       GEOM_SRID_KIND := NULL;
>     END IF;
> 
2216,2217c2275,2280
<        (GEOM0.SDO_GTYPE != 3000)) THEN
<       MDSYS.MDERR.RAISE_MD_ERROR('MD', 'SDO', -13029);
---
>        (GEOM0.SDO_GTYPE != 3000) AND
>        (GEOM_SRID_KIND NOT IN ('PROJECTED', 'ENGINEERING'))) THEN
>       EVENT_LEVEL := MDSYS.SDO_3GL.GET_EVENT(54713);
>       IF(EVENT_LEVEL = 0) THEN
>         MDSYS.MDERR.RAISE_MD_ERROR('MD', 'SDO', -13029);
>       END IF;
2329a2393,2394
>   GEOM_SRID_KIND VARCHAR2(24);
>   EVENT_LEVEL NUMBER;
2356a2422,2435
> 
>   IF(NOT(GEOM.SDO_SRID IS NULL)) THEN
>     SELECT
>       COORD_REF_SYS_KIND
>     INTO
>       GEOM_SRID_KIND
>     FROM
>       SDO_COORD_REF_SYS CRS
>     WHERE
>       CRS.SRID = GEOM.SDO_SRID;
>   ELSE
>     GEOM_SRID_KIND := NULL;
>   END IF;
> 
2363,2364c2442,2447
<      (GEOM.SDO_GTYPE != 3000)) THEN
<     MDSYS.MDERR.RAISE_MD_ERROR('MD', 'SDO', -13029);
---
>      (GEOM.SDO_GTYPE != 3000) AND
>      (GEOM_SRID_KIND NOT IN ('PROJECTED', 'ENGINEERING'))) THEN
>     EVENT_LEVEL := MDSYS.SDO_3GL.GET_EVENT(54713);
>     IF(EVENT_LEVEL = 0) THEN
>       MDSYS.MDERR.RAISE_MD_ERROR('MD', 'SDO', -13029);
>     END IF;
2438d2520
<   GEOM2 SDO_GEOMETRY := TFM_TO_DEGREES(GEOM);
2440,2441c2522,2523
<   DIM := GET_DIM_ARRAY(GEOM2, TOL);
<   RETURN SDO_AREA(GEOM2, DIM, UNIT);
---
>   DIM := GET_DIM_ARRAY(GEOM, TOL);
>   RETURN SDO_AREA(GEOM, DIM, UNIT);
2461a2544,2545
>   GEOM_SRID_KIND VARCHAR2(24);
>   EVENT_LEVEL NUMBER;
2490a2575,2588
> 
>   IF(NOT(GEOM.SDO_SRID IS NULL)) THEN
>     SELECT
>       COORD_REF_SYS_KIND
>     INTO
>       GEOM_SRID_KIND
>     FROM
>       SDO_COORD_REF_SYS CRS
>     WHERE
>       CRS.SRID = GEOM.SDO_SRID;
>   ELSE
>     GEOM_SRID_KIND := NULL;
>   END IF;
> 
2497,2498c2595,2600
<      (GEOM.SDO_GTYPE != 3000)) THEN
<     MDSYS.MDERR.RAISE_MD_ERROR('MD', 'SDO', -13029); 
---
>      (GEOM.SDO_GTYPE != 3000) AND
>      (GEOM_SRID_KIND NOT IN ('PROJECTED', 'ENGINEERING'))) THEN
>     EVENT_LEVEL := MDSYS.SDO_3GL.GET_EVENT(54713);
>     IF(EVENT_LEVEL = 0) THEN
>       MDSYS.MDERR.RAISE_MD_ERROR('MD', 'SDO', -13029); 
>     END IF;
2521c2623,2628
<     MDSYS.MDERR.RAISE_MD_ERROR('MD', 'SDO', -54668);
---
>     EVENT_LEVEL := MDSYS.SDO_3GL.GET_EVENT(54713);
>     IF(EVENT_LEVEL = 0) THEN
>       MDSYS.MDERR.RAISE_MD_ERROR('MD', 'SDO', -54668);
>     ELSE
>       RETURN NULL;
>     END IF;
4006a4114
>   
4108a4217
>   
4167c4276
<     USING SYS.DBMS_ASSERT.NOOP(G_RESNAM_NQ);
---
>     USING G_RESNAM_NQ;
4263,4264c4372
<      GSRID := 0;
<      DSRID := 0;
---
> 
4266a4375,4376
>      ELSE
>        DSRID := 0;
4267a4378
> 
4269c4380,4382
<       GSRID := THEGEOMETRY.SDO_SRID;
---
>        GSRID := THEGEOMETRY.SDO_SRID;
>      ELSE
>        GSRID := 0;
4323,4325c4436,4439
<   USER_NAME VARCHAR2(130);
<   G_RESNAM VARCHAR2(130);
<   G_RESNAM_NQ VARCHAR2(130);
---
>   G_RESOWN VARCHAR2(130);
>   G_RESTAB VARCHAR2(130);
>   G_RESTAB_NQ VARCHAR2(130);
>   G_TABOWN VARCHAR2(130);
4331,4333c4445,4447
<   FULL_TABLE VARCHAR2(257);
<   COLUMN_NAME VARCHAR2(130);
<   TAB_ROWID VARCHAR2(24);
---
>   FULL_TABLE VARCHAR2(261); 
>   G_RESCOL VARCHAR2(130);
>   UPD_ROWID VARCHAR2(24);
4359c4473
<     USER_NAME := NLS_UPPER(SUBSTR(GEOM_TABLE, 1, INSTR(GEOM_TABLE, '.')-1));
---
>     G_TABOWN := NLS_UPPER(SUBSTR(GEOM_TABLE, 1, INSTR(GEOM_TABLE, '.')-1));
4367c4481
<       USER_NAME := GEOM_SCHEMA;
---
>       G_TABOWN := GEOM_SCHEMA;
4369c4483
<       USER_NAME := SYS_CONTEXT('USERENV', 'CURRENT_USER');
---
>       G_TABOWN := SYS_CONTEXT('USERENV', 'CURRENT_USER');
4387,4388c4501,4503
<   IF ( SDO_UTIL.IS_BUMPY_CASE(RESULT_TABLE) ) THEN
<     G_RESNAM := RESULT_TABLE;
---
>   IF ( INSTR(RESULT_TABLE, '.') > 0 ) THEN
>     G_RESOWN := NLS_UPPER(SUBSTR(RESULT_TABLE, 1, INSTR(RESULT_TABLE, '.')-1));
>     G_RESTAB := SUBSTR(RESULT_TABLE, INSTR(RESULT_TABLE, '.')+1);
4390c4505,4506
<     G_RESNAM := REPLACE(NLS_UPPER(RESULT_TABLE), '"');
---
>     G_RESOWN := SYS_CONTEXT('USERENV', 'CURRENT_USER');
>     G_RESTAB := RESULT_TABLE;
4392d4507
<   G_RESNAM_NQ := REPLACE(G_RESNAM, '"');
4394,4397c4509,4518
<   COLUMN_NAME := NULL;
<   STMT := 'SELECT count(*) ' ||
<           'FROM SYS.USER_TAB_COLUMNS ' ||
<           'WHERE TABLE_NAME = :tab ' ||
---
>   IF ( NOT SDO_UTIL.IS_BUMPY_CASE(G_RESTAB) ) THEN
>     G_RESTAB := REPLACE(NLS_UPPER(G_RESTAB), '"');
>   END IF;
>   G_RESTAB_NQ := REPLACE(G_RESTAB, '"');
> 
>   G_RESCOL := NULL;
>   STMT := 'SELECT COUNT(*) ' ||
>           'FROM SYS.ALL_TAB_COLUMNS ' ||
>           'WHERE OWNER = :own ' ||
>           'AND TABLE_NAME = :tab ' ||
4400c4521
<     USING G_RESNAM_NQ;
---
>     USING G_RESOWN, G_RESTAB_NQ;
4408c4529
<   STMT := 'SELECT count(*) ' ||
---
>   STMT := 'SELECT COUNT(*) ' ||
4413c4534
<     USING USER_NAME, G_TABNAM_NQ;
---
>     USING G_TABOWN, G_TABNAM_NQ;
4422,4423c4543,4545
<           'FROM SYS.USER_TAB_COLUMNS ' ||
<           'WHERE TABLE_NAME = :tab ' ||
---
>           'FROM SYS.ALL_TAB_COLUMNS ' ||
>           'WHERE OWNER = :own ' ||
>           'AND TABLE_NAME = :tab ' ||
4425,4426c4547,4548
<   EXECUTE IMMEDIATE STMT INTO COLUMN_NAME
<     USING G_RESNAM_NQ;
---
>   EXECUTE IMMEDIATE STMT INTO G_RESCOL
>     USING G_RESOWN, G_RESTAB_NQ;
4428c4550,4552
<   STMT := 'truncate table ' || SDO_UTIL.SET_QUOTED_NAME(G_RESNAM_NQ);
---
>   STMT := 'truncate table ' ||
>           SYS.DBMS_ASSERT.ENQUOTE_NAME(G_RESOWN) || '.' ||
>           SDO_UTIL.SET_QUOTED_NAME(G_RESTAB_NQ);
4433,4435c4557,4559
<                        USER_NAME,
<                        G_TABNAM,
<                        G_COLNAM,
---
>                        SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(G_TABOWN),
>                        SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(G_TABNAM),
>                        SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(G_COLNAM),
4455,4456c4579,4581
<   FULL_TABLE := SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(USER_NAME) || '.' ||
<                 SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(G_TABNAM);
---
>   
>   FULL_TABLE := SYS.DBMS_ASSERT.ENQUOTE_NAME(G_TABOWN) || '.' ||
>                 SYS.DBMS_ASSERT.ENQUOTE_NAME(G_TABNAM_NQ, FALSE);
4460c4585
<             SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(G_COLNAM) ||
---
>             SYS.DBMS_ASSERT.ENQUOTE_NAME(G_COLNAM, FALSE) ||
4463,4464c4588,4590
<             SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(G_COLNAM) ||
<             ' is not null and rownum < 2';
---
>             SYS.DBMS_ASSERT.ENQUOTE_NAME(G_COLNAM, FALSE) ||
>             ' is not null ' ||
>             'fetch first 1 row only';
4506,4510c4632,4636
<                  FULL_TABLE,
<                  G_COLNAM, G_RESNAM_NQ, COMMIT_INTERVAL,
<                  CONDITIONAL, CHCK3DSRID, 
<                  SM_MJR_AXIS, 1.0/INV_FLTN, G3D_GEOG_CRS_UOM_FACTOR,
<                  IS_UNIT_RADIANS, DIMINFO(1).SDO_TOLERANCE);
---
>                   FULL_TABLE,
>                   G_COLNAM, G_RESTAB_NQ, COMMIT_INTERVAL,
>                   CONDITIONAL, CHCK3DSRID, 
>                   SM_MJR_AXIS, 1.0/INV_FLTN, G3D_GEOG_CRS_UOM_FACTOR,
>                   IS_UNIT_RADIANS, DIMINFO(1).SDO_TOLERANCE);
4513a4640
> 
4515c4642,4644
<   STMT := 'INSERT INTO ' || SDO_UTIL.SET_QUOTED_NAME(G_RESNAM_NQ) ||
---
>   STMT := 'INSERT INTO ' ||
>           SYS.DBMS_ASSERT.ENQUOTE_NAME(G_RESOWN) || '.' ||
>           SDO_UTIL.SET_QUOTED_NAME(G_RESTAB_NQ) ||
4518,4519c4647,4652
<  
<   STMT := 'select rowid from ' || SDO_UTIL.SET_QUOTED_NAME(G_RESNAM_NQ);
---
> 
>   
>   
>   STMT := 'select rowid from ' ||
>           SYS.DBMS_ASSERT.ENQUOTE_NAME(G_RESOWN) || '.' ||
>           SDO_UTIL.SET_QUOTED_NAME(G_RESTAB_NQ);
4521c4654
<     INTO TAB_ROWID;
---
>     INTO UPD_ROWID;
4523c4656,4657
<   SDO_3GL.VALIDATE_LAYER_WITH_CONTEXT(G_TABNAM, G_COLNAM,
---
>    
>    SDO_3GL.VALIDATE_LAYER_WITH_CONTEXT(G_TABNAM, G_COLNAM,
4525,4531c4659,4664
<              G_RESNAM, COMMIT_INTERVAL,
<              SYS.ODCIINDEXINFO(USER_NAME, 'DUMMY',
<              SYS.ODCICOLINFOLIST(SYS.ODCICOLINFO(USER_NAME, G_TABNAM,
<              G_COLNAM,
<              'SDO_GEOMETRY', 'MDSYS',NULL, 0, NULL,NULL,NULL)), NULL, NULL, NULL,NULL,NULL),
<              COLUMN_NAME, TAB_ROWID);
<       
---
>              G_RESTAB, COMMIT_INTERVAL,
>              SYS.ODCIINDEXINFO(G_TABOWN, 'DUMMY',
>              SYS.ODCICOLINFOLIST(SYS.ODCICOLINFO(G_TABOWN, G_TABNAM, G_COLNAM,
>              'SDO_GEOMETRY', 'MDSYS', NULL, 0, NULL, NULL, NULL)), NULL, NULL, NULL, NULL, NULL),
>              G_RESCOL, UPD_ROWID);
> 
4537c4670
<                               G_RESNAM,
---
>                               G_RESTAB,
MDSYS.SDO_GEOR - PACKAGE BODY (RU):
3499a3500,3505
>       SRS            MDSYS.SDO_GEOR_SRS;
>       ISAFFINE       BOOLEAN := TRUE;
>       RESOLUTIONS    MDSYS.SDO_NUMBER_ARRAY;
>       HALF_RES       MDSYS.SDO_NUMBER_ARRAY;
>       PT0            MDSYS.SDO_GEOMETRY;
>       PT            MDSYS.SDO_GEOMETRY;
3515,3528c3521,3649
<      IF (POLYGONCLIP IS NOT NULL) AND (NLS_UPPER(POLYGONCLIP) = 'TRUE') AND (POLYGONCLIP1=1)
<      THEN
<        LEN:=DATASET.COUNT;
<        FOR II IN 0..(LEN/3-1) LOOP
<           CNT:=II*3+1;
<           STARTROW:=DATASET(CNT+1);
<           STARTCOL:=DATASET(CNT+2);
<            IF(POINTPOLYGON=0)
<            THEN
<              IF(CELLLOCATION='UPPERLEFT')
<              THEN
<                  GEOM:=MDSYS.SDO_GEOMETRY(2003,NULL,NULL,
<                    MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 3),
<                    MDSYS.SDO_ORDINATE_ARRAY(STARTROW,STARTCOL,STARTROW+1,STARTCOL+1));
---
>      
>      SRS := MDSYS.SDO_GEOR.GETSRS(GEORASTER);
>      IF SRS IS NOT NULL THEN
>         ISAFFINE := MDSYS.SDO_GEOR_INT.IS_AFFINE_TRANSFORM(SRS);
>         IF ISAFFINE THEN
>           
>           IF SRS.ROWNUMERATOR(6) != 0 OR
>              SRS.COLUMNNUMERATOR(7) != 0 THEN
>             ISAFFINE := FALSE;
>           END IF;
>         END IF;
>      END IF;
> 
>      
>      
>      IF ISAFFINE THEN
> 
>        
>        RESOLUTIONS := MDSYS.SDO_GEOR.GETSPATIALRESOLUTIONS(GEORASTER);
>        IF (RESOLUTIONS IS NULL) THEN
>          
>          RESOLUTIONS := MDSYS.SDO_NUMBER_ARRAY(1, 1);
>        END IF;
>        
>        IF PYRAMIDLEVEL > 0 THEN
>           FOR I IN 1..PYRAMIDLEVEL LOOP
>               RESOLUTIONS(1) := RESOLUTIONS(1) + RESOLUTIONS(1);
>               RESOLUTIONS(2) := RESOLUTIONS(2) + RESOLUTIONS(2);
>             END LOOP;
>        END IF;
>        HALF_RES := MDSYS.SDO_NUMBER_ARRAY(RESOLUTIONS(1)/2, RESOLUTIONS(2)/2);
> 
>        
>        
>        IF (SRID IS NOT NULL) THEN
>          IF (CELLLOCATION = 'CENTER') THEN
>            PT0 := MDSYS.SDO_GEOR.GETMODELCOORDINATE(GEORASTER, PYRAMIDLEVEL, 
>                   MDSYS.SDO_NUMBER_ARRAY(OUTWINDOW(1), OUTWINDOW(2)));
>          ELSE
>            PT0 := MDSYS.SDO_GEOR.GETMODELCOORDINATE(GEORASTER, PYRAMIDLEVEL, 
>                   MDSYS.SDO_NUMBER_ARRAY(OUTWINDOW(1)+0.5, OUTWINDOW(2)+0.5));
>          END IF;
>        ELSE 
>          
>          
>          IF (CELLLOCATION = 'CENTER') THEN
>            PT0 := MDSYS.SDO_GEOMETRY(2001, NULL, 
>                     MDSYS.SDO_POINT_TYPE(OUTWINDOW(1), OUTWINDOW(2), NULL), 
>                     NULL, NULL);
>          ELSE
>            PT0 := MDSYS.SDO_GEOMETRY(2001, NULL, 
>                     MDSYS.SDO_POINT_TYPE(OUTWINDOW(1)+0.5, OUTWINDOW(2)+0.5, 
>                     NULL), NULL, NULL);
>          END IF;
>        END IF;
> 
>        IF (POLYGONCLIP IS NOT NULL) AND 
>           (NLS_UPPER(POLYGONCLIP) = 'TRUE') AND 
>           (POLYGONCLIP1=1) THEN 
>         
>          
> 
>          LEN:=DATASET.COUNT;
>          FOR II IN 0..(LEN/3-1) LOOP
>             CNT:=II*3+1;
>             STARTROW:=DATASET(CNT+1);
>             STARTCOL:=DATASET(CNT+2);
> 
>             
>             IF SRID IS NOT NULL THEN 
>               PT := MDSYS.SDO_GEOMETRY(2001, SRID, 
>                     MDSYS.SDO_POINT_TYPE(PT0.SDO_POINT.X +
>                                        (STARTCOL - OUTWINDOW(2))*RESOLUTIONS(2),
>                                        PT0.SDO_POINT.Y -
>                                        (STARTROW - OUTWINDOW(1))*RESOLUTIONS(1),
>                                        NULL), NULL, NULL);
>             ELSE
>               
>               
>               PT := MDSYS.SDO_GEOMETRY(2001, NULL, 
>                     MDSYS.SDO_POINT_TYPE(
>                         PT0.SDO_POINT.X + (STARTROW - OUTWINDOW(1)), 
>                         PT0.SDO_POINT.Y + (STARTCOL - OUTWINDOW(2)), 
>                         NULL), NULL, NULL);
>             END IF;
> 
>             IF(POINTPOLYGON=1) THEN
>               GEOM := PT;  
>             ELSE
>               IF SRID IS NOT NULL THEN 
>                  
>                  
>                  GEOM := MDSYS.SDO_GEOMETRY(2003, SRID, 
>                       NULL,
>                       MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 3),
>                       MDSYS.SDO_ORDINATE_ARRAY(
>                         PT.SDO_POINT.X - HALF_RES(2),
>                         PT.SDO_POINT.Y - HALF_RES(1),
>                         PT.SDO_POINT.X + HALF_RES(2),
>                         PT.SDO_POINT.Y + HALF_RES(1)
>                       ));
>               ELSE
>                 GEOM := MDSYS.SDO_GEOMETRY(2003, NULL, NULL,
>                       MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 3),
>                       MDSYS.SDO_ORDINATE_ARRAY(
>                         PT.SDO_POINT.X - HALF_RES(1), 
>                         PT.SDO_POINT.Y - HALF_RES(2), 
>                         PT.SDO_POINT.X + HALF_RES(1),
>                         PT.SDO_POINT.Y + HALF_RES(2)
>                       ));
>               END IF;
>             END IF;
>             PIPE ROW(MDSYS.SDO_GEOR_CELL(DATASET(CNT),
>                       PYRAMIDLEVEL,
>                       STARTROW,
>                       STARTCOL,
>                       LAYERNUMBER,
>                       GEOM));
>          END LOOP;
> 
>        ELSE 
> 
>          PT := PT0;
>          CNT := 1;
>          FOR STARTROW IN OUTWINDOW(1)..OUTWINDOW(3) LOOP
>            FOR STARTCOL IN OUTWINDOW(2)..OUTWINDOW(4) LOOP
> 
>              IF(POINTPOLYGON=1) THEN
>                 GEOM := PT;  
3530,3532c3651,3670
<                  GEOM:=MDSYS.SDO_GEOMETRY(2003,NULL,NULL,
<                    MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 3),
<                    MDSYS.SDO_ORDINATE_ARRAY(STARTROW-0.5,STARTCOL-0.5,STARTROW+0.5,STARTCOL+0.5));
---
>               IF SRID IS NOT NULL THEN 
>                  GEOM := MDSYS.SDO_GEOMETRY(2003, SRID, 
>                       NULL,
>                       MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 3),
>                       MDSYS.SDO_ORDINATE_ARRAY(
>                         PT.SDO_POINT.X - HALF_RES(2), 
>                         PT.SDO_POINT.Y - HALF_RES(1), 
>                         PT.SDO_POINT.X + HALF_RES(2),
>                         PT.SDO_POINT.Y + HALF_RES(1)
>                       ));
>               ELSE
>                 GEOM := MDSYS.SDO_GEOMETRY(2003, NULL, NULL,
>                       MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 3),
>                       MDSYS.SDO_ORDINATE_ARRAY(
>                         PT.SDO_POINT.X - HALF_RES(1),  
>                         PT.SDO_POINT.Y - HALF_RES(2),  
>                         PT.SDO_POINT.X + HALF_RES(1),
>                         PT.SDO_POINT.Y + HALF_RES(2)
>                       ));
>               END IF;
3534,3537c3672,3682
<            ELSE
<              IF(CELLLOCATION='UPPERLEFT')
<              THEN
<                  GEOM:=MDSYS.SDO_GEOMETRY(2001,NULL,MDSYS.SDO_POINT_TYPE(STARTROW,STARTCOL,NULL),NULL,NULL);
---
>              PIPE ROW(MDSYS.SDO_GEOR_CELL(DATASET(CNT),
>                       PYRAMIDLEVEL,
>                       STARTROW,
>                       STARTCOL,
>                       LAYERNUMBER,
>                       GEOM));
>              CNT:= CNT + 1;
> 
>              
>              IF SRID IS NOT NULL THEN 
>                PT.SDO_POINT.X := PT.SDO_POINT.X + RESOLUTIONS(2);
3539c3684
<                  GEOM:=MDSYS.SDO_GEOMETRY(2001,NULL,MDSYS.SDO_POINT_TYPE(STARTROW-0.5,STARTCOL-0.5,NULL),NULL,NULL);
---
>                PT.SDO_POINT.Y := PT.SDO_POINT.Y + RESOLUTIONS(2);
3540a3686,3694
>            END LOOP;
> 
>            
>            IF SRID IS NOT NULL THEN 
>              PT.SDO_POINT.X := PT0.SDO_POINT.X;  
>              PT.SDO_POINT.Y := PT.SDO_POINT.Y - RESOLUTIONS(1);
>            ELSE 
>              PT.SDO_POINT.Y := PT0.SDO_POINT.Y;  
>              PT.SDO_POINT.X := PT.SDO_POINT.X + RESOLUTIONS(1);
3542,3554c3696,3712
<            IF(SRID IS NOT NULL)
<            THEN
<              MDSYS.SDO_GEOR.GETMODELCOORDINATE(GEORASTER,PYRAMIDLEVEL,GEOM,WIN);
<              GEOM:=WIN;
<            END IF;
<            PIPE ROW(MDSYS.SDO_GEOR_CELL(DATASET(CNT),PYRAMIDLEVEL,STARTROW,STARTCOL,LAYERNUMBER,GEOM));
<        END LOOP;
<      ELSE
<        FOR STARTROW IN OUTWINDOW(1)..OUTWINDOW(3) LOOP
<          FOR STARTCOL IN OUTWINDOW(2)..OUTWINDOW(4) LOOP
<            IF(POINTPOLYGON=0)
<            THEN
<              IF(CELLLOCATION='UPPERLEFT')
---
> 
>          END LOOP;
>        END IF;
> 
>      ELSE  
>         
>         
>        IF (POLYGONCLIP IS NOT NULL) AND 
>           (NLS_UPPER(POLYGONCLIP) = 'TRUE') AND 
>           (POLYGONCLIP1=1)
>        THEN
>          LEN:=DATASET.COUNT;
>          FOR II IN 0..(LEN/3-1) LOOP
>             CNT:=II*3+1;
>             STARTROW:=DATASET(CNT+1);
>             STARTCOL:=DATASET(CNT+2);
>              IF(POINTPOLYGON=0)
3556,3558c3714,3725
<                  GEOM:=MDSYS.SDO_GEOMETRY(2003,NULL,NULL,
<                    MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 3),
<                    MDSYS.SDO_ORDINATE_ARRAY(STARTROW,STARTCOL,STARTROW+1,STARTCOL+1));
---
>                IF(CELLLOCATION='UPPERLEFT')
>                THEN
>                    GEOM:=MDSYS.SDO_GEOMETRY(2003,NULL,NULL,
>                      MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 3),
>                      MDSYS.SDO_ORDINATE_ARRAY(STARTROW,STARTCOL,
>                                               STARTROW+1,STARTCOL+1));
>                ELSE
>                    GEOM:=MDSYS.SDO_GEOMETRY(2003,NULL,NULL,
>                      MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 3),
>                      MDSYS.SDO_ORDINATE_ARRAY(STARTROW-0.5,STARTCOL-0.5,
>                                               STARTROW+0.5,STARTCOL+0.5));
>                END IF;
3560,3562c3727,3732
<                  GEOM:=MDSYS.SDO_GEOMETRY(2003,NULL,NULL,
<                    MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 3),
<                    MDSYS.SDO_ORDINATE_ARRAY(STARTROW-0.5,STARTCOL-0.5,STARTROW+0.5,STARTCOL+0.5));
---
>                IF(CELLLOCATION='UPPERLEFT')
>                THEN
>                    GEOM:=MDSYS.SDO_GEOMETRY(2001,NULL,MDSYS.SDO_POINT_TYPE(STARTROW+0.5,STARTCOL+0.5,NULL),NULL,NULL);
>                ELSE
>                    GEOM:=MDSYS.SDO_GEOMETRY(2001,NULL,MDSYS.SDO_POINT_TYPE(STARTROW,STARTCOL,NULL),NULL,NULL);
>                END IF;
3564,3565c3734
<            ELSE
<              IF(CELLLOCATION='UPPERLEFT')
---
>              IF(SRID IS NOT NULL)
3567c3736,3755
<                  GEOM:=MDSYS.SDO_GEOMETRY(2001,NULL,MDSYS.SDO_POINT_TYPE(STARTROW,STARTCOL,NULL),NULL,NULL);
---
>                MDSYS.SDO_GEOR.GETMODELCOORDINATE(GEORASTER,PYRAMIDLEVEL,GEOM,WIN);
>                GEOM:=WIN;
>              END IF;
>              PIPE ROW(MDSYS.SDO_GEOR_CELL(DATASET(CNT),PYRAMIDLEVEL,STARTROW,STARTCOL,LAYERNUMBER,GEOM));
>          END LOOP;
>        ELSE  
>          FOR STARTROW IN OUTWINDOW(1)..OUTWINDOW(3) LOOP
>            FOR STARTCOL IN OUTWINDOW(2)..OUTWINDOW(4) LOOP
>              IF(POINTPOLYGON=0)
>              THEN
>                IF(CELLLOCATION='UPPERLEFT')
>                THEN
>                    GEOM:=MDSYS.SDO_GEOMETRY(2003,NULL,NULL,
>                      MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 3),
>                      MDSYS.SDO_ORDINATE_ARRAY(STARTROW,STARTCOL,STARTROW+1,STARTCOL+1));
>                ELSE
>                    GEOM:=MDSYS.SDO_GEOMETRY(2003,NULL,NULL,
>                      MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 3),
>                      MDSYS.SDO_ORDINATE_ARRAY(STARTROW-0.5,STARTCOL-0.5,STARTROW+0.5,STARTCOL+0.5));
>                END IF;
3569c3757,3762
<                  GEOM:=MDSYS.SDO_GEOMETRY(2001,NULL,MDSYS.SDO_POINT_TYPE(STARTROW-0.5,STARTCOL-0.5,NULL),NULL,NULL);
---
>                IF(CELLLOCATION='UPPERLEFT') 
>                THEN
>                    GEOM:=MDSYS.SDO_GEOMETRY(2001,NULL,MDSYS.SDO_POINT_TYPE(STARTROW+0.5,STARTCOL+0.5,NULL),NULL,NULL);
>                ELSE
>                    GEOM:=MDSYS.SDO_GEOMETRY(2001,NULL,MDSYS.SDO_POINT_TYPE(STARTROW,STARTCOL,NULL),NULL,NULL);
>                END IF;
3571,3578c3764,3771
<            END IF;
<            IF(SRID IS NOT NULL)
<            THEN
<              MDSYS.SDO_GEOR.GETMODELCOORDINATE(GEORASTER,PYRAMIDLEVEL,GEOM,WIN);
<              GEOM:=WIN;
<            END IF;
<            CNT:=(STARTROW-OUTWINDOW(1))*(OUTWINDOW(4)-OUTWINDOW(2)+1)+(STARTCOL-OUTWINDOW(2)+1);
<            PIPE ROW(MDSYS.SDO_GEOR_CELL(DATASET(CNT),PYRAMIDLEVEL,STARTROW,STARTCOL,LAYERNUMBER,GEOM));
---
>              IF(SRID IS NOT NULL)
>              THEN
>                MDSYS.SDO_GEOR.GETMODELCOORDINATE(GEORASTER,PYRAMIDLEVEL,GEOM,WIN);
>                GEOM:=WIN;
>              END IF;
>              CNT:=(STARTROW-OUTWINDOW(1))*(OUTWINDOW(4)-OUTWINDOW(2)+1)+(STARTCOL-OUTWINDOW(2)+1);
>              PIPE ROW(MDSYS.SDO_GEOR_CELL(DATASET(CNT),PYRAMIDLEVEL,STARTROW,STARTCOL,LAYERNUMBER,GEOM));
>            END LOOP;
3580,3581c3773,3774
<        END LOOP;
<      END IF;
---
>        END IF; 
>      END IF;  
4021a4215
>   GEOM MDSYS.SDO_GEOMETRY;
4043a4238,4241
>   
>   GEOM := PTGEOM;
>   MDSYS.SDO_GEOR.GETCELLCOORDINATE(GEORASTER,PYRAMIDLEVEL,PTGEOM,GEOM);
> 
4047,4048c4245,4246
<   RET:=MDSYS.SDO_GEOR_INT.GETCELLVALUES(GEORASTER,GEOR_PROP, PYRAMIDLEVEL, PTGEOM, DIM,
<                                    LAYERNUMBER, 1);
---
>   RET:=MDSYS.SDO_GEOR_INT.GETCELLVALUES(GEORASTER,GEOR_PROP, PYRAMIDLEVEL, 
>     GEOM, DIM, LAYERNUMBER, 1);
6196c6394
<     STAT:=MDSYS.SDO_NUMBER_ARRAY(0,0,0,0);                      
---
>     STAT:=MDSYS.SDO_NUMBER_ARRAY(0,0,0,0,0);                      
6200a6399
>     STAT(5):=MM_SUM;
6394a6594,6598
> 
>         IF (MMM_PIX = 0) THEN
>             CONTINUE;
>         END IF;
> 
6418a6623,6627
>     IF (MM_PIX = 0) THEN
>       MDERR.RAISE_MD_ERROR('MD', 'SDO', -13393,'samplingWindow');
>       RETURN NULL;
>     END IF;
> 
6534,6538c6743
< 
< 
< 
< 
< FUNCTION  GENERATESTATISTICS
---
> FUNCTION RETURNSTATISTICS2
6541c6746
<     PYRAMIDLEVEL      IN NUMBER,
---
>     MASK              IN MDSYS.SDO_GEORASTER,
6543,6558c6748,6751
<     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
<     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
<     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
<     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
< ) 
< RETURN MDSYS.SDO_NUMBER_ARRAY
< AS
<   STAT       MDSYS.SDO_NUMBER_ARRAY;
< BEGIN
<   STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
<   RETURN MDSYS.SDO_NUMBER_ARRAY(STAT(3),STAT(4),STAT(5),STAT(1),STAT(2),STAT(6), STAT(7));
< END GENERATESTATISTICS;
< 
< FUNCTION GENERATESTATISTICS
< ( 
<     GEORASTER         IN MDSYS.SDO_GEORASTER, 
---
>     BANDNUMBERS       IN VARCHAR2, 
>     NODATA            IN VARCHAR2,
>     PARALLELPARAM     IN VARCHAR2,
>     NEEDMODEMEDIAN    IN NUMBER, 
6560,6565c6753,6756
<     SAMPLINGFACTOR    IN VARCHAR2, 
<     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
<     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
<     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
<     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
<     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
---
>     COORD1            IN MDSYS.SDO_NUMBER_ARRAY,
>     COORD2            IN MDSYS.SDO_NUMBER_ARRAY,
>     POLYGONCLIP       IN PLS_INTEGER,
>     INTERGEOM         IN MDSYS.SDO_GEOMETRY
6569,6587c6760,6791
<   STAT       MDSYS.SDO_NUMBER_ARRAY;
< BEGIN
<   STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
<   RETURN MDSYS.SDO_NUMBER_ARRAY(STAT(3),STAT(4),STAT(5),STAT(1),STAT(2),STAT(6), STAT(7));
< END GENERATESTATISTICS;
<  
< FUNCTION GENERATESTATISTICSMAX 
< ( 
<     GEORASTER         IN MDSYS.SDO_GEORASTER, 
<     PYRAMIDLEVEL      IN NUMBER,
<     SAMPLINGFACTOR    IN VARCHAR2, 
<     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
<     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
<     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
<     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
< ) 
< RETURN NUMBER
< AS
<   STAT       MDSYS.SDO_NUMBER_ARRAY;
---
>   DIM        MDSYS.SDO_DIM_ARRAY;
>   NODATAN    NUMBER;
>   STATS      MDSYS.SDO_NUMBER_ARRAY := NULL;
>   NUM        NUMBER;
>   SKIPFACTOR NUMBER;
>   FACTORSTR  VARCHAR2(512); 
>   CELLDEPTH  VARCHAR2(32);
>   TYPE MY_CUR IS REF CURSOR;
>   M_CUR      MY_CUR;
>   DEGREE     NUMBER;
>   II         NUMBER;
>   MM_MAX     NUMBER;
>   MM_MIN     NUMBER;
>   MM_PIX     NUMBER;
>   MM_SUM     NUMBER;
>   MM_SUM2    NUMBER;
>   MMM_MAX    NUMBER;
>   MMM_MIN    NUMBER;
>   MMM_PIX    NUMBER;
>   MMM_SUM    NUMBER;
>   MMM_SUM2   NUMBER;
>   MMM_ID     NUMBER;
>   MMM_VALUE  NUMBER;
>   MMM_MVALUE NUMBER;
>   MM_VALUE   NUMBER;
>   MM_OLD_VALUE   NUMBER;
>   MM_ID      NUMBER;
>   MMM_MEDIAN NUMBER;
>   MMM_MODE   NUMBER;
>   MMM_TEMPMEDIAN NUMBER;
>   
>   STMT       VARCHAR2(32767);
6589,6591d6792
<   STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
<   RETURN STAT(1);
< END GENERATESTATISTICSMAX;
6593,6609c6794,6801
< FUNCTION GENERATESTATISTICSMAX 
< ( 
<     GEORASTER         IN MDSYS.SDO_GEORASTER, 
<     PYRAMIDLEVEL      IN NUMBER,
<     SAMPLINGFACTOR    IN VARCHAR2, 
<     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
<     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
<     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
<     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
<     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
< ) 
< RETURN NUMBER
< AS
<   STAT       MDSYS.SDO_NUMBER_ARRAY;
< BEGIN
<   STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
<   IF(STAT IS NOT NULL)
---
>   
>   IF GEORASTER IS NULL OR MASK IS NULL OR 
>      COORD1 IS NULL OR COORD2 IS NULL THEN
>      RETURN NULL;
>   END IF;
> 
>   
>   IF (NLS_UPPER(MDSYS.SDO_GEOR.ISBLANK(GEORASTER))='TRUE')
6611,6612c6803,6842
<     RETURN STAT(1);
<   ELSE
---
>     NODATAN:=MDSYS.SDO_GEOR.GETBLANKCELLVALUE(GEORASTER);
> 
>     
>     IF INTERGEOM IS NOT NULL AND POLYGONCLIP = 1 THEN
>       NUM := SDO_GEOR.GENERATESTATISTICSSUM(
>                         MASK, PYRAMIDLEVEL, SAMPLINGFACTOR, INTERGEOM, 
>                         NULL, NULL,'true', PARALLELPARAM ); 
>     ELSE
>       NUM := SDO_GEOR.GENERATESTATISTICSSUM(
>                         MASK, PYRAMIDLEVEL, SAMPLINGFACTOR, COORD2, 
>                         NULL, NULL, PARALLELPARAM); 
>     END IF;
> 
>     RETURN MDSYS.SDO_NUMBER_ARRAY(NODATAN,NODATAN,NODATAN,NODATAN,NODATAN,0,NODATAN*NUM);
>   END IF;
> 
>   
>   SKIPFACTOR:=-1;
>   FACTORSTR:=SAMPLINGFACTOR;
>   IF(FACTORSTR IS NOT NULL)
>   THEN
>     FACTORSTR:=REGEXP_SUBSTR(FACTORSTR,'samplingFactor[[:space:]]*=[[:space:]]*[[:digit:]]+',1,1,'i');
>     IF(FACTORSTR IS NOT NULL)
>     THEN
>       FACTORSTR:=REGEXP_SUBSTR(FACTORSTR,'[[:digit:]]+',1,1,'i');
>       IF(FACTORSTR IS NOT NULL)
>       THEN
>         BEGIN
>           SKIPFACTOR:=TO_NUMBER(FACTORSTR,'99999999999');
>           EXCEPTION  
>             WHEN OTHERS THEN
>               SYS.DBMS_SYSTEM.KSDWRT(SYS.DBMS_SYSTEM.TRACE_FILE,
>                                      'EXCEPTION[prvtgr.sql(' || $$PLSQL_LINE || ')2]: ' || SQLERRM); RAISE;
>         END;
>       END IF;
>     END IF;
>   END IF;
>   IF(SKIPFACTOR<1) 
>   THEN
>     MDERR.RAISE_MD_ERROR('MD', 'SDO', -13497,'Invalid samplingFactor; using string like "samplingFactor=5".');
6615d6844
< END GENERATESTATISTICSMAX;
6616a6846,6850
>   NODATAN:=0;
>   IF(NLS_UPPER(NODATA)='TRUE')
>   THEN
>     NODATAN:=1;
>   END IF;
6618,6634c6852,6857
< FUNCTION GENERATESTATISTICSMIN 
< ( 
<     GEORASTER         IN MDSYS.SDO_GEORASTER, 
<     PYRAMIDLEVEL      IN NUMBER,
<     SAMPLINGFACTOR    IN VARCHAR2, 
<     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
<     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
<     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
<     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
< ) 
< RETURN NUMBER
< AS
<   STAT       MDSYS.SDO_NUMBER_ARRAY;
< BEGIN
<   STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
<   RETURN STAT(2);
< END GENERATESTATISTICSMIN;
---
>   IF (SKIPFACTOR > COORD1(3) - COORD1(1) + 1) THEN
>     SKIPFACTOR := COORD1(3) - COORD1(1) + 1;
>   END IF;
>   IF (SKIPFACTOR > COORD1(4) - COORD1(2) + 1) THEN
>     SKIPFACTOR := COORD1(4) - COORD1(2) + 1;
>   END IF;
6636,6653c6859,6882
< FUNCTION GENERATESTATISTICSMIN 
< ( 
<     GEORASTER         IN MDSYS.SDO_GEORASTER, 
<     PYRAMIDLEVEL      IN NUMBER,
<     SAMPLINGFACTOR    IN VARCHAR2, 
<     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
<     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
<     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
<     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
<     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
< ) 
< RETURN NUMBER
< AS
<   STAT       MDSYS.SDO_NUMBER_ARRAY;
< BEGIN
<   STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
<   RETURN STAT(2);
< END GENERATESTATISTICSMIN;
---
>   IF(PARALLELPARAM IS NULL)
>   THEN
>     STATS:=MDSYS.SDO_GEOR_INT.GENERATESTATISTICSMASK(GEORASTER,
>                                    COORD1(2), COORD1(1),
>                                    COORD1(4), COORD1(3), 
>                                    MASK,
>                                    COORD2(2), COORD2(1),
>                                    COORD2(4), COORD2(3), 
>                                    BANDNUMBERS,SKIPFACTOR,NODATAN, 
>                                    NEEDMODEMEDIAN, 
>                                    PYRAMIDLEVEL,
>                                    POLYGONCLIP,
>                                    INTERGEOM
>                                    );
>   ELSE
>     SELECT XMLCAST(XMLQUERY('declare default element namespace "http://xmlns.oracle.com/spatial/georaster"; /georasterMetadata/rasterInfo/cellDepth/text()' 
>     PASSING GEORASTER.METADATA RETURNING CONTENT) AS VARCHAR2(256))
>     INTO CELLDEPTH FROM SYS.DUAL;
>     DEGREE:=MDSYS.SDO_GEOR_INT.GETPARALLELDEGREE(PARALLELPARAM);
>     DELETE FROM MDSYS.SDO_GR_PARALLEL;
>     FOR II IN 0..DEGREE-1 LOOP 
>       INSERT INTO MDSYS.SDO_GR_PARALLEL VALUES(II); 
>     END LOOP;
>     COMMIT;
6655,6671c6884
< FUNCTION GENERATESTATISTICSMEAN 
< ( 
<     GEORASTER         IN MDSYS.SDO_GEORASTER, 
<     PYRAMIDLEVEL      IN NUMBER,
<     SAMPLINGFACTOR    IN VARCHAR2, 
<     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
<     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
<     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
<     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
< ) 
< RETURN NUMBER
< AS
<   STAT       MDSYS.SDO_NUMBER_ARRAY;
< BEGIN
<   STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
<   RETURN STAT(3);
< END GENERATESTATISTICSMEAN;
---
>     MM_PIX := 0;
6673,6690c6886,6898
< FUNCTION GENERATESTATISTICSMEAN 
< ( 
<     GEORASTER         IN MDSYS.SDO_GEORASTER, 
<     PYRAMIDLEVEL      IN NUMBER,
<     SAMPLINGFACTOR    IN VARCHAR2, 
<     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
<     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
<     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
<     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
<     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
< ) 
< RETURN NUMBER
< AS
<   STAT       MDSYS.SDO_NUMBER_ARRAY;
< BEGIN
<   STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
<   RETURN STAT(3);
< END GENERATESTATISTICSMEAN;
---
>     STMT := 'select m_max,m_min,m_pix,m_sum,m_sum2 from TABLE(mdsys.sdo_geor_aux.generateStatisticsMaskP(:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,CURSOR(SELECT /*+ PARALLEL('||DEGREE||') */ pid from mdsys.SDO_GR_PARALLEL)))'; 
>     II:=0;
>     OPEN M_CUR FOR STMT USING GEORASTER.RASTERDATATABLE, GEORASTER.RASTERID,
>                               COORD1(2), COORD1(1),
>                               COORD1(4), COORD1(3), 
>                               MASK.RASTERDATATABLE, MASK.RASTERID,
>                               COORD2(2), COORD2(1),
>                               COORD2(4), COORD2(3), 
>                               BANDNUMBERS,SKIPFACTOR,NODATAN,DEGREE,
>                               PYRAMIDLEVEL, POLYGONCLIP, INTERGEOM;
>     LOOP
>         FETCH M_CUR INTO MMM_MAX,MMM_MIN,MMM_PIX,MMM_SUM,MMM_SUM2;
>         EXIT WHEN M_CUR%NOTFOUND;
6691a6900,6902
>         IF (MMM_PIX = 0) THEN
>             CONTINUE;
>         END IF;
6693,6700c6904,8022
< FUNCTION GENERATESTATISTICSSTD 
< ( 
<     GEORASTER         IN MDSYS.SDO_GEORASTER, 
<     PYRAMIDLEVEL      IN NUMBER,
<     SAMPLINGFACTOR    IN VARCHAR2, 
<     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
<     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
<     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
---
>         II:=II+1;
>         IF(II=1)
>         THEN
>           MM_MAX:=MMM_MAX;
>           MM_MIN:=MMM_MIN;
>           MM_PIX:=MMM_PIX;
>           MM_SUM:=MMM_SUM;
>           MM_SUM2:=MMM_SUM2;
>         ELSE
>           IF(MMM_MAX>MM_MAX)
>           THEN
>             MM_MAX:=MMM_MAX;
>           END IF;
>           IF(MMM_MIN<MM_MIN)
>           THEN
>             MM_MIN:=MMM_MIN;
>           END IF;
>           MM_PIX:=MM_PIX+MMM_PIX;
>           MM_SUM:=MM_SUM+MMM_SUM;
>           MM_SUM2:=MM_SUM2+MMM_SUM2;
>         END IF;
>     END LOOP;
>     CLOSE M_CUR;    
> 
>     IF (MM_PIX = 0) THEN
>       MDERR.RAISE_MD_ERROR('MD', 'SDO', -13393,'mask');
>       RETURN NULL;
>     END IF;
> 
>     
>     STATS:=MDSYS.SDO_NUMBER_ARRAY(0,0,0,0,0,0,0);                      
>     STATS(3):=MM_MIN;
>     STATS(4):=MM_MAX;
>     STATS(5):=MM_SUM/MM_PIX;
>     STATS(6):=SQRT((MM_SUM2-MM_PIX*(MM_SUM/MM_PIX)*(MM_SUM/MM_PIX))/(MM_PIX-1));
>     STATS(7):=MM_SUM;
>     COMMIT;
> 
>     IF NEEDMODEMEDIAN = 0 THEN
>       STATS(1) := 0.0;
>       STATS(2) := 0.0;
>       RETURN STATS;
>     END IF;
> 
>     IF (MM_MIN = MM_MAX) THEN
>       STATS(1):=MM_MIN;   
>       STATS(2):=MM_MIN;   
>       RETURN STATS;
>     END IF;
> 
>     MMM_VALUE:=0;
>     MM_OLD_VALUE:=0;
>     MMM_MVALUE:=0;
>     MMM_TEMPMEDIAN:=-32769;
>     MMM_MEDIAN:=-32769;
> 
>     STMT := 'select m_id,sum(m_value) from TABLE(mdsys.sdo_geor_aux.generateStatisticsMask1P(:1,:2,:3,:4,:5,:6,:7,:8,:9,:10,:11,:12,:13,:14,:15,:16,:17,:18,:19,:20,:21,CURSOR(SELECT /*+ PARALLEL('||DEGREE||') */ pid from mdsys.SDO_GR_PARALLEL))) group by m_id order by m_id'; 
>     OPEN M_CUR FOR STMT USING GEORASTER.RASTERDATATABLE,GEORASTER.RASTERID,
>                               COORD1(2), COORD1(1),
>                               COORD1(4), COORD1(3), 
>                               MASK.RASTERDATATABLE, MASK.RASTERID,
>                               COORD2(2), COORD2(1),
>                               COORD2(4), COORD2(3), 
>                               BANDNUMBERS,SKIPFACTOR,NODATAN,
>                               MM_MAX,MM_MIN,DEGREE,
>                               PYRAMIDLEVEL, POLYGONCLIP, INTERGEOM;
>     LOOP   
>         FETCH M_CUR INTO MM_ID,MM_VALUE;
>         EXIT WHEN M_CUR%NOTFOUND;
>         MMM_VALUE:=MMM_VALUE+MM_VALUE;
>         IF(MM_VALUE>MM_OLD_VALUE)
>         THEN
>           MMM_MODE:= MM_ID-1;
>           MM_OLD_VALUE:= MM_VALUE;   
>         END IF;
>         IF((MMM_VALUE*2>=MM_PIX)AND(MMM_MEDIAN=-32769))
>         THEN
>           MMM_MEDIAN:=MM_ID-1;
>         END IF;
>     END LOOP;
> 
>     IF CELLDEPTH='8BIT_S' 
>     THEN  
>       MMM_MEDIAN:= MMM_MEDIAN-128; 
>       MMM_MODE:= MMM_MODE-128; 
>     ELSIF CELLDEPTH='16BIT_S' 
>     THEN  
>       MMM_MEDIAN:= MMM_MEDIAN-32768;
>       MMM_MODE:= MMM_MODE-32768;
>     ELSIF CELLDEPTH='32BIT_U' 
>     THEN  
>       MMM_MODE:=MM_MIN+(MMM_MODE+0.5)*(MM_MAX-MM_MIN)/65535;
>       MMM_MEDIAN:=MM_MIN+(MMM_MEDIAN+0.5)*(MM_MAX-MM_MIN)/65535;
>     ELSIF CELLDEPTH='32BIT_S' 
>     THEN  
>       MMM_MODE:=MM_MIN+(MMM_MODE+0.5)*(MM_MAX-MM_MIN)/65535;
>       MMM_MEDIAN:=MM_MIN+(MMM_MEDIAN+0.5)*(MM_MAX-MM_MIN)/65535;
>     ELSIF CELLDEPTH='32BIT_REAL' 
>     THEN  
>       MMM_MODE:=MM_MIN+(MMM_MODE+0.5)*(MM_MAX-MM_MIN)/65535;
>       MMM_MEDIAN:=MM_MIN+(MMM_MEDIAN+0.5)*(MM_MAX-MM_MIN)/65535;
>     ELSIF CELLDEPTH='64BIT_REAL' 
>     THEN  
>       MMM_MODE:=MM_MIN+(MMM_MODE+0.5)*(MM_MAX-MM_MIN)/65535;
>       MMM_MEDIAN:=MM_MIN+(MMM_MEDIAN+0.5)*(MM_MAX-MM_MIN)/65535;
>     END IF;
> 
>     CLOSE M_CUR;    
>     STATS(1):=MMM_MEDIAN;
>     STATS(2):=MMM_MODE;
>   END IF;
>   
>   RETURN STATS;
> END RETURNSTATISTICS2;
> 
> 
> FUNCTION CELLEXTENTTOCELLORDINATES(ORDS MDSYS.SDO_ORDINATE_ARRAY, 
>                                    COORDLOC VARCHAR2)
>   RETURN SDO_NUMBER_ARRAY AS
>   RET SDO_NUMBER_ARRAY;
>   L_ORDS MDSYS.SDO_ORDINATE_ARRAY;
> BEGIN
> 
>   
>   
>   L_ORDS := ORDS;
>   IF ORDS(1) > ORDS(3) THEN
>     L_ORDS(1) := ORDS(3);
>     L_ORDS(3) := ORDS(1);
>   END IF;
> 
>   
>   IF (COORDLOC IS NULL OR COORDLOC = 'CENTER') THEN
>     L_ORDS(1) := L_ORDS(1) + 0.5;
>     L_ORDS(2) := L_ORDS(2) + 0.5;
>     L_ORDS(3) := L_ORDS(3) - 0.5;
>     L_ORDS(4) := L_ORDS(4) - 0.5;
>   ELSE
>     L_ORDS(3) := L_ORDS(3) - 1;
>     L_ORDS(4) := L_ORDS(4) - 1;
>   END IF ;
> 
>   RET := SDO_NUMBER_ARRAY();
>   RET.EXTEND(4);
> 
>   
>   FOR I IN 1..4 LOOP
>     
>     IF (COORDLOC IS NULL OR COORDLOC = 'CENTER') THEN
>       IF (L_ORDS(I) >= 0.0) THEN
>         RET(I) := FLOOR(L_ORDS(I) + 0.5);
>       ELSE
>         RET(I) := CEIL(L_ORDS(I) - 0.5);
>       END IF;
>     ELSE
>       RET(I) := FLOOR(L_ORDS(I));
>     END IF;
>   END LOOP;
> 
>   RETURN RET;
> 
> END CELLEXTENTTOCELLORDINATES;
> 
> 
> 
> PROCEDURE INTERSECTGEORMASK(
>     GEORASTER    IN  MDSYS.SDO_GEORASTER,
>     MASK         IN  MDSYS.SDO_GEORASTER,
>     PYRAMIDLEVEL IN  NUMBER,
>     GR_WIN       OUT MDSYS.SDO_NUMBER_ARRAY,
>     MASK_WIN     OUT MDSYS.SDO_NUMBER_ARRAY
> ) AS
>   MASK_EXTENT      MDSYS.SDO_GEOMETRY;
>   GR_EXTENT        MDSYS.SDO_GEOMETRY;
>   CELLWIN          MDSYS.SDO_GEOMETRY;
>   WIN1             MDSYS.SDO_NUMBER_ARRAY;
>   WIN2             MDSYS.SDO_NUMBER_ARRAY;
>   DIM              MDSYS.SDO_DIM_ARRAY;
>   INTERGEOM        MDSYS.SDO_GEOMETRY;
>   COORDLOC         VARCHAR2(16);
>   DIMSIZES1        MDSYS.SDO_NUMBER_ARRAY;
>   DIMSIZES2        MDSYS.SDO_NUMBER_ARRAY;
>   ULT1             MDSYS.SDO_NUMBER_ARRAY;
>   ULT2             MDSYS.SDO_NUMBER_ARRAY;
>   SAVED_SRID       NUMBER := NULL;
>   INTERGEOMMBR     MDSYS.SDO_GEOMETRY;
>   CNT              NUMBER;
>   TOLERANCE        NUMBER;
> BEGIN
>   GR_WIN := NULL;
>   MASK_WIN := NULL;
>   
>   MASK_EXTENT := SDO_GEOR.GENERATESPATIALEXTENT(MASK);
>   GR_EXTENT := SDO_GEOR.GENERATESPATIALEXTENT(GEORASTER);
> 
>   IF MASK_EXTENT.SDO_SRID IS NOT NULL THEN 
>     
> 
>     
>     IF (GR_EXTENT.SDO_SRID IS NULL) THEN
>       MDERR.RAISE_MD_ERROR('MD', 'SDO', -13393,'mask');
>       RETURN;
>     END IF;
> 
>     
>     IF(MASK_EXTENT.SDO_SRID != GR_EXTENT.SDO_SRID) THEN
>         MDERR.RAISE_MD_ERROR('MD', 'SDO', -13497,
>                              'mask and GeoRaster object had different SRID');
>         RETURN;
>     END IF;
> 
>     
>     SELECT COUNT(*) INTO CNT FROM MDSYS.GEODETIC_SRIDS 
>       WHERE SRID = GR_EXTENT.SDO_SRID;
>     IF CNT > 0 THEN
>         SAVED_SRID := GR_EXTENT.SDO_SRID;
>         GR_EXTENT.SDO_SRID := NULL;
>         MASK_EXTENT.SDO_SRID := NULL;
>     END IF;
> 
>     
>     TOLERANCE := 0.00000001;
>     INTERGEOM := SDO_GEOM.SDO_INTERSECTION(GR_EXTENT, MASK_EXTENT, TOLERANCE); 
> 
>     
>     IF INTERGEOM IS NULL THEN
>       MDERR.RAISE_MD_ERROR('MD', 'SDO', -13497,
>                            'Mask area was outside the image');
>       RETURN;
>     END IF;
> 
>     INTERGEOMMBR := SDO_GEOM.SDO_MBR(INTERGEOM);
>     IF SAVED_SRID IS NOT NULL THEN
>         INTERGEOMMBR.SDO_SRID := SAVED_SRID;
>     END IF;
> 
>     DIM := MDSYS.SDO_CONSTRUCT_DIM_ARRAY(MASK_EXTENT.GET_DIMS, 
>                                                0.000000000000005);
>     CELLWIN := SDO_GEOM.SDO_MBR(MDSYS.SDO_GEOR_INT.GETCELLCOORDINATE2(
>                          GEORASTER, PYRAMIDLEVEL, 
>                          INTERGEOMMBR, DIM, 1));
>     COORDLOC := SDO_GEOR.GETMODELCOORDLOCATION(GEORASTER);
>     WIN1 := CELLEXTENTTOCELLORDINATES(CELLWIN.SDO_ORDINATES, COORDLOC);
> 
>     CELLWIN := SDO_GEOM.SDO_MBR(MDSYS.SDO_GEOR_INT.GETCELLCOORDINATE2(
>                          MASK, PYRAMIDLEVEL, 
>                          INTERGEOMMBR, DIM, 1));
>     COORDLOC := SDO_GEOR.GETMODELCOORDLOCATION(MASK);
>     WIN2 := CELLEXTENTTOCELLORDINATES(CELLWIN.SDO_ORDINATES, COORDLOC);
> 
>     IF (WIN1(3)-WIN1(1) != WIN2(3)-WIN2(1) OR
>         WIN1(4)-WIN1(2) != WIN2(4)-WIN2(2)) THEN
>       MDERR.RAISE_MD_ERROR('MD', 'SDO', -13497,
>                            'Mask resolution is different from raster');
>       RETURN;
>     END IF;
> 
>   ELSE
>       
>       DIMSIZES1 := SDO_GEOR.GETSPATIALDIMSIZES(GEORASTER);
>       ULT1      := SDO_GEOR.GETULTCOORDINATE(GEORASTER);
>       DIMSIZES2 := SDO_GEOR.GETSPATIALDIMSIZES(MASK);
>       ULT2      := SDO_GEOR.GETULTCOORDINATE(MASK);
> 
>       IF PYRAMIDLEVEL IS NOT NULL AND PYRAMIDLEVEL > 0 THEN
>         FOR I IN 1..PYRAMIDLEVEL LOOP
>           DIMSIZES1(1) := DIMSIZES1(1)/2;
>           DIMSIZES1(2) := DIMSIZES1(2)/2;
>           DIMSIZES2(1) := DIMSIZES2(1)/2;
>           DIMSIZES2(2) := DIMSIZES2(2)/2;
>         END LOOP;
>           DIMSIZES1(1) := FLOOR(DIMSIZES1(1));
>           DIMSIZES1(2) := FLOOR(DIMSIZES1(2));
>           DIMSIZES2(1) := FLOOR(DIMSIZES2(1));
>           DIMSIZES2(2) := FLOOR(DIMSIZES2(2));
>       END IF;
> 
>       WIN1 := SDO_NUMBER_ARRAY(0,0,0,0);
>       IF DIMSIZES1(1) < DIMSIZES2(1) THEN
>         WIN1(3) := DIMSIZES1(1)-1;
>       ELSE
>         WIN1(3) := DIMSIZES2(1)-1;
>       END IF;
>       IF DIMSIZES1(2) < DIMSIZES2(2) THEN
>         WIN1(4) := DIMSIZES1(2)-1;
>       ELSE
>         WIN1(4) := DIMSIZES2(2)-1;
>       END IF;
>       WIN2 := WIN1;
>       
>      
>       WIN1(1) := WIN1(1) + ULT1(1);
>       WIN1(3) := WIN1(3) + ULT1(1);
>       WIN1(2) := WIN1(2) + ULT1(2);
>       WIN1(4) := WIN1(4) + ULT1(2);
>       
>       WIN2(1) := WIN2(1) + ULT2(1);
>       WIN2(3) := WIN2(3) + ULT2(1);
>       WIN2(2) := WIN2(2) + ULT2(2);
>       WIN2(4) := WIN2(4) + ULT2(2);
>       
>   END IF;
> 
>   GR_WIN := WIN1;
>   MASK_WIN := WIN2;
> 
> END INTERSECTGEORMASK;
> 
> 
> FUNCTION RETURNSTATISTICS2_0
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL,
>     NEEDMODEMEDIAN    IN NUMBER DEFAULT 1,
>     PYRAMIDLEVEL      IN NUMBER DEFAULT 0
> ) 
> RETURN MDSYS.SDO_NUMBER_ARRAY
> AS
>   SAMPLINGWINDOW MDSYS.SDO_GEOMETRY;
>   IN_EXTENT      MDSYS.SDO_GEOMETRY;
>   WIN1           MDSYS.SDO_NUMBER_ARRAY;
>   WIN2           MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>   IF GEORASTER IS NULL THEN
>     RETURN NULL;
>   END IF;
> 
>   IF SANITYCHECK(GEORASTER) = FALSE THEN
>     RETURN NULL;
>   END IF;
> 
>   IF MASK IS NULL THEN
>     MDERR.RAISE_MD_ERROR('MD', 'SDO', -13393,'mask');
>     RETURN NULL;
>   END IF;
> 
>   IF SANITYCHECK(MASK) = FALSE THEN
>     MDERR.RAISE_MD_ERROR('MD', 'SDO', -13393,'mask');
>     RETURN NULL;
>   END IF;
> 
>   
>   INTERSECTGEORMASK(GEORASTER, MASK, PYRAMIDLEVEL, WIN1, WIN2);
> 
>   RETURN RETURNSTATISTICS2(GEORASTER, MASK, SAMPLINGFACTOR, BANDNUMBERS,
>                            NODATA, PARALLELPARAM, NEEDMODEMEDIAN, 
>                            PYRAMIDLEVEL, WIN1, WIN2, 0, NULL);
> END RETURNSTATISTICS2_0;
> 
> 
> FUNCTION RETURNSTATISTICS2_1
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL,
>     NEEDMODEMEDIAN    IN NUMBER DEFAULT 1,
>     PYRAMIDLEVEL      IN NUMBER DEFAULT 0,
>     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY DEFAULT NULL
> ) 
> RETURN MDSYS.SDO_NUMBER_ARRAY
> AS
>   WIN1      MDSYS.SDO_NUMBER_ARRAY;
>   WIN2      MDSYS.SDO_NUMBER_ARRAY;
>   INTERGEOM MDSYS.SDO_GEOMETRY;
> BEGIN
>   IF SAMPLINGWINDOW  IS NULL THEN
>     RETURN RETURNSTATISTICS2_0(GEORASTER, MASK, SAMPLINGFACTOR, BANDNUMBERS,
>                                NODATA, PARALLELPARAM, NEEDMODEMEDIAN,
>                                PYRAMIDLEVEL);
>   END IF;
> 
>   IF GEORASTER IS NULL THEN
>     RETURN NULL;
>   END IF;
> 
>   IF SANITYCHECK(GEORASTER) = FALSE THEN
>     RETURN NULL;
>   END IF;
> 
>   IF MASK IS NULL THEN
>     MDERR.RAISE_MD_ERROR('MD', 'SDO', -13393,'mask');
>     RETURN NULL;
>   END IF;
> 
>   IF SANITYCHECK(MASK) = FALSE THEN
>     MDERR.RAISE_MD_ERROR('MD', 'SDO', -13393,'mask');
>     RETURN NULL;
>   END IF;
> 
>   
>   INTERSECTGEORMASK(GEORASTER, MASK, PYRAMIDLEVEL, WIN1, WIN2);
> 
>   
>   IF SAMPLINGWINDOW(1) > WIN1(3) OR 
>      SAMPLINGWINDOW(2) > WIN1(4) OR
>      SAMPLINGWINDOW(3) < WIN1(1) OR
>      SAMPLINGWINDOW(4) < WIN1(2) THEN
> 
>      MDERR.RAISE_MD_ERROR('MD', 'SDO', -13497,
>                            'invalid samplingWindow, out of area');
>      RETURN NULL;
>   END IF;
> 
>   IF SAMPLINGWINDOW(1) > WIN1(1) THEN
>     WIN2(1) := WIN2(1) + (SAMPLINGWINDOW(1) - WIN1(1));
>     WIN1(1) := SAMPLINGWINDOW(1);
>   END IF;
> 
>   IF SAMPLINGWINDOW(2) > WIN1(2) THEN
>     WIN2(2) := WIN2(2) + (SAMPLINGWINDOW(2) - WIN1(2));
>     WIN1(2) := SAMPLINGWINDOW(2);
>   END IF;
> 
>   IF SAMPLINGWINDOW(3) < WIN1(3) THEN
>     WIN2(3) := WIN2(3) - (WIN1(3) - SAMPLINGWINDOW(3));
>     WIN1(3) := SAMPLINGWINDOW(3);
>   END IF;
> 
>   IF SAMPLINGWINDOW(4) < WIN1(4) THEN
>     WIN2(4) := WIN2(4) - (WIN1(4) - SAMPLINGWINDOW(4));
>     WIN1(4) := SAMPLINGWINDOW(4);
>   END IF;
> 
>   RETURN RETURNSTATISTICS2(GEORASTER, MASK, SAMPLINGFACTOR, BANDNUMBERS,
>                            NODATA, PARALLELPARAM, NEEDMODEMEDIAN, 
>                            PYRAMIDLEVEL, WIN1, WIN2, 0, NULL);
> END RETURNSTATISTICS2_1;
> 
> 
> FUNCTION RETURNSTATISTICS2_2
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL,
>     NEEDMODEMEDIAN    IN NUMBER DEFAULT 1,
>     PYRAMIDLEVEL      IN NUMBER DEFAULT 0,
>     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY DEFAULT NULL,
>     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN MDSYS.SDO_NUMBER_ARRAY
> AS
>   EXT1        MDSYS.SDO_GEOMETRY;
>   EXT2        MDSYS.SDO_GEOMETRY;
>   INTERGEOM   MDSYS.SDO_GEOMETRY;
>   ISPC  NUMBER;
>   WIN1        MDSYS.SDO_NUMBER_ARRAY;
>   WIN2        MDSYS.SDO_NUMBER_ARRAY;
>   DIM         MDSYS.SDO_DIM_ARRAY;
>   CELLWIN     MDSYS.SDO_GEOMETRY;
>   COORDLOC         VARCHAR2(16);
>   SAVED_SRID       NUMBER := NULL;
>   INTERGEOMMBR     MDSYS.SDO_GEOMETRY;
>   CNT              NUMBER;
>   SWIN             MDSYS.SDO_GEOMETRY;
>   TOLERANCE        NUMBER;
> BEGIN
>   
>   IF SAMPLINGWINDOW  IS NULL THEN
>     RETURN RETURNSTATISTICS2_0(GEORASTER, MASK, SAMPLINGFACTOR, BANDNUMBERS,
>                                NODATA, PARALLELPARAM, NEEDMODEMEDIAN,
>                                PYRAMIDLEVEL);
>   END IF;
> 
>   
>   IF GEORASTER IS NULL THEN
>     RETURN NULL;
>   END IF;
> 
>   IF SANITYCHECK(GEORASTER) = FALSE THEN
>     RETURN NULL;
>   END IF;
> 
>   IF MASK IS NULL THEN
>     MDERR.RAISE_MD_ERROR('MD', 'SDO', -13393,'mask');
>     RETURN NULL;
>   END IF;
> 
>   IF SANITYCHECK(MASK) = FALSE THEN
>     MDERR.RAISE_MD_ERROR('MD', 'SDO', -13393,'mask');
>     RETURN NULL;
>   END IF;
> 
>   
>   IF SAMPLINGWINDOW.SDO_SRID IS NULL OR SAMPLINGWINDOW.SDO_SRID < 0 THEN
>     MDERR.RAISE_MD_ERROR('MD', 'SDO', -13393,'samplingWindow');
>     RETURN NULL;
>   END IF;
> 
>   IF MDSYS.SDO_GEOR_INT.CHECKGEODETICMBR(SAMPLINGWINDOW) = FALSE THEN
>     MDERR.RAISE_MD_ERROR('MD', 'SDO', -13393,'samplingWindow');
>     RETURN NULL;
>   END IF;
> 
>   
>   EXT1 := SDO_GEOR.GENERATESPATIALEXTENT(GEORASTER);
>   IF EXT1.SDO_SRID IS NULL THEN
>     MDERR.RAISE_MD_ERROR('MD', 'SDO', -13497,
>                          'GeoRaster object not georeferenced');
>     RETURN NULL;
>   END IF;
> 
>   
>   EXT2 := SDO_GEOR.GENERATESPATIALEXTENT(MASK);
>   IF EXT2.SDO_SRID IS NULL THEN
>     MDERR.RAISE_MD_ERROR('MD', 'SDO', -13497,'mask object not georeferenced');
>     RETURN NULL;
>   END IF;
> 
>   
>   IF (EXT1.SDO_SRID != EXT2.SDO_SRID) THEN
>     MDERR.RAISE_MD_ERROR('MD', 'SDO', -13497,
>              'mask must has same coordinate system as the georaster object');
>     RETURN NULL;
>   END IF;
> 
>   
>   SELECT COUNT(*) INTO CNT FROM MDSYS.GEODETIC_SRIDS 
>     WHERE SRID = EXT1.SDO_SRID;
> 
>   IF CNT > 0 THEN
>       SAVED_SRID := EXT1.SDO_SRID;
>       EXT1.SDO_SRID := NULL;
>       EXT2.SDO_SRID := NULL;
>   END IF;
> 
>   
>   TOLERANCE := 0.00000001;
>   INTERGEOM := SDO_GEOM.SDO_INTERSECTION(EXT1, EXT2, TOLERANCE); 
>   
>   
>   IF INTERGEOM IS NULL THEN
>     MDERR.RAISE_MD_ERROR('MD', 'SDO', -13497,'Mask area was outside the image');
>     RETURN NULL;
>   END IF;
> 
>   IF SAVED_SRID IS NOT NULL THEN
>     
>     
>     IF SAMPLINGWINDOW.SDO_SRID != SAVED_SRID THEN
>         SWIN := SDO_CS.TRANSFORM(SAMPLINGWINDOW, SAVED_SRID);
>     ELSE
>         SWIN := SAMPLINGWINDOW;
>     END IF;
>     SWIN.SDO_SRID := NULL;
>     INTERGEOM := SDO_GEOM.SDO_INTERSECTION(INTERGEOM, SWIN, TOLERANCE);
>   ELSIF (SAMPLINGWINDOW.SDO_SRID != EXT1.SDO_SRID) THEN
>     INTERGEOM := SDO_GEOM.SDO_INTERSECTION(INTERGEOM, 
>              SDO_CS.TRANSFORM(SAMPLINGWINDOW, EXT1.SDO_SRID), TOLERANCE);
>   ELSE
>     INTERGEOM := SDO_GEOM.SDO_INTERSECTION(INTERGEOM, SAMPLINGWINDOW,TOLERANCE);
>   END IF;
>   
>   
>   IF INTERGEOM IS NULL THEN
>     MDERR.RAISE_MD_ERROR('MD', 'SDO', -13497,
>                          'SamplingWindow was outside the image');
>     RETURN NULL;
>   END IF;
> 
>   INTERGEOMMBR := SDO_GEOM.SDO_MBR(INTERGEOM);
>   IF SAVED_SRID IS NOT NULL THEN
>     INTERGEOMMBR.SDO_SRID := SAVED_SRID; 
>   END IF;
> 
>   
>   DIM := MDSYS.SDO_CONSTRUCT_DIM_ARRAY(SAMPLINGWINDOW.GET_DIMS, 
>                                                0.000000000000005);
>   CELLWIN := SDO_GEOM.SDO_MBR(MDSYS.SDO_GEOR_INT.GETCELLCOORDINATE2(
>                          GEORASTER, PYRAMIDLEVEL, 
>                          INTERGEOMMBR, DIM, 1));
>   COORDLOC := SDO_GEOR.GETMODELCOORDLOCATION(GEORASTER);
>   WIN1 := CELLEXTENTTOCELLORDINATES(CELLWIN.SDO_ORDINATES, COORDLOC);
> 
>   CELLWIN := SDO_GEOM.SDO_MBR(MDSYS.SDO_GEOR_INT.GETCELLCOORDINATE2(
>                          MASK, PYRAMIDLEVEL, 
>                          INTERGEOMMBR, DIM, 1));
>   COORDLOC := SDO_GEOR.GETMODELCOORDLOCATION(MASK);
>   WIN2 := CELLEXTENTTOCELLORDINATES(CELLWIN.SDO_ORDINATES, COORDLOC);
> 
>   IF (WIN1(3)-WIN1(1) != WIN2(3)-WIN2(1) OR
>       WIN1(4)-WIN1(2) != WIN2(4)-WIN2(2)) THEN
>     MDERR.RAISE_MD_ERROR('MD', 'SDO', -13497,
>                          'Mask resolution is different from raster');
>     RETURN NULL;
>   END IF;
> 
>   IF UPPER(POLYGONCLIP) = 'TRUE' THEN 
>     ISPC := 1;
>   ELSE
>     ISPC := 0;
>   END IF;
> 
>   RETURN RETURNSTATISTICS2(GEORASTER, MASK, SAMPLINGFACTOR, BANDNUMBERS,
>                            NODATA, PARALLELPARAM, NEEDMODEMEDIAN, 
>                            PYRAMIDLEVEL, WIN1, WIN2, ISPC, INTERGEOM);
> 
> END RETURNSTATISTICS2_2;
> 
> 
> 
> 
> 
> 
> FUNCTION  GENERATESTATISTICS
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN MDSYS.SDO_NUMBER_ARRAY
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>     STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
>     RETURN MDSYS.SDO_NUMBER_ARRAY(STAT(3),STAT(4),STAT(5),STAT(1),STAT(2),STAT(6), STAT(7));
> END GENERATESTATISTICS;
> 
> FUNCTION GENERATESTATISTICS
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN MDSYS.SDO_NUMBER_ARRAY
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>     STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
>     RETURN MDSYS.SDO_NUMBER_ARRAY(STAT(3),STAT(4),STAT(5),STAT(1),STAT(2),STAT(6), STAT(7));
> END GENERATESTATISTICS;
>  
> FUNCTION  GENERATESTATISTICS
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN MDSYS.SDO_NUMBER_ARRAY
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>   IF MASK IS NULL THEN
>     STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
>     RETURN MDSYS.SDO_NUMBER_ARRAY(STAT(3),STAT(4),STAT(5),STAT(1),STAT(2),STAT(6), STAT(7));
>   ELSE
>     STAT:=RETURNSTATISTICS2_1(GEORASTER,MASK,SAMPLINGFACTOR,
>                               BANDNUMBERS,NODATA,PARALLELPARAM, 1,
>                               PYRAMIDLEVEL, SAMPLINGWINDOW);
>     IF STAT IS NOT NULL THEN
>       RETURN MDSYS.SDO_NUMBER_ARRAY(
>         STAT(3),STAT(4),STAT(5),STAT(1),STAT(2),STAT(6), STAT(7));
>     ELSE
>       RETURN NULL;
>     END IF;
>   END IF;
> END GENERATESTATISTICS;
> 
> FUNCTION GENERATESTATISTICS
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN MDSYS.SDO_NUMBER_ARRAY
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>   IF MASK IS NULL THEN
>     STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
>     RETURN MDSYS.SDO_NUMBER_ARRAY(STAT(3),STAT(4),STAT(5),STAT(1),STAT(2),STAT(6), STAT(7));
>   ELSE
>     STAT:=RETURNSTATISTICS2_2(GEORASTER,MASK,SAMPLINGFACTOR,
>                               BANDNUMBERS,NODATA,PARALLELPARAM, 1,
>                               PYRAMIDLEVEL, SAMPLINGWINDOW, POLYGONCLIP);
>     IF STAT IS NOT NULL THEN
>       RETURN MDSYS.SDO_NUMBER_ARRAY(
>         STAT(3),STAT(4),STAT(5),STAT(1),STAT(2),STAT(6), STAT(7));
>     ELSE
>       RETURN NULL;
>     END IF;
>   END IF;
> END GENERATESTATISTICS;
>  
> FUNCTION GENERATESTATISTICSMAX 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(1);
>     ELSE
>       RETURN NULL;
>     END IF;
> END GENERATESTATISTICSMAX;
> 
> FUNCTION GENERATESTATISTICSMAX 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
>     IF(STAT IS NOT NULL)
>     THEN
>       RETURN STAT(1);
>     ELSE
>       RETURN NULL;
>     END IF;
> END GENERATESTATISTICSMAX;
> 
> FUNCTION GENERATESTATISTICSMAX 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER,
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>   IF MASK IS NULL THEN
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(1);
>     ELSE
>       RETURN NULL;
>     END IF;
>   ELSE
>     STAT:=RETURNSTATISTICS2_1(GEORASTER,MASK,SAMPLINGFACTOR,
>                               BANDNUMBERS,NODATA,PARALLELPARAM,0,
>                               PYRAMIDLEVEL, SAMPLINGWINDOW);
>     IF STAT IS NOT NULL THEN
>       RETURN STAT(4);
>     ELSE
>       RETURN NULL;
>     END IF;
>   END IF;
> END GENERATESTATISTICSMAX;
> 
> FUNCTION GENERATESTATISTICSMAX 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER,
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>   IF MASK IS NULL THEN
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
>     IF(STAT IS NOT NULL)
>     THEN
>       RETURN STAT(1);
>     ELSE
>       RETURN NULL;
>     END IF;
>   ELSE
>     STAT:=RETURNSTATISTICS2_2(GEORASTER,MASK,SAMPLINGFACTOR,
>                               BANDNUMBERS,NODATA,PARALLELPARAM,0,
>                               PYRAMIDLEVEL, SAMPLINGWINDOW, POLYGONCLIP);
>     IF STAT IS NOT NULL THEN
>       RETURN STAT(4);
>     ELSE
>       RETURN NULL;
>     END IF;
>   END IF;
> END GENERATESTATISTICSMAX;
> 
> FUNCTION GENERATESTATISTICSMIN 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(2);
>     ELSE
>       RETURN NULL;
>     END IF;
> END GENERATESTATISTICSMIN;
> 
> FUNCTION GENERATESTATISTICSMIN 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(2);
>     ELSE
>       RETURN NULL;
>     END IF;
> END GENERATESTATISTICSMIN;
> 
> 
> FUNCTION GENERATESTATISTICSMIN 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER,
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>   IF MASK IS NULL THEN
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(2);
>     ELSE
>       RETURN NULL;
>     END IF;
>   ELSE
>     STAT:=RETURNSTATISTICS2_1(GEORASTER,MASK,SAMPLINGFACTOR,
>                               BANDNUMBERS,NODATA,PARALLELPARAM,0,
>                               PYRAMIDLEVEL, SAMPLINGWINDOW);
>     IF STAT IS NOT NULL THEN
>       RETURN STAT(3);
>     ELSE
>       RETURN NULL;
>     END IF;
>   END IF;
> END GENERATESTATISTICSMIN;
> 
> FUNCTION GENERATESTATISTICSMIN 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER,
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>   IF MASK IS NULL THEN 
>     
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(2);
>     ELSE
>       RETURN NULL;
>     END IF;
>   ELSE
>     
>     STAT:=RETURNSTATISTICS2_2(GEORASTER,MASK,SAMPLINGFACTOR,
>                               BANDNUMBERS,NODATA,PARALLELPARAM,0,
>                               PYRAMIDLEVEL, SAMPLINGWINDOW, POLYGONCLIP);
>     IF STAT IS NOT NULL THEN
>       RETURN STAT(3);
>     ELSE
>       RETURN NULL;
>     END IF;
>   END IF;
> END GENERATESTATISTICSMIN;
> 
> FUNCTION GENERATESTATISTICSMEAN 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(3);
>     ELSE
>       RETURN NULL;
>     END IF;
> END GENERATESTATISTICSMEAN;
> 
> FUNCTION GENERATESTATISTICSMEAN 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(3);
>     ELSE
>       RETURN NULL;
>     END IF;
> END GENERATESTATISTICSMEAN;
> 
> FUNCTION GENERATESTATISTICSMEAN 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>   IF MASK IS NULL THEN 
>     
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(3);
>     ELSE
>       RETURN NULL;
>     END IF;
>   ELSE
>     
>     STAT:=RETURNSTATISTICS2_1(GEORASTER,MASK,SAMPLINGFACTOR,
>                               BANDNUMBERS,NODATA,PARALLELPARAM,0,
>                               PYRAMIDLEVEL, SAMPLINGWINDOW);
>     IF STAT IS NOT NULL THEN
>       RETURN STAT(5);
>     ELSE
>       RETURN NULL;
>     END IF;
>   END IF;
> END GENERATESTATISTICSMEAN;
> 
> FUNCTION GENERATESTATISTICSMEAN 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>   IF MASK IS NULL THEN 
>     
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(3);
>     ELSE
>       RETURN NULL;
>     END IF;
>   ELSE
>     
>     STAT:=RETURNSTATISTICS2_2(GEORASTER,MASK,SAMPLINGFACTOR,
>                               BANDNUMBERS,NODATA,PARALLELPARAM,0,
>                               PYRAMIDLEVEL, SAMPLINGWINDOW, POLYGONCLIP);
>     IF STAT IS NOT NULL THEN
>       RETURN STAT(5);
>     ELSE
>       RETURN NULL;
>     END IF;
>   END IF;
> END GENERATESTATISTICSMEAN;
> 
> FUNCTION GENERATESTATISTICSSTD 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(4);
>     ELSE
>       RETURN NULL;
>     END IF;
> END GENERATESTATISTICSSTD;
> 
> FUNCTION GENERATESTATISTICSSTD 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(4);
>     ELSE
>       RETURN NULL;
>     END IF;
> END GENERATESTATISTICSSTD;
> 
> 
> FUNCTION GENERATESTATISTICSSTD 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
6707,6708c8029,8047
<   STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
<   RETURN STAT(4);
---
>   IF MASK IS NULL THEN 
>     
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(4);
>     ELSE
>       RETURN NULL;
>     END IF;
>   ELSE
>     
>     STAT:=RETURNSTATISTICS2_1(GEORASTER,MASK,SAMPLINGFACTOR,
>                               BANDNUMBERS,NODATA,PARALLELPARAM,0,
>                               PYRAMIDLEVEL, SAMPLINGWINDOW);
>     IF STAT IS NOT NULL THEN
>       RETURN STAT(6);
>     ELSE
>       RETURN NULL;
>     END IF;
>   END IF;
6713a8053
>     MASK              IN MDSYS.SDO_GEORASTER, 
6726,6727c8066,8084
<   STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
<   RETURN STAT(4);
---
>   IF MASK IS NULL THEN 
>     
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(4);
>     ELSE
>       RETURN NULL;
>     END IF;
>   ELSE
>     
>     STAT:=RETURNSTATISTICS2_2(GEORASTER,MASK,SAMPLINGFACTOR,
>                               BANDNUMBERS,NODATA,PARALLELPARAM,0,
>                               PYRAMIDLEVEL, SAMPLINGWINDOW, POLYGONCLIP);
>     IF STAT IS NOT NULL THEN
>       RETURN STAT(6);
>     ELSE
>       RETURN NULL;
>     END IF;
>   END IF;
6744,6745c8101,8165
<   STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
<   RETURN STAT(1);
---
>     STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(1);
>     ELSE
>       RETURN NULL;
>     END IF;
> END GENERATESTATISTICSMEDIAN;
> 
> FUNCTION GENERATESTATISTICSMEDIAN
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>     STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(1);
>     ELSE
>       RETURN NULL;
>     END IF;
> END GENERATESTATISTICSMEDIAN;
> 
> FUNCTION GENERATESTATISTICSMEDIAN
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER ,
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>   IF MASK IS NULL THEN 
>     
>     STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(1);
>     ELSE
>       RETURN NULL;
>     END IF;
>   ELSE
>     
>     STAT:=RETURNSTATISTICS2_1(GEORASTER,MASK,SAMPLINGFACTOR,
>                               BANDNUMBERS,NODATA,PARALLELPARAM,1,
>                               PYRAMIDLEVEL, SAMPLINGWINDOW);
>     IF STAT IS NOT NULL THEN
>       RETURN STAT(1);
>     ELSE
>       RETURN NULL;
>     END IF;
>   END IF;
6750a8171
>     MASK              IN MDSYS.SDO_GEORASTER ,
6763,6764c8184,8202
<   STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
<   RETURN STAT(1);
---
>   IF MASK IS NULL THEN 
>     
>     STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(1);
>     ELSE
>       RETURN NULL;
>     END IF;
>   ELSE
>     
>     STAT:=RETURNSTATISTICS2_2(GEORASTER,MASK,SAMPLINGFACTOR,
>                               BANDNUMBERS,NODATA,PARALLELPARAM,1,
>                               PYRAMIDLEVEL, SAMPLINGWINDOW, POLYGONCLIP);
>     IF STAT IS NOT NULL THEN
>       RETURN STAT(1);
>     ELSE
>       RETURN NULL;
>     END IF;
>   END IF;
6781,6782c8219,8224
<   STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
<   RETURN STAT(2);
---
>     STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(2);
>     ELSE
>       RETURN NULL;
>     END IF;
6800,6801c8242,8320
<   STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
<   RETURN STAT(2);
---
>     STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(2);
>     ELSE
>       RETURN NULL;
>     END IF;
> END GENERATESTATISTICSMODE;
> 
> FUNCTION GENERATESTATISTICSMODE
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>   IF MASK IS NULL THEN 
>     
>     STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(2);
>     ELSE
>       RETURN NULL;
>     END IF;
>   ELSE
>     
>     STAT:=RETURNSTATISTICS2_1(GEORASTER,MASK,SAMPLINGFACTOR,
>                               BANDNUMBERS,NODATA,PARALLELPARAM,1,
>                               PYRAMIDLEVEL, SAMPLINGWINDOW);
>     IF STAT IS NOT NULL THEN
>       RETURN STAT(2);
>     ELSE
>       RETURN NULL;
>     END IF;
>   END IF;
> END GENERATESTATISTICSMODE;
> 
> FUNCTION GENERATESTATISTICSMODE
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
>     BANDNUMBERS       IN VARCHAR2, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>   IF MASK IS NULL THEN 
>     
>     STAT:=RETURNSTATISTICS1(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(2);
>     ELSE
>       RETURN NULL;
>     END IF;
>   ELSE
>     
>     STAT:=RETURNSTATISTICS2_2(GEORASTER,MASK,SAMPLINGFACTOR,
>                               BANDNUMBERS,NODATA,PARALLELPARAM,1,
>                               PYRAMIDLEVEL, SAMPLINGWINDOW, POLYGONCLIP);
>     IF STAT IS NOT NULL THEN
>       RETURN STAT(2);
>     ELSE
>       RETURN NULL;
>     END IF;
>   END IF;
6802a8322,8439
> 
> FUNCTION GENERATESTATISTICSSUM 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(5);
>     ELSE
>       RETURN NULL;
>     END IF;
> END GENERATESTATISTICSSUM;
> 
> FUNCTION GENERATESTATISTICSSUM 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(5);
>     ELSE
>       RETURN NULL;
>     END IF;
> END GENERATESTATISTICSSUM;
> 
> FUNCTION GENERATESTATISTICSSUM 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER,
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_NUMBER_ARRAY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>   IF MASK IS NULL THEN 
>     
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(5);
>     ELSE
>       RETURN NULL;
>     END IF;
>   ELSE
>     
>     STAT:=RETURNSTATISTICS2_1(GEORASTER,MASK,SAMPLINGFACTOR,
>                               BANDNUMBERS,NODATA,PARALLELPARAM,0,
>                               PYRAMIDLEVEL, SAMPLINGWINDOW);
>     IF STAT IS NOT NULL THEN
>       RETURN STAT(7);
>     ELSE
>       RETURN NULL;
>     END IF;
>   END IF;
> END GENERATESTATISTICSSUM;
> 
> FUNCTION GENERATESTATISTICSSUM 
> ( 
>     GEORASTER         IN MDSYS.SDO_GEORASTER, 
>     MASK              IN MDSYS.SDO_GEORASTER,
>     PYRAMIDLEVEL      IN NUMBER,
>     SAMPLINGFACTOR    IN VARCHAR2, 
>     SAMPLINGWINDOW    IN MDSYS.SDO_GEOMETRY, 
>     BANDNUMBERS       IN VARCHAR2 DEFAULT NULL, 
>     NODATA            IN VARCHAR2 DEFAULT 'FALSE',
>     POLYGONCLIP       IN VARCHAR2 DEFAULT NULL,
>     PARALLELPARAM     IN VARCHAR2 DEFAULT NULL
> ) 
> RETURN NUMBER
> AS
>   STAT       MDSYS.SDO_NUMBER_ARRAY;
> BEGIN
>   IF MASK IS NULL THEN 
>     
>     STAT:=RETURNSTATISTICS(GEORASTER,PYRAMIDLEVEL,SAMPLINGFACTOR,SAMPLINGWINDOW,BANDNUMBERS,NODATA,POLYGONCLIP,PARALLELPARAM);
>     IF STAT IS NOT NULL THEN 
>       RETURN STAT(5);
>     ELSE
>       RETURN NULL;
>     END IF;
>   ELSE
>     
>     STAT:=RETURNSTATISTICS2_2(GEORASTER,MASK,SAMPLINGFACTOR,
>                               BANDNUMBERS,NODATA,PARALLELPARAM,0,
>                               PYRAMIDLEVEL, SAMPLINGWINDOW, POLYGONCLIP);
>     IF STAT IS NOT NULL THEN
>       RETURN STAT(7);
>     ELSE
>       RETURN NULL;
>     END IF;
>   END IF;
> END GENERATESTATISTICSSUM;
MDSYS.SDO_GEOR_AUX - PACKAGE BODY (RU):
1002a1003,1137
>   FUNCTION GENERATESTATISTICSMASKP
>   (
>     SRCRDT            IN VARCHAR2,
>     SRCRID            IN NUMBER,
>     X11               IN NUMBER,
>     Y11               IN NUMBER,
>     X12               IN NUMBER,
>     Y12               IN NUMBER,
>     MASKRDT           IN VARCHAR2,
>     MASKRID           IN NUMBER,
>     X21               IN NUMBER,
>     Y21               IN NUMBER,
>     X22               IN NUMBER,
>     Y22               IN NUMBER,
>     BANDS             IN VARCHAR2,
>     SAMPLINGFACTOR    IN PLS_INTEGER,
>     NODATA            IN PLS_INTEGER,
>     DEGREE            IN NUMBER,
>     PYRAMIDLEVEL      IN PLS_INTEGER,
>     POLYGONCLIP       IN PLS_INTEGER,
>     INTERGEOM         IN MDSYS.SDO_GEOMETRY,
>     STMTHP            IN SDO_GEOR_INT.PARALLELREFCUR
>   )RETURN SDO_GEOR_STATS
>     PIPELINED
>     PARALLEL_ENABLE (PARTITION STMTHP BY HASH(PID)) IS
>     PRAGMA AUTONOMOUS_TRANSACTION;
>       STAT MDSYS.SDO_NUMBER_ARRAY;
>       STATS SDO_GEOR_STAT;
>       CNT  NUMBER;
>       SRCGEORASTER  MDSYS.SDO_GEORASTER;
>       MASKGEORASTER  MDSYS.SDO_GEORASTER;
>       OWNER VARCHAR2(260);
>       TABLENAME VARCHAR2(260);
>       COLNAME VARCHAR2(1024); 
>   BEGIN
>     SDO_GEOR_INT.SDO_FETCH_SYSDATA(SRCRDT,
>                                    SRCRID,
>                                    OWNER,
>                                    TABLENAME,
>                                    COLNAME);
>     EXECUTE IMMEDIATE 'SELECT t.'||SYS.DBMS_ASSERT.ENQUOTE_NAME(COLNAME)|| 
>       ' FROM '||SYS.DBMS_ASSERT.ENQUOTE_NAME(OWNER,FALSE)||'.'||SYS.DBMS_ASSERT.ENQUOTE_NAME(TABLENAME)||' t where t.'||SYS.DBMS_ASSERT.ENQUOTE_NAME(COLNAME)||'.RASTERDATATABLE=:1 and t.'||SYS.DBMS_ASSERT.ENQUOTE_NAME(COLNAME)||'.RASTERID=:2' INTO SRCGEORASTER USING SRCRDT,SRCRID;
> 
>     SDO_GEOR_INT.SDO_FETCH_SYSDATA(MASKRDT,
>                                    MASKRID,
>                                    OWNER,
>                                    TABLENAME,
>                                    COLNAME);
>     EXECUTE IMMEDIATE 'SELECT t.'||SYS.DBMS_ASSERT.ENQUOTE_NAME(COLNAME)|| 
>       ' FROM '||SYS.DBMS_ASSERT.ENQUOTE_NAME(OWNER,FALSE)||'.'||SYS.DBMS_ASSERT.ENQUOTE_NAME(TABLENAME)||' t where t.'||SYS.DBMS_ASSERT.ENQUOTE_NAME(COLNAME)||'.RASTERDATATABLE=:1 and t.'||SYS.DBMS_ASSERT.ENQUOTE_NAME(COLNAME)||'.RASTERID=:2' INTO MASKGEORASTER USING MASKRDT,MASKRID;
> 
>      STAT:=SDO_GEOR_INT.GENERATESTATISTICSMASKP(SRCGEORASTER,X11,Y11,X12,Y12,MASKGEORASTER,X21,Y21,X22,Y22,BANDS,SAMPLINGFACTOR,NODATA,DEGREE,PYRAMIDLEVEL,POLYGONCLIP,INTERGEOM,STMTHP);
> 
>      COMMIT;
> 
>      IF(STAT IS NOT NULL)
>      THEN
>        STATS := SDO_GEOR_STAT(STAT(1), STAT(2), STAT(3), STAT(4), STAT(5));
>        
>        
>        
>        
>        
>        PIPE ROW(STATS);
>      END IF;
>      RETURN;     
>   END GENERATESTATISTICSMASKP;
> 
>   FUNCTION GENERATESTATISTICSMASK1P
>   (
>     SRCRDT            IN VARCHAR2,
>     SRCRID            IN NUMBER,
>     X11               IN NUMBER,
>     Y11               IN NUMBER,
>     X12               IN NUMBER,
>     Y12               IN NUMBER,
>     MASKRDT           IN VARCHAR2,
>     MASKRID           IN NUMBER,
>     X21               IN NUMBER,
>     Y21               IN NUMBER,
>     X22               IN NUMBER,
>     Y22               IN NUMBER,
>     BANDS             IN VARCHAR2,
>     SAMPLINGFACTOR    IN PLS_INTEGER,
>     NODATA            IN PLS_INTEGER,
>     MMAX              IN NUMBER,
>     MMIN              IN NUMBER,
>     DEGREE            IN NUMBER,
>     PYRAMIDLEVEL      IN PLS_INTEGER,
>     POLYGONCLIP       IN PLS_INTEGER,
>     INTERGEOM         IN MDSYS.SDO_GEOMETRY,
>     STMTHP            IN SDO_GEOR_INT.PARALLELREFCUR
>   )RETURN SDO_GEOR_HIST_STATS
>     PIPELINED
>     PARALLEL_ENABLE (PARTITION STMTHP BY HASH(PID)) IS
>     PRAGMA AUTONOMOUS_TRANSACTION;
>       STAT MDSYS.SDO_NUMBER_ARRAY;
>       STATS SDO_GEOR_HIST_STAT;
>       CNT  NUMBER;
>       SRCGEORASTER  MDSYS.SDO_GEORASTER;
>       MASKGEORASTER MDSYS.SDO_GEORASTER;
>       OWNER VARCHAR2(260);
>       TABLENAME VARCHAR2(260);
>       COLNAME VARCHAR2(1024); 
>   BEGIN
>     SDO_GEOR_INT.SDO_FETCH_SYSDATA(SRCRDT,
>                                    SRCRID,
>                                    OWNER,
>                                    TABLENAME,
>                                    COLNAME);
>     EXECUTE IMMEDIATE 'SELECT t.'||SYS.DBMS_ASSERT.ENQUOTE_NAME(COLNAME)|| 
>       ' FROM '||SYS.DBMS_ASSERT.ENQUOTE_NAME(OWNER,FALSE)||'.'||SYS.DBMS_ASSERT.ENQUOTE_NAME(TABLENAME)||' t where t.'||SYS.DBMS_ASSERT.ENQUOTE_NAME(COLNAME)||'.RASTERDATATABLE=:1 and t.'||SYS.DBMS_ASSERT.ENQUOTE_NAME(COLNAME)||'.RASTERID=:2' INTO SRCGEORASTER USING SRCRDT,SRCRID;
> 
>     SDO_GEOR_INT.SDO_FETCH_SYSDATA(MASKRDT,
>                                    MASKRID,
>                                    OWNER,
>                                    TABLENAME,
>                                    COLNAME);
>     EXECUTE IMMEDIATE 'SELECT t.'||SYS.DBMS_ASSERT.ENQUOTE_NAME(COLNAME)|| 
>       ' FROM '||SYS.DBMS_ASSERT.ENQUOTE_NAME(OWNER,FALSE)||'.'||SYS.DBMS_ASSERT.ENQUOTE_NAME(TABLENAME)||' t where t.'||SYS.DBMS_ASSERT.ENQUOTE_NAME(COLNAME)||'.RASTERDATATABLE=:1 and t.'||SYS.DBMS_ASSERT.ENQUOTE_NAME(COLNAME)||'.RASTERID=:2' INTO MASKGEORASTER USING MASKRDT,MASKRID;
> 
>      STAT:=SDO_GEOR_INT.GENERATESTATISTICSMASK1P(SRCGEORASTER,X11,Y11,X12,Y12,
>         MASKGEORASTER, X21,Y21,X22,Y22,BANDS,SAMPLINGFACTOR,NODATA,
>         MMAX,MMIN,DEGREE,PYRAMIDLEVEL,POLYGONCLIP,INTERGEOM,STMTHP);
>      COMMIT;
>      IF(STAT IS NOT NULL)
>      THEN
>        FOR CNT IN 1..STAT.COUNT LOOP
>          STATS := MDSYS.SDO_GEOR_HIST_STAT(CNT, STAT(CNT));
>          PIPE ROW(STATS);
>        END LOOP;
>      END IF;
>      RETURN;     
>   END GENERATESTATISTICSMASK1P;
> 
MDSYS.SDO_GEOR_GDAL - PACKAGE BODY (RU):
25a26,28
>            IF INSTR(FILENAME, '/') > 0 OR INSTR(FILENAME, '\') > 0 THEN
>                MDSYS.MDERR.RAISE_MD_ERROR( 'MD', 'SDO', -13393, 'FileName');
>            END IF;
273a277
>      RET NUMBER;
274a279,286
>        
>        RET := REGEXP_INSTR(OUTFILENAME, '[^a-zA-Z0-9_.]');
>        IF RET > 0 THEN
>            MDSYS.MDERR.RAISE_MD_ERROR( 'MD', 'SDO', -13393, 
>                                        'outFilename');
>            RETURN ;
>        END IF;
> 
MDSYS.SDO_GEOR_INT - PACKAGE BODY (RU):
7318a7319,7519
>   FUNCTION GENERATESTATISTICSMASKP
>   (
>     GROBJ             IN MDSYS.SDO_GEORASTER,
>     X11               IN NUMBER,
>     Y11               IN NUMBER,
>     X12               IN NUMBER,
>     Y12               IN NUMBER,
>     MASK              IN MDSYS.SDO_GEORASTER,
>     X21               IN NUMBER,
>     Y21               IN NUMBER,
>     X22               IN NUMBER,
>     Y22               IN NUMBER,
>     BANDS             IN VARCHAR2,
>     SAMPLINGFACTOR    IN PLS_INTEGER,
>     NODATA            IN PLS_INTEGER,
>     DEGREE            IN NUMBER,
>     PYRAMIDLEVEL      IN PLS_INTEGER,
>     POLYGONCLIP       IN PLS_INTEGER,
>     INTERGEOM         IN MDSYS.SDO_GEOMETRY,
>     STMTHP            IN SDO_GEOR_INT.PARALLELREFCUR
>   )RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC
>   IS LANGUAGE C
>     NAME "georGenerateStatisticsMaskP"
>     LIBRARY ORDMD_GEOR_LIBS
>     WITH CONTEXT
>     PARAMETERS(
>       CONTEXT,
>       GROBJ,
>       GROBJ INDICATOR STRUCT,
>       X11   OCINUMBER,
>       X11   INDICATOR, 
>       Y11   OCINUMBER,
>       Y11   INDICATOR,
>       X12   OCINUMBER,
>       X12   INDICATOR,
>       Y12   OCINUMBER,
>       Y12   INDICATOR,
>       MASK,
>       MASK INDICATOR STRUCT,
>       X21   OCINUMBER,
>       X21   INDICATOR,
>       Y21   OCINUMBER,
>       Y21   INDICATOR,
>       X22   OCINUMBER,
>       X22   INDICATOR,
>       Y22   OCINUMBER,
>       Y22   INDICATOR,
>       BANDS OCISTRING,
>       BANDS INDICATOR,
>       SAMPLINGFACTOR UB4,
>       SAMPLINGFACTOR INDICATOR,
>       NODATA UB4,
>       NODATA INDICATOR,
>       DEGREE,
>       DEGREE INDICATOR,
>       PYRAMIDLEVEL SB4,
>       PYRAMIDLEVEL INDICATOR,
>       POLYGONCLIP UB4,
>       POLYGONCLIP INDICATOR,
>       INTERGEOM,
>       INTERGEOM INDICATOR STRUCT, 
>       STMTHP OCIREFCURSOR,
>       RETURN INDICATOR,
>       RETURN);
> 
>   FUNCTION GENERATESTATISTICSMASK1P
>   (
>     GROBJ             IN MDSYS.SDO_GEORASTER,
>     X11               IN NUMBER,
>     Y11               IN NUMBER,
>     X12               IN NUMBER,
>     Y12               IN NUMBER,
>     MASK              IN MDSYS.SDO_GEORASTER,
>     X21               IN NUMBER,
>     Y21               IN NUMBER,
>     X22               IN NUMBER,
>     Y22               IN NUMBER,
>     BANDS             IN VARCHAR2,
>     SAMPLINGFACTOR    IN PLS_INTEGER,
>     NODATA            IN PLS_INTEGER,
>     MMAX              IN NUMBER,
>     MMIN              IN NUMBER,
>     DEGREE            IN NUMBER,
>     PYRAMIDLEVEL      IN PLS_INTEGER,
>     POLYGONCLIP       IN PLS_INTEGER,
>     INTERGEOM         IN MDSYS.SDO_GEOMETRY,
>     STMTHP            IN SDO_GEOR_INT.PARALLELREFCUR
>   )RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC
>   IS LANGUAGE C
>     NAME "georGenerateStatisticsMask1P"
>     LIBRARY ORDMD_GEOR_LIBS
>     WITH CONTEXT
>     PARAMETERS(
>       CONTEXT,
>       GROBJ,
>       GROBJ INDICATOR STRUCT,
>       X11   OCINUMBER,
>       X11   INDICATOR, 
>       Y11   OCINUMBER,
>       Y11   INDICATOR,
>       X12   OCINUMBER,
>       X12   INDICATOR,
>       Y12   OCINUMBER,
>       Y12   INDICATOR,
>       MASK,
>       MASK INDICATOR STRUCT,
>       X21   OCINUMBER,
>       X21   INDICATOR,
>       Y21   OCINUMBER,
>       Y21   INDICATOR,
>       X22   OCINUMBER,
>       X22   INDICATOR,
>       Y22   OCINUMBER,
>       Y22   INDICATOR,
>       BANDS OCISTRING,
>       BANDS INDICATOR,
>       SAMPLINGFACTOR UB4,
>       SAMPLINGFACTOR INDICATOR,
>       NODATA UB4,
>       NODATA INDICATOR,
>       MMAX,
>       MMAX INDICATOR,
>       MMIN,
>       MMIN INDICATOR,
>       DEGREE,
>       DEGREE INDICATOR,
>       PYRAMIDLEVEL SB4,
>       PYRAMIDLEVEL INDICATOR,
>       POLYGONCLIP UB4,
>       POLYGONCLIP INDICATOR,
>       INTERGEOM,
>       INTERGEOM INDICATOR STRUCT, 
>       STMTHP OCIREFCURSOR,
>       RETURN INDICATOR,
>       RETURN);
> 
> 
>   FUNCTION GENERATESTATISTICSMASK
>   (
>     GROBJ             IN MDSYS.SDO_GEORASTER,
>     X11               IN NUMBER,
>     Y11               IN NUMBER,
>     X12               IN NUMBER,
>     Y12               IN NUMBER,
>     MASK              IN MDSYS.SDO_GEORASTER,
>     X21               IN NUMBER,
>     Y21               IN NUMBER,
>     X22               IN NUMBER,
>     Y22               IN NUMBER,
>     BANDS             IN VARCHAR2,
>     SAMPLINGFACTOR    IN PLS_INTEGER,
>     NODATA            IN PLS_INTEGER,
>     NEEDMODEMEDIAN    IN PLS_INTEGER,
>     PYRAMIDLEVEL      IN PLS_INTEGER,
>     POLYGONCLIP       IN PLS_INTEGER,
>     INTERGEOM         IN MDSYS.SDO_GEOMETRY
>   )
>   RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC
>   IS LANGUAGE C
>     NAME "georGenerateStatisticsMask"
>     LIBRARY ORDMD_GEOR_LIBS
>     WITH CONTEXT
>     PARAMETERS(
>       CONTEXT,
>       GROBJ,
>       GROBJ INDICATOR STRUCT,
>       X11   OCINUMBER,
>       X11   INDICATOR, 
>       Y11   OCINUMBER,
>       Y11   INDICATOR,
>       X12   OCINUMBER,
>       X12   INDICATOR,
>       Y12   OCINUMBER,
>       Y12   INDICATOR,
>       MASK,
>       MASK INDICATOR STRUCT,
>       X21   OCINUMBER,
>       X21   INDICATOR,
>       Y21   OCINUMBER,
>       Y21   INDICATOR,
>       X22   OCINUMBER,
>       X22   INDICATOR,
>       Y22   OCINUMBER,
>       Y22   INDICATOR,
>       BANDS OCISTRING,
>       BANDS INDICATOR,
>       SAMPLINGFACTOR UB4,
>       SAMPLINGFACTOR INDICATOR,
>       NODATA UB4,
>       NODATA INDICATOR,
>       NEEDMODEMEDIAN UB4,
>       NEEDMODEMEDIAN INDICATOR,
>       PYRAMIDLEVEL SB4,
>       PYRAMIDLEVEL INDICATOR,
>       POLYGONCLIP UB4,
>       POLYGONCLIP INDICATOR,
>       INTERGEOM,
>       INTERGEOM INDICATOR STRUCT, 
>       RETURN INDICATOR,
>       RETURN);
> 
MDSYS.SDO_LRS - PACKAGE BODY (RU):
7855a7856
>      EVENT_LEVEL NUMBER;
7862a7864
>         EVENT_LEVEL := MDSYS.SDO_3GL.GET_EVENT(54713);
7864c7866
<         IF ( MD_LRS.GEODETIC_2D_GEOM(GEOM_SEGMENT) = 'TRUE' ) THEN
---
>         IF (( MD_LRS.GEODETIC_2D_GEOM(GEOM_SEGMENT) = 'TRUE') AND (EVENT_LEVEL = 0)) THEN
MDSYS.SDO_META - PACKAGE BODY (RU):
270c270
<   STMT VARCHAR2(256);
---
>   STMT VARCHAR2(4000);
274,277c274,280
<   EXECUTE IMMEDIATE 
<      ' select GEORASTER_TABLE_NAME from MDSYS.sdo_geor_sysdata_table ' ||
<      '  where SDO_OWNER = :1 and RDT_TABLE_NAME = :2 and rownum < 2' 
<    INTO GR_TABLE USING OWNER, RDT;
---
>   STMT := 'select GEORASTER_TABLE_NAME ' ||
>           'from mdsys.sdo_geor_sysdata_table ' ||
>           'where SDO_OWNER = :1 ' ||
>           'and RDT_TABLE_NAME = :2 ' ||
>           'fetch first 1 row only';
> 
>   EXECUTE IMMEDIATE STMT INTO GR_TABLE USING OWNER, RDT;
MDSYS.SDO_UTIL - PACKAGE BODY (RU):
187c187
<     CH VARCHAR2(2);
---
>     CH VARCHAR2(24);
MDSYS.SDO_RDF_TRIPLE_S - TYPE BODY (RU):
161a162
>   BEGIN
169a171,174
>   EXCEPTION 
>     WHEN OTHERS THEN 
>       NULL;
>   END;
431a437
>   BEGIN
439a446,449
>   EXCEPTION 
>     WHEN OTHERS THEN 
>       NULL;
>   END;
570a581
>   BEGIN
578a590,593
>   EXCEPTION 
>     WHEN OTHERS THEN 
>       NULL;
>   END;
682a698
>   BEGIN
690a707,710
>   EXCEPTION 
>     WHEN OTHERS THEN 
>       NULL;
>   END;
MDSYS.SEMCONTEXTINDEXMETHODS - TYPE BODY (RU):
9,10c9,10
<     SEM_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NULL, NULL);
<     SEM_RDFCTX_DR.COPY_NETWORK_INFO_TO_PKG_VARS;
---
>     
>     
REMOTE_SCHEDULER_AGENT.CHECK_AGENT_VERSION - PROCEDURE (RU):
50a51,53
>   
>   VALID_VERSION_NUMBERS.TRIM(VALID_VERSION_NUMBERS.COUNT - 1);
>   AGENT_VERSION_NUMBERS.TRIM(AGENT_VERSION_NUMBERS.COUNT - 1);
SYS.DBMS_APP_CONT_ADMIN - PACKAGE (RU):
167a168,204
> PROCEDURE ACCHK_VIEWS;
>   -- This procedure creates the views for acchk protected analisys
>   -- Call this procedure at PDB level or CDB root level before
>   -- using any other ACCHK procedure.
>   -- This procedure must be called once on each PDB or CDB root
>   -- as required.
>   --
>   -- Input Parameters(s):
>   --    NONE
>   --
>   -- Error
>   --    Appropriate error raised by server.
> 
>   PROCEDURE ACCHK_SET(enabled      IN BOOLEAN,
>                       disable_time IN NUMBER DEFAULT 600);
>   -- This procedure enables or disables the data collection
>   -- for acchk protection analysis.
>   -- Set is at the PDB level or CDB root level, or non-CDB in the instance
>   -- and does not remain in effect across instance restarts.
>   -- Set can be used on both primary and standby databases.
>   -- Set is not transfered automatically to standby.
>   --
>   -- Input Parameter(s):
>   --    enabled      - TRUE or FALSE
>   --                   TRUE: Enable ACCHK data collection.
>   --                   FALSE: Disable ACCHK data collection.
>   --    disable_time - Optional parameter. Default 600 seconds.
>   --                   Used to disable ACCHK data collecting automatically
>   --                   in a given number of seconds.
>   --                   Valid range is from 60 up to 3600 seconds.
>   --                   This parameter will take effect if ACCHK is not
>   --                   explicitly disabled by the user.
>   --                   This parameter is ignored when enabled is FALSE.
>   --
>   -- error:
>   --    Appropiate error raised by server.
> 
SYS.DBMS_BACKUP_RESTORE - PACKAGE (19.10RUR):
12c12
<   bannerVersion CONSTANT VARCHAR2(15) := '19.10.00.00';
---
>   bannerVersion CONSTANT VARCHAR2(15) := '19.10.01.00';
24,26c24,26
<   fsn  CONSTANT NUMBER := instr('19.10.00.00', '.');
<   msn  CONSTANT NUMBER := instr('19.10.00.00', '.', fsn + 1);
<   psn  CONSTANT NUMBER := instr('19.10.00.00', '.', msn + 1);
---
>   fsn  CONSTANT NUMBER := instr('19.10.01.00', '.');
>   msn  CONSTANT NUMBER := instr('19.10.01.00', '.', fsn + 1);
>   psn  CONSTANT NUMBER := instr('19.10.01.00', '.', msn + 1);
29c29
<                            to_number(substr('19.10.00.00', 1, fsn - 1));
---
>                            to_number(substr('19.10.01.00', 1, fsn - 1));
31c31
<                to_number(substr('19.10.00.00', fsn + 1, msn - fsn - 1));
---
>                to_number(substr('19.10.01.00', fsn + 1, msn - fsn - 1));
33c33
<               to_number(substr('19.10.00.00',  msn + 1, psn - msn - 1));
---
>               to_number(substr('19.10.01.00',  msn + 1, psn - msn - 1));
35c35
<                              to_number(substr('19.10.00.00',  psn + 1));
---
>                              to_number(substr('19.10.01.00',  psn + 1));
SYS.DBMS_BACKUP_RESTORE - PACKAGE (19.9RUR):
12c12
<   bannerVersion CONSTANT VARCHAR2(15) := '19.09.01.00';
---
>   bannerVersion CONSTANT VARCHAR2(15) := '19.09.02.00';
24,26c24,26
<   fsn  CONSTANT NUMBER := instr('19.09.01.00', '.');
<   msn  CONSTANT NUMBER := instr('19.09.01.00', '.', fsn + 1);
<   psn  CONSTANT NUMBER := instr('19.09.01.00', '.', msn + 1);
---
>   fsn  CONSTANT NUMBER := instr('19.09.02.00', '.');
>   msn  CONSTANT NUMBER := instr('19.09.02.00', '.', fsn + 1);
>   psn  CONSTANT NUMBER := instr('19.09.02.00', '.', msn + 1);
29c29
<                            to_number(substr('19.09.01.00', 1, fsn - 1));
---
>                            to_number(substr('19.09.02.00', 1, fsn - 1));
31c31
<                to_number(substr('19.09.01.00', fsn + 1, msn - fsn - 1));
---
>                to_number(substr('19.09.02.00', fsn + 1, msn - fsn - 1));
33c33
<               to_number(substr('19.09.01.00',  msn + 1, psn - msn - 1));
---
>               to_number(substr('19.09.02.00',  msn + 1, psn - msn - 1));
35c35
<                              to_number(substr('19.09.01.00',  psn + 1));
---
>                              to_number(substr('19.09.02.00',  psn + 1));
SYS.DBMS_BACKUP_RESTORE - PACKAGE (RU):
12c12
<   bannerVersion CONSTANT VARCHAR2(15) := '19.10.00.00';
---
>   bannerVersion CONSTANT VARCHAR2(15) := '19.11.00.00';
24,26c24,26
<   fsn  CONSTANT NUMBER := instr('19.10.00.00', '.');
<   msn  CONSTANT NUMBER := instr('19.10.00.00', '.', fsn + 1);
<   psn  CONSTANT NUMBER := instr('19.10.00.00', '.', msn + 1);
---
>   fsn  CONSTANT NUMBER := instr('19.11.00.00', '.');
>   msn  CONSTANT NUMBER := instr('19.11.00.00', '.', fsn + 1);
>   psn  CONSTANT NUMBER := instr('19.11.00.00', '.', msn + 1);
29c29
<                            to_number(substr('19.10.00.00', 1, fsn - 1));
---
>                            to_number(substr('19.11.00.00', 1, fsn - 1));
31c31
<                to_number(substr('19.10.00.00', fsn + 1, msn - fsn - 1));
---
>                to_number(substr('19.11.00.00', fsn + 1, msn - fsn - 1));
33c33
<               to_number(substr('19.10.00.00',  msn + 1, psn - msn - 1));
---
>               to_number(substr('19.11.00.00',  msn + 1, psn - msn - 1));
35c35
<                              to_number(substr('19.10.00.00',  psn + 1));
---
>                              to_number(substr('19.11.00.00',  psn + 1));
9346a9347,9372
>   --
> 
>   PROCEDURE restoreSetDataFile( check_logical  IN boolean
>                                ,cleanup        IN boolean
>                                ,service        IN varchar2
>                                ,chunksize      IN binary_integer
>                                ,rs_flags       IN binary_integer
>                                ,preplugin      IN boolean
>                                ,sparse_restore IN binary_integer
>                                ,encdec_restore IN binary_integer
>                                ,encdec_keyid   IN varchar2);
>   -- Description and return values can be found with original declaration
>   -- above.  New parameter:
>   --   encdec_keyid - user provided key id with which to encrypt/decrypt
> 
>   PROCEDURE restoreSetDataFile( check_logical  IN boolean
>                                ,cleanup        IN boolean
>                                ,service        IN varchar2
>                                ,sparse_restore IN binary_integer
>                                ,encdec_restore IN binary_integer
>                                ,encdec_keyid   IN varchar2);
>   -- Description and return values can be found with original declaration
>   -- above.  New parameters:
>   --
>   -- Input parameter:
>   --   encdec_keyid - user provided key id with which to encrypt/decrypt
SYS.DBMS_BLOCKCHAIN_TABLE - PACKAGE (RU):
67a68,72
>   PROCEDURE import_dropped(
>     schema_name      IN      VARCHAR2,
>     table_name       IN      VARCHAR2,
>     drop_time        IN      TIMESTAMP WITH TIME ZONE);
> 
SYS.DBMS_GSM_FIXED - PACKAGE (RU):
31a32,40
> function getCatalogEP
>   return varchar2;
> PROCEDURE checkCatalogSysLink;
> PROCEDURE setCatalogSysLink(gsmusrpwd IN VARCHAR2, gsm_endpoint IN VARCHAR2);
> PROCEDURE trimDDL (ddl_id     IN  number,
>                    pwd_start  OUT number,
>                    trim_ddl   OUT varchar2);
> 
> 
SYS.DBMS_GSM_FIXED - PACKAGE (19.10RUR):
31a32,36
> function getCatalogEP
>   return varchar2;
> PROCEDURE checkCatalogSysLink;
> PROCEDURE setCatalogSysLink(gsmusrpwd IN VARCHAR2, gsm_endpoint IN VARCHAR2);
> 
SYS.DBMS_PDB_ALTER_SHARING - PACKAGE (RU):
6c6,7
<                                 edition_name IN varchar2 DEFAULT NULL);
---
>                                 edition_name IN varchar2 DEFAULT NULL,
>                                 force        IN boolean DEFAULT FALSE);
16c17,18
<                             edition_name IN varchar2 DEFAULT NULL);
---
>                             edition_name IN varchar2 DEFAULT NULL,
>                             force        IN boolean DEFAULT FALSE);
25c27,29
<                                 edition_name IN varchar2 DEFAULT NULL);
---
>                                 edition_name IN varchar2 DEFAULT NULL,
>                                 force        IN boolean DEFAULT FALSE);
> 
34c38,40
<                              edition_name IN varchar2 DEFAULT NULL);
---
>                              edition_name IN varchar2 DEFAULT NULL,
>                              force        IN boolean DEFAULT FALSE);
> 
SYS.DBMS_REDEFINITION_INTERNAL - PACKAGE (RU):
72c72,74
<                   WHERE NAME='ORA$BASE' AND TYPE# = 57)) ED_ID,
---
>                   WHERE NAME=(SELECT VALUE$ 
>                               FROM PROPS$ WHERE NAME='DEFAULT_EDITION') AND 
>                   TYPE# = 57)) ED_ID,
75c77,78
<                   'ORA$BASE') ED_NAME
---
>                  (SELECT VALUE$ FROM PROPS$ WHERE NAME='DEFAULT_EDITION'))
>                   ED_NAME
95c98,100
<                   WHERE NAME='ORA$BASE' AND TYPE# = 57)) ED_ID,
---
>                   WHERE NAME=(SELECT VALUE$
>                               FROM PROPS$ WHERE NAME='DEFAULT_EDITION') AND 
>                   TYPE# = 57)) ED_ID,
98c103,104
<                  'ORA$BASE') ED_NAME
---
>                  (SELECT VALUE$ FROM PROPS$ WHERE NAME='DEFAULT_EDITION')) 
>                   ED_NAME
SYS.DBMS_REGISTRY - PACKAGE (19.9RUR):
13c13
<                                '19.9.1.0.0';
---
>                                '19.9.2.0.0';
SYS.DBMS_REGISTRY - PACKAGE (19.10RUR):
13c13
<                                '19.10.0.0.0';
---
>                                '19.10.1.0.0';
SYS.DBMS_REGISTRY - PACKAGE (RU):
13c13
<                                '19.10.0.0.0';
---
>                                '19.11.0.0.0';
SYS.DBMS_SODA - PACKAGE (RU):
10,11c10,25
<     CREATE_MODE_DDL  CONSTANT PLS_INTEGER := 1;
<     CREATE_MODE_MAP  CONSTANT PLS_INTEGER := 2;
---
>     CREATE_MODE_DDL                  CONSTANT PLS_INTEGER  := 1;
>     CREATE_MODE_MAP                  CONSTANT PLS_INTEGER  := 2;
> 
>     -- Data guide format constants
>     DATAGUIDE_FORMAT_HIERARCHICAL    CONSTANT PLS_INTEGER  := 1;
>     DATAGUIDE_FORMAT_FLAT            CONSTANT PLS_INTEGER  := 2;
> 
>     -- Data guide flag constants
>     DATAGUIDE_PRETTY                 CONSTANT PLS_INTEGER  := 1;
>     DATAGUIDE_GEOJSON                CONSTANT PLS_INTEGER  := 2;
>     DATAGUIDE_GATHER_STATS           CONSTANT PLS_INTEGER  := 4;
> 
>     -- MV refresh constants
>     MV_REFRESH_ON_STATEMENT          CONSTANT PLS_INTEGER  := 1;
>     MV_REFRESH_ON_COMMIT             CONSTANT PLS_INTEGER  := 2;
>     MV_REFRESH_ON_DEMAND             CONSTANT PLS_INTEGER  := 3;
28a43,48
> 
>     FUNCTION get_As_Of_SCN
>     RETURN NUMBER;
> 
>     FUNCTION get_As_Of_Timestamp
>     RETURN VARCHAR2;
SYS.DBMS_SODA_UTIL - PACKAGE (RU):
33c33,37
< 
---
>   procedure list_usage_statistics(P_OWNER        in   varchar2,
>                                   P_STATISTICS   out  varchar2,
>                                   P_ACCESS_TYPE  in   varchar2 default 'READ',
>                                   P_SORT         in   number   default 1,
>                                   P_LIMIT        in   number   default 100);
SYS.DBMS_SQLTCB_INTERNAL - PACKAGE (RU):
321a322
> 
SYS.DBMS_STREAMS_ADM_UTL - PACKAGE (RU):
3a4,11
>   DUC_STOP_ONLY CONSTANT NUMBER := 1; 
>   DUC_DROP_ONLY CONSTANT NUMBER := 2; 
>   DUC_PRIV_ONLY CONSTANT NUMBER := 3; 
>   DUC_STOP_DROP CONSTANT NUMBER := 4; 
>   DUC_DROP_PRIV CONSTANT NUMBER := 5; 
>   DUC_ALL       CONSTANT NUMBER := 6; 
> 
>   
393c401,402
<                                 CANON_STREAMS_NAME  IN VARCHAR2 DEFAULT NULL);
---
>                                 CANON_STREAMS_NAME  IN VARCHAR2 DEFAULT NULL,
>                                 CANON_SOURCE_DB     IN VARCHAR2 DEFAULT NULL);
471,473c480,481
<   PROCEDURE PROCESS_DROP_USER_CASCADE(CANON_DROPPED_USER IN VARCHAR2);
< 
<   PROCEDURE PROCESS_DROP_USER_PRIVILEGE(CANON_DROPPED_USER IN VARCHAR2);
---
>   PROCEDURE PROCESS_DROP_USER_CASCADE(CANON_DROPPED_USER IN VARCHAR2,
>                                       DUC_MODE IN NUMBER DEFAULT DUC_ALL);
SYS.DBMS_USER_CERTS - PACKAGE (RU):
5c5
<     cert_guid        OUT  RAW);
---
>     cert_id          OUT  RAW);
8c8
<     cert_guid        IN   RAW);
---
>     cert_id          IN   RAW);
SYS.DBMS_APPLY_ADM_INTERNAL - PACKAGE BODY (RU):
615a616,620
>     DELETE FROM SYS.STREAMS$_RULES WHERE
>       STREAMS_NAME = CANON_APPLY_NAME AND 
>       STREAMS_TYPE = DBMS_STREAMS_ADM_UTL.STREAMS_TYPE_APPLY;
>  
>     
SYS.DBMS_APP_CONT_ADMIN - PACKAGE BODY (RU):
444a445,1253
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> PROCEDURE ACCHK_VIEWS IS
>   
>   COMP     VARCHAR2(30);
>   FIRSTDOT NUMBER;
>   SECDOT   NUMBER;
>   MAJOR    NUMBER;
>   MINOR    NUMBER;
>   DUMMY    NUMBER;
>   ACCHK_VIEWS_COUNT NUMBER;
>   ACCHK_EXCEPTION EXCEPTION;
>   ERROR_MESSAGE VARCHAR2(512);
> BEGIN
> 
>   
>   
>   
>   
>   ERROR_MESSAGE := 'Error detecting ACCHK views';
>   SELECT COUNT(O.NAME) INTO ACCHK_VIEWS_COUNT 
>   FROM 
>    SYS.OBJ$ O 
>   WHERE  
>    UPPER(O.NAME) 
>   IN 
>     ('DBA_ACCHK_EVENTS', 
>      'DBA_ACCHK_STATISTICS', 
>      'DBA_ACCHK_EVENTS_SUMMARY',
>      'DBA_ACCHK_STATISTICS_SUMMARY',
>      'CDB_ACCHK_EVENTS',
>      'CDB_ACCHK_STATISTICS',
>      'CDB_ACCHK_EVENTS_SUMMARY',
>      'CDB_ACCHK_STATISTICS_SUMMARY') 
>    AND 
>      O.TYPE# = 4;
>   
>   
>   
>   
>   IF ACCHK_VIEWS_COUNT != 8 THEN
> 
>     
>     SELECT VALUE INTO COMP FROM V$PARAMETER WHERE LOWER(NAME) = 'compatible';
>     FIRSTDOT := INSTR(COMP, '.');
>     SECDOT := INSTR(COMP, '.', 1, 2);
>     MAJOR := TO_NUMBER(SUBSTR(COMP, 1, (FIRSTDOT-1)));
>     MINOR := TO_NUMBER(SUBSTR(COMP, (FIRSTDOT+1), (SECDOT-FIRSTDOT)));
>     
>     
>     IF (MAJOR > 12 OR (MAJOR = 12 AND MINOR >= 2)) THEN
>         GOTO ACCHKCREATEVIEWSANDROLE;
>     ELSE
>        
>        
>        
>        ERROR_MESSAGE := 
>        'Please, set COMPATIBLE parameter to 12.2.0.0 or greater to use ACCHK';
>        RAISE ACCHK_EXCEPTION;
>     END IF;
>   END IF;
> 
> <<ACCHKCREATEVIEWSANDROLE>>
> 
> EXECUTE IMMEDIATE 'alter session set "_ORACLE_SCRIPT" = true';
> 
>     
>     
>     
>     BEGIN
>       EXECUTE IMMEDIATE 'CREATE ROLE ACCHK_READ';
>     EXCEPTION
>       WHEN OTHERS THEN
>         IF SQLCODE = -1921 THEN NULL;   
>       ELSE 
>         RAISE;
>     END IF;
>     END;
> 
>     
>     
>     
>     
> 
>     EXECUTE IMMEDIATE 
>     'CREATE OR REPLACE VIEW DBA_ACCHK_EVENTS AS
>      SELECT 
>       inst_id, con_id, timestamp, session_id, serial#, jdata.* 
>      FROM 
>       GV$DIAG_TRACE_FILE_CONTENTS,
>        JSON_TABLE(payload,''$''
>         COLUMNS(
>         SERVICE_NAME VARCHAR2(64) PATH ''$.ctx.svc'',
>         PROGRAM      VARCHAR2(84) PATH ''$.ctx.prg'',
>         MODULE       VARCHAR2(64) PATH ''$.ctx.mod'',
>         ACTION       VARCHAR2(64) PATH ''$.ctx.act'',
>         SQL_ID       VARCHAR2(13) PATH ''$.ctx.sql_id'',
>         CALL_NAME    VARCHAR2(20) PATH ''$.ctx.call_name'',
>         EVENT_TYPE   VARCHAR2(16) PATH ''$.event.type'',
>         ERROR_CODE   NUMBER       PATH ''$.event.error_code'')) 
>        jdata
>      WHERE 
>       ((SYS_CONTEXT(''USERENV'', ''CON_ID'') = con_id) OR
>        (SYS_CONTEXT(''USERENV'', ''CON_ID'') = 0 ))    
>      AND 
>       component_name = ''progint_appcont_rdbms'' 
>      AND 
>       payload like ''%"event" :%''';
> 
>     
>     
>     
> 
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS.INST_ID is
>       ''Instance number the session was using''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS.CON_ID IS
>       ''Container ID the session was using''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS.TIMESTAMP IS
>       ''Timestamp when the event occurred''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS.SESSION_ID IS
>       ''User session ID which generated the trace record''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS.SERIAL# IS
>       ''User session serial number which produced the trace record''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS.SERVICE_NAME IS
>       ''Service name of the session''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS.PROGRAM IS
>       ''Operating system program name''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS.MODULE IS
>       ''Name of the currently executing module''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS.ACTION IS
>       ''Name of the currently executing action''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS.SQL_ID IS
>       ''SQL identifier of the SQL statement that is currently being executed''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS.CALL_NAME IS
>       ''User call that is currently being executed''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS.EVENT_TYPE IS
>       ''Type of the event recorded''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS.ERROR_CODE is
>       ''The oracle error message number''';
> 
>     
>     
>     
>     
>     
> 
>     EXECUTE IMMEDIATE 
>     'CREATE OR REPLACE VIEW DBA_ACCHK_STATISTICS AS
>      SELECT 
>       inst_id, con_id, timestamp, session_id, serial#, jdata.* 
>      FROM 
>       GV$DIAG_TRACE_FILE_CONTENTS,
>        JSON_TABLE(payload, ''$''
>        COLUMNS(
>         STAT_TYPE                   VARCHAR(32)  PATH
>           ''$.stats.type'',
>         SERVICE_NAME                VARCHAR(64)  PATH
>           ''$.ctx.svc'',
>         FAILOVER_TYPE               VARCHAR(16)  PATH
>           ''$.svcattr.FAILOVER_TYPE'',
>         FAILOVER_RESTORE            VARCHAR(16)  PATH
>           ''$.svcattr.FAILOVER_RESTORE'', 
>         RESET_STATE                 VARCHAR(16)  PATH
>           ''$.svcattr.RESET_STATE'', 
>         PROGRAM                     VARCHAR(84)  PATH
>           ''$.ctx.prg'',
>         BEGIN_REQUESTS              NUMBER       PATH
>           ''$.stats.begin_requests'',
>         END_REQUESTS                NUMBER       PATH 
>           ''$.stats.end_requests'',
>         USER_CALLS_IN_REQUESTS      NUMBER       PATH 
>           ''$.stats.user_calls_in_requests'',
>         PROTECTED_CALLS_IN_REQUESTS NUMBER       PATH 
>           ''$.stats.protected_calls_in_requests'', 
>         TIME_IN_REQUESTS            NUMBER       PATH
>           ''$.stats.time_in_requests'',
>         TIME_PROTECTED_IN_REQUESTS  NUMBER       PATH
>           ''$.stats.time_protected_in_requests''))
>        jdata
>      WHERE 
>       ((SYS_CONTEXT(''USERENV'',''CON_ID'') = con_id) OR
>        (SYS_CONTEXT(''USERENV'',''CON_ID'') = 0 ))    
>      AND 
>       component_name = ''progint_appcont_rdbms'' 
>      AND 
>       payload like ''%"stats" :%''
>      AND 
>       jdata.stat_type = ''SESSION_STATISTICS''';
> 
>     
>     
>     
> 
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_STATISTICS.INST_ID IS
>       ''Instance number the session was using''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_STATISTICS.CON_ID IS
>       ''Container ID the session was using''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_STATISTICS.TIMESTAMP IS
>       ''Displays the timestamp when the event occurred''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_STATISTICS.SESSION_ID IS
>       ''User session ID which generated the trace record''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_STATISTICS.SERIAL# IS
>       ''User session serial number which produced the trace record''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_STATISTICS.SERVICE_NAME IS
>       ''Service name of the session''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_STATISTICS.FAILOVER_TYPE IS
>       ''FAILOVER_TYPE service setting''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_STATISTICS.FAILOVER_RESTORE
>       IS ''FAILOVER_RESTORE service setting''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_STATISTICS.RESET_STATE IS
>       ''RESET_STATE service setting''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_STATISTICS.PROGRAM IS
>       ''Operating system program name''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_STATISTICS.BEGIN_REQUESTS IS
>       ''Number of begin requests received for this session''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_STATISTICS.END_REQUESTS IS
>       ''Number of end requests received for this session''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN 
>     DBA_ACCHK_STATISTICS.USER_CALLS_IN_REQUESTS IS
>       ''Number of user calls received from the application within requests' ||
>       ' (between begin request and end request)''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN 
>     DBA_ACCHK_STATISTICS.PROTECTED_CALLS_IN_REQUESTS IS
>       ''Number of user calls protected by Application Continuity' || 
>       ' (between begin request and end request)''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_STATISTICS.TIME_IN_REQUESTS
>       IS ''Time in microseconds spent in user calls within requests' || 
>       ' (between begin request and end request)'''; 
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN 
>       DBA_ACCHK_STATISTICS.TIME_PROTECTED_IN_REQUESTS IS
>       ''Time in microseconds for user calls protected by Application' || 
>       ' Continuity within requests (between begin request and end request)''';
> 
>    
>    
>    
>    
>    
> 
>     EXECUTE IMMEDIATE 
>     'CREATE OR REPLACE VIEW DBA_ACCHK_STATISTICS_SUMMARY AS 
>     SELECT
>       stats.inst_id,
>       stats.con_id, 
>       stats.service_name,
>       stats.failover_type,
>       stats.failover_restore,
>       stats.reset_state,
>       SUM(CASE 
>           WHEN stats.begin_requests = 0 then stats.end_requests
>           WHEN stats.begin_requests > stats.end_requests THEN
>             stats.begin_requests 
>           ELSE stats.end_requests 
>           END)
>         TOTAL_REQUESTS,
>       100*sum(stats.protected_calls_in_requests) /
>         NULLIF(sum(stats.user_calls_in_requests),0)
>         PROTECTED_CALLS_PERCENT,
>       100*sum(stats.time_protected_in_requests) /
>         NULLIF(sum(stats.time_in_requests),0)
>         PROTECTED_TIME_PERCENT,
>       SUM(stats.user_calls_in_requests) /
>         NULLIF(SUM(
>                 CASE
>                 WHEN stats.begin_requests = 0 THEN stats.end_requests
>                 WHEN stats.begin_requests > stats.end_requests THEN
>                     stats.begin_requests 
>                 ELSE stats.end_requests
>                 END), 0) 
>         AVG_USER_CALLS_IN_REQUESTS, 
>       SUM(stats.protected_calls_in_requests) / 
>         NULLIF(SUM(
>                 CASE
>                 WHEN stats.begin_requests = 0 THEN stats.end_requests
>                 WHEN stats.begin_requests > stats.end_requests THEN
>                     stats.begin_requests 
>                 ELSE stats.end_requests 
>                 END), 0)
>         AVG_PROTECTED_CALLS_IN_REQUESTS, 
>       SUM(stats.time_in_requests) / 
>         NULLIF(SUM(
>                 CASE
>                 WHEN stats.begin_requests = 0 THEN stats.end_requests
>                 WHEN stats.begin_requests > stats.end_requests THEN
>                      stats.begin_requests 
>                 ELSE stats.end_requests 
>                 END), 0)
>         AVG_TIME_IN_REQUESTS, 
>       SUM(stats.time_protected_in_requests) / 
>         NULLIF(SUM(
>                 CASE
>                 WHEN stats.begin_requests = 0 THEN stats.end_requests
>                 WHEN stats.begin_requests > stats.end_requests THEN
>                      stats.begin_requests 
>                 ELSE stats.end_requests 
>                 END) , 0)
>         AVG_TIME_PROTECTED_IN_REQUESTS
>      FROM
>        DBA_ACCHK_STATISTICS stats
>      GROUP BY 
>        stats.inst_id,
>        stats.con_id,
>        stats.service_name,
>        stats.failover_type,
>        stats.failover_restore,
>        stats.reset_state
>      ORDER BY 
>        stats.inst_id,
>        stats.con_id,
>        stats.service_name,
>        stats.failover_type,
>        stats.failover_restore,
>        stats.reset_state';
> 
>     
>     
>     
> 
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_STATISTICS_SUMMARY.INST_ID IS
>       ''Instance number the session was using''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_STATISTICS_SUMMARY.CON_ID IS
>       ''Container ID the session was using''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN 
>       DBA_ACCHK_STATISTICS_SUMMARY.SERVICE_NAME IS
>       ''Service name of the session''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN 
>       DBA_ACCHK_STATISTICS_SUMMARY.FAILOVER_TYPE IS
>       ''FAILOVER_TYPE service setting''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN 
>       DBA_ACCHK_STATISTICS_SUMMARY.FAILOVER_RESTORE IS
>       ''FAILOVER_RESTORE service setting''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN 
>       DBA_ACCHK_STATISTICS_SUMMARY.RESET_STATE IS
>       ''RESET_STATE service setting''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN 
>       DBA_ACCHK_STATISTICS_SUMMARY.TOTAL_REQUESTS IS
>       ''Number of requests received for this session''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN 
>       DBA_ACCHK_STATISTICS_SUMMARY.PROTECTED_CALLS_PERCENT IS
>       ''Percentage of user calls within requests protected by' || 
>       ' Application Continuity''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN 
>       DBA_ACCHK_STATISTICS_SUMMARY.PROTECTED_TIME_PERCENT IS
>       ''Percentage of time spent within requests protected by' || 
>       ' Application Continuity for failover''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN 
>       DBA_ACCHK_STATISTICS_SUMMARY.AVG_USER_CALLS_IN_REQUESTS IS
>       ''Average number of user calls received from the appplication' || 
>       ' within requests (between begin request and end request)''';
>     EXECUTE IMMEDIATE 'COMMENT ON 
>       COLUMN DBA_ACCHK_STATISTICS_SUMMARY.AVG_PROTECTED_CALLS_IN_REQUESTS IS
>       ''Average number of user calls protected by Application Continuity' ||
>       ' within requests (between begin request and end request)''';
>     EXECUTE IMMEDIATE 'COMMENT ON 
>       COLUMN DBA_ACCHK_STATISTICS_SUMMARY.AVG_TIME_IN_REQUESTS IS
>       ''Average time in microseconds spent in user calls within requests' || 
>       ' (between begin request and end request)''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN 
>       DBA_ACCHK_STATISTICS_SUMMARY.AVG_TIME_PROTECTED_IN_REQUESTS IS
>       ''Average time in microseconds for user calls protected by Application' ||
>       ' Continuity within requests (between begin request and end request)''';
> 
>     
>     
>     
>     
>     
> 
>     EXECUTE IMMEDIATE 
>     'CREATE OR REPLACE VIEW DBA_ACCHK_EVENTS_SUMMARY AS
>      SELECT
>        events.inst_id,
>        events.con_id,
>        events.service_name,
>        nvl(stats.failover_type, ''MISING'') failover_type,
>        nvl(stats.failover_restore, ''MISSING'') failover_restore,
>        nvl(stats.reset_state, ''MISSING'') reset_state, 
>        events.program,
>        events.module,
>        events.action,
>        events.sql_id,
>        events.call_name,
>        events.event_type,
>        events.error_code,
>        COUNT(*) frequency
>      FROM 
>        DBA_ACCHK_EVENTS events
>      LEFT JOIN
>        DBA_ACCHK_STATISTICS stats
>      ON
>        events.serial# = stats.serial# 
>      AND   
>        events.session_id = stats.session_id
>      GROUP BY 
>        events.inst_id,
>        events.con_id,
>        events.service_name,
>        stats.failover_type,
>        stats.failover_restore,
>        stats.reset_state,
>        events.program,
>        events.module,
>        events.action,
>        events.sql_id,
>        events.call_name,
>        events.event_type,
>        events.error_code
>      ORDER BY
>        events.inst_id,
>        events.con_id,
>        events.service_name,
>        stats.failover_type,
>        stats.failover_restore,
>        stats.reset_state,
>        events.program,
>        events.module,
>        events.action,
>        events.sql_id,
>        events.call_name,
>        events.event_type,
>        events.error_code'; 
> 
>     
>     
>     
> 
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS_SUMMARY.INST_ID IS
>       ''Instance number the session was using''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS_SUMMARY.CON_ID is
>       ''Container ID the session was using''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS_SUMMARY.SERVICE_NAME IS
>       ''Service name of the session''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS_SUMMARY.FAILOVER_TYPE IS
>       ''FAILOVER_TYPE service setting''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN 
>       DBA_ACCHK_EVENTS_SUMMARY.FAILOVER_RESTORE IS
>       ''FAILOVER_RESTORE service setting''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS_SUMMARY.RESET_STATE IS
>       ''RESET_STATE service setting''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS_SUMMARY.PROGRAM IS
>       ''Operating system program name''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS_SUMMARY.MODULE IS
>       ''Name of the currently executing module''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS_SUMMARY.ACTION IS
>       ''Name of the currently executing action''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS_SUMMARY.SQL_ID IS
>       ''SQL identifier of the SQL statement that is currently being executed''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS_SUMMARY.CALL_NAME IS
>       ''User call that is currently being executed''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS_SUMMARY.EVENT_TYPE IS
>       ''Type of the event recorded''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS_SUMMARY.ERROR_CODE IS
>       ''Oracle error message number''';
>     EXECUTE IMMEDIATE 'COMMENT ON COLUMN DBA_ACCHK_EVENTS_SUMMARY.FREQUENCY IS
>       ''Number of times that event occurred during the workload run''';
> 
>     
>     
>     
> 
>     EXECUTE IMMEDIATE 'CREATE OR REPLACE PUBLIC SYNONYM DBA_ACCHK_EVENTS FOR 
>       SYS.DBA_ACCHK_EVENTS';
>     EXECUTE IMMEDIATE 'CREATE OR REPLACE PUBLIC SYNONYM DBA_ACCHK_STATISTICS FOR
>       SYS.DBA_ACCHK_STATISTICS';
>     EXECUTE IMMEDIATE 'CREATE OR REPLACE PUBLIC SYNONYM DBA_ACCHK_EVENTS_SUMMARY
>       FOR SYS.DBA_ACCHK_EVENTS_SUMMARY';
>     EXECUTE IMMEDIATE 'CREATE OR REPLACE PUBLIC SYNONYM 
>       DBA_ACCHK_STATISTICS_SUMMARY FOR SYS.DBA_ACCHK_STATISTICS_SUMMARY';
> 
>     
>     
>     
>     EXECUTE IMMEDIATE 'GRANT SELECT ON DBA_ACCHK_EVENTS
>       TO SELECT_CATALOG_ROLE';
>     EXECUTE IMMEDIATE 'GRANT SELECT ON DBA_ACCHK_STATISTICS
>       TO SELECT_CATALOG_ROLE';
>     EXECUTE IMMEDIATE 'GRANT SELECT ON DBA_ACCHK_EVENTS_SUMMARY
>       TO SELECT_CATALOG_ROLE';
>     EXECUTE IMMEDIATE 'GRANT SELECT ON DBA_ACCHK_STATISTICS_SUMMARY 
>       TO SELECT_CATALOG_ROLE';
> 
>     EXECUTE IMMEDIATE 'GRANT READ ON DBA_ACCHK_EVENTS
>       TO ACCHK_READ';
>     EXECUTE IMMEDIATE 'GRANT READ ON DBA_ACCHK_STATISTICS
>       TO ACCHK_READ';
>     EXECUTE IMMEDIATE 'GRANT READ ON DBA_ACCHK_EVENTS_SUMMARY
>       TO ACCHK_READ';
>     EXECUTE IMMEDIATE 'GRANT READ ON DBA_ACCHK_STATISTICS_SUMMARY 
>       TO ACCHK_READ';
> 
>     
>     
>     
> 
>     EXECUTE IMMEDIATE 'GRANT ACCHK_READ TO DBA WITH ADMIN OPTION';
> 
>     
>     
>     
>    
>     CDBVIEW.CREATE_CDBVIEW(FALSE, 'SYS', 'DBA_ACCHK_EVENTS', 
>       'CDB_ACCHK_EVENTS');
>     CDBVIEW.CREATE_CDBVIEW(FALSE, 'SYS', 'DBA_ACCHK_STATISTICS', 
>       'CDB_ACCHK_STATISTICS');
>     CDBVIEW.CREATE_CDBVIEW(FALSE, 'SYS', 'DBA_ACCHK_EVENTS_SUMMARY', 
>       'CDB_ACCHK_EVENTS_SUMMARY');
>     CDBVIEW.CREATE_CDBVIEW(FALSE, 'SYS', 'DBA_ACCHK_STATISTICS_SUMMARY', 
>       'CDB_ACCHK_STATISTICS_SUMMARY');
>  
>     EXECUTE IMMEDIATE 'CREATE OR REPLACE PUBLIC SYNONYM CDB_ACCHK_EVENTS FOR 
>       SYS.CDB_ACCHK_EVENTS';
>     EXECUTE IMMEDIATE 'CREATE OR REPLACE PUBLIC SYNONYM CDB_ACCHK_STATISTICS FOR
>       SYS.CDB_ACCHK_STATISTICS';
>     EXECUTE IMMEDIATE 'CREATE OR REPLACE PUBLIC SYNONYM CDB_ACCHK_EVENTS_SUMMARY
>       FOR SYS.CDB_ACCHK_EVENTS_SUMMARY';
>     EXECUTE IMMEDIATE 'CREATE OR REPLACE PUBLIC SYNONYM 
>       CDB_ACCHK_STATISTICS_SUMMARY FOR SYS.CDB_ACCHK_STATISTICS_SUMMARY';
> 
>     
>     
>     
> 
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS.INST_ID IS 
>       ''Instance number the session was using''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS.CON_ID IS 
>       ''Container ID the session was using''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS.TIMESTAMP IS 
>       ''Timestamp when the event occurred''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS.SESSION_ID IS 
>       ''User session ID which generated the trace record''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS.SERIAL# IS 
>       ''User session serial number which produced the trace record''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS.SERVICE_NAME IS 
>       ''Service name of the session''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS.PROGRAM IS 
>       ''Operating system program name''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS.MODULE IS 
>       ''Name of the currently executing module''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS.ACTION IS 
>       ''Name of the currently executing action''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS.SQL_ID IS 
>       ''SQL identifier of the SQL statement that is currently being executed''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS.CALL_NAME IS 
>       ''Identifies the User Call that is currently being executed''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS.EVENT_TYPE IS 
>       ''Type of the event recorded''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS.ERROR_CODE IS 
>       ''The oracle error message number''';
> 
>     
>     
>     
> 
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_STATISTICS.INST_ID IS 
>       ''Instance number the session was using''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_STATISTICS.CON_ID IS 
>       ''Container ID the session was using''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_STATISTICS.TIMESTAMP IS 
>       ''Timestamp when the event occurred''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_STATISTICS.SESSION_ID IS 
>       ''User session ID which generated the trace record''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_STATISTICS.SERIAL# IS 
>       ''User session serial number which produced the trace record''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_STATISTICS.SERVICE_NAME IS 
>       ''Service name of the session''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_STATISTICS.FAILOVER_TYPE IS
>       ''FAILOVER_TYPE service setting''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_STATISTICS.FAILOVER_RESTORE
>       IS ''FAILOVER_RESTORE service setting''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_STATISTICS.RESET_STATE IS 
>       ''RESET_STAE service setting''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_STATISTICS.PROGRAM IS 
>       ''Operating system program name''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_STATISTICS.BEGIN_REQUESTS IS 
>       ''Number of begin requests received for this session''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_STATISTICS.END_REQUESTS IS
>       ''Number of end requests received for this session''';
>     EXECUTE IMMEDIATE 'comment on column 
>       CDB_ACCHK_STATISTICS.USER_CALLS_IN_REQUESTS IS 
>       ''Number of user calls received from the application within requests' ||
>       ' (between begin request and end request)''';
>     EXECUTE IMMEDIATE 'comment on column 
>       CDB_ACCHK_STATISTICS.PROTECTED_CALLS_IN_REQUESTS IS
>       ''Number of user calls protected by Application Continuity' || 
>       ' (between begin request and end request)''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_STATISTICS.TIME_IN_REQUESTS
>       IS ''Time in microseconds spent in user calls within requests' ||
>       ' (between begin request and end request)''';
>     EXECUTE IMMEDIATE 'comment on column 
>       CDB_ACCHK_STATISTICS.TIME_PROTECTED_IN_REQUESTS IS 
>       ''Time in microseconds for user calls protected by Application' ||
>       ' Continuity within requests (between begin request and end request)''';
> 
>     
>     
>     
> 
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_STATISTICS_SUMMARY.INST_ID IS
>       ''Instance number the session was using''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_STATISTICS_SUMMARY.CON_ID IS
>       ''Container ID the session was using''';
>     EXECUTE IMMEDIATE 'comment on column 
>       CDB_ACCHK_STATISTICS_SUMMARY.SERVICE_NAME IS
>       ''Service name of the session''';
>     EXECUTE IMMEDIATE 'comment on column 
>       CDB_ACCHK_STATISTICS_SUMMARY.FAILOVER_TYPE IS 
>       ''FAILOVER_TYPE service setting''';
>     EXECUTE IMMEDIATE 'comment on column 
>       CDB_ACCHK_STATISTICS_SUMMARY.FAILOVER_RESTORE IS
>       ''FAILOVER_RESTORE service setting''';
>     EXECUTE IMMEDIATE 'comment on column 
>       CDB_ACCHK_STATISTICS_SUMMARY.RESET_STATE IS 
>       ''RESET_STATE service setting''';
>     EXECUTE IMMEDIATE 'comment on column 
>       CDB_ACCHK_STATISTICS_SUMMARY.TOTAL_REQUESTS IS 
>       ''Number of requests received for this session''';
>     EXECUTE IMMEDIATE 'comment on column 
>       CDB_ACCHK_STATISTICS_SUMMARY.PROTECTED_CALLS_PERCENT IS
>       ''Percentage of user calls within requests protected by' ||
>       ' Application Continuity''';
>     EXECUTE IMMEDIATE 'comment on column 
>       CDB_ACCHK_STATISTICS_SUMMARY.PROTECTED_TIME_PERCENT IS
>       ''Percentage of time spent within requests protected by' || 
>       ' Application Continuity for failover''';
>     EXECUTE IMMEDIATE 'comment on column 
>       CDB_ACCHK_STATISTICS_SUMMARY.AVG_USER_CALLS_IN_REQUESTS IS 
>       ''Average number of user calls received from the appplication' || 
>       ' within requests (between begin request and end request)''';
>     EXECUTE IMMEDIATE 'comment on column 
>       CDB_ACCHK_STATISTICS_SUMMARY.AVG_PROTECTED_CALLS_IN_REQUESTS IS
>       ''Average number of user calls protected by Application Continuity' || 
>       ' within requests (between begin request and end request)''';
>     EXECUTE IMMEDIATE 'comment on column 
>       CDB_ACCHK_STATISTICS_SUMMARY.AVG_TIME_IN_REQUESTS IS 
>       ''Average time in microseconds spent in user calls within requests' || 
>       ' (between begin request and end request)''';
>     EXECUTE IMMEDIATE 'comment on column 
>       CDB_ACCHK_STATISTICS_SUMMARY.AVG_TIME_PROTECTED_IN_REQUESTS IS 
>       ''Average time in microseconds for user calls protected by Application' ||
>       ' Continuity within requests (between begin request and end request)''';
> 
>     
>     
>     
> 
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS_SUMMARY.INST_ID IS 
>       ''Instance number the session was using''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS_SUMMARY.CON_ID IS 
>       ''Container ID the session was using''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS_SUMMARY.SERVICE_NAME IS
>       ''Service name of the session''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS_SUMMARY.FAILOVER_TYPE
>       IS ''FAILOVER_TYPE service setting''';
>     EXECUTE IMMEDIATE 'comment on column 
>       CDB_ACCHK_EVENTS_SUMMARY.FAILOVER_RESTORE IS 
>       ''FAILOVER_RESTORE service setting''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS_SUMMARY.RESET_STATE IS
>       ''RESET_STATE service setting''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS_SUMMARY.PROGRAM IS 
>       ''Operating system program name''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS_SUMMARY.MODULE IS 
>       ''Name of the currently executing module''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS_SUMMARY.ACTION IS 
>       ''Name of the currently executing action''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS_SUMMARY.SQL_ID IS 
>       ''SQL identifier of the SQL statement that is currently being executed''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS_SUMMARY.CALL_NAME IS
>       ''User call that is currently being executed''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS_SUMMARY.EVENT_TYPE IS 
>       ''Type of the event recorded''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS_SUMMARY.ERROR_CODE IS 
>       ''Oracle error message number''';
>     EXECUTE IMMEDIATE 'comment on column CDB_ACCHK_EVENTS_SUMMARY.FREQUENCY IS
>       ''Number of times that event occurred during the workload run''';
> 
>     
>     
>     
> 
>     EXECUTE IMMEDIATE 'GRANT SELECT ON CDB_ACCHK_EVENTS TO 
>       SELECT_CATALOG_ROLE';
>     EXECUTE IMMEDIATE 'GRANT SELECT ON CDB_ACCHK_STATISTICS TO 
>       SELECT_CATALOG_ROLE';
>     EXECUTE IMMEDIATE 'GRANT SELECT ON CDB_ACCHK_EVENTS_SUMMARY TO 
>       SELECT_CATALOG_ROLE';
>     EXECUTE IMMEDIATE 'GRANT SELECT ON CDB_ACCHK_STATISTICS_SUMMARY TO 
>       SELECT_CATALOG_ROLE';
> 
>     
>     
>     
> 
>     EXECUTE IMMEDIATE 'GRANT READ ON CDB_ACCHK_EVENTS TO ACCHK_READ';
>     EXECUTE IMMEDIATE 'GRANT READ ON CDB_ACCHK_STATISTICS TO ACCHK_READ';
>     EXECUTE IMMEDIATE 'GRANT READ ON CDB_ACCHK_EVENTS_SUMMARY TO ACCHK_READ';
>     EXECUTE IMMEDIATE 'GRANT READ ON CDB_ACCHK_STATISTICS_SUMMARY TO 
>       ACCHK_READ';
> 
>     
>     
>     
> 
>     EXECUTE IMMEDIATE 'GRANT EXECUTE ON dbms_app_cont_report TO DBA';
>     EXECUTE IMMEDIATE 'GRANT EXECUTE ON dbms_app_cont_report TO ACCHK_READ';
>     
>   EXECUTE IMMEDIATE 'alter session set "_ORACLE_SCRIPT" = false';
>   
>  
>  EXCEPTION
>     WHEN ACCHK_EXCEPTION THEN
>       EXECUTE IMMEDIATE 'alter session set "_ORACLE_SCRIPT" = false';
>       DBMS_OUTPUT.PUT_LINE(ERROR_MESSAGE);
>     WHEN OTHERS THEN
>       EXECUTE IMMEDIATE 'alter session set "_ORACLE_SCRIPT" = false';
>       RAISE;
> 
> 
> END ACCHK_VIEWS;
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> PROCEDURE ACCHK_SET(ENABLED      IN BOOLEAN,
>                     DISABLE_TIME IN NUMBER DEFAULT 600) IS
> BEGIN
>   IF ENABLED THEN
>      
>      IF (DISABLE_TIME < 60 OR DISABLE_TIME > 3600 OR DISABLE_TIME IS NULL) THEN
>          RAISE_APPLICATION_ERROR(-20000, 
>            'Auto disable time should be between 60 and 3600 seconds.');
>      END IF; 
>      EXECUTE IMMEDIATE 'ALTER SYSTEM SET EVENTS =
>       ''trace[progint_appcont_rdbms] function = "kpoxcdACCHKTraceWriter"''';
>      DBMS_OUTPUT.PUT_LINE('ACCHK is enabled');
> 
>      BEGIN 
>        
>        DBMS_SCHEDULER.DROP_JOB(
>          JOB_NAME => 'auto_disable_acchk_tracing');
>        EXCEPTION 
>          WHEN OTHERS THEN
>            IF SQLCODE = -27475 THEN  
>              NULL; 
>   ELSE
>              RAISE;
>            END IF;
>      END;
> 
>      
>      DBMS_SCHEDULER.CREATE_JOB(
>          JOB_NAME    => 'auto_disable_acchk_tracing',
>          JOB_TYPE    => 'PLSQL_BLOCK',
>          JOB_ACTION  => 'BEGIN dbms_app_cont_admin.acchk_set(FALSE); END;',
>          START_DATE  => SYSTIMESTAMP + 
>                         ((INTERVAL '1' SECOND) * DISABLE_TIME),
>          REPEAT_INTERVAL => NULL,
>          AUTO_DROP   => TRUE,
>          ENABLED     => TRUE,
>          COMMENTS    => 'Automatically disable ACCHK tracing job.');
>     
>   ELSE
>      EXECUTE IMMEDIATE 'ALTER SYSTEM SET EVENTS =
>        ''trace[progint_appcont_rdbms] off''';
>      DBMS_OUTPUT.PUT_LINE('ACCHK is disabled');
> 
>      BEGIN 
>        
>        DBMS_SCHEDULER.DROP_JOB(
>          JOB_NAME => 'auto_disable_acchk_tracing');
>        EXCEPTION 
>          WHEN OTHERS THEN
>            IF SQLCODE = -27475 THEN  
>              NULL; 
>            ELSE 
>              RAISE;
>   END IF;
>      END;
>   END IF;
> EXCEPTION
>     WHEN OTHERS THEN
>       RAISE;
> END ACCHK_SET;
> 
SYS.DBMS_AUTO_INDEX_INTERNAL - PACKAGE BODY (RU):
40a41,42
>   
>   AI_CTRL_DEFAULT               CONSTANT NUMBER     := 0;
51,52d52
<   
<   AI_CTRL_DEFAULT               CONSTANT NUMBER     := 0;
255a256,259
>   AI_PARAM_INVISIBLE_TIME         CONSTANT VARCHAR2(128) :=
>     '_AUTO_INDEX_INVISIBLE_TIME';
>   AI_PARAM_MIN_EXECS_TO_VERIFY    CONSTANT VARCHAR2(128) :=
>     '_AUTO_INDEX_MIN_EXECS_TO_VERIFY';
352c356,364
<   AI_REVERIFY_TIME_MIN          CONSTANT NUMBER := 1;
---
>   AI_REVERIFY_TIME_MIN          CONSTANT NUMBER := 0;
> 
>   
>   AI_INVISIBLE_TIME_DEFAULT     CONSTANT NUMBER := 1;
>   AI_INVISIBLE_TIME_MIN         CONSTANT NUMBER := 0;
> 
>   
>   AI_MIN_EXECS_TO_VERIFY_DEFAULT      CONSTANT NUMBER := 2;
>   AI_MIN_EXECS_TO_VERIFY_MIN          CONSTANT NUMBER := 1;
855c867
<       AI_SCHEMA_DEFAULT),
---
>       TO_CLOB(AI_SCHEMA_DEFAULT)),
858c870
<       AI_DEFAULT_TABLESPACE_DEFAULT),
---
>       TO_CLOB(AI_DEFAULT_TABLESPACE_DEFAULT)),
873c885
<       AI_MODE_DEFAULT),
---
>       TO_CLOB(AI_MODE_DEFAULT)),
894c906
<       AI_STS_CAPTURE_TASK_DEFAULT),
---
>       TO_CLOB(AI_STS_CAPTURE_TASK_DEFAULT)),
900c912
<       AI_DERIVE_STATS_DEFAULT),
---
>       TO_CLOB(AI_DERIVE_STATS_DEFAULT)),
918c930
<       TO_CLOB(AI_COMPRESSION_DEFAULT))
---
>       TO_CLOB(AI_COMPRESSION_DEFAULT)),
919a932,936
>     PARAM_AI_TYPE(AI_PARAM_INVISIBLE_TIME, AI_PARAM_TYPE_NUM, 
>       TO_CLOB(AI_INVISIBLE_TIME_DEFAULT)),
> 
>     PARAM_AI_TYPE(AI_PARAM_MIN_EXECS_TO_VERIFY, AI_PARAM_TYPE_NUM, 
>       TO_CLOB(AI_MIN_EXECS_TO_VERIFY_DEFAULT))
2239c2256,2258
<     N_ARG2               NUMBER := NULL)
---
>     N_ARG2               NUMBER := NULL,
>     N_ARG3               NUMBER := NULL, 
>     N_ARG4               NUMBER := NULL)
2252a2272,2273
>                ' n_arg3: ' || N_ARG3 ||
>                ' n_arg4: ' || N_ARG4 ||
2265c2286,2288
<       P_ATTR10    => AI_CTX.FIND_TAB(FINDING_CODE).FLAGS);
---
>       P_ATTR10    => AI_CTX.FIND_TAB(FINDING_CODE).FLAGS,
>       P_ATTR11    => N_ARG3,
>       P_ATTR12    => N_ARG4);
3394d3416
<     REASON NUMBER,
3395a3418
>     REASON NUMBER,
3400a3424,3427
>     DUMP_TRACE('Skipping auto index creation for table ' ||
>                DQ(OWN) || '.' || DQ(TAB) || 
>                ' (reason ' || REASON || ', obj_id ' || OBJ_ID);
> 
3474,3475c3501,3507
<         NVL(HT.BLKCNT, T.BLKCNT),
<         NVL(HT.ROWCNT, T.ROWCNT)
---
>         
>         
>         
>         
>         
>         GREATEST(NVL(HT.BLKCNT,0), NVL(T.BLKCNT, 0)),
>         GREATEST(NVL(HT.ROWCNT,0) + NVL(T.ROWCNT, 0), NVL(T.ROWCNT, 0))
5941c5973,5974
<     IMPROVEMENT_FACTOR     NUMBER;
---
>     BG_IMPROVEMENT_FACTOR  NUMBER;
>     CPU_IMPROVEMENT_FACTOR NUMBER;
5947c5980
< 
---
>     STS_CPU                NUMBER;
5952c5985
<     SIMILAR_BGETS          BOOLEAN;
---
>     SIMILAR_PERF           BOOLEAN;
5974c6007,6009
<              S.EXECUTIONS      STS_EXECUTIONS
---
>              S.EXECUTIONS      STS_EXECUTIONS,
>              S.CPU_TIME        STS_CPU_TIME,
>              A.CPU_TIME        SPA_CPU_TIME
5997c6032,6033
<                                '/*/*/stat[@name="bg"]') BUFFER_GETS_C
---
>                                '/*/*/stat[@name="bg"]') BUFFER_GETS_C,
>             SSC.CPU_TIME
6067a6104,6106
>       
>       
>       
6070a6110
>         STS_CPU := CUR.STS_CPU_TIME / CUR.STS_EXECUTIONS;
6072a6113
>         STS_CPU := NULL;
6076,6077c6117,6133
<       IF (ABS(STS_BGETS - SPA_BGETS) < ABSDIFF_THRESHOLD) THEN
<         SIMILAR_BGETS := TRUE;
---
>       
>       
>       
>       
>       
>       
>       
>       
>       
>       
>       
>       
>       
>       
>       IF (ABS(STS_BGETS - SPA_BGETS) < ABSDIFF_THRESHOLD OR
>           CUR.SPA_BUFFER_GETS = 0 OR CUR.SPA_CPU_TIME = 0) THEN
>         SIMILAR_PERF := TRUE;
6079c6135
<         SIMILAR_BGETS := FALSE;
---
>         SIMILAR_PERF := FALSE;
6084c6140,6147
<         IMPROVEMENT_FACTOR := STS_BGETS / SPA_BGETS;
---
>         BG_IMPROVEMENT_FACTOR := STS_BGETS / SPA_BGETS;
>       ELSE
>         BG_IMPROVEMENT_FACTOR := 0;
>       END IF;
> 
>       
>       IF (CUR.SPA_CPU_TIME > 0 AND CUR.STS_EXECUTIONS > 0) THEN
>         CPU_IMPROVEMENT_FACTOR := STS_CPU / CUR.SPA_CPU_TIME;
6086c6149
<         IMPROVEMENT_FACTOR := 0;
---
>         CPU_IMPROVEMENT_FACTOR := 0;
6116,6118c6179,6182
<       ELSIF (SIMILAR_BGETS = FALSE AND 
<              (CUR.SPA_BUFFER_GETS = 0 OR 
<               IMPROVEMENT_FACTOR > (1 + IMPROVEMENT_THRESHOLD))) THEN
---
>       ELSIF (SIMILAR_PERF = FALSE AND 
>              (BG_IMPROVEMENT_FACTOR > (1 + IMPROVEMENT_THRESHOLD)) AND
>              
>              (CPU_IMPROVEMENT_FACTOR > (1 + IMPROVEMENT_THRESHOLD))) THEN
6127a6192,6193
>                     ', spa_cpu_time: ' || CUR.SPA_CPU_TIME ||
>                     ', sts_spu_time: ' || CUR.STS_CPU_TIME ||
6129c6195,6196
<                     ', improvement_factor: ' || IMPROVEMENT_FACTOR);
---
>                     ', bg_improvement_factor: ' || BG_IMPROVEMENT_FACTOR ||
>                     ', cpu_improvement_factor: ' || CPU_IMPROVEMENT_FACTOR);
6137,6138c6204,6206
<         IF (SIMILAR_BGETS = FALSE AND 
<             (IMPROVEMENT_FACTOR < (1 - REGRESSION_THRESHOLD))) THEN
---
>         IF (SIMILAR_PERF = FALSE AND 
>             (BG_IMPROVEMENT_FACTOR < (1 - REGRESSION_THRESHOLD) OR
>              CPU_IMPROVEMENT_FACTOR < (1 - REGRESSION_THRESHOLD))) THEN
6146c6214,6215
<         DUMP_TRACE('sql_id ' || CUR.SQL_ID || ' regressed' ||
---
>         DUMP_TRACE('sql_id ' || CUR.SQL_ID || ' regressed(' ||
>                     FINDING_NAME_ID || ')' ||
6149a6219,6220
>                     ', spa_cpu_time: ' || CUR.SPA_CPU_TIME ||
>                     ', sts_cpu_time: ' || CUR.STS_CPU_TIME ||
6151c6222,6223
<                     ', improvement_factor: ' || IMPROVEMENT_FACTOR);
---
>                     ', bg_improvement_factor: ' || BG_IMPROVEMENT_FACTOR ||
>                     ', cpu_improvement_factor: ' || CPU_IMPROVEMENT_FACTOR);
6156c6228,6229
<                   N_ARG1 => STS_BGETS, N_ARG2 => SPA_BGETS);
---
>                   N_ARG1 => STS_BGETS, N_ARG2 => SPA_BGETS,
>                   N_ARG3 => STS_CPU, N_ARG4 => CUR.SPA_CPU_TIME);
6767c6840
<     CURSOR AI_UNUSABLE_CUR IS
---
>     CURSOR AI_UNUSABLE_CUR(C_REBUILD_COUNT_LIMIT NUMBER) IS
6776a6850,6851
>         AND (IO.REBUILD_COUNT IS NULL OR 
>              IO.REBUILD_COUNT <= C_REBUILD_COUNT_LIMIT)
6784a6860,6861
>         AND (IO.REBUILD_COUNT IS NULL OR 
>              IO.REBUILD_COUNT <= C_REBUILD_COUNT_LIMIT)
6792c6869,6887
<         AND I.STATUS = 'UNUSABLE');
---
>         AND I.STATUS = 'UNUSABLE'
>         AND (IO.REBUILD_COUNT IS NULL OR 
>              IO.REBUILD_COUNT <= C_REBUILD_COUNT_LIMIT));
> 
>     
>     
>     CURSOR INVISIBLE_AI_CUR(C_INVISIBLE_TIME NUMBER) IS
>     SELECT 
>            DISTINCT O.INDEX_OWNER, O.INDEX_NAME
>     FROM "_auto_index_ind_objects" O, DBA_AUTO_INDEX_IND_ACTIONS A
>     WHERE O.INDEX_OWNER = A.INDEX_OWNER
>       AND O.INDEX_NAME = A.INDEX_NAME
>       AND O.LAST_EXECUTION_NAME = A.EXECUTION_NAME
>       AND BITAND(O.FLAGS, AI_INDF_VALID) > 0     
>       AND BITAND(O.FLAGS, AI_INDF_VISIBLE) = 0   
>       AND COMMAND LIKE '%REBUILD%'
>       AND (A.END_TIME IS NULL OR
>            A.END_TIME < SYSDATE - C_INVISIBLE_TIME);
> 
6812c6907,6909
<       FOR CUR IN AI_UNUSABLE_CUR LOOP
---
>       FOR CUR IN AI_UNUSABLE_CUR(
>         TO_NUMBER(AI_CTX.PARAMS(AI_PARAM_REBUILD_MAX_COUNT))) LOOP
> 
6824a6922,6942
>     
>     
>     
>     
>     BEGIN
>     
>       FOR CUR IN INVISIBLE_AI_CUR(
>         TO_NUMBER(AI_CTX.PARAMS(AI_PARAM_INVISIBLE_TIME))) LOOP
> 
>         RET_CODE := INDEX_DDL(AI_CTX, AI_KEA_CMD_UNUSABLE_INDEX, 
>                               CUR.INDEX_OWNER, CUR.INDEX_NAME);
>       END LOOP;
>       COMMIT;
> 
>     EXCEPTION
>       WHEN OTHERS THEN
>         IF (IS_URGENT_ERROR) THEN
>           RAISE;
>         END IF;
>     END;
> 
7255c7373,7376
<     CURSOR AI_VERIFY_SQL_CUR(C_REVERIFY_TIMESTAMP DATE) IS
---
>     
>     
>     CURSOR AI_VERIFY_SQL_CUR(C_REVERIFY_TIMESTAMP DATE,
>                              MIN_EXEC_TO_VERIFY NUMBER) IS
7302c7423
<       AND EXECUTIONS > 0
---
>       AND EXECUTIONS >= MIN_EXEC_TO_VERIFY
7396c7517,7518
<       FOR CUR IN AI_VERIFY_SQL_CUR(REVERIFY_TIMESTAMP) LOOP
---
>       FOR CUR IN AI_VERIFY_SQL_CUR(REVERIFY_TIMESTAMP,
>                    TO_NUMBER(AI_CTX.PARAMS(AI_PARAM_MIN_EXECS_TO_VERIFY))) LOOP
8568c8690,8695
<       AND EX.TASK_NAME IN (AI_VERIFY_TASK, AI_TASK_NAME)
---
>       AND (EX.TASK_NAME = AI_TASK_NAME OR 
>            
>            
>            (EX.TASK_NAME = AI_VERIFY_TASK AND 
>             BITAND(LEVEL_FLAGS, AI_REPORT_LEVEL_ALL + 
>                                 AI_REPORT_LEVEL_TEST_V1) > 0))
8982,8984c9109,9112
<         IF (BITAND(P_VALUE, AI_CTRL_SPM_EVOLVE) != 0 AND
<             GET_AI_PARAM_VALUE_CLOB(AI_PARAM_MODE) <> AI_MODE_OFF) THEN
< 
---
>         
>         
>         
>         IF (BITAND(P_VALUE, AI_CTRL_SPM_EVOLVE) != 0) THEN
9032,9033c9160
<         ELSIF (RUNNING_IN_QA = 0 AND 
<                (P_VALUE <= AI_REVERIFY_TIME_MIN)) THEN
---
>         ELSIF (P_VALUE < AI_REVERIFY_TIME_MIN) THEN
9037a9165,9184
>       WHEN PARAMETER_NAME = AI_PARAM_INVISIBLE_TIME THEN
> 
>         IF (P_VALUE IS NULL) THEN
>           P_VALUE := AI_INVISIBLE_TIME_DEFAULT;
>   
>         ELSIF (P_VALUE < AI_INVISIBLE_TIME_MIN) THEN
>           DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR( ERR_INVALID_PARAM_VALUE,
>                                              P_VALUE );
>         END IF; 
> 
>       WHEN PARAMETER_NAME = AI_PARAM_MIN_EXECS_TO_VERIFY THEN
> 
>         IF (P_VALUE IS NULL) THEN
>           P_VALUE := AI_MIN_EXECS_TO_VERIFY_DEFAULT;
>   
>         ELSIF (P_VALUE < AI_MIN_EXECS_TO_VERIFY_MIN) THEN
>           DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR( ERR_INVALID_PARAM_VALUE,
>                                              P_VALUE );
>         END IF; 
> 
9489a9637
> 
9502,9503c9650,9660
<   FUNCTION EXIST_SMB_PARAMETER(PARAMETER_NAME VARCHAR2)
<   RETURN BOOLEAN
---
> 
> 
> 
> 
> 
> 
> 
>   PROCEDURE INIT_SMB_PARAMETER(
>     P_NAME  IN VARCHAR2, 
>     P_VALUE IN NUMBER,
>     P_DATA  IN CLOB)
9505c9662,9664
<     EXIST_CNT NUMBER;
---
>     EXIST        NUMBER;
>     UPDATED      NUMBER;
>     SAME_VAL     NUMBER;
9508,9510d9666
<     SELECT COUNT(*) INTO EXIST_CNT
<       FROM SMB$CONFIG T
<     WHERE EXIST_SMB_PARAMETER.PARAMETER_NAME = T.PARAMETER_NAME;
9512,9515c9668,9686
<     IF (EXIST_CNT > 0) THEN
<       RETURN TRUE;
<     ELSE 
<       RETURN FALSE;
---
>     SELECT COUNT(*),
>       SUM(CASE WHEN C.LAST_UPDATED IS NOT NULL THEN 1 ELSE 0 END),
>       SUM(CASE WHEN (C.PARAMETER_VALUE IS NULL AND P_VALUE IS NULL OR
>                      C.PARAMETER_VALUE = P_VALUE) AND
>                     (C.PARAMETER_DATA IS NULL AND P_DATA IS NULL OR
>                      DBMS_LOB.COMPARE(C.PARAMETER_DATA, P_DATA) = 0)
>                THEN 1 ELSE 0 END)
>     INTO EXIST, UPDATED, SAME_VAL
>     FROM SMB$CONFIG C
>     WHERE C.PARAMETER_NAME = P_NAME;
> 
>     
>     
>     
>     
>     
>     
>     IF (EXIST > 0 AND (UPDATED > 0 OR SAME_VAL > 0)) THEN
>       RETURN;
9518c9689,9701
<   END EXIST_SMB_PARAMETER;
---
>     
>     
>     IF (EXIST > 0) THEN
>       DELETE FROM SMB$CONFIG C
>       WHERE C.PARAMETER_NAME = P_NAME;
>     END IF;
> 
>     
>     INSERT INTO SMB$CONFIG 
>       (PARAMETER_NAME, PARAMETER_VALUE, PARAMETER_DATA)
>     VALUES (P_NAME, P_VALUE, P_DATA);
> 
>   END INIT_SMB_PARAMETER;
9521a9705,9708
>     P_NAME     SMB$CONFIG.PARAMETER_NAME%TYPE;
>     P_TYPE     NUMBER;
>     P_CLOB     CLOB;
>     P_NUM      NUMBER;
9524,9534c9711,9727
<     FOR CUR IN (SELECT * FROM TABLE(GLOB_PARAM_AI_TYPE_TAB)) LOOP
<       IF (EXIST_SMB_PARAMETER(CUR.PNAME) = FALSE) THEN
<         IF CUR.DATA_TYPE = AI_PARAM_TYPE_NUM THEN
<           INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE)
<             VALUES (CUR.PNAME, TO_NUMBER(CUR.DEFAULT_VALUE));
<         ELSIF CUR.DATA_TYPE = AI_PARAM_TYPE_CHAR OR
<               CUR.DATA_TYPE = AI_PARAM_TYPE_XML THEN
<           INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE,
<             PARAMETER_DATA)
<             VALUES (CUR.PNAME, 0, CUR.DEFAULT_VALUE);
<         END IF;
---
>     
>     
>     FOR I IN 1..GLOB_PARAM_AI_TYPE_TAB.COUNT LOOP
> 
>       P_NAME := GLOB_PARAM_AI_TYPE_TAB(I).PNAME;
>       P_TYPE := GLOB_PARAM_AI_TYPE_TAB(I).DATA_TYPE;
> 
>       IF P_TYPE = AI_PARAM_TYPE_NUM THEN
>         P_NUM := TO_NUMBER(GLOB_PARAM_AI_TYPE_TAB(I).DEFAULT_VALUE);
>         P_CLOB := NULL;
>       ELSIF P_TYPE = AI_PARAM_TYPE_CHAR OR
>             P_TYPE = AI_PARAM_TYPE_XML THEN
>         P_NUM := 0;
>         P_CLOB := GLOB_PARAM_AI_TYPE_TAB(I).DEFAULT_VALUE;
>       ELSE
>         INT_ASSERT(FALSE, 'insert_auto_index_parameters', 'unknown type', 
>                    FALSE);
9537c9730,9734
<     END LOOP;
---
>       
>       
>       
>       
>       INIT_SMB_PARAMETER(P_NAME, P_NUM, P_CLOB);
9539,9541c9736
<     
<     CONFIGURE(AI_PARAM_STS_CAPTURE_TASK, AI_STS_CAPTURE_TASK_DEFAULT, 
<               TRUE, TRUE);
---
>     END LOOP;
SYS.DBMS_BACKUP_RESTORE - PACKAGE BODY (RU):
2782c2782,2783
<                      ,PDBID            IN NUMBER DEFAULT NULL);
---
>                      ,PDBID            IN NUMBER DEFAULT NULL
>                      ,ENCDEC_KEYID     IN VARCHAR2 DEFAULT NULL);
2899a2901,2918
>                                ,SPARSE_RESTORE   IN BINARY_INTEGER
>                                ,ENCDEC_RESTORE   IN BINARY_INTEGER
>                                ,ENCDEC_KEYID     IN VARCHAR2) IS
>     BEGIN
>         RESTORESETDATAFILE( CHECK_LOGICAL    => CHECK_LOGICAL
>                            ,CLEANUP          => CLEANUP
>                            ,SERVICE          => SERVICE
>                            ,CHUNKSIZE        => 0
>                            ,RS_FLAGS         => 0
>                            ,PREPLUGIN        => FALSE
>                            ,SPARSE_RESTORE   => SPARSE_RESTORE
>                            ,ENCDEC_RESTORE   => ENCDEC_RESTORE
>                            ,ENCDEC_KEYID     => ENCDEC_KEYID);
>     END;
> 
>   PROCEDURE RESTORESETDATAFILE( CHECK_LOGICAL    IN BOOLEAN
>                                ,CLEANUP          IN BOOLEAN
>                                ,SERVICE          IN VARCHAR2
2905a2925,2945
>         RESTORESETDATAFILE( CHECK_LOGICAL    => CHECK_LOGICAL
>                            ,CLEANUP          => CLEANUP
>                            ,SERVICE          => SERVICE
>                            ,CHUNKSIZE        => CHUNKSIZE
>                            ,RS_FLAGS         => RS_FLAGS
>                            ,PREPLUGIN        => PREPLUGIN
>                            ,SPARSE_RESTORE   => SPARSE_RESTORE
>                            ,ENCDEC_RESTORE   => ENCDEC_RESTORE
>                            ,ENCDEC_KEYID     => NULL);
>     END;
> 
>   PROCEDURE RESTORESETDATAFILE( CHECK_LOGICAL    IN BOOLEAN
>                                ,CLEANUP          IN BOOLEAN
>                                ,SERVICE          IN VARCHAR2
>                                ,CHUNKSIZE        IN BINARY_INTEGER
>                                ,RS_FLAGS         IN BINARY_INTEGER
>                                ,PREPLUGIN        IN BOOLEAN
>                                ,SPARSE_RESTORE   IN BINARY_INTEGER
>                                ,ENCDEC_RESTORE   IN BINARY_INTEGER
>                                ,ENCDEC_KEYID     IN VARCHAR2) IS
>     BEGIN
2917c2957,2958
<                  ,ENCDEC_RESTORE   => ENCDEC_RESTORE);
---
>                  ,ENCDEC_RESTORE   => ENCDEC_RESTORE
>                  ,ENCDEC_KEYID     => ENCDEC_KEYID);
SYS.DBMS_BLOCKCHAIN_TABLE - PACKAGE BODY (RU):
171c171,172
<     NUMBER_OF_ROWS_DELETED  OUT  NUMBER)
---
>     NUMBER_OF_ROWS_DELETED  OUT  NUMBER,
>     IS_BCTABLE              IN   BOOLEAN)
181c182,183
<                  NUMBER_OF_ROWS_DELETED   OCINUMBER);
---
>                  NUMBER_OF_ROWS_DELETED   OCINUMBER,
>                  IS_BCTABLE               UB1);
205c207
<                       NUMBER_OF_ROWS_DELETED);
---
>                       NUMBER_OF_ROWS_DELETED, TRUE);
208c210
<                       NUMBER_OF_ROWS_DELETED);
---
>                       NUMBER_OF_ROWS_DELETED, TRUE);
327a330,336
>     COUNT_VAR        NUMBER;
>     CERT_ID          RAW(16);
>     SIGN_ALGO        NUMBER;
>     SPARE_COL        RAW(4);
>     SPARE_BINT       BINARY_INTEGER;
>     SIGN_ALGO_POS    BINARY_INTEGER;
>     CERT_ID_POS      BINARY_INTEGER;
340a350,358
>     SQL_STMT1 := 'select count(*) from SYS.ALL_BLOCKCHAIN_TABLES where ' ||
>                 'SCHEMA_NAME=:schema_name and TABLE_NAME=:table_name';
>     EXECUTE IMMEDIATE SQL_STMT1 INTO COUNT_VAR
>                                 USING SCHEMA_NAME_INT, TABLE_NAME_INT;
>     IF (COUNT_VAR <> 1) THEN
>       RAISE_ORA_ERROR(5720, TABLE_NAME_INT);
>     END IF;
> 
>     
356,357c374
<                  '''ORABCTAB_SIGNATURE$'',''ORABCTAB_SIGNATURE_ALG$'',' ||
<                  '''ORABCTAB_SIGNATURE_CERT$'',''ORABCTAB_SPARE$'') ' ||
---
>                  '''ORABCTAB_SIGNATURE$'') ' ||
371a389,410
>       IF COLUMN_NAME IN ('ORABCTAB_SIGNATURE_ALG$', 'ORABCTAB_SIGNATURE_CERT$',
>                          'ORABCTAB_SPARE$') THEN
>         SQL_STMT2 := 'select ' || COLUMN_QUOTED || ' from ' || SCHEMA_QUOTED ||
>                      '.' || TABLE_QUOTED || ' where ORABCTAB_INST_ID$=' ||
>                      ':instance_id and ORABCTAB_CHAIN_ID$=:chain_id and ' ||
>                      'ORABCTAB_SEQ_NUM$=:sequence_id';
>         IF COLUMN_NAME = 'ORABCTAB_SIGNATURE_ALG$' THEN
>           SIGN_ALGO_POS := COLUMN_POS;
>           EXECUTE IMMEDIATE SQL_STMT2 INTO SIGN_ALGO USING
>                                            INSTANCE_ID, CHAIN_ID, SEQUENCE_ID;
>         ELSIF COLUMN_NAME = 'ORABCTAB_SIGNATURE_CERT$' THEN
>           CERT_ID_POS := COLUMN_POS;
>           EXECUTE IMMEDIATE SQL_STMT2 INTO CERT_ID USING
>                                            INSTANCE_ID, CHAIN_ID, SEQUENCE_ID;
>         ELSE
>           EXECUTE IMMEDIATE SQL_STMT2 INTO SPARE_COL USING
>                                            INSTANCE_ID, CHAIN_ID, SEQUENCE_ID;
>         END IF;
> 
>         CONTINUE;
>       END IF;
> 
547a587
> 
642a683,728
>     IF SPARE_COL IS NOT NULL THEN
>       SPARE_BINT := UTL_RAW.CAST_TO_BINARY_INTEGER(SPARE_COL,
>                                                    UTL_RAW.LITTLE_ENDIAN);
>       IF (BITAND(SPARE_BINT,1) = 1) THEN
>         
>         
>         COL_TYPE := UTL_RAW.SUBSTR(UTL_RAW.CAST_FROM_BINARY_INTEGER(2,2),1,2);
>         COL_POSITION := UTL_RAW.SUBSTR(UTL_RAW.CAST_FROM_BINARY_INTEGER(
>                                        SIGN_ALGO_POS,2),1,2);
>         COL_ISNULL := UTL_RAW.SUBSTR(UTL_RAW.CAST_FROM_BINARY_INTEGER(0,2),1,1);
>         COLUMN_LEN := UTL_RAW.LENGTH(UTL_RAW.CAST_FROM_NUMBER(SIGN_ALGO));
>         COL_LEN := UTL_RAW.CAST_FROM_BINARY_INTEGER(COLUMN_LEN, 2);
>         PAD_LENGTH := 8 - UTL_RAW.LENGTH(COL_LEN);
>         FOR I IN 1 .. PAD_LENGTH LOOP
>           COL_LEN := UTL_RAW.CONCAT(COL_LEN, ZERO_BYTE);
>         END LOOP;
>         COL_METADATA := UTL_RAW.CONCAT(COL_VERSION, COL_POSITION, COL_TYPE,
>                                 COL_ISNULL, COL_RESERVED, COL_LEN, COL_SPARE);
>         TEMP_METADATA := TO_BLOB(COL_METADATA);
>         
>         DBMS_LOB.APPEND(ROW_DATA,TEMP_METADATA);
>         DBMS_LOB.APPEND(ROW_DATA,TO_BLOB(UTL_RAW.CAST_FROM_NUMBER(SIGN_ALGO)));
>       END IF;
> 
>       IF (BITAND(SPARE_BINT,2) = 2) THEN
>         
>         
>         COL_TYPE := UTL_RAW.SUBSTR(UTL_RAW.CAST_FROM_BINARY_INTEGER(23,2),1,2);
>         COL_POSITION := UTL_RAW.SUBSTR(UTL_RAW.CAST_FROM_BINARY_INTEGER(
>                                        CERT_ID_POS,2),1,2);
>         COL_ISNULL := UTL_RAW.SUBSTR(UTL_RAW.CAST_FROM_BINARY_INTEGER(0,2),1,1);
>         COLUMN_LEN := UTL_RAW.LENGTH(CERT_ID);
>         COL_LEN := UTL_RAW.CAST_FROM_BINARY_INTEGER(COLUMN_LEN, 2);
>         PAD_LENGTH := 8 - UTL_RAW.LENGTH(COL_LEN);
>         FOR I IN 1 .. PAD_LENGTH LOOP
>           COL_LEN := UTL_RAW.CONCAT(COL_LEN, ZERO_BYTE);
>         END LOOP;
>         COL_METADATA := UTL_RAW.CONCAT(COL_VERSION, COL_POSITION, COL_TYPE,
>                                 COL_ISNULL, COL_RESERVED, COL_LEN, COL_SPARE);
>         TEMP_METADATA := TO_BLOB(COL_METADATA);
>         
>         DBMS_LOB.APPEND(ROW_DATA, TEMP_METADATA);
>         DBMS_LOB.APPEND(ROW_DATA, TO_BLOB(CERT_ID));
>       END IF;
>     END IF;
> 
719a806
>     COUNT_VAR        NUMBER;
731a819,827
>     SQL_STMT := 'select count(*) from SYS.ALL_BLOCKCHAIN_TABLES where ' ||
>                 'SCHEMA_NAME=:schema_name and TABLE_NAME=:table_name';
>     EXECUTE IMMEDIATE SQL_STMT INTO COUNT_VAR
>                                USING SCHEMA_NAME_INT, TABLE_NAME_INT;
>     IF (COUNT_VAR <> 1) THEN
>       RAISE_ORA_ERROR(5720, TABLE_NAME_INT);
>     END IF;
> 
>     
806,809c902,903
<     IF ((SIGNATURE IS NULL) OR (CERTIFICATE_GUID IS NULL) OR
<         (SIGNATURE_ALGO IS NULL)) THEN
<       RAISE_ORA_ERROR(5757, TO_CHAR(INSTANCE_ID), TO_CHAR(CHAIN_ID),
<                       TO_CHAR(SEQUENCE_ID));
---
>     IF (SIGNATURE IS NULL) THEN
>       RAISE_ORA_ERROR(5773, 'NULL', 'signature');
856a951
>     COUNT_VAR        NUMBER;
873a969,977
>     
>     SQL_STMT := 'select count(*) from SYS.ALL_BLOCKCHAIN_TABLES where ' ||
>                 'SCHEMA_NAME=:schema_name and TABLE_NAME=:table_name';
>     EXECUTE IMMEDIATE SQL_STMT INTO COUNT_VAR
>                                USING SCHEMA_NAME_INT, TABLE_NAME_INT;
>     IF (COUNT_VAR <> 1) THEN
>       RAISE_ORA_ERROR(5720, TABLE_NAME_INT);
>     END IF;
> 
1107a1212,1225
> 
>   PROCEDURE IMPORT_DROPPED(
>     SCHEMA_NAME      IN      VARCHAR2,
>     TABLE_NAME       IN      VARCHAR2,
>     DROP_TIME        IN      TIMESTAMP WITH TIME ZONE)
>   IS
>     EXTERNAL
>     NAME "kbclgdrImportDropped"
>     LIBRARY SYS.DBMS_BLOCKCHAIN_TABLE_LIB WITH CONTEXT
>     PARAMETERS(CONTEXT,
>                SCHEMA_NAME      OCISTRING,   SCHEMA_NAME      INDICATOR  SB2,
>                TABLE_NAME       OCISTRING,   TABLE_NAME       INDICATOR  SB2,
>                DROP_TIME        OCIDATETIME, DROP_TIME        INDICATOR  SB2)
>     LANGUAGE C;
SYS.DBMS_CAPTURE_ADM_INTERNAL - PACKAGE BODY (RU):
842a843,847
>     
>     DELETE FROM SYS.STREAMS$_RULES WHERE
>       STREAMS_NAME = CANON_CAPTURE_NAME AND 
>       STREAMS_TYPE = DBMS_STREAMS_ADM_UTL.STREAMS_TYPE_CAPTURE;
> 
2066,2067c2071,2072
<     SELECT SUPPLEMENTAL_LOG_DATA_MIN INTO MIN_SUP_LOG
<     FROM   V$DATABASE;
---
>     SELECT MINIMAL INTO MIN_SUP_LOG
>     FROM DBA_SUPPLEMENTAL_LOGGING;
SYS.DBMS_GSM_FIXED - PACKAGE BODY (19.10RUR):
954a955,1088
> 
> 
> 
> FUNCTION GETCATALOGEP
> RETURN VARCHAR2
> IS
>   LL_COUNT        NUMBER;
>   CAT_LISTENER    VARCHAR2(4000);
>   EP_START        NUMBER;
>   EP_END          NUMBER;
>   CAT_EP          VARCHAR2(4000);
>   CATHOST         VARCHAR2(512);
> 
> BEGIN
>   
>   SELECT COUNT(*) INTO LL_COUNT FROM SYS.V_$PARAMETER2
>      WHERE NAME='local_listener';
>   SELECT UTL_INADDR.GET_HOST_NAME INTO CATHOST FROM DUAL;
>  
>   IF LL_COUNT > 0 THEN
>      SELECT VALUE INTO CAT_LISTENER FROM SYS.V_$PARAMETER2
>         WHERE NAME='local_listener';
>      EP_START := INSTR(CAT_LISTENER, 'ADDRESS', 1) - 1;
>      EP_END := INSTR(CAT_LISTENER, '))', EP_START) + 2;
>      IF EP_START = 0 OR EP_END = 0 OR EP_END-EP_START <= 0 THEN
>         
>         CAT_EP := '(ADDRESS=(PROTOCOL=tcp)(HOST=' || CATHOST || ')(PORT=1521))';
>      ELSE
>         CAT_EP := SUBSTR(CAT_LISTENER, EP_START, EP_END-EP_START);
>      END IF;
>   ELSE
>      
>      CAT_EP := '(ADDRESS=(PROTOCOL=tcp)(HOST=' || CATHOST || ')(PORT=1521))';
>   END IF;
>   
>   RETURN CAT_EP;
> END GETCATALOGEP;
> 
> 
> 
> 
> 
> PROCEDURE CHECKCATALOGSYSLINK
> AS
> DBL_NAME VARCHAR2(256):='GDS$CATALOG.SYSLINK';
> CLOUD_NAME GSMADMIN_INTERNAL.CLOUD.NAME%TYPE;
> CURR_CLOUD_NAME GSMADMIN_INTERNAL.CLOUD.NAME%TYPE;
> BEGIN
>   EXECUTE IMMEDIATE 'ALTER SESSION SET GLOBAL_NAMES=FALSE';
>   SELECT VALUE INTO CURR_CLOUD_NAME
>         FROM SYS.V_$PARAMETER2 WHERE NAME='_cloud_name';
>   EXECUTE IMMEDIATE 'select name  from '||
>                     'gsmadmin_internal.cloud@'||DBL_NAME
>           INTO CLOUD_NAME;
>   IF LOWER(CURR_CLOUD_NAME) != LOWER(CLOUD_NAME) THEN
>      SYS.DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(
>                  GSMADMIN_INTERNAL.DBMS_GSM_UTILITY.ERR_DB_INCLOUD,
>                  CURR_CLOUD_NAME);
>   END IF;
> EXCEPTION
>   WHEN OTHERS  THEN
>     GSMADMIN_INTERNAL.DBMS_GSM_COMMON.WRITETOGWMTRACING 
>        ('checkCatalogSysLink error: '|| SQLERRM);
>     SYS.DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(
>        GSMADMIN_INTERNAL.DBMS_GSM_UTILITY.ERR_CATLINK);
> END CHECKCATALOGSYSLINK;
> 
> 
> 
> 
> PROCEDURE SETCATALOGSYSLINK(GSMUSRPWD IN VARCHAR2, GSM_ENDPOINT IN VARCHAR2)
> AS
> DBL_NAME        VARCHAR2(256):='GDS$CATALOG.SYSLINK';
> LOC_DBL_NAME    VARCHAR2(256) := 'GDS$CATALOG.SYSLOCLINK';
> DDL_TEXT        VARCHAR2(4000);
> CONN_STR        VARCHAR2(4000);
> EXEC_STR        VARCHAR2(256);
> L_COUNT         NUMBER;
> IN_CLOUD        NUMBER;
> CURR_CLOUD_NAME VARCHAR2(256);
> CAT_EP          VARCHAR2(4000);
> BEGIN
>   SELECT COUNT(1) INTO L_COUNT FROM USER_DB_LINKS WHERE DB_LINK = DBL_NAME;
>   IF (L_COUNT > 0) THEN
>       RETURN;
>   END IF;
> 
>    GSMADMIN_INTERNAL.DBMS_GSM_COMMON.WRITETOGWMTRACING
>       ('setCatalogSysLink: Create SYS DB-link');
> 
>   SELECT COUNT(*) INTO IN_CLOUD
>       FROM SYS.V_$PARAMETER2 WHERE NAME='_cloud_name';
>   IF IN_CLOUD > 0 THEN
>      SELECT VALUE INTO CURR_CLOUD_NAME
>       FROM SYS.V_$PARAMETER2 WHERE NAME='_cloud_name';
>   ELSE
>     CURR_CLOUD_NAME := 'oradbcloud';
>   END IF;
>   CONN_STR :='(DESCRIPTION = '||GSM_ENDPOINT||
>               '(CONNECT_DATA =(SERVICE_NAME = GDS$CATALOG.'||
>               CURR_CLOUD_NAME||')))';
>   DDL_TEXT := 'CREATE DATABASE LINK  '|| DBL_NAME||
>               ' CONNECT TO GSMCATUSER IDENTIFIED BY ' ||
>               DBMS_ASSERT.ENQUOTE_NAME(GSMUSRPWD,FALSE) ||
>               ' USING '||DBMS_ASSERT.ENQUOTE_LITERAL(CONN_STR);
>   
>   EXECUTE IMMEDIATE DDL_TEXT;
>   
>   
>   EXECUTE IMMEDIATE 'select sys.dbms_gsm_fixed.getCatalogEP 
>      from dual@GDS$CATALOG.SYSLINK' INTO CAT_EP;
>   GSMADMIN_INTERNAL.DBMS_GSM_COMMON.WRITETOGWMTRACING ('setCatalogLink: Local link: ' ||
>      CAT_EP);
>   
>   
>   CONN_STR :='(DESCRIPTION = '||CAT_EP||
>               '(CONNECT_DATA =(SERVICE_NAME = GDS$CATALOG.'||
>               CURR_CLOUD_NAME||')))';
>   DDL_TEXT := 'CREATE DATABASE LINK  '|| LOC_DBL_NAME||
>               ' CONNECT TO GSMCATUSER IDENTIFIED BY ' ||
>               DBMS_ASSERT.ENQUOTE_NAME(GSMUSRPWD,FALSE) ||
>               ' USING '||DBMS_ASSERT.ENQUOTE_LITERAL(CONN_STR);
>   
>   EXECUTE IMMEDIATE DDL_TEXT;
>   CHECKCATALOGSYSLINK();
> 
> EXCEPTION
>   WHEN OTHERS  THEN
>     GSMADMIN_INTERNAL.DBMS_GSM_COMMON.WRITETOGWMTRACING 
>       ('setCatalogSysLink error: '|| SQLERRM);
>     RAISE;
> 
> END SETCATALOGSYSLINK;
> 
SYS.DBMS_GSM_FIXED - PACKAGE BODY (RU):
954a955,1106
> 
> 
> 
> FUNCTION GETCATALOGEP
> RETURN VARCHAR2
> IS
>   LL_COUNT        NUMBER;
>   CAT_LISTENER    VARCHAR2(4000);
>   EP_START        NUMBER;
>   EP_END          NUMBER;
>   CAT_EP          VARCHAR2(4000);
>   CATHOST         VARCHAR2(512);
> 
> BEGIN
>   
>   SELECT COUNT(*) INTO LL_COUNT FROM SYS.V_$PARAMETER2
>      WHERE NAME='local_listener';
>   SELECT UTL_INADDR.GET_HOST_NAME INTO CATHOST FROM DUAL;
>  
>   IF LL_COUNT > 0 THEN
>      SELECT VALUE INTO CAT_LISTENER FROM SYS.V_$PARAMETER2
>         WHERE NAME='local_listener';
>      EP_START := INSTR(CAT_LISTENER, 'ADDRESS', 1) - 1;
>      EP_END := INSTR(CAT_LISTENER, '))', EP_START) + 2;
>      IF EP_START = 0 OR EP_END = 0 OR EP_END-EP_START <= 0 THEN
>         
>         CAT_EP := '(ADDRESS=(PROTOCOL=tcp)(HOST=' || CATHOST || ')(PORT=1521))';
>      ELSE
>         CAT_EP := SUBSTR(CAT_LISTENER, EP_START, EP_END-EP_START);
>      END IF;
>   ELSE
>      
>      CAT_EP := '(ADDRESS=(PROTOCOL=tcp)(HOST=' || CATHOST || ')(PORT=1521))';
>   END IF;
>   
>   RETURN CAT_EP;
> END GETCATALOGEP;
> 
> 
> 
> 
> 
> PROCEDURE CHECKCATALOGSYSLINK
> AS
> DBL_NAME VARCHAR2(256):='GDS$CATALOG.SYSLINK';
> CLOUD_NAME GSMADMIN_INTERNAL.CLOUD.NAME%TYPE;
> CURR_CLOUD_NAME GSMADMIN_INTERNAL.CLOUD.NAME%TYPE;
> BEGIN
>   EXECUTE IMMEDIATE 'ALTER SESSION SET GLOBAL_NAMES=FALSE';
>   SELECT VALUE INTO CURR_CLOUD_NAME
>         FROM SYS.V_$PARAMETER2 WHERE NAME='_cloud_name';
>   EXECUTE IMMEDIATE 'select name  from '||
>                     'gsmadmin_internal.cloud@'||DBL_NAME
>           INTO CLOUD_NAME;
>   IF LOWER(CURR_CLOUD_NAME) != LOWER(CLOUD_NAME) THEN
>      SYS.DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(
>                  GSMADMIN_INTERNAL.DBMS_GSM_UTILITY.ERR_DB_INCLOUD,
>                  CURR_CLOUD_NAME);
>   END IF;
> EXCEPTION
>   WHEN OTHERS  THEN
>     GSMADMIN_INTERNAL.DBMS_GSM_COMMON.WRITETOGWMTRACING 
>        ('checkCatalogSysLink error: '|| SQLERRM);
>     SYS.DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(
>        GSMADMIN_INTERNAL.DBMS_GSM_UTILITY.ERR_CATLINK);
> END CHECKCATALOGSYSLINK;
> 
> 
> 
> 
> PROCEDURE SETCATALOGSYSLINK(GSMUSRPWD IN VARCHAR2, GSM_ENDPOINT IN VARCHAR2)
> AS
> DBL_NAME        VARCHAR2(256):='GDS$CATALOG.SYSLINK';
> LOC_DBL_NAME    VARCHAR2(256) := 'GDS$CATALOG.SYSLOCLINK';
> DDL_TEXT        VARCHAR2(4000);
> CONN_STR        VARCHAR2(4000);
> EXEC_STR        VARCHAR2(256);
> L_COUNT         NUMBER;
> IN_CLOUD        NUMBER;
> CURR_CLOUD_NAME VARCHAR2(256);
> CAT_EP          VARCHAR2(4000);
> BEGIN
>   SELECT COUNT(1) INTO L_COUNT FROM USER_DB_LINKS WHERE DB_LINK = DBL_NAME;
>   IF (L_COUNT > 0) THEN
>       RETURN;
>   END IF;
> 
>   SELECT COUNT(*) INTO IN_CLOUD
>       FROM SYS.V_$PARAMETER2 WHERE NAME='_cloud_name';
>   IF IN_CLOUD > 0 THEN
>      SELECT VALUE INTO CURR_CLOUD_NAME
>       FROM SYS.V_$PARAMETER2 WHERE NAME='_cloud_name';
>   ELSE
>     CURR_CLOUD_NAME := 'oradbcloud';
>   END IF;
>   CONN_STR :='(DESCRIPTION = '||GSM_ENDPOINT||
>               '(CONNECT_DATA =(SERVICE_NAME = GDS$CATALOG.'||
>               CURR_CLOUD_NAME||')))';
>   DDL_TEXT := 'CREATE DATABASE LINK  '|| DBL_NAME||
>               ' CONNECT TO GSMCATUSER IDENTIFIED BY ' ||
>               DBMS_ASSERT.ENQUOTE_NAME(GSMUSRPWD,FALSE) ||
>               ' USING '||DBMS_ASSERT.ENQUOTE_LITERAL(CONN_STR);
>   
>   EXECUTE IMMEDIATE DDL_TEXT;
>   
>   
>   EXECUTE IMMEDIATE 'select sys.dbms_gsm_fixed.getCatalogEP 
>      from dual@GDS$CATALOG.SYSLINK' INTO CAT_EP;
>   GSMADMIN_INTERNAL.DBMS_GSM_COMMON.WRITETOGWMTRACING ('setCatalogLink: Local link: ' ||
>      CAT_EP);
>   
>   
>   CONN_STR :='(DESCRIPTION = '||CAT_EP||
>               '(CONNECT_DATA =(SERVICE_NAME = GDS$CATALOG.'||
>               CURR_CLOUD_NAME||')))';
>   DDL_TEXT := 'CREATE DATABASE LINK  '|| LOC_DBL_NAME||
>               ' CONNECT TO GSMCATUSER IDENTIFIED BY ' ||
>               DBMS_ASSERT.ENQUOTE_NAME(GSMUSRPWD,FALSE) ||
>               ' USING '||DBMS_ASSERT.ENQUOTE_LITERAL(CONN_STR);
>   
>   EXECUTE IMMEDIATE DDL_TEXT;
>   CHECKCATALOGSYSLINK();
> 
> EXCEPTION
>   WHEN OTHERS  THEN
>     GSMADMIN_INTERNAL.DBMS_GSM_COMMON.WRITETOGWMTRACING 
>       ('setCatalogSysLink error: '|| SQLERRM);
>     RAISE;
> 
> END SETCATALOGSYSLINK;
> 
> 
> PROCEDURE TRIMDDL (DDL_ID     IN  NUMBER,
>                    PWD_START  OUT NUMBER,
>                    TRIM_DDL   OUT VARCHAR2)
> IS
>    HAS_PWD    NUMBER;
> BEGIN
>    SELECT PWD_COUNT INTO HAS_PWD FROM SYS.DDL_REQUESTS WHERE DDL_NUM = DDL_ID;
>    IF HAS_PWD > 0 THEN
>       SELECT PWD_BEGIN INTO PWD_START FROM SYS.DDL_REQUESTS_PWD 
>          WHERE DDL_NUM = DDL_ID AND ROWNUM = 1 ORDER BY PWD_BEGIN ASC;
>    ELSE
>       PWD_START := 4000;
>    END IF;
>    GSMADMIN_INTERNAL.DBMS_GSM_COMMON.WRITETOGWMTRACING('trimDDL: PW Start: ' || 
>           TO_CHAR(PWD_START));
>    SELECT TRIM(SUBSTRB(DBMS_LOB.SUBSTR(DDL_TEXT,4000,1), 1, PWD_START)) 
>      INTO TRIM_DDL FROM SYS.DDL_REQUESTS WHERE DDL_NUM = DDL_ID;
> 
> END TRIMDDL;
> 
SYS.DBMS_IJOB - PACKAGE BODY (19.9RUR):
181a182
>     CT_NEXT_DATE        TIMESTAMP WITH TIME ZONE;
195a197,203
>     
>     
>     
>     
>     SELECT CAST(NEXT_DATE AS TIMESTAMP WITH TIME ZONE) AT TIME ZONE
>       (SELECT TO_CHAR(SYSTIMESTAMP,'tzr') FROM SYS.DUAL) 
>     INTO CT_NEXT_DATE FROM SYS.DUAL;
201c209
<         WHAT, NEXT_DATE, INTERVAL, NULL, BROKEN);
---
>         WHAT, CT_NEXT_DATE, INTERVAL, NULL, BROKEN);
SYS.DBMS_LOGMNR_INTERNAL - PACKAGE BODY (RU):
2266,2268c2266,2267
<     FROM SYS.V$DATABASE V
<     WHERE V.SUPPLEMENTAL_LOG_DATA_MIN = 'YES' OR
<           V.SUPPLEMENTAL_LOG_DATA_MIN = 'IMPLICIT';
---
>     FROM DBA_SUPPLEMENTAL_LOGGING
>     WHERE MINIMAL = 'YES';
SYS.DBMS_PDB_ALTER_SHARING - PACKAGE BODY (RU):
7c7,8
<                              LINK_TYPE    IN NUMBER);
---
>                              LINK_TYPE    IN NUMBER,
>                              FORCE        IN BOOLEAN);
17c18,19
<                                 EDITION_NAME IN VARCHAR2) IS
---
>                                 EDITION_NAME IN VARCHAR2,
>                                 FORCE        IN BOOLEAN) IS
19c21
<     KPDBFDSETSHARING(SCHEMA_NAME, OBJECT_NAME, NAMESPACE, EDITION_NAME, 1);
---
>     KPDBFDSETSHARING(SCHEMA_NAME, OBJECT_NAME, NAMESPACE, EDITION_NAME, 1, FORCE);
29c31,32
<                             EDITION_NAME IN VARCHAR2) IS
---
>                             EDITION_NAME IN VARCHAR2,
>                             FORCE        IN BOOLEAN) IS
31c34
<     KPDBFDSETSHARING(SCHEMA_NAME, OBJECT_NAME, NAMESPACE, EDITION_NAME, 2);
---
>     KPDBFDSETSHARING(SCHEMA_NAME, OBJECT_NAME, NAMESPACE, EDITION_NAME, 2, FORCE);
41c44,45
<                                 EDITION_NAME IN VARCHAR2) IS
---
>                                 EDITION_NAME IN VARCHAR2,
>                                 FORCE        IN BOOLEAN) IS
43c47
<     KPDBFDSETSHARING(SCHEMA_NAME, OBJECT_NAME, NAMESPACE, EDITION_NAME, 3);
---
>     KPDBFDSETSHARING(SCHEMA_NAME, OBJECT_NAME, NAMESPACE, EDITION_NAME, 3, FORCE);
53c57,58
<                              EDITION_NAME IN VARCHAR2) IS
---
>                              EDITION_NAME IN VARCHAR2,
>                              FORCE        IN BOOLEAN) IS
55c60
<     KPDBFDSETSHARING(SCHEMA_NAME, OBJECT_NAME, NAMESPACE, EDITION_NAME, 0);
---
>     KPDBFDSETSHARING(SCHEMA_NAME, OBJECT_NAME, NAMESPACE, EDITION_NAME, 0, FORCE);
SYS.DBMS_RCVMAN - PACKAGE BODY (19.9RUR):
122c122
< CATALOGVERSION CONSTANT VARCHAR2(11) := '19.09.01.00'; 
---
> CATALOGVERSION CONSTANT VARCHAR2(11) := '19.09.02.00'; 
SYS.DBMS_RCVMAN - PACKAGE BODY (RU):
122c122
< CATALOGVERSION CONSTANT VARCHAR2(11) := '19.10.00.00'; 
---
> CATALOGVERSION CONSTANT VARCHAR2(11) := '19.11.00.00'; 
15217,15220c15217,15250
<          ELSIF (ACTION_OLD_INC_REDO =
<                         ADDREDO(ISANCESTOR, DF_CKPSCN, DF_RLGSCN,
<                                NULL, PARTIAL_RCV, DOINGRECOVERY)) THEN
<             DONE := TRUE;
---
>          ELSE
>             ADDREDO_RC := ADDREDO(ISANCESTOR, DF_CKPSCN, DF_RLGSCN,
>                                   NULL, PARTIAL_RCV, DOINGRECOVERY);
>             IF (ADDREDO_RC = ACTION_OLD_INC_REDO) THEN
>                DONE := TRUE;
>             
>             
>             
>             
>             
>             
>             ELSIF (ADDREDO_RC = ACTION_OLD_REDO AND DF_CKPSCN = CLEANSCN
>                    AND CLEAN2SCN > CLEANSCN AND CLEAN2SCN < UB8MAXVAL) THEN
>                DEB(DEB_PRINT,'computeRecoveryActions2: fabricating clean ' ||
>                              'range as the file is marked clean until ' ||
>                              'controlfile checkpoint');
> 
>                ACTION          := NULL_ACTION;
>                ACTION.TYPE_CON := OFFLINERANGEREC_CON_T;
>                ACTION.TYPE_ACT := CLEANRANGE_ACT_T;
>                ACTION.DFNUMBER_OBJ := FNO;
>                ACTION.DFCREATIONSCN_OBJ := CRESCN;
>                ACTION.FROMSCN_ACT := CLEANSCN;
>                ACTION.TOSCN_ACT := CLEAN2SCN;
>                ACTION.TOTIME_ACT := CLEAN2TIME;
>                ACTION.PLUGGEDRONLY_OBJ := 0;
>                ACTION.PLUGINSCN_OBJ := 0;
>                ACTION.FOREIGNDBID_OBJ := 0;
>                ACTION.SECTION_SIZE_ACT := 0; 
>             
>                RCVRECPUSH(ACTION);             
> 
>                DONE := TRUE;
>             END IF;
16967c16997
<       DEB(DEB_PRINT, 'doing resotre');
---
>       DEB(DEB_PRINT, 'doing restore');
SYS.DBMS_RCVMAN - PACKAGE BODY (19.10RUR):
122c122
< CATALOGVERSION CONSTANT VARCHAR2(11) := '19.10.00.00'; 
---
> CATALOGVERSION CONSTANT VARCHAR2(11) := '19.10.01.00'; 
SYS.DBMS_SMB - PACKAGE BODY (RU):
886a887,903
>     
> 
> 
>     IF (ORIGINVAR = DBMS_SMB_INTERNAL.BASELINE_ORIGIN_ADDM_SQLTUNE) THEN
>       RETURN DBMS_SMB_INTERNAL.BASELINE_ORIGIN_ADDM_SQLTUNE#;
>     END IF;
> 
>     IF (ORIGINVAR = DBMS_SMB_INTERNAL.BASELINE_ORIGIN_AUTO_INDEX) THEN
>       RETURN DBMS_SMB_INTERNAL.BASELINE_ORIGIN_AUTO_INDEX#;
>     END IF;
>     
>     DBMS_SPM_INTERNAL.I_SPM_TRC(SYS.DBMS_SPM_INTERNAL.GET_SPM_TRACING_VALUE(),
>                      'map_origin_view_to_base: invalid origin');
>     IF (DBMS_STATS_INTERNAL.QA_CONTROL <> 0) THEN
>       DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(-38173, ORIGINVAR, 'originVar');
>     END IF;
> 
919a937
>     OUTLINE                 CLOB := NULL;
922a941,957
> 
> 
>     BEGIN
>       IF (XPL IS NOT NULL) THEN
>         SELECT XMLTYPE(P.OTHER_XML).EXTRACT('/*/outline_data').GETCLOBVAL()
>            INTO OUTLINE
>         FROM TABLE(XPL) P
>         WHERE OTHER_XML IS NOT NULL AND ROWNUM < 2;
>       ELSE
>         OUTLINE := REC.COMP_DATA;
>       END IF;
>     EXCEPTION
>       WHEN NO_DATA_FOUND THEN
>         OUTLINE := REC.COMP_DATA;
>     END;
> 
>     
949c984
<                  OTHER                    => REC.COMP_DATA,
---
>                  OTHER                    => OUTLINE,
956c991
<   
---
>  
SYS.DBMS_SMB_INTERNAL - PACKAGE BODY (RU):
442a443,448
> 
>       DBMS_SPM_INTERNAL.I_SPM_TRC(SYS.DBMS_SPM_INTERNAL.GET_SPM_TRACING_VALUE(),
>                      'map_origin_base_to_view: invalid origin');
>       IF (DBMS_STATS_INTERNAL.QA_CONTROL <> 0) THEN
>         DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(-38173, ORIGINNUM, 'originNum');
>       END IF;
686a693,694
>     
>     
695c703,704
<             BASELINE_ORIGIN_AUTO_AWR, BASELINE_ORIGIN_AUTO_CC)) THEN
---
>             BASELINE_ORIGIN_AUTO_AWR, BASELINE_ORIGIN_AUTO_CC,
>             BASELINE_ORIGIN_ADDM_SQLTUNE, BASELINE_ORIGIN_AUTO_INDEX)) THEN
SYS.DBMS_SODA - PACKAGE BODY (RU):
79a80,100
>     FUNCTION GET_AS_OF_SCN
>     RETURN NUMBER
>     IS
>     EXTERNAL NAME "getSCN"
>     LANGUAGE C
>     LIBRARY DBMS_SODA_LIB
>     WITH CONTEXT
>     PARAMETERS (CONTEXT,
>                 RETURN     INDICATOR  SB2,
>                 RETURN);
> 
>     FUNCTION GET_AS_OF_TIMESTAMP
>     RETURN VARCHAR2 IS
>     LANGUAGE C
>     LIBRARY DBMS_SODA_LIB
>     NAME "getTimestamp"
>     WITH CONTEXT
>     PARAMETERS (CONTEXT,
>                 RETURN    INDICATOR  SB2,
>                 RETURN               OCISTRING);
> 
SYS.DBMS_SODA_UTIL - PACKAGE BODY (RU):
218a219,298
>   
>   
>   PROCEDURE LIST_USAGE_STATISTICS(P_OWNER         IN   VARCHAR2,
>                                   P_STATISTICS    OUT  VARCHAR2,
>                                   P_ACCESS_TYPE   IN   VARCHAR2 DEFAULT 'READ',
>                                   P_SORT          IN   NUMBER   DEFAULT 1,
>                                   P_LIMIT         IN   NUMBER   DEFAULT 100)
>   IS
>     V_SQLTEXT    VARCHAR2(4000);
>     V_SORT       VARCHAR2(10);
>     V_READ_LIST  VARCHAR2(1000);
>     V_WRITE_LIST VARCHAR2(1000);
>     V_STAT_LIST  VARCHAR2(1000);
>   BEGIN
>     IF P_SORT > 0 THEN
>       V_SORT := 'asc';
>     ELSE
>       V_SORT := 'desc';
>     END IF;
>     V_READ_LIST :=  ''
>                  || '''logical reads'','
>                  || '''optimized physical reads'','
>                  || '''physical read requests'','
>                  || '''physical reads'','
>                  || '''physical reads direct''';
>     V_WRITE_LIST := ''
>                  || '''physical write requests'','
>                  || '''physical writes'','
>                  || '''physical writes direct'','
>                  || '''optimized physical writes''';
> 
>     IF P_ACCESS_TYPE = 'READ' THEN
>       V_STAT_LIST := V_READ_LIST;
>     ELSIF P_ACCESS_TYPE = 'WRITE' THEN
>       V_STAT_LIST := V_WRITE_LIST;
>     ELSIF P_ACCESS_TYPE = 'ALL' THEN
>       V_STAT_LIST := V_READ_LIST || ',' || V_WRITE_LIST;
>     ELSE
>       RETURN;
>     END IF;
> 
>     V_SQLTEXT :=  ''
>     || 'with collections as '
>     || '( '
>     || '    select  coll.uri_name    "name", '
>     || '            SUM(stat.value)  "frequency", '
>     || '            RANK() over '
>     || '            ( '
>     || '               order by SUM(stat.value) ' || V_SORT
>     || '            ) "rank" '
>     || '      from  v$segment_statistics stat, '
>     || '            xdb.json$collection_metadata coll '
>     || '     where  coll.owner = :sch_name '
>     || '       and  stat.owner = coll.owner '
>     || '       and  stat.object_name = coll.object_name '
>     || '       and  stat.OBJECT_TYPE = :obj_type '
>     || '       and  stat.STATISTIC_NAME in '
>     || '            ( '
>     ||                 V_STAT_LIST
>     || '            ) '
>     || '  group by  coll.uri_name '
>     || ') '
>     || 'select  JSON_OBJECT '
>     || '        (''collections'' value JSON_ARRAYAGG '
>     || '                               ( '
>     || '                             JSON_Object(* returning varchar2(32767)) '
>     || '                               ) '
>     || '        ) '
>     || '  from  collections ';
>     IF P_LIMIT IS NOT NULL
>     THEN
>       V_SQLTEXT := V_SQLTEXT || 
>         'where  "rank" <= ' || P_LIMIT;
>     END IF;
>     EXECUTE IMMEDIATE  V_SQLTEXT
>                  INTO  P_STATISTICS
>                 USING  P_OWNER,
>                        'TABLE';
>   END LIST_USAGE_STATISTICS;
> 
SYS.DBMS_SPM_INTERNAL - PACKAGE BODY (RU):
1699,1701c1699,1705
<   PROCEDURE INIT_SPM_SMB_PARAMETERS(
<     PARAMETER_NAME  IN VARCHAR2, 
<     PARAMETER_VALUE IN NUMBER)
---
>   
>   
>   
>   PROCEDURE INIT_SMB_PARAMETER(
>     P_NAME  IN VARCHAR2, 
>     P_VALUE IN NUMBER,
>     P_DATA  IN CLOB)
1703,1704c1707,1709
<     EXIST_CNT NUMBER;
<     EMPTY_FILTER VARCHAR(25);
---
>     EXIST        NUMBER;
>     UPDATED      NUMBER;
>     SAME_VAL     NUMBER;
1707,1738c1712,1722
<     SELECT COUNT(*) INTO EXIST_CNT
<     FROM SMB$CONFIG
<     WHERE PARAMETER_NAME = INIT_SPM_SMB_PARAMETERS.PARAMETER_NAME;
< 
<     IF (EXIST_CNT = 0) THEN
<       
<       IF (PARAMETER_NAME IN (SPACE_BUDGET_PERCENT, PLAN_RETENTION_WEEKS,
<                                  SPM_TRACING, AUTO_SPM_EVOLVE_TASK_ITV,
<                                  AUTO_SPM_EVOLVE_TASK_MAX_RT )) THEN
<    
<         INSERT INTO SMB$CONFIG (PARAMETER_NAME, PARAMETER_VALUE)
<         VALUES (INIT_SPM_SMB_PARAMETERS.PARAMETER_NAME, 
<                 INIT_SPM_SMB_PARAMETERS.PARAMETER_VALUE);
<    
<       
<       ELSIF(PARAMETER_NAME IN (AUTOCAP_SQL_TEXT, AUTOCAP_MODULE, 
<                                    AUTOCAP_ACTION, AUTOCAP_USER)) THEN
<    
<         EMPTY_FILTER := '<filters></filters>';
<         INSERT INTO SMB$CONFIG
<           (PARAMETER_NAME, PARAMETER_VALUE, PARAMETER_DATA)
<         VALUES (INIT_SPM_SMB_PARAMETERS.PARAMETER_NAME, 
<                 INIT_SPM_SMB_PARAMETERS.PARAMETER_VALUE, EMPTY_FILTER);
<    
<       
<       ELSIF(PARAMETER_NAME = AUTO_SPM_EVOLVE_TASK) THEN
<         INSERT INTO SMB$CONFIG 
<           (PARAMETER_NAME, PARAMETER_VALUE, PARAMETER_DATA)
<         VALUES (INIT_SPM_SMB_PARAMETERS.PARAMETER_NAME, 
<                 INIT_SPM_SMB_PARAMETERS.PARAMETER_VALUE,
<                 AUTO_SPM_EVOLVE_TASK_DEFAULT);
<       END IF;
---
>     
>     SELECT COUNT(*),
>       SUM(CASE WHEN C.LAST_UPDATED IS NOT NULL THEN 1 ELSE 0 END),
>       SUM(CASE WHEN (C.PARAMETER_VALUE IS NULL AND P_VALUE IS NULL OR
>                      C.PARAMETER_VALUE = P_VALUE) AND
>                     (C.PARAMETER_DATA IS NULL AND P_DATA IS NULL OR
>                      DBMS_LOB.COMPARE(C.PARAMETER_DATA, P_DATA) = 0)
>                THEN 1 ELSE 0 END)
>     INTO EXIST, UPDATED, SAME_VAL
>     FROM SMB$CONFIG C
>     WHERE C.PARAMETER_NAME = P_NAME;
1739a1724,1731
>     
>     
>     
>     
>     
>     
>     IF (EXIST > 0 AND (UPDATED > 0 OR SAME_VAL > 0)) THEN
>       RETURN;
1742c1734,1746
<   END INIT_SPM_SMB_PARAMETERS;
---
>     
>     
>     IF (EXIST > 0) THEN
>       DELETE FROM SMB$CONFIG C
>       WHERE C.PARAMETER_NAME = P_NAME;
>     END IF;
> 
>     
>     INSERT INTO SMB$CONFIG 
>       (PARAMETER_NAME, PARAMETER_VALUE, PARAMETER_DATA)
>     VALUES (P_NAME, P_VALUE, P_DATA);
> 
>   END INIT_SMB_PARAMETER;
1761a1766
> 
1763,1767c1768,1772
<     INIT_SPM_SMB_PARAMETERS(SPACE_BUDGET_PERCENT,
<                             SPACE_BUDGET_PERCENT_DEFAULT);
<     INIT_SPM_SMB_PARAMETERS(PLAN_RETENTION_WEEKS, 
<                             PLAN_RETENTION_WEEKS_DEFAULT);
<     INIT_SPM_SMB_PARAMETERS(SPM_TRACING, SPM_TRACING_DEFAULT);
---
>     INIT_SMB_PARAMETER(SPACE_BUDGET_PERCENT, SPACE_BUDGET_PERCENT_DEFAULT, 
>                        NULL);
>     INIT_SMB_PARAMETER(PLAN_RETENTION_WEEKS, PLAN_RETENTION_WEEKS_DEFAULT, 
>                        NULL);
>     INIT_SMB_PARAMETER(SPM_TRACING, SPM_TRACING_DEFAULT, NULL);
1770,1773c1775,1778
<     INIT_SPM_SMB_PARAMETERS(AUTOCAP_SQL_TEXT, 0);
<     INIT_SPM_SMB_PARAMETERS(AUTOCAP_MODULE, 0);
<     INIT_SPM_SMB_PARAMETERS(AUTOCAP_ACTION, 0);
<     INIT_SPM_SMB_PARAMETERS(AUTOCAP_USER, 0);
---
>     INIT_SMB_PARAMETER(AUTOCAP_SQL_TEXT, 0, '<filters></filters>');
>     INIT_SMB_PARAMETER(AUTOCAP_MODULE, 0, '<filters></filters>');
>     INIT_SMB_PARAMETER(AUTOCAP_ACTION, 0, '<filters></filters>');
>     INIT_SMB_PARAMETER(AUTOCAP_USER, 0, '<filters></filters>');
1777,1781c1782,1786
<     INIT_SPM_SMB_PARAMETERS(AUTO_SPM_EVOLVE_TASK, 0);
<     INIT_SPM_SMB_PARAMETERS(AUTO_SPM_EVOLVE_TASK_ITV,
<                             AUTO_EVOLVE_TASK_ITV_DEFAULT);
<     INIT_SPM_SMB_PARAMETERS(AUTO_SPM_EVOLVE_TASK_MAX_RT, 
<                             AUTO_EVOLVE_TASK_MAX_RT_DEF);
---
>     INIT_SMB_PARAMETER(AUTO_SPM_EVOLVE_TASK, 0, AUTO_SPM_EVOLVE_TASK_DEFAULT);
>     INIT_SMB_PARAMETER(AUTO_SPM_EVOLVE_TASK_ITV,AUTO_EVOLVE_TASK_ITV_DEFAULT, 
>                        NULL);
>     INIT_SMB_PARAMETER(AUTO_SPM_EVOLVE_TASK_MAX_RT, 
>                        AUTO_EVOLVE_TASK_MAX_RT_DEF, NULL);
1783,1785d1787
<     
<     DBMS_SPM.CONFIGURE(AUTO_SPM_EVOLVE_TASK, AUTO_SPM_EVOLVE_TASK_DEFAULT);
< 
SYS.DBMS_SQLPATCH - PACKAGE BODY (RU):
465c465
<     RETURN '$Header: rdbms/src/server/dict/plsicds/prvtsqlpatch.sql /main/34 2018/02/20 13:50:00 surman Exp $';
---
>     RETURN '$Header: rdbms/src/server/dict/plsicds/prvtsqlpatch.sql /st_rdbms_19/1 2021/01/18 09:12:31 apfwkr Exp $';
SYS.DBMS_SQLTCB_INTERNAL - PACKAGE BODY (RU):
25c25
<  
---
>   
4518a4519,4523
>     
>     
>     
>     
>     
4521c4526
<         PA.VALUE  || '_ora_' || PR.SPID   || 
---
>         I.INSTANCE_NAME || '_ora_' || PR.SPID   || 
4523c4528
<         PA.VALUE || '_p%_' || SQL_DIAGNOSTIC 
---
>         I.INSTANCE_NAME || '_p%_' || SQL_DIAGNOSTIC 
4526c4531
<         SYS.V_$PARAMETER PA, SYS.V_$PROCESS PR, SYS.V_$SESSION S
---
>         SYS.V_$INSTANCE I, SYS.V_$PROCESS PR, SYS.V_$SESSION S
4528d4532
<         PA.NAME  = 'db_name'        AND
4533c4537
<         PA.VALUE  || '_ora_' || PR.SPID ||
---
>         I.INSTANCE_NAME || '_ora_' || PR.SPID ||
4535c4539
<         PA.VALUE || '_p%_' || TRACE_IDENTIFIER || '%.trc'
---
>         I.INSTANCE_NAME || '_p%_' || TRACE_IDENTIFIER || '%.trc'
4538c4542
<         SYS.V_$PARAMETER PA, SYS.V_$PROCESS PR, SYS.V_$SESSION S
---
>         SYS.V_$INSTANCE I, SYS.V_$PROCESS PR, SYS.V_$SESSION S
4540d4543
<         PA.NAME  = 'db_name'        AND
SYS.DBMS_SQLTUNE - PACKAGE BODY (RU):
1a2,8
> 
>   
>   
>   
>   
>   TIMED_OUT EXCEPTION;
>   PRAGMA EXCEPTION_INIT(TIMED_OUT, -12751);
7463a7471
>     
7464a7473,7476
>       WHEN TIMED_OUT THEN
>         SYS.DBMS_SQLTUNE_INTERNAL.I_UNLOCK_SQLSET(LOCK_HANDLE);
>         RAISE;
>         
7992a8005
>   
7993a8007,8010
>     WHEN TIMED_OUT THEN
>       SYS.DBMS_SQLTUNE_INTERNAL.I_UNLOCK_SQLSET(LOCK_HANDLE);
>       RAISE;
>       
7997d8013
<  
SYS.DBMS_SQLTUNE_INTERNAL - PACKAGE BODY (RU):
2a3,9
>   
>   
>   
>   
>   TIMED_OUT EXCEPTION;
>   PRAGMA EXCEPTION_INIT(TIMED_OUT, -12751);
> 
14900a14908
>   
14901a14910,14916
>     WHEN TIMED_OUT THEN
>       IF (COMMIT_AFTER_DROP) THEN
>         ROLLBACK;
>       END IF;
>       I_UNLOCK_SQLSET(LOCK_HANDLE);
>       RAISE;
>       
14947c14962,14968
<   EXCEPTION 
---
>   
>   EXCEPTION
>     WHEN TIMED_OUT THEN
>       ROLLBACK;
>       I_UNLOCK_SQLSET(LOCK_HANDLE);
>       RAISE;
>       
14949,14954c14970,14975
<     
<     ROLLBACK;
<     
<     I_UNLOCK_SQLSET(LOCK_HANDLE);
<     
<     RAISE;  
---
>       
>       ROLLBACK;
>       
>       I_UNLOCK_SQLSET(LOCK_HANDLE);
>       
>       RAISE;  
16851a16873
>     
16852a16875,16879
>       WHEN TIMED_OUT THEN
>         ROLLBACK;
>         I_UNLOCK_SQLSET(LOCK_HANDLE);
>         RAISE;
>         
16927a16955
>     
16928a16957,16961
>       WHEN TIMED_OUT THEN
>         ROLLBACK;
>         I_UNLOCK_SQLSET(LOCK_HANDLE);
>         RAISE;
>         
17006a17040
>     
17007a17042,17049
>       WHEN TIMED_OUT THEN
>         ROLLBACK;
>         
>         IF (NOT DBMS_SQLTUNE_UTIL1.IS_STANDBY) THEN 
>           I_UNLOCK_SQLSET(LOCK_HANDLE);
>         END IF;
>         RAISE;
>         
17136a17179
>     
17137a17181,17188
>       WHEN TIMED_OUT THEN
>         ROLLBACK;
>         
>         IF (NOT DBMS_SQLTUNE_UTIL1.IS_STANDBY) THEN 
>           I_UNLOCK_SQLSET(LOCK_HANDLE);         
>         END IF;
>         RAISE;
>         
17617a17669
>   
17618a17671,17675
>     WHEN TIMED_OUT THEN
>       ROLLBACK;
>       I_UNLOCK_SQLSET(LOCK_HANDLE);
>       RAISE;
>       
SYS.DBMS_STREAMS_ADM_UTL - PACKAGE BODY (RU):
2181c2181,2182
<                                 NUM_DELETED         OUT NUMBER)
---
>                                 NUM_DELETED         OUT NUMBER,
>                                 CANON_SOURCE_DB     IN VARCHAR2 DEFAULT NULL)
2186,2191c2187,2203
<     DELETE FROM SYS.STREAMS$_RULES R
<      WHERE R.RULE_OWNER = NVL(CANON_RULE_OWNER, R.RULE_OWNER)
<        AND R.RULE_NAME  = NVL(CANON_RULE_NAME, R.RULE_NAME)
<        AND R.STREAMS_NAME = NVL(CANON_STREAMS_NAME, R.STREAMS_NAME)
<        AND R.STREAMS_TYPE = NVL(REMOVE_STREAMS_RULE.STREAMS_TYPE,
<                                 R.STREAMS_TYPE);
---
>     
>     IF CANON_RULE_OWNER IS NULL AND CANON_RULE_NAME IS NULL THEN 
>       DELETE FROM SYS.STREAMS$_RULES R
>          WHERE R.RULE_OWNER IS NULL
>            AND R.RULE_NAME  IS NULL
>            AND R.STREAMS_NAME = NVL(CANON_STREAMS_NAME, R.STREAMS_NAME)
>            AND R.STREAMS_TYPE = NVL(REMOVE_STREAMS_RULE.STREAMS_TYPE,
>                                   R.STREAMS_TYPE)
>            AND R.SOURCE_DATABASE = NVL(CANON_SOURCE_DB, R.SOURCE_DATABASE);
>     ELSE
>       DELETE FROM SYS.STREAMS$_RULES R
>        WHERE R.RULE_OWNER = NVL(CANON_RULE_OWNER, R.RULE_OWNER)
>          AND R.RULE_NAME  = NVL(CANON_RULE_NAME, R.RULE_NAME)
>          AND R.STREAMS_NAME = NVL(CANON_STREAMS_NAME, R.STREAMS_NAME)
>          AND R.STREAMS_TYPE = NVL(REMOVE_STREAMS_RULE.STREAMS_TYPE,
>                                   R.STREAMS_TYPE);
>     END IF;
2212c2224,2225
<                                 CANON_STREAMS_NAME  IN VARCHAR2 DEFAULT NULL)
---
>                                 CANON_STREAMS_NAME  IN VARCHAR2 DEFAULT NULL,
>                                 CANON_SOURCE_DB     IN VARCHAR2 DEFAULT NULL)
2217c2230
<                         CANON_STREAMS_NAME, DUMMY_COUNT);
---
>                         CANON_STREAMS_NAME, DUMMY_COUNT, CANON_SOURCE_DB);
2954d2966
<   
2956,2958d2967
<   PROCEDURE PROCESS_DROP_USER_PRIVILEGE(CANON_DROPPED_USER IN VARCHAR2) IS
< 
<   
2961,2995c2970,2971
<   USERID NUMBER;
<   CUR_PRIVILEGE_TYPE    NUMBER;
<   CUR_PRIVILEGE_LEVEL   NUMBER;
< 
<   BEGIN
<     
<     BEGIN
<       DELETE FROM SYS.GOLDENGATE$_PRIVILEGES
<        WHERE USERNAME = CANON_DROPPED_USER;
<     EXCEPTION WHEN OTHERS THEN
<       NULL;
<     END;
< 
<     
<     BEGIN
<       DELETE FROM SYS.XSTREAM$_PRIVILEGES
<        WHERE USERNAME = CANON_DROPPED_USER;
<     EXCEPTION WHEN OTHERS THEN
<       NULL;
<     END;
< 
<     
<     BEGIN
<       DELETE FROM SYS.STREAMS$_PRIVILEGED_USER
<        WHERE USER# = (SELECT USER# FROM USER$ U
<                       WHERE U.NAME = CANON_DROPPED_USER);
<     EXCEPTION WHEN OTHERS THEN
<       NULL;
<     END;
< 
<   EXCEPTION WHEN OTHERS THEN
<     NULL;
<   END PROCESS_DROP_USER_PRIVILEGE;
< 
<   PROCEDURE PROCESS_DROP_USER_CASCADE(CANON_DROPPED_USER IN VARCHAR2) IS
---
>   PROCEDURE PROCESS_DROP_USER_CASCADE(CANON_DROPPED_USER IN VARCHAR2,
>                                       DUC_MODE IN NUMBER) IS
3029,3030c3005,3009
<           DBMS_CAPTURE_ADM.STOP_CAPTURE(DQT||DUC_REC1.CAPTURE_NAME||DQT, 
<                                         TRUE);
---
>           IF DUC_MODE = DUC_STOP_ONLY OR
>              DUC_MODE = DUC_STOP_DROP OR
>              DUC_MODE = DUC_ALL THEN
>             DBMS_CAPTURE_ADM.STOP_CAPTURE(DQT||DUC_REC1.CAPTURE_NAME||DQT,TRUE);
>           END IF;
3034c3013,3017
<         DBMS_CAPTURE_ADM.DROP_CAPTURE(DQT||DUC_REC1.CAPTURE_NAME||DQT);
---
>         IF DUC_MODE = DUC_DROP_ONLY OR
>            DUC_MODE = DUC_STOP_DROP OR 
>            DUC_MODE = DUC_ALL THEN
>           DBMS_CAPTURE_ADM.DROP_CAPTURE(DQT||DUC_REC1.CAPTURE_NAME||DQT);
>         END IF;
3055c3038,3042
<           DBMS_APPLY_ADM.STOP_APPLY(DQT||DUC_REC2.APPLY_NAME||DQT, TRUE);
---
>           IF DUC_MODE = DUC_STOP_ONLY OR 
>              DUC_MODE = DUC_STOP_DROP OR
>              DUC_MODE = DUC_ALL THEN
>             DBMS_APPLY_ADM.STOP_APPLY(DQT||DUC_REC2.APPLY_NAME||DQT, TRUE);
>           END IF;
3058,3063c3045,3053
<         
<         
<         DBMS_APPLY_ADM.DELETE_ALL_ERRORS(DQT||DUC_REC2.APPLY_NAME||DQT);
< 
<         
<         DBMS_APPLY_ADM.DROP_APPLY(DQT||DUC_REC2.APPLY_NAME||DQT);
---
>         IF DUC_MODE = DUC_DROP_ONLY OR 
>            DUC_MODE = DUC_STOP_DROP OR
>            DUC_MODE = DUC_ALL THEN
>           
>           
>           DBMS_APPLY_ADM.DELETE_ALL_ERRORS(DQT||DUC_REC2.APPLY_NAME||DQT);
>           
>           DBMS_APPLY_ADM.DROP_APPLY(DQT||DUC_REC2.APPLY_NAME||DQT);        
>         END IF;
3076a3067,3073
> 
>     IF DUC_MODE = DUC_STOP_ONLY OR
>        DUC_MODE = DUC_DROP_ONLY OR
>        DUC_MODE = DUC_STOP_DROP THEN
>       
>       RETURN;
>     END IF;
SYS.DBMS_STREAMS_ADM_UTL_INVOK - PACKAGE BODY (RU):
268c268,271
<     DBMS_STREAMS_ADM_UTL.CREATE_DEFAULT_RULE(RULE_TYPE,
---
>     
>     IF (DBMS_XSTREAM_GG_ADM.IS_GOLDENGATE IS NULL OR
>         NOT DBMS_XSTREAM_GG_ADM.IS_GOLDENGATE) THEN
>       DBMS_STREAMS_ADM_UTL.CREATE_DEFAULT_RULE(RULE_TYPE,
286a290
>     END IF;
626c630,655
<     IF (STREAMS_TYPE = DBMS_STREAMS_ADM_UTL.STREAMS_TYPE_APPLY) THEN
---
>     
>     IF DBMS_XSTREAM_GG_ADM.IS_GOLDENGATE THEN
>       IF EXIST_RULESET IS NULL THEN
>         GEN_RULESET_NAME  := DBMS_STREAMS_ADM_UTL.GENERATE_NAME(CANON_INVOKER, 
>                          'RULESET$_', DBMS_STREAMS_ADM_UTL.TYPE_RULESET_NAME);
>         DBMS_RULE_ADM.CREATE_RULE_SET(RULE_SET_NAME=>GEN_RULESET_NAME,
>                    EVALUATION_CONTEXT=>'sys.streams$_evaluation_context',
>                    RULE_SET_COMMENT =>'streams name is '|| CANON_STREAMS_NAME);
>       END IF;
> 
>       IF NOT PROCESS_EXIST THEN
>         IF (STREAMS_TYPE = DBMS_STREAMS_ADM_UTL.STREAMS_TYPE_APPLY) THEN
>           DBMS_APPLY_ADM_IVK.CREATE_APPLY_IVK(CANCAT_QNAME,
>               DQT||CANON_GEN_STREAMS_NAME||DQT,
>               NEGATIVE_RULE_SET_NAME => GEN_RULESET_NAME,
>               APPLY_CAPTURED => APPLY_CAPTURED,
>               SOURCE_DATABASE => CANON_SRC_DB,
>               SOURCE_ROOT_NAME => CANON_SRC_ROOT);
>         ELSIF (STREAMS_TYPE = DBMS_STREAMS_ADM_UTL.STREAMS_TYPE_CAPTURE) THEN
>           DBMS_CAPTURE_ADM_IVK.CREATE_CAPTURE_IVK(CANCAT_QNAME,
>               DQT||CANON_GEN_STREAMS_NAME||DQT,
>               SOURCE_ROOT_NAME => CANON_SRC_ROOT,
>               NEGATIVE_RULE_SET_NAME => GEN_RULESET_NAME,
>               CAPTURE_CLASS => PROC_PURPOSE);
>         END IF;
> 
627a657,667
>       ELSIF (EXIST_RULESET IS NULL) THEN
>         IF (STREAMS_TYPE = DBMS_STREAMS_ADM_UTL.STREAMS_TYPE_APPLY) THEN
>           DBMS_APPLY_ADM.ALTER_APPLY(DQT||CANON_GEN_STREAMS_NAME||DQT, 
>                             NEGATIVE_RULE_SET_NAME => GEN_RULESET_NAME);
>         ELSIF (STREAMS_TYPE = DBMS_STREAMS_ADM_UTL.STREAMS_TYPE_CAPTURE) THEN
>           DBMS_CAPTURE_ADM.ALTER_CAPTURE(DQT||CANON_GEN_STREAMS_NAME||DQT, 
>                             NEGATIVE_RULE_SET_NAME => GEN_RULESET_NAME);
>         END IF;
>       END IF;   
> 
>     ELSIF (STREAMS_TYPE = DBMS_STREAMS_ADM_UTL.STREAMS_TYPE_APPLY) THEN
628a669
> 
SYS.DBMS_STREAMS_DATAPUMP_UTIL - PACKAGE BODY (RU):
148,150c148,150
<     SELECT SUPPLEMENTAL_LOG_DATA_MIN INTO SUPPLOG_DATA_MIN
<       FROM V$DATABASE;
<     RETURN (SUPPLOG_DATA_MIN = 'YES' OR SUPPLOG_DATA_MIN = 'IMPLICIT');
---
>     SELECT MINIMAL INTO SUPPLOG_DATA_MIN
>       FROM DBA_SUPPLEMENTAL_LOGGING;
>     RETURN (SUPPLOG_DATA_MIN = 'YES');
SYS.DBMS_SWRF_INTERNAL - PACKAGE BODY (RU):
2375a2376,2384
>       BEGIN
>         DBMS_DATAPUMP.METADATA_FILTER(HL, 'EXCLUDE_NAME_EXPR', 
>                                   'LIKE ''WR_$\_%_BL'' ESCAPE ''\''', 'TABLE');
>       EXCEPTION 
>         WHEN OTHERS THEN 
>           OUTPUT_STR('DBMS_DATAPUMP.METADATA_FILTER(EXCLUDE_NAME_EXPR-7)');
>           RAISE;
>       END;
> 
3891a3901,3926
>     
> 
> 
> 
>     PROCEDURE CLEANUP_ONE_TABLE_CO(DBID       IN NUMBER,
>                                    BID        IN NUMBER,
>                                    EID        IN NUMBER,
>                                    TBNAME     IN VARCHAR2,
>                                    SKIP_CHECK IN BOOLEAN)
>     IS
>     LANGUAGE C
>     NAME "kewccot_clean_one_table_co"
>     WITH CONTEXT
>     PARAMETERS(CONTEXT,
>                DBID      OCINUMBER,
>                DBID      INDICATOR SB4,
>                BID       OCINUMBER,
>                BID       INDICATOR SB4,
>                EID       OCINUMBER,
>                EID       INDICATOR SB4,
>                TBNAME    OCISTRING,
>                TBNAME    INDICATOR SB4,
>                SKIP_CHECK INT,
>                SKIP_CHECK INDICATOR SB4
>      )
>      LIBRARY DBMS_SWRF_LIB;
3902d3936
<                           BLTABLE   IN  BOOLEAN DEFAULT FALSE,
3958,3966c3992
<                        || '  FROM ' || Q_SCHNAME || '.';
< 
<       IF (BLTABLE) THEN
<         
<         SELSTR := SELSTR || DBMS_ASSERT.ENQUOTE_NAME(L_TABNAME || BL_SUFFIX, FALSE);
<       ELSE
<         SELSTR := SELSTR || Q_TABNAME;
<       END IF;
< 
---
>                        || '  FROM ' || Q_SCHNAME || '.' || Q_TABNAME;
3998,4003c4024
<         IF (BLTABLE) THEN
<           OUTPUT_STR('Append Data for ' || FULL_TABNAME || BL_SUFFIX || '.',
<                       FP);
<         ELSE
<           OUTPUT_STR('Append Data for ' || FULL_TABNAME || '.', FP);
<         END IF;
---
>         OUTPUT_STR('Append Data for ' || FULL_TABNAME || '.', FP);
4028c4049
<           
---
> 
4039,4041d4059
<           
<           L_CONSTR := IN_CONSTR;
<           S_CONSTR := REPLACE(IN_CONSTR, '"DBID"', TO_CHAR(D_DBID));
4043a4062,4064
>           IF (DEBUG_ON OR TIMING_ON) THEN
>             DUMP_TIMING(SQLSTR, FP);
>           END IF;
4044a4066
>           
4047,4067d4068
<           IF L_CONSTR IS NULL THEN
<             AWR_GET_CONSTR_COLUMNS(L_TABNAME, AWR_USER, TO_CHAR(D_DBID),
<                                    S_CONSTR, L_CONSTR, M_CONSTR, FP);
<           END IF;
< 
<           IF (L_CONSTR IS NOT NULL) THEN
<             FULL_TABNAME := AWR_USER ||
<                             '.' || DBMS_ASSERT.ENQUOTE_NAME(L_TABNAME, FALSE);
<   
<             
<             SQLSTR := SQLSTR ||
<                       ' AND (' || S_CONSTR || ') NOT IN ' ||
<                          '(SELECT ' || L_CONSTR ||
<                            ' FROM ' || FULL_TABNAME || ' SUB ' ||
<                            ' WHERE SUB.DBID = :d_dbid)';
<           ELSE
<             
<             RAISE_APPLICATION_ERROR(-20223,
<                                     'No unique constraint on table ' ||
<                                      FULL_TABNAME);
<           END IF;
4069,4072c4070
<           
<           IF (DEBUG_ON OR TIMING_ON) THEN
<             DUMP_TIMING(SQLSTR, FP);
<           END IF;
---
>           CLEANUP_ONE_TABLE_CO(D_DBID, B_SNAP_ID, E_SNAP_ID, L_TABNAME, TRUE);
4074c4072
<           EXECUTE IMMEDIATE SQLSTR USING S_DBID, D_DBID;
---
>           EXECUTE IMMEDIATE SQLSTR USING S_DBID;
5007,5019d5004
< 
<         
<         IF (CHECK_FLAG(HIST.TABLE_FLAG, KEWRTF_PARTN_BYSID) OR
<             CHECK_FLAG(HIST.TABLE_FLAG, KEWRTF_PARTN_BYTIME)) THEN
< 
<           
<           APPEND_DATA(Q_SCHNAME, L_SCHNAME, HIST.TABLE_NAME,
<                       '"DBID", "SNAP_ID"', BLTABLE => TRUE);
< 
<           
<           COMMIT;
< 
<         END IF;
SYS.DBMS_SWRF_REPORT_INTERNAL - PACKAGE BODY (RU):
19021a19022,19037
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
19279a19296,19307
>       
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
19281c19309,19326
<      'select  nvl(min(snap_id),0)                as snap_id, 
---
>      'WITH snaps AS (
>         SELECT instance_number, snap_id, 
>                CASE WHEN end_interval_time_tz IS NOT NULL 
>                     THEN CAST(end_interval_time_tz AS TIMESTAMP(3))
>                     ELSE end_interval_time END as end_interval_time,
>                CASE WHEN end_interval_time_tz IS NOT NULL 
>                     THEN ( 
>     CAST((begin_interval_time_tz at time zone ''UTC'') AS TIMESTAMP(3)) +
>     (CAST(end_interval_time_tz as TIMESTAMP(3)) - CAST((
>      end_interval_time_tz at time zone ''UTC'') AS TIMESTAMP(3)))                        
>                     )
>                     ELSE begin_interval_time END as begin_interval_time
>         FROM ' || DBMS_UMF_PROTECTED.KEUQQPAT_AWR_VN_DFLT_PAT || 'snapshot
>         WHERE  dbid = :dbid
>           AND  ( :inst_num_list IS NULL OR 
>                  instance_number MEMBER OF :inst_num_list)
>         )
>      select  nvl(min(snap_id),0)                as snap_id, 
19292,19296c19337,19338
<                  from  ' || DBMS_UMF_PROTECTED.KEUQQPAT_AWR_VN_DFLT_PAT
<                          || 'ash_snapshot
<                 where  dbid = :dbid
<                   and  (  :inst_num_list is null 
<                           or instance_number member of :inst_num_list))
---
>                  from snaps
>         )
19340a19383,19385
>       
> 
> 
19342c19387,19404
<      'select  nvl(max(snap_id),0)                as snap_id,
---
>      'WITH snaps AS (
>         SELECT instance_number, snap_id, 
>                CASE WHEN end_interval_time_tz IS NOT NULL 
>                     THEN CAST(end_interval_time_tz AS TIMESTAMP(3))
>                     ELSE end_interval_time END as end_interval_time,
>                CASE WHEN end_interval_time_tz IS NOT NULL 
>                     THEN ( 
>     CAST((begin_interval_time_tz at time zone ''UTC'') AS TIMESTAMP(3)) +
>     (CAST(end_interval_time_tz as TIMESTAMP(3)) - CAST((
>      end_interval_time_tz at time zone ''UTC'') AS TIMESTAMP(3)))                        
>                     )
>                     ELSE begin_interval_time END as begin_interval_time
>         FROM ' || DBMS_UMF_PROTECTED.KEUQQPAT_AWR_VN_DFLT_PAT || 'snapshot
>         WHERE  dbid = :dbid
>           AND  ( :inst_num_list IS NULL OR 
>                  instance_number MEMBER OF :inst_num_list)
>         )
>       select  nvl(max(snap_id),0)                as snap_id,
19352,19357c19414,19416
<                                                                 as lag_end_time
<                  from  ' || DBMS_UMF_PROTECTED.KEUQQPAT_AWR_VN_DFLT_PAT
<                          || 'ash_snapshot
<                 where  dbid = :dbid
<                   and  (  :inst_num_list is null or 
<                           instance_number member of :inst_num_list))
---
>                                                  as lag_end_time
>                from  snaps
>               )
19433,19434c19492,19496
<        'select nvl(max(snap_id),NULL), nvl(max(end_interval_time),NULL)
<         from   ' || DBMS_UMF_PROTECTED.KEUQQPAT_AWR_VN_DFLT_PAT || 'ash_snapshot
---
>        'select nvl(max(snap_id),NULL), nvl(max(
>            CASE WHEN end_interval_time_tz IS NULL THEN end_interval_time
>                 ELSE CAST(end_interval_time_tz AS TIMESTAMP(3)) END
>           ),NULL)
>         from   ' || DBMS_UMF_PROTECTED.KEUQQPAT_AWR_VN_DFLT_PAT || 'snapshot
19669a19732
>       
19671c19734,19751
<      'select  round(nvl(sum((nvl(lead_begin_intr_time,end_interval_time)
---
>      'WITH snaps AS (
>         SELECT instance_number, snap_id, 
>                CASE WHEN end_interval_time_tz IS NOT NULL 
>                     THEN CAST(end_interval_time_tz AS TIMESTAMP(3))
>                     ELSE end_interval_time END as end_interval_time,
>                CASE WHEN end_interval_time_tz IS NOT NULL 
>                     THEN ( 
>     CAST((begin_interval_time_tz at time zone ''UTC'') AS TIMESTAMP(3)) +
>     (CAST(end_interval_time_tz as TIMESTAMP(3)) - CAST((
>      end_interval_time_tz at time zone ''UTC'') AS TIMESTAMP(3)))                        
>                     )
>                     ELSE begin_interval_time END as begin_interval_time
>         FROM ' || DBMS_UMF_PROTECTED.KEUQQPAT_AWR_VN_DFLT_PAT || 'snapshot
>         WHERE  dbid = :dbid
>           AND   instance_number MEMBER OF :inst_num_list
>           AND   snap_id between :bid and :eid
>         )
>     select  round(nvl(sum((nvl(lead_begin_intr_time,end_interval_time)
19689,19693c19769,19770
<                from   ' || DBMS_UMF_PROTECTED.KEUQQPAT_AWR_VN_DFLT_PAT
<                         || 'ash_snapshot
<                where  dbid = :dbid
<                 and   instance_number MEMBER OF :inst_num_list
<                 and   snap_id between :bid and :eid)
---
>                from snaps
>        )
24634c24711
<       FAIL_IF_UNSUPPORTED(REPORT_ID_DIFF_GLOBAL, FALSE,
---
>       FAIL_IF_UNSUPPORTED(REPORT_ID_DIFF_GLOBAL, TRUE,
SYS.DBMS_USER_CERTS - PACKAGE BODY (RU):
5c5
<     CERT_GUID        OUT  RAW)
---
>     CERT_ID          OUT  RAW)
12c12
<                  CERT_GUID      OCIRAW,         CERT_GUID     INDICATOR SB2)
---
>                  CERT_ID        OCIRAW,         CERT_ID       INDICATOR SB2)
16c16
<     CERT_GUID        IN   RAW)
---
>     CERT_ID          IN   RAW)
22c22
<                  CERT_GUID      OCIRAW,         CERT_GUID     INDICATOR SB2)
---
>                  CERT_ID        OCIRAW,         CERT_ID       INDICATOR SB2)
SYS.DBMS_XSTREAM_GG_INTERNAL - PACKAGE BODY (RU):
63a64,69
>     
>     IF (NOT DBMS_CAPTURE_ADM_INTERNAL.IS_NEW_INSTANCE_ALLOWED AND
>         DBMS_XSTREAM_GG_ADM.IS_GOLDENGATE) THEN
>       DBMS_LOGREP_UTIL.RAISE_SYSTEM_ERROR(-23604);
>     END IF;
> 
SYS.DBMS_XSTREAM_UTL_IVK - PACKAGE BODY (RU):
883a884,893
>     
>     IF (DBMS_XSTREAM_GG_ADM.IS_GOLDENGATE AND
>         (TAB_CNT = 0 AND SCH_CNT = 0)) THEN
>       
>       DBMS_STREAMS_ADM_UTL.REMOVE_STREAMS_RULE(NULL, NULL, NULL, 
>            CANON_CAPTURE, SOURCE_DB);
>       DBMS_STREAMS_ADM_UTL.REMOVE_STREAMS_RULE(NULL, NULL, NULL,
>            CANON_SVR_NAME, SOURCE_DB);
>     END IF;
> 
1137a1148
>     PURPOSE                 DBA_CAPTURE.PURPOSE%TYPE;
1288a1300,1315
> 
>     
>     JUNK_NUM := SYS.DBMS_LOGREP_UTIL.QUERY_DBA_CAPTURE2(
>           IN_CAPTURE_NAME => CANON_CAPTURE,
>           OUT_SOURCE_DATABASE => JUNK_CHAR,
>           OUT_ROOT_DATABASE => JUNK_CHAR,
>           OUT_RULE_SET_NAME => JUNK_CHAR,
>           OUT_RULE_SET_OWNER => JUNK_CHAR,
>           OUT_NEGATIVE_RULE_SET_NAME => JUNK_CHAR,
>           OUT_NEGATIVE_RULE_SET_OWNER => JUNK_CHAR,
>           OUT_CAPTURE_TYPE => JUNK_CHAR,
>           OUT_PURPOSE => PURPOSE);
> 
>     IF (PURPOSE = 'GoldenGate Capture') THEN
>       DBMS_XSTREAM_GG_ADM.IS_GOLDENGATE := TRUE;
>     END IF;
SYS.PRVT_COMPRESSION - PACKAGE BODY (RU):
1888a1889,1892
>     
>     
>     INDEX_NAME_ALPHANUM        VARCHAR2(255);
>   
2150a2155,2163
>     
>     
>     
>     
>     
>     
>     
>     INDEX_NAME_ALPHANUM := REGEXP_REPLACE(SAFE_INDEXNAME, '[^A-Za-z0-9]'); 
>     TEMP_INDEX := COMP_TMP_OBJ_PREFIX || SUBSTR(INDEX_NAME_ALPHANUM, 1, 26);
2152d2164
<     TEMP_INDEX :=  COMP_TMP_OBJ_PREFIX || TEMP_INDEX;
SYS.DBMS_FEATURE_REGISTER_ALLFEAT - PROCEDURE (RU):
4118,4120c4118,4119
<        'select count(*), NULL, NULL ' ||
<         'from x$kpoxft where KPOXFTCLFLIST ' ||
<         'like ''%Application Continuity%'')';
---
>        'select p, null, null from (select count(*) p from x$kpoxft '
>         || ' where KPOXFTCLFLIST like ''%Application Continuity%'')';
SYS.EXECASUSERID - PROCEDURE (19.10RUR):
14a15,23
>    INT_DDL      VARCHAR2(10);
>    INT_DDL2     VARCHAR2(10);
>    HAS_PWD      NUMBER;
>    PWSTART      NUMBER;
>    CAT_CHECK    VARCHAR2(4000);
>    LOC_CHECK    VARCHAR2(4000);
>    CAT_LEN      NUMBER;
>    LOC_LEN      NUMBER;
>    USE_LINK     VARCHAR2(50) := 'SYSLINK';
15a25,64
> 	
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>     
SYS.LOGMNR$ALWAYSSUPLOG_PROC - PROCEDURE (RU):
273,275c273,275
<   SELECT (CASE WHEN SUPPLEMENTAL_LOG_DATA_MIN != 'NO' THEN 1 ELSE 0 END), 
<          (CASE WHEN SUPPLEMENTAL_LOG_DATA_PK = 'YES' THEN 1 ELSE 0 END), 
<          (CASE WHEN SUPPLEMENTAL_LOG_DATA_ALL = 'YES' THEN 1 ELSE 0 END)
---
>   SELECT (CASE WHEN MINIMAL != 'NO' THEN 1 ELSE 0 END), 
>          (CASE WHEN PRIMARY_KEY = 'YES' THEN 1 ELSE 0 END), 
>          (CASE WHEN ALL_COLUMN = 'YES' THEN 1 ELSE 0 END)
277c277
<   FROM V$DATABASE;
---
>   FROM DBA_SUPPLEMENTAL_LOGGING;
SYS.JDOM_T - TYPE (RU):
16,19c16,20
<   MEMBER FUNCTION  stringify      return VARCHAR2,
<   MEMBER FUNCTION  to_String      return VARCHAR2,
<   MEMBER FUNCTION  to_Clob(c CLOB) return CLOB,
<   MEMBER FUNCTION  to_Blob(b BLOB) return BLOB,
---
>   MEMBER FUNCTION  stringify                          return VARCHAR2,
>   MEMBER FUNCTION  to_String                          return VARCHAR2,
>   MEMBER FUNCTION  to_Clob(c CLOB)                    return CLOB,
>   MEMBER FUNCTION  to_Blob(b BLOB)                    return BLOB,
>   MEMBER FUNCTION  to_Blob(b BLOB, format VARCHAR2)   return BLOB,
SYS.JSON_ELEMENT_T - TYPE (RU):
14a15,16
>    MEMBER FUNCTION  to_Blob(self IN JSON_ELEMENT_T,
>                             format IN VARCHAR2)          RETURN BLOB,
16a19,21
>    MEMBER PROCEDURE to_Blob(self IN OUT NOCOPY JSON_ELEMENT_T,
>                             b IN OUT NOCOPY BLOB,
>                             format IN VARCHAR2),
SYS.JSON_OBJECT_T - TYPE (RU):
1c1,2
< TYPE JSON_Object_T AUTHID CURRENT_USER UNDER JSON_Element_T(
---
> TYPE JSON_Object_T FORCE AUTHID CURRENT_USER
>                                                        UNDER JSON_Element_T(
SYS.JSON_SCALAR_T - TYPE (RU):
1c1,2
< TYPE JSON_Scalar_T AUTHID CURRENT_USER UNDER JSON_Element_T(
---
> TYPE JSON_Scalar_T FORCE AUTHID CURRENT_USER
>                                                        UNDER JSON_Element_T(
SYS.SODA_COLLECTION_T - TYPE (RU):
40c40,41
<     MEMBER FUNCTION insert_One_And_Get (document SODA_Document_T)
---
>     MEMBER FUNCTION insert_One_And_Get (document SODA_Document_T,
>                                         hint     VARCHAR2 DEFAULT NULL)
57c58,59
<     MEMBER FUNCTION save_And_Get (document SODA_Document_T)
---
>     MEMBER FUNCTION save_And_Get (document SODA_Document_T,
>                                   hint     VARCHAR2 DEFAULT NULL)
SYS.SODA_OPERATION_T - TYPE (RU):
7a8,16
>     MEMBER FUNCTION acquire_Lock
>     RETURN SODA_Operation_T,
> 
>     MEMBER FUNCTION as_Of_SCN (scn NUMBER)
>     RETURN SODA_Operation_T,
> 
>     MEMBER FUNCTION as_Of_Timestamp (tstamp VARCHAR2)
>     RETURN SODA_Operation_T,
> 
19a29,32
>     MEMBER FUNCTION get_Data_Guide (format    PLS_INTEGER DEFAULT 1,
>                                     flag      PLS_INTEGER DEFAULT 0)
>     RETURN CLOB,
> 
41c54,57
<     MEMBER FUNCTION version (version VARCHAR2)
---
>     MEMBER FUNCTION	version (version VARCHAR2)
>     RETURN SODA_Operation_T,
> 
>     MEMBER FUNCTION	hint (hint VARCHAR2)
SYS.JDOM_T - TYPE BODY (RU):
66a67,72
>   MEMBER FUNCTION to_Blob(b BLOB, format VARCHAR2) return BLOB IS EXTERNAL
>      name "toBlobWFormat" library DBMS_JDOM_LIB WITH CONTEXT
>      parameters(context, self, self INDICATOR sb2,
>                 b OCILobLocator, b INDICATOR sb2, format,
>                 RETURN DURATION OCIDuration, RETURN INDICATOR sb4, return);
> 
SYS.JSON_ELEMENT_T - TYPE BODY (RU):
93a94,99
>   MEMBER FUNCTION to_Blob(self IN JSON_ELEMENT_T,
>                           format IN VARCHAR2) RETURN BLOB AS
>   BEGIN
>     RETURN dom.to_Blob(null, format);
>   END;
> 
97a104,110
>   END;
> 
>   MEMBER PROCEDURE to_Blob(self IN OUT NOCOPY JSON_ELEMENT_T,
>                           b IN OUT NOCOPY BLOB,
>                           format IN VARCHAR2) AS
>   BEGIN
>     b := dom.to_Blob(b, format);
SYS.SODA_COLLECTION_T - TYPE BODY (RU):
39c39
<     EXTERNAL LANGUAGE C
---
>     EXTERNAL
145c145,146
<     MEMBER FUNCTION INSERT_ONE_AND_GET (DOCUMENT SODA_DOCUMENT_T)
---
>     MEMBER FUNCTION INSERT_ONE_AND_GET (DOCUMENT SODA_DOCUMENT_T,
>                                         HINT     VARCHAR2 DEFAULT NULL)
147c148
<     LANGUAGE C
---
>     EXTERNAL
155a157,158
>                 HINT                  OCISTRING,
>                 HINT       INDICATOR  SB2,
223c226,227
<     MEMBER FUNCTION SAVE_AND_GET (DOCUMENT SODA_DOCUMENT_T)
---
>     MEMBER FUNCTION SAVE_AND_GET (DOCUMENT SODA_DOCUMENT_T,
>                                   HINT     VARCHAR2 DEFAULT NULL)
225,226c229
<     EXTERNAL NAME "saveAndGet"
<     LANGUAGE C
---
>     EXTERNAL
227a231
>     NAME "saveAndGet"
233a238,239
>                 HINT                  OCISTRING,
>                 HINT       INDICATOR  SB2,
SYS.SODA_OPERATION_T - TYPE BODY (RU):
4a5,47
>     MEMBER FUNCTION ACQUIRE_LOCK
>     RETURN SODA_OPERATION_T IS
>     EXTERNAL NAME "lock"
>     LANGUAGE C
>     LIBRARY DBMS_SODAOPR_LIB
>     WITH CONTEXT
>     PARAMETERS (CONTEXT,
>                 SELF,
>                 SELF       INDICATOR  SB2,
>                 RETURN     DURATION   OCIDURATION,
>                 RETURN     INDICATOR  SB2,
>                 RETURN);
> 
>     MEMBER FUNCTION AS_OF_SCN (SCN NUMBER)
>     RETURN SODA_OPERATION_T IS
>     EXTERNAL NAME "asOfScn"
>     LANGUAGE C
>     LIBRARY DBMS_SODAOPR_LIB
>     WITH CONTEXT
>     PARAMETERS (CONTEXT,
>                 SELF,
>                 SELF       INDICATOR  SB2,
>                 SCN                   OCINUMBER,
>                 SCN        INDICATOR  SB2,
>                 RETURN     DURATION   OCIDURATION,
>                 RETURN     INDICATOR  SB2,
>                 RETURN);
> 
>     MEMBER FUNCTION AS_OF_TIMESTAMP (TSTAMP VARCHAR2)
>     RETURN SODA_OPERATION_T IS
>     EXTERNAL NAME "asOfTimestamp"
>     LANGUAGE C
>     LIBRARY DBMS_SODAOPR_LIB
>     WITH CONTEXT
>     PARAMETERS (CONTEXT,
>                 SELF,
>                 SELF       INDICATOR  SB2,
>                 TSTAMP                OCISTRING,
>                 TSTAMP     INDICATOR  SB2,
>                 RETURN     DURATION   OCIDURATION,
>                 RETURN     INDICATOR  SB2,
>                 RETURN);
> 
44a88,105
>     MEMBER FUNCTION GET_DATA_GUIDE(FORMAT    PLS_INTEGER DEFAULT 1,
>                                    FLAG      PLS_INTEGER DEFAULT 0)
>     RETURN CLOB IS
>     EXTERNAL
>     LIBRARY DBMS_SODAOPR_LIB
>     NAME "oprGetDataGuide"
>     WITH CONTEXT
>     PARAMETERS (CONTEXT,
>                 SELF,
>                 SELF       INDICATOR  SB2,
>                 FORMAT                UB4,
>                 FORMAT     INDICATOR  SB2,
>                 FLAG                  UB4,
>                 FLAG       INDICATOR  SB2,
>                 RETURN     DURATION   OCIDURATION,
>                 RETURN     INDICATOR  SB2,
>                 RETURN);
> 
172a234,249
> 
>     MEMBER FUNCTION HINT (HINT VARCHAR2)
>     RETURN SODA_OPERATION_T IS
>     EXTERNAL NAME "hint"
>     LANGUAGE C
>     LIBRARY DBMS_SODAOPR_LIB
>     WITH CONTEXT
>     PARAMETERS (CONTEXT,
>                 SELF,
>                 SELF       INDICATOR  SB2,
>                 HINT                  OCISTRING,
>                 HINT       INDICATOR  SB2,
>                 RETURN     DURATION   OCIDURATION,
>                 RETURN     INDICATOR  SB2,
>                 RETURN);
> 
SYS.ALL_BLOCKCHAIN_TABLES - VIEW (RU):
12c12
<            o.owner# = u.user# and
---
>            o.owner# = u.user# and bitand(t.spare7,power(2,7)) = power(2,7) and
SYS.ALL_SNAPSHOTS - VIEW (RU):
1c1
< select s."OWNER",s."NAME",s."TABLE_NAME",s."MASTER_VIEW",s."MASTER_OWNER",s."MASTER",s."MASTER_LINK",s."CAN_USE_LOG",s."UPDATABLE",s."REFRESH_METHOD",s."LAST_REFRESH",s."ERROR",s."FR_OPERATIONS",s."CR_OPERATIONS",s."TYPE",s."NEXT",s."START_WITH",s."REFRESH_GROUP",s."UPDATE_TRIG",s."UPDATE_LOG",s."QUERY",s."MASTER_ROLLBACK_SEG",s."STATUS",s."REFRESH_MODE",s."PREBUILT" from dba_snapshots s, sys.obj$ o, sys.user$ u
---
> select s."OWNER",s."NAME",s."TABLE_NAME",s."MASTER_VIEW",s."MASTER_OWNER",s."MASTER",s."MASTER_LINK",s."CAN_USE_LOG",s."UPDATABLE",s."REFRESH_METHOD",s."LAST_REFRESH",s."ERROR",s."FR_OPERATIONS",s."CR_OPERATIONS",s."TYPE",s."NEXT",s."START_WITH",s."REFRESH_GROUP",s."UPDATE_TRIG",s."UPDATE_LOG",s."QUERY",s."MASTER_ROLLBACK_SEG",s."STATUS",s."REFRESH_MODE",s."PREBUILT",s."SNAPID" from dba_snapshots s, sys.obj$ o, sys.user$ u
SYS.AUDIT_UNIFIED_POLICIES - VIEW (RU):
6c6
<               'NO', 'NO', NULL), AUDIT_ONLY_TOPLEVEL
---
>               'NO', 'NO', NULL), AUDIT_ONLY_TOPLEVEL, ORACLE_SUPPLIED
SYS.CDB_AUTO_INDEX_VERIFICATIONS - VIEW (RU):
1c1
< SELECT k."EXECUTION_NAME",k."SQL_ID",k."ORIGINAL_PLAN_HASH_VALUE",k."AUTO_INDEX_PLAN_HASH_VALUE",k."ORIGINAL_BUFFER_GETS",k."AUTO_INDEX_BUFFER_GETS",k."STATUS",k."CON_ID", k.CON$NAME, k.CDB$NAME, k.CON$ERRNUM, k.CON$ERRMSG FROM CONTAINERS("SYS"."DBA_AUTO_INDEX_VERIFICATIONS") k
---
> SELECT k."EXECUTION_NAME",k."SQL_ID",k."ORIGINAL_PLAN_HASH_VALUE",k."AUTO_INDEX_PLAN_HASH_VALUE",k."ORIGINAL_BUFFER_GETS",k."AUTO_INDEX_BUFFER_GETS",k."ORIGINAL_CPU_TIME",k."AUTO_INDEX_CPU_TIME",k."STATUS",k."CON_ID", k.CON$NAME, k.CDB$NAME, k.CON$ERRNUM, k.CON$ERRMSG FROM CONTAINERS("SYS"."DBA_AUTO_INDEX_VERIFICATIONS") k
SYS.CDB_CERTIFICATES - VIEW (RU):
1c1
< SELECT k."CERTIFICATE_GUID",k."USER_NAME",k."DISTINGUISHED_NAME",k."CERTIFICATE",k."CON_ID", k.CON$NAME, k.CDB$NAME, k.CON$ERRNUM, k.CON$ERRMSG FROM CONTAINERS("SYS"."DBA_CERTIFICATES") k
---
> SELECT k."CERTIFICATE_ID",k."USER_NAME",k."DISTINGUISHED_NAME",k."CERTIFICATE",k."CON_ID", k.CON$NAME, k.CDB$NAME, k.CON$ERRNUM, k.CON$ERRMSG FROM CONTAINERS("SYS"."DBA_CERTIFICATES") k
SYS.CDB_SNAPSHOTS - VIEW (RU):
1c1
< SELECT k."OWNER",k."NAME",k."TABLE_NAME",k."MASTER_VIEW",k."MASTER_OWNER",k."MASTER",k."MASTER_LINK",k."CAN_USE_LOG",k."UPDATABLE",k."REFRESH_METHOD",k."LAST_REFRESH",k."ERROR",k."FR_OPERATIONS",k."CR_OPERATIONS",k."TYPE",k."NEXT",k."START_WITH",k."REFRESH_GROUP",k."UPDATE_TRIG",k."UPDATE_LOG",k."MASTER_ROLLBACK_SEG",k."STATUS",k."REFRESH_MODE",k."PREBUILT",k."CON_ID", k.CON$NAME, k.CDB$NAME, k.CON$ERRNUM, k.CON$ERRMSG FROM CONTAINERS("SYS"."DBA_SNAPSHOTS") k
---
> SELECT k."OWNER",k."NAME",k."TABLE_NAME",k."MASTER_VIEW",k."MASTER_OWNER",k."MASTER",k."MASTER_LINK",k."CAN_USE_LOG",k."UPDATABLE",k."REFRESH_METHOD",k."LAST_REFRESH",k."ERROR",k."FR_OPERATIONS",k."CR_OPERATIONS",k."TYPE",k."NEXT",k."START_WITH",k."REFRESH_GROUP",k."UPDATE_TRIG",k."UPDATE_LOG",k."MASTER_ROLLBACK_SEG",k."STATUS",k."REFRESH_MODE",k."PREBUILT",k."SNAPID",k."CON_ID", k.CON$NAME, k.CDB$NAME, k.CON$ERRNUM, k.CON$ERRMSG FROM CONTAINERS("SYS"."DBA_SNAPSHOTS") k
SYS.DBA_AUTO_INDEX_VERIFICATIONS - VIEW (RU):
5a6,7
>   ai.n_arg3 original_cpu_time,
>   ai.n_arg4 auto_index_cpu_time,
16c18
<         l.finding_code
---
>         l.n_arg3, l.n_arg4, l.finding_code
SYS.DBA_BLOCKCHAIN_TABLES - VIEW (RU):
12c12
<            o.obj# = t.obj#
---
>            o.obj# = t.obj# and bitand(t.spare7,power(2,7)) = power(2,7)
SYS.DBA_GOLDENGATE_RULES - VIEW (RU):
5c5,6
<   r1.rule_owner, r1.rule_name, r1.rule_type, r1.rule_condition,
---
>   r1.rule_owner, r1.rule_name, r1.rule_type,
>   cast(null as varchar2(1)) rule_condition,
20a22,44
> union
> select streams_name component_name,
>   decode(streams_type, 1, 'CAPTURE',
>                        3, 'APPLY') component_type,
>   decode(object_type, 1, 'TABLE',
>                       2, 'SCHEMA',
>                       3, 'GLOBAL',
>                       4, 'PROCEDURE') component_rule_type,
>        null rule_set_owner, null rule_set_name, null rule_set_type,
>   rule_owner, rule_name,
>   decode(rule_type, 1, 'DML',
>                     2, 'DDL',
>                     3, 'PROCEDURE') rule_type,
>   null rule_condition, schema_name, object_name,
>   decode(include_tagged_lcr, 0, 'NO',
>                                      1, 'YES') include_tagged_lcr,
>   null subsetting_operation, dml_condition, source_database,
>   null original_rule_condition, null same_rule_condition,
>   r1.source_root_name, source_container_name
>   from sys.streams$_rules r1, repl$_dbname_mapping dm
>   where rule_owner is null and
>    r1.source_root_name = dm.source_root_name(+) and
>    r1.source_database = dm.source_database_name(+)
SYS.DBA_JOBS - VIEW (19.9RUR):
4c4
<     j.last_start_date LAST_DATE,
---
>     CAST(j.last_start_date AS DATE) LAST_DATE,
6c6,8
<     DECODE(BITAND(j.job_status,2), 2, j.last_start_date, NULL) THIS_DATE,
---
>     CAST(
>       DECODE(BITAND(j.job_status,2), 2, j.last_start_date, NULL)
>     AS DATE) THIS_DATE,
9c11
<     j.next_run_date NEXT_DATE,
---
>     CAST(j.next_run_date AS DATE) NEXT_DATE,
SYS.DBA_JOBS_RUNNING - VIEW (19.9RUR):
3c3
<     j.last_start_date LAST_DATE,
---
>     CAST(j.last_start_date AS DATE) LAST_DATE,
5c5,7
<     DECODE(BITAND(j.job_status,2), 2, j.last_start_date, NULL) THIS_DATE,
---
>     CAST(
>       DECODE(BITAND(j.job_status,2), 2, j.last_start_date, NULL)
>     AS DATE) THIS_DATE,
SYS.DBA_REFRESH - VIEW (RU):
38c38
<           CAST(s.start_date AS DATE) AS NEXT_DATE,
---
>           CAST(s.next_run_date AS DATE) AS NEXT_DATE,
SYS.DBA_REFRESH_CHILDREN - VIEW (RU):
49c49
<           CAST(s.start_date AS DATE)  AS NEXT_DATE,
---
>           CAST(s.next_run_date AS DATE)  AS NEXT_DATE,
SYS.DBA_SNAPSHOTS - VIEW (RU):
30c30,31
<        decode(bitand(s.flag,131072), 0, 'NO', 'YES')
---
>        decode(bitand(s.flag,131072), 0, 'NO', 'YES'),
>        s.snapid
SYS.DBA_SUPPLEMENTAL_LOGGING - VIEW (RU):
9c9,10
< where SUPPLEMENTAL_LOG_DATA_MIN = 'NO'
---
> where SUPPLEMENTAL_LOG_DATA_MIN = 'NO' and
>       sys_context( 'userenv', 'IS_PER_PDB_SUPPLEMENTAL_LOGGING') = 'FALSE'
11a13,14
> -- As MSL is set at ROOT, perPDB suplog will be disabled and no need to check
> -- "IS_PER_PDB_SUPPLEMENTAL_LOGGING"
28a32,33
> -- As MSL is set at ROOT, perPDB suplog will be disabled and no need to check
> -- "IS_PER_PDB_SUPPLEMENTAL_LOGGING"
50a56,117
> union
> --
> -- Now get suplog data for the cases when per-PDB suplog is enabled.
> --
> -- When per-PDB suplog is enabled,
> --   suplog must be disabled at ROOT, and
> --   '_enable_perpdb_suplog' must be TRUE
> -- For ROOT, return suplog from v$database, must be NO.
> select 'NO' MINIMAL,
>        'NO' PRIMARY_KEY,
>        'NO' UNIQUE_INDEX,
>        'NO' FOREIGN_KEY,
>        'NO' ALL_COLUMN,
>        'NO' PROCEDURAL,
>        'NO' SUBSET_REP
> from v$database a where
>       a.SUPPLEMENTAL_LOG_DATA_MIN = 'NO' and
>       sys_context( 'userenv', 'IS_PER_PDB_SUPPLEMENTAL_LOGGING') = 'TRUE' and
>       sys_context( 'userenv', 'CON_ID') = 1
> union
> -- Per-PD suplog is enabled,
> -- for non-ROOT, if there is no prop$ entry, or the suplog value in props$
> -- entry is 0, NO suplog is enabled for this container.
> select 'NO' MINIMAL,
>        'NO' PRIMARY_KEY,
>        'NO' UNIQUE_INDEX,
>        'NO' FOREIGN_KEY,
>        'NO' ALL_COLUMN,
>        'NO' PROCEDURAL,
>        'NO' SUBSET_REP
> from v$database a where
>       a.SUPPLEMENTAL_LOG_DATA_MIN = 'NO' and
>       sys_context( 'userenv', 'IS_PER_PDB_SUPPLEMENTAL_LOGGING') = 'TRUE' and
>       (not exists (select 1 from sys.props$
>                   where name = 'SUPPLEMENTAL_LOG_DATA')) and
>       sys_context( 'userenv', 'CON_ID') <> 1
> union
> -- Per-PDB suplog is enabled, for non-ROOT, if there is props$ entry,
> -- return PDB-level suplog level from props$
> -- Note: MSL will be NO if none of the following bit is set for this PDB:
> --    PK(0x1), UI(0x2), FK(0x4), MSL(0x8), ASL(0x20), PL(0x40), SR(0x400)
> --    (0x46f is 1135)
> select (case when bitand(to_number(b.value$), 1135) = 0
>                   then 'NO' else 'YES' end) MINIMAL,
>        (case when bitand(to_number(b.value$), 1) = 0
>                   then 'NO' else 'YES' end) PRIMARY_KEY,
>        (case when bitand(to_number(b.value$), 2) = 0
>                   then 'NO' else 'YES' end) UNIQUE_INDEX,
>        (case when bitand(to_number(b.value$), 4) = 0
>                   then 'NO' else 'YES' end) FOREIGN_KEY,
>        (case when bitand(to_number(b.value$), 32) = 0
>                   then 'NO' else 'YES' end) ALL_COLUMN,
>        (case when bitand(to_number(b.value$), 64) = 0
>                   then 'NO' else 'YES' end) PROCEDURAL,
>        (case when bitand(to_number(b.value$), 1024) = 0
>                   then 'NO' else 'YES' end) SUBSET_REP
> from v$database a, (select value$
>                     from sys.props$ where name = 'SUPPLEMENTAL_LOG_DATA') b
> where
>       a.SUPPLEMENTAL_LOG_DATA_MIN = 'NO' and
>       sys_context( 'userenv', 'IS_PER_PDB_SUPPLEMENTAL_LOGGING') = 'TRUE' and
>       sys_context( 'userenv', 'CON_ID') <> 1
SYS.INT$AUDIT_UNIFIED_POLICIES - VIEW (RU):
19c19,21
<        to_number(sys_context('USERENV', 'CON_ID'))
---
>        to_number(sys_context('USERENV', 'CON_ID')),
>        decode(bitand(pol.type, 512),
>               512, 'YES', 'NO')
48c50,52
<        to_number(sys_context('USERENV', 'CON_ID'))
---
>        to_number(sys_context('USERENV', 'CON_ID')),
>        decode(bitand(pol.type, 512),
>               512, 'YES', 'NO')
117c121,123
<        to_number(sys_context('USERENV', 'CON_ID'))
---
>        to_number(sys_context('USERENV', 'CON_ID')),
>        decode(bitand(pol.type, 512),
>               512, 'YES', 'NO')
145c151,153
<        to_number(sys_context('USERENV', 'CON_ID'))
---
>        to_number(sys_context('USERENV', 'CON_ID')),
>        decode(bitand(pol.type, 512),
>               512, 'YES', 'NO')
171c179,181
<        to_number(sys_context('USERENV', 'CON_ID'))
---
>        to_number(sys_context('USERENV', 'CON_ID')),
>        decode(bitand(pol.type, 512),
>               512, 'YES', 'NO')
195c205,207
<        to_number(sys_context('USERENV', 'CON_ID'))
---
>        to_number(sys_context('USERENV', 'CON_ID')),
>        decode(bitand(pol.type, 512),
>               512, 'YES', 'NO')
SYS.USER_BLOCKCHAIN_TABLES - VIEW (RU):
10c10
<            o.owner# = userenv('SCHEMAID')
---
>            o.owner# = userenv('SCHEMAID') and bitand(t.spare7,power(2,7)) = power(2,7)
SYS.USER_FLASHBACK_ARCHIVE_TABLES - VIEW (RU):
16c16
<    (t.FA# = (select FA# from SYS_FBA_USERS fp where fp.user# = u.USER#)))
---
>    (t.FA# IN (select FA# from SYS_FBA_USERS fp where fp.user# = u.USER#)))
SYS.USER_SNAPSHOTS - VIEW (RU):
1c1
< select s."OWNER",s."NAME",s."TABLE_NAME",s."MASTER_VIEW",s."MASTER_OWNER",s."MASTER",s."MASTER_LINK",s."CAN_USE_LOG",s."UPDATABLE",s."REFRESH_METHOD",s."LAST_REFRESH",s."ERROR",s."FR_OPERATIONS",s."CR_OPERATIONS",s."TYPE",s."NEXT",s."START_WITH",s."REFRESH_GROUP",s."UPDATE_TRIG",s."UPDATE_LOG",s."QUERY",s."MASTER_ROLLBACK_SEG",s."STATUS",s."REFRESH_MODE",s."PREBUILT" from dba_snapshots s, sys.user$ u
---
> select s."OWNER",s."NAME",s."TABLE_NAME",s."MASTER_VIEW",s."MASTER_OWNER",s."MASTER",s."MASTER_LINK",s."CAN_USE_LOG",s."UPDATABLE",s."REFRESH_METHOD",s."LAST_REFRESH",s."ERROR",s."FR_OPERATIONS",s."CR_OPERATIONS",s."TYPE",s."NEXT",s."START_WITH",s."REFRESH_GROUP",s."UPDATE_TRIG",s."UPDATE_LOG",s."QUERY",s."MASTER_ROLLBACK_SEG",s."STATUS",s."REFRESH_MODE",s."PREBUILT",s."SNAPID" from dba_snapshots s, sys.user$ u
SYS._auto_index_log - VIEW (RU):
14c14,16
<        o.attr9            n_arg2
---
>        o.attr9            n_arg2,
>        o.attr11           n_arg3,
>        o.attr12           n_arg4
XDB.DBMS_SODA_ADMIN - PACKAGE (RU):
205,206c205,206
<   -- Returns the statistics for a non-domain index on a collection as a JSON
<   -- text. Statistics contain information such as total size of the index, the
---
>   -- Returns the statistics for an index on a collection as a JSON text.
>   -- Statistics contain information such as type, total size of the index, the
212c212,213
<   -- Gathering statistics is not supported for domain indexes.
---
>   -- 'numRows', 'sampleSize' and 'lastAnalyzed' are reported for functional
>   -- index only, not for domain (search, spatial) index.
217a219
>   --   "type" : "FUNCTIONAL"    --> Type of the index
235a238,289
>   --
>   -- Returns the usage statistics for the current schema as a JSON text.
>   -- Statistics contain collection names, number of times it was accessed
>   -- and its rank. P_ACCESS_TYPE can be set to 'READ', 'WRITE' or 'ALL' to
>   -- filter based on access type. If P_SORT value is greater than 0, the array
>   -- is ranked in ascending order, if not it is descending.
>   --
>   -- A sample value returned by this API:
>   -- {
>   --   "collections": [
>   --     {
>   --       "name": "coll0",
>   --       "frequency": 6882558,
>   --       "rank": 1
>   --     },
>   --     {
>   --       "name": "coll5",
> 
>   --       "frequency": 133634,
>   --       "rank": 2
>   --     },
>   --     {
>   --       "name": "coll2",
>   --       "frequency": 23898,
>   --       "rank": 3
>   --     },
>   --     {
> 
>   --       "name": "coll1",
>   --       "frequency": 2633,
>   --       "rank": 4
>   --     },
> 
>   --     {
>   --       "name": "coll4",
>   --       "frequency": 568,
>   --       "rank": 5
> 
>   --     },
>   --     {
>   --       "name": "coll3",
>   --       "frequency": 120,
>   --       "rank": 6
>   --     }
>   --   ]
>   -- }
>   --
>   procedure LIST_USAGE_STATISTICS(P_ACCESS_TYPE   in   varchar2 default 'READ',
>                                   P_SORT          in   number   default 1,
>                                   P_LIMIT         in   number   default 100,
>                                   P_STATISTICS    out  varchar2);
> 
249a304,305
>   function IS_DEFAULT_ADB_COLLECTION(P_COLLECTION_NAME in nvarchar2)
>     return boolean;
XDB.DBMS_SODA_ADMIN - PACKAGE BODY (RU):
4234c4234
<     ||  '  where  t.owner = :sch_name'
---
>     ||  '  where  t.OWNER = :sch_name'
4302c4302,4303
<       V_LOB_TOTAL_SIZE := (V_LOB_TOTAL_BLOCKS - V_LOB_UNUSED_BLOCKS) * V_BLOCK_SIZE;
---
>       V_LOB_TOTAL_SIZE := (V_LOB_TOTAL_BLOCKS - V_LOB_UNUSED_BLOCKS) 
>                               * V_BLOCK_SIZE;
4328a4330,4331
>     V_IDX_TYPE                  VARCHAR2(128);
>     V_IDX_OWNER                 VARCHAR2(128);
4332c4335,4336
<     V_IDX_SEGMENT_TYPE          CONSTANT VARCHAR2(12) := 'INDEX';
---
>     V_LOB_SEGMENT_NAME          VARCHAR2(128);
>     V_IDX_SEGMENT_TYPE          VARCHAR2(12) := 'INDEX';
4339a4344
>     V_IDX_USED_BLOCKS           NUMBER;
4340a4346,4350
>     V_LOB_TOTAL_BLOCKS          NUMBER;
>     V_LOB_TOTAL_BYTES           NUMBER;
>     V_LOB_UNUSED_BLOCKS         NUMBER;
>     V_LOB_USED_BLOCKS           NUMBER;
>     V_LOB_UNUSED_BYTES          NUMBER;
4346a4357
>     V_CTX_STAT                  XMLTYPE;
4385,4386c4396,4397
<     ||  ' select  i.owner, ts.BLOCK_SIZE, i.NUM_ROWS,'
<     ||  '         i.SAMPLE_SIZE,'
---
>     ||  ' select  i.OWNER, ts.BLOCK_SIZE, i.NUM_ROWS,'
>     ||  '         i.SAMPLE_SIZE, i.ITYP_OWNER, ITYP_NAME,'
4400a4412,4413
>                          V_IDX_OWNER,
>                          V_IDX_TYPE,
4412a4426,4437
>     
>     IF V_IDX_OWNER = 'CTXSYS' AND  V_IDX_TYPE = 'CONTEXT_V2'
>     THEN
>       V_IDX_TYPE := 'SEARCH';
>     ELSIF V_IDX_OWNER = 'MDSYS' AND  V_IDX_TYPE = 'SPATIAL_INDEX'
>     THEN
>       V_IDX_TYPE := 'SPATIAL';
>     ELSIF V_IDX_OWNER IS NULL AND  V_IDX_TYPE IS NULL
>     THEN
>       V_IDX_TYPE := 'FUNCTIONAL';
>     END IF;
> 
4415a4441
>     V_STATS_OBJ.PUT('type', V_IDX_TYPE);
4417,4432d4442
<     V_STATS_OBJ.PUT('numRows', V_IDX_NUM_ROWS);
<     V_STATS_OBJ.PUT('sampleSize', V_IDX_SAMPLE_SIZE);
<     V_STATS_OBJ.PUT('lastAnalyzed', V_IDX_LAST_ANALYZED);
< 
<     
<     DBMS_SPACE.UNUSED_SPACE (
<       SEGMENT_OWNER              =>  V_IDX_SCHEMA_NAME,
<       SEGMENT_NAME               =>  V_IDX_SEGMENT_NAME,
<       SEGMENT_TYPE               =>  V_IDX_SEGMENT_TYPE,
<       TOTAL_BLOCKS               =>  V_IDX_TOTAL_BLOCKS,
<       TOTAL_BYTES                =>  V_IDX_TOTAL_BYTES,
<       UNUSED_BLOCKS              =>  V_IDX_UNUSED_BLOCKS,
<       UNUSED_BYTES               =>  V_IDX_UNUSED_BYTES,
<       LAST_USED_EXTENT_FILE_ID   =>  V_IDX_LASTUSEDEXTFILEID,
<       LAST_USED_EXTENT_BLOCK_ID  =>  V_IDX_LASTUSEDEXTBLOCKID,
<       LAST_USED_BLOCK            =>  V_IDX_LAST_USED_BLOCK );
4433a4444,4536
>     
>     IF  V_IDX_TYPE = 'FUNCTIONAL'
>     THEN
>       DBMS_SPACE.UNUSED_SPACE (
>         SEGMENT_OWNER              =>  V_IDX_SCHEMA_NAME,
>         SEGMENT_NAME               =>  V_IDX_SEGMENT_NAME,
>         SEGMENT_TYPE               =>  V_IDX_SEGMENT_TYPE,
>         TOTAL_BLOCKS               =>  V_IDX_TOTAL_BLOCKS,
>         TOTAL_BYTES                =>  V_IDX_TOTAL_BYTES,
>         UNUSED_BLOCKS              =>  V_IDX_UNUSED_BLOCKS,
>         UNUSED_BYTES               =>  V_IDX_UNUSED_BYTES,
>         LAST_USED_EXTENT_FILE_ID   =>  V_IDX_LASTUSEDEXTFILEID,
>         LAST_USED_EXTENT_BLOCK_ID  =>  V_IDX_LASTUSEDEXTBLOCKID,
>         LAST_USED_BLOCK            =>  V_IDX_LAST_USED_BLOCK );
>     
>         V_STATS_OBJ.PUT('numRows', V_IDX_NUM_ROWS);
>         V_STATS_OBJ.PUT('sampleSize', V_IDX_SAMPLE_SIZE);
>         V_STATS_OBJ.PUT('lastAnalyzed', V_IDX_LAST_ANALYZED);
>     
>     ELSIF  V_IDX_TYPE = 'SEARCH'
>     THEN
>       
>       V_SQLTEXT := ''
>       || 'select  XMLType(ctxsys.ctx_report.index_size(:idx, NULL, :fmt))'
>       || '  from  sys.dual';
>       EXECUTE IMMEDIATE  V_SQLTEXT
>                    INTO  V_CTX_STAT
>                   USING  V_IDX_NAME,
>                          'XML';
>       SELECT  XMLCAST(
>                 XMLQUERY('/CTXREPORT/INDEX_SIZE/SIZE_BLOCKS_ALLOCATED' 
>                       PASSING V_CTX_STAT RETURNING CONTENT) AS NUMBER),
>               XMLCAST(
>                 XMLQUERY('/CTXREPORT/INDEX_SIZE/SIZE_BLOCKS_USED' 
>                       PASSING V_CTX_STAT RETURNING CONTENT) AS NUMBER),
>               XMLCAST(
>                 XMLQUERY('/CTXREPORT/INDEX_SIZE/SIZE_BYTES_USED' 
>                       PASSING V_CTX_STAT RETURNING CONTENT) AS NUMBER)
>         INTO  V_IDX_TOTAL_BLOCKS,
>               V_IDX_USED_BLOCKS,
>               V_IDX_TOTAL_SIZE
>         FROM  SYS.DUAL;
>       V_IDX_UNUSED_BLOCKS := V_IDX_TOTAL_BLOCKS - V_IDX_USED_BLOCKS;
>     
>     ELSIF V_IDX_TYPE = 'SPATIAL'
>     THEN
>       
>       V_SQLTEXT := ''
>       ||  'select  sdo.SDO_INDEX_TABLE, l.SEGMENT_NAME'
>       ||  '  from  USER_SDO_INDEX_METADATA sdo, USER_INDEXES i, USER_LOBS l'
>       ||  ' where  i.TABLE_NAME = :obj_name'
>       ||  '   and  l.TABLE_NAME = i.TABLE_NAME'
>       ||  '   and  i.INDEX_NAME = sdo.SDO_INDEX_NAME'
>       ||  '   and  sdo.SDO_INDEX_TYPE = ''RTREE''';
>       EXECUTE IMMEDIATE  V_SQLTEXT
>                    INTO  V_IDX_SEGMENT_NAME,
>                          V_LOB_SEGMENT_NAME
>                   USING  V_TBL_SCHEMA_NAME;
>       
>       V_IDX_SEGMENT_TYPE := 'TABLE';
>       DBMS_SPACE.UNUSED_SPACE (
>         SEGMENT_OWNER              =>  V_IDX_SCHEMA_NAME,
>         SEGMENT_NAME               =>  V_IDX_SEGMENT_NAME,
>         SEGMENT_TYPE               =>  V_IDX_SEGMENT_TYPE,
>         TOTAL_BLOCKS               =>  V_IDX_TOTAL_BLOCKS,
>         TOTAL_BYTES                =>  V_IDX_TOTAL_BYTES,
>         UNUSED_BLOCKS              =>  V_IDX_UNUSED_BLOCKS,
>         UNUSED_BYTES               =>  V_IDX_UNUSED_BYTES,
>         LAST_USED_EXTENT_FILE_ID   =>  V_IDX_LASTUSEDEXTFILEID,
>         LAST_USED_EXTENT_BLOCK_ID  =>  V_IDX_LASTUSEDEXTBLOCKID,
>         LAST_USED_BLOCK            =>  V_IDX_LAST_USED_BLOCK );
>       
>       V_IDX_SEGMENT_TYPE := 'LOB';
>       DBMS_SPACE.UNUSED_SPACE (
>         SEGMENT_OWNER              =>  V_IDX_SCHEMA_NAME,
>         SEGMENT_NAME               =>  V_LOB_SEGMENT_NAME,
>         SEGMENT_TYPE               =>  V_IDX_SEGMENT_TYPE,
>         TOTAL_BLOCKS               =>  V_LOB_TOTAL_BLOCKS,
>         TOTAL_BYTES                =>  V_LOB_TOTAL_BYTES,
>         UNUSED_BLOCKS              =>  V_LOB_UNUSED_BLOCKS,
>         UNUSED_BYTES               =>  V_LOB_UNUSED_BYTES,
>         LAST_USED_EXTENT_FILE_ID   =>  V_IDX_LASTUSEDEXTFILEID,
>         LAST_USED_EXTENT_BLOCK_ID  =>  V_IDX_LASTUSEDEXTBLOCKID,
>         LAST_USED_BLOCK            =>  V_IDX_LAST_USED_BLOCK );
>       
>       V_IDX_TOTAL_BLOCKS := V_IDX_TOTAL_BLOCKS + V_LOB_TOTAL_BLOCKS;
>       V_IDX_UNUSED_BLOCKS := V_IDX_UNUSED_BLOCKS + V_LOB_UNUSED_BLOCKS;
>     END IF;
>     IF V_IDX_TOTAL_SIZE IS NULL
>     THEN
>       V_IDX_TOTAL_SIZE := (V_IDX_TOTAL_BLOCKS - V_IDX_UNUSED_BLOCKS) * 
>                              V_BLOCK_SIZE;
>     END IF;
4435d4537
<     V_IDX_TOTAL_SIZE := (V_IDX_TOTAL_BLOCKS - V_IDX_UNUSED_BLOCKS) * V_BLOCK_SIZE;
4444a4547,4561
>   PROCEDURE LIST_USAGE_STATISTICS(P_ACCESS_TYPE  IN   VARCHAR2 DEFAULT 'READ',
>                                   P_SORT         IN   NUMBER   DEFAULT 1,
>                                   P_LIMIT        IN   NUMBER   DEFAULT 100,
>                                   P_STATISTICS   OUT  VARCHAR2)
>   IS
>     V_OWNER      VARCHAR2(128) :=  SYS_CONTEXT('USERENV', 'CURRENT_USER');
>   BEGIN
> 
>     SYS.DBMS_SODA_UTIL.LIST_USAGE_STATISTICS(V_OWNER, P_STATISTICS,
>                                              P_ACCESS_TYPE, P_SORT, P_LIMIT);
> 
>   END LIST_USAGE_STATISTICS;
> 
>   
>   
4498a4616,4799
> 
>   FUNCTION IS_DEFAULT_ADB_COLLECTION(P_COLLECTION_NAME IN NVARCHAR2)
>   RETURN BOOLEAN
>   IS
>     V_COLLECTION_NAME NVARCHAR2(2000) := P_COLLECTION_NAME;
>     V_METADATA VARCHAR2(4000);
>     V_METADATA_O JSON_OBJECT_T;
>     V_KEYS JSON_KEY_LIST;
>     V_KEY VARCHAR2(128);
>     V_VALUE JSON_ELEMENT_T;
>     V_SECOND_KEYS JSON_KEY_LIST;
>     V_SECOND_KEY VARCHAR2(128);
>     V_SECOND_VALUE JSON_ELEMENT_T;
>   BEGIN
>     DBMS_SODA_ADMIN.DESCRIBE_COLLECTION(V_COLLECTION_NAME, V_METADATA);
>     IF (V_METADATA IS NULL) THEN
>       RETURN FALSE;
>     END IF;
>     V_METADATA_O := JSON_OBJECT_T.PARSE(V_METADATA);
> 
>     IF (V_SERVICE IS NULL) THEN
>       V_SERVICE := SYS.DBMS_SODA_UTIL.GETSERVICENAME;
>     END IF;
>     IF (NOT V_SERVICE IN ('DWCS', 'OLTP', 'PAAS', 'JDCS')) THEN
>       RETURN FALSE;
>     END IF;
> 
>     
>     V_KEYS := JSON_KEY_LIST('tableName', 'schemaName', 'keyColumn',
>                             'contentColumn', 'versionColumn',
>                             'lastModifiedColumn', 'creationTimeColumn',
>                             'readOnly');
>     FOR I IN 1 .. V_KEYS.COUNT
>     LOOP
>       V_KEY := V_KEYS(I);
>       V_VALUE := V_METADATA_O.GET(V_KEY);
>       IF (V_VALUE IS NULL) THEN
>         RETURN FALSE;
>       END IF;
>     END LOOP;
> 
>     
>     V_KEYS := V_METADATA_O.GET_KEYS;
>     FOR I IN 1 .. V_KEYS.COUNT
>     LOOP
>       V_KEY := V_KEYS(I);
>       V_VALUE := V_METADATA_O.GET(V_KEY);
>       IF (V_KEY = 'tableName') THEN
>         
>         NULL;
>       ELSIF (V_KEY = 'schemaName') THEN
>         
>         NULL;
>       ELSIF (V_KEY = 'keyColumn') THEN
>         V_SECOND_KEYS := JSON_OBJECT_T(V_VALUE).GET_KEYS();
>         FOR J IN 1 .. V_SECOND_KEYS.COUNT
>         LOOP
>           V_SECOND_KEY := V_SECOND_KEYS(J);
>           V_SECOND_VALUE := JSON_OBJECT_T(V_VALUE).GET(V_SECOND_KEY);
> 
>           IF (V_SECOND_KEY = 'name') THEN
>             IF (UPPER(V_SECOND_VALUE.TO_STRING()) != '"ID"') THEN
>               RETURN FALSE;
>             END IF;
>           ELSIF (V_SECOND_KEY = 'sqlType') THEN
>             IF (UPPER(V_SECOND_VALUE.TO_STRING()) != '"VARCHAR2"') THEN
>               RETURN FALSE;
>             END IF;
>           ELSIF (V_SECOND_KEY = 'maxLength') THEN
>             IF (V_SECOND_VALUE.TO_NUMBER() != '255') THEN
>               RETURN FALSE;
>             END IF;
>           ELSIF (V_SECOND_KEY = 'assignmentMethod') THEN
>             IF (UPPER(V_SECOND_VALUE.TO_STRING()) != '"UUID"') THEN
>               RETURN FALSE;
>             END IF;
>           
>           ELSE
>             RETURN FALSE;
>           END IF;
>         END LOOP;
>       ELSIF (V_KEY = 'contentColumn') THEN
>         V_SECOND_KEYS := JSON_OBJECT_T(V_VALUE).GET_KEYS();
>         FOR J IN 1 .. V_SECOND_KEYS.COUNT
>         LOOP
>           V_SECOND_KEY := V_SECOND_KEYS(J);
>           V_SECOND_VALUE := JSON_OBJECT_T(V_VALUE).GET(V_SECOND_KEY);
> 
>           IF (V_SECOND_KEY = 'name') THEN
>             IF (UPPER(V_SECOND_VALUE.TO_STRING()) != '"JSON_DOCUMENT"') THEN
>               RETURN FALSE;
>             END IF;
>           ELSIF (V_SECOND_KEY = 'sqlType') THEN
>             
>             IF (UPPER(V_SECOND_VALUE.TO_STRING()) = '"JSON"') THEN
>               NULL;
>             
>             ELSIF (UPPER(V_SECOND_VALUE.TO_STRING()) = '"BLOB"') THEN
>               IF (JSON_OBJECT_T(V_VALUE).GET('jsonFormat') IS NULL) THEN
>                 RETURN FALSE;
>               ELSIF (UPPER(JSON_OBJECT_T(V_VALUE).GET('jsonFormat').TO_STRING())
>                   != '"OSON"') THEN
>                 RETURN FALSE;
>               END IF;
>             
>             ELSE
>               RETURN FALSE;
>             END IF;
>           
>           ELSIF (V_SECOND_KEY = 'jsonFormat') THEN
>             IF (UPPER(V_SECOND_VALUE.TO_STRING()) != '"OSON"') THEN
>               RETURN FALSE;
>             ELSIF (UPPER(JSON_OBJECT_T(V_VALUE).GET('sqlType').TO_STRING())
>                    != '"BLOB"') THEN
>               RETURN FALSE;
>             END IF;
>           
>           ELSE
>             RETURN FALSE;
>           END IF;
>         END LOOP;
>       ELSIF (V_KEY = 'versionColumn') THEN
>         V_SECOND_KEYS := JSON_OBJECT_T(V_VALUE).GET_KEYS();
>         FOR J IN 1 .. V_SECOND_KEYS.COUNT
>         LOOP
>           V_SECOND_KEY := V_SECOND_KEYS(J);
>           V_SECOND_VALUE := JSON_OBJECT_T(V_VALUE).GET(V_SECOND_KEY);
> 
>           IF (V_SECOND_KEY = 'name') THEN
>             IF (UPPER(V_SECOND_VALUE.TO_STRING()) != '"VERSION"') THEN
>               RETURN FALSE;
>             END IF;
>           ELSIF (V_SECOND_KEY = 'method') THEN
>             IF (UPPER(V_SECOND_VALUE.TO_STRING()) != '"UUID"') THEN
>               RETURN FALSE;
>             END IF;
>           
>           ELSE
>             RETURN FALSE;
>           END IF;
>         END LOOP;
>       ELSIF (V_KEY = 'lastModifiedColumn') THEN
>         V_SECOND_KEYS := JSON_OBJECT_T(V_VALUE).GET_KEYS();
>         FOR J IN 1 .. V_SECOND_KEYS.COUNT
>         LOOP
>           V_SECOND_KEY := V_SECOND_KEYS(J);
>           V_SECOND_VALUE := JSON_OBJECT_T(V_VALUE).GET(V_SECOND_KEY);
> 
>           IF (V_SECOND_KEY = 'name') THEN
>             IF (UPPER(V_SECOND_VALUE.TO_STRING()) != '"LAST_MODIFIED"') THEN
>               RETURN FALSE;
>             END IF;
>           
>           ELSE
>             RETURN FALSE;
>           END IF;
>         END LOOP;
>       ELSIF (V_KEY = 'creationTimeColumn') THEN
>         V_SECOND_KEYS := JSON_OBJECT_T(V_VALUE).GET_KEYS();
>         FOR J IN 1 .. V_SECOND_KEYS.COUNT
>         LOOP
>           V_SECOND_KEY := V_SECOND_KEYS(J);
>           V_SECOND_VALUE := JSON_OBJECT_T(V_VALUE).GET(V_SECOND_KEY);
> 
>           IF (V_SECOND_KEY = 'name') THEN
>             IF (UPPER(V_SECOND_VALUE.TO_STRING()) != '"CREATED_ON"') THEN
>               RETURN FALSE;
>             END IF;
>           
>           ELSE
>             RETURN FALSE;
>           END IF;
>         END LOOP;
>       ELSIF (V_KEY = 'readOnly') THEN
>         IF (V_VALUE.TO_BOOLEAN != FALSE) THEN
>           RETURN FALSE;
>         END IF;
>       
>       ELSE
>         RETURN FALSE;
>       END IF;
>     END LOOP METADATA_VALIDATE_LOOP;
>     RETURN TRUE;
>   END IS_DEFAULT_ADB_COLLECTION;

Leave a Reply

Your email address will not be published.