This post is also available in: Português
I am quarterly writing a post dissecting the changes implemented by Oracle CPUs so we can understand better the modifications implemented by Oracle in our Databases.
To check previous changes, follow the links below:
- Dissecting 190716 BP, PSU, RU and RUR
- Dissecting 190416 BP, PSU, RU and RUR
- Dissecting 190115 BP, PSU, RU and RUR
- Dissecting 181016 BP, PSU, RU and RUR
- Dissecting 180717 BP, PSU, RU and RUR
- Dissecting 180417 BP, PSU, RU and RUR
- Dissecting 180116 BP, PSU, RU and RUR
- Dissecting 171017 BP, PSU, RU and RUR
So what oracle internal objects were changed in October 2019 - 191016?
VERSION PATCH OWNER TYPE TOTAL ---------- ---------- ------------------------------ --------------- ---------- 11.2.0.4 BP SYS PACKAGE BODY 1 11.2.0.4 PSU SYS PACKAGE BODY 1 12.1.0.2 BP SYS PACKAGE 2 12.1.0.2 BP SYS PACKAGE BODY 9 12.1.0.2 PSU DVSYS PACKAGE 1 12.1.0.2 PSU DVSYS PACKAGE BODY 2 12.1.0.2 PSU LBACSYS PACKAGE BODY 1 12.1.0.2 PSU SYS PACKAGE 1 12.1.0.2 PSU SYS PACKAGE BODY 1 12.2.0.1 RU SYS PACKAGE 2 12.2.0.1 RU SYS PACKAGE BODY 7 12.2.0.1 RU SYS VIEW 1 18.0.0.0 18.6RUR SYS PACKAGE 2 18.0.0.0 18.6RUR SYS PACKAGE BODY 1 18.0.0.0 18.7RUR SYS PACKAGE 2 18.0.0.0 18.7RUR SYS PACKAGE BODY 1 18.0.0.0 RU SYS PACKAGE 4 18.0.0.0 RU SYS PACKAGE BODY 5 18.0.0.0 RU XDB PACKAGE 1 18.0.0.0 RU XDB PACKAGE BODY 1 19.0.0.0 19.3RUR SYS PACKAGE 2 19.0.0.0 19.3RUR SYS PACKAGE BODY 2 19.0.0.0 19.4RUR SYS PACKAGE 2 19.0.0.0 19.4RUR SYS PACKAGE BODY 1 19.0.0.0 RU DVSYS PACKAGE 2 19.0.0.0 RU DVSYS PACKAGE BODY 2 19.0.0.0 RU MDSYS PACKAGE 7 19.0.0.0 RU MDSYS PACKAGE BODY 7 19.0.0.0 RU MDSYS TYPE BODY 1 19.0.0.0 RU SYS PACKAGE 6 19.0.0.0 RU SYS PACKAGE BODY 9 19.0.0.0 RU SYS TYPE BODY 1 19.0.0.0 RU SYS VIEW 1 19.0.0.0 RU XDB PACKAGE 1 19.0.0.0 RU XDB PACKAGE BODY 1
And created?
VERSION PATCH OWNER TYPE TOTAL ---------- ---------- ------------------------------ --------------- ---------- 19.0.0.0 RU DVSYS VIEW 1
P.S: Nothing was added for 11.2 / 12.1 / 12.2 / 18 in Oracle objects.
So which are exactly the objects modified by 191016?
VERSION PATCH OWNER TYPE NAME ACTION ---------- --------------- ------------------------------ --------------- ------------------------------ ------ 11.2.0.4 PSU & BP SYS PACKAGE BODY DBMS_RCVMAN MOD 12.1.0.2 BP SYS PACKAGE PRVT_COMPRESSION MOD 12.1.0.2 BP SYS PACKAGE BODY DBMS_QOPATCH MOD 12.1.0.2 BP SYS PACKAGE BODY DBMS_SNAP_INTERNAL MOD 12.1.0.2 BP SYS PACKAGE BODY DBMS_SQLPATCH MOD 12.1.0.2 BP SYS PACKAGE BODY DBMS_STATS MOD 12.1.0.2 BP SYS PACKAGE BODY DBMS_SYNC_REFRESH MOD 12.1.0.2 BP SYS PACKAGE BODY DBMS_XSTREAM_ADM_INTERNAL MOD 12.1.0.2 BP SYS PACKAGE BODY DBMS_XSTREAM_GG_INTERNAL MOD 12.1.0.2 BP SYS PACKAGE BODY PRVT_COMPRESSION MOD 12.1.0.2 PSU DVSYS PACKAGE DBMS_MACUTL MOD 12.1.0.2 PSU DVSYS PACKAGE BODY DBMS_MACADM MOD 12.1.0.2 PSU DVSYS PACKAGE BODY DBMS_MACUTL MOD 12.1.0.2 PSU LBACSYS PACKAGE BODY OLS_ENFORCEMENT MOD 12.1.0.2 PSU & BP SYS PACKAGE DBMS_RCVMAN MOD 12.1.0.2 PSU & BP SYS PACKAGE BODY DBMS_RCVMAN MOD 12.2.0.1 RU SYS PACKAGE DBMS_RCVMAN MOD 12.2.0.1 RU SYS PACKAGE DBMS_REDEFINITION_INTERNAL MOD 12.2.0.1 RU SYS PACKAGE BODY DBMS_HEAT_MAP_INTERNAL MOD 12.2.0.1 RU SYS PACKAGE BODY DBMS_RCVMAN MOD 12.2.0.1 RU SYS PACKAGE BODY DBMS_REDEFINITION MOD 12.2.0.1 RU SYS PACKAGE BODY DBMS_REDEFINITION_INTERNAL MOD 12.2.0.1 RU SYS PACKAGE BODY DBMS_STATS MOD 12.2.0.1 RU SYS PACKAGE BODY DBMS_STATS_ADVISOR MOD 12.2.0.1 RU SYS PACKAGE BODY PRVT_ILM MOD 12.2.0.1 RU SYS VIEW DBA_APPLY_ERROR MOD 18.0.0.0 RU SYS PACKAGE DBMS_RCVMAN MOD 18.0.0.0 RU SYS PACKAGE DBMS_REDEFINITION_INTERNAL MOD 18.0.0.0 RU SYS PACKAGE BODY DBMS_HEAT_MAP_INTERNAL MOD 18.0.0.0 RU SYS PACKAGE BODY DBMS_REDEFINITION MOD 18.0.0.0 RU SYS PACKAGE BODY DBMS_REDEFINITION_INTERNAL MOD 18.0.0.0 RU SYS PACKAGE BODY PRVT_ILM MOD 18.0.0.0 RU XDB PACKAGE DBMS_SODA_ADMIN MOD 18.0.0.0 RU XDB PACKAGE BODY DBMS_SODA_ADMIN MOD 18.0.0.0 RU & 18.7RUR & SYS PACKAGE DBMS_BACKUP_RESTORE MOD 18.6RUR 18.0.0.0 RU & 18.7RUR & SYS PACKAGE DBMS_REGISTRY MOD 18.6RUR 18.0.0.0 RU & 18.7RUR & SYS PACKAGE BODY DBMS_RCVMAN MOD 18.6RUR 19.0.0.0 RU DVSYS VIEW DBA_DV_COMMON_OPERATION_STATUS NEW 19.0.0.0 19.3RUR SYS PACKAGE BODY DBMS_DBFS_SFS MOD 19.0.0.0 RU DVSYS PACKAGE DBMS_MACADM MOD 19.0.0.0 RU DVSYS PACKAGE DBMS_MACUTL MOD 19.0.0.0 RU DVSYS PACKAGE BODY DBMS_MACADM MOD 19.0.0.0 RU DVSYS PACKAGE BODY DBMS_MACUTL MOD 19.0.0.0 RU MDSYS PACKAGE RDF_APIS_INTERNAL MOD 19.0.0.0 RU MDSYS PACKAGE SDO_SEM_INFERENCE MOD 19.0.0.0 RU MDSYS PACKAGE SEM_RDFCTX MOD 19.0.0.0 RU MDSYS PACKAGE SEM_RDFCTX_DR MOD 19.0.0.0 RU MDSYS PACKAGE S_SDO_RDF_INFO MOD 19.0.0.0 RU MDSYS PACKAGE S_SDO_RDF_INTERNAL MOD 19.0.0.0 RU MDSYS PACKAGE S_SDO_RDF_QUERY MOD 19.0.0.0 RU MDSYS PACKAGE BODY RDF_APIS_INTERNAL MOD 19.0.0.0 RU MDSYS PACKAGE BODY SDO_RDF MOD 19.0.0.0 RU MDSYS PACKAGE BODY SDO_RDF_INTERNAL MOD 19.0.0.0 RU MDSYS PACKAGE BODY SDO_SEM_INFERENCE MOD 19.0.0.0 RU MDSYS PACKAGE BODY SDO_SEM_INF_INTERNAL MOD 19.0.0.0 RU MDSYS PACKAGE BODY SEM_RDFCTX_DR MOD 19.0.0.0 RU MDSYS PACKAGE BODY S_SDO_RDF_INTERNAL MOD 19.0.0.0 RU MDSYS TYPE BODY SEMCONTEXTINDEXMETHODS MOD 19.0.0.0 RU SYS PACKAGE DBMS_ASH MOD 19.0.0.0 RU SYS PACKAGE PRVT_ASH_OMX MOD 19.0.0.0 RU SYS PACKAGE SDO_RDF_EXP_IMP MOD 19.0.0.0 RU SYS PACKAGE SDO_RDF_SYS MOD 19.0.0.0 RU SYS PACKAGE BODY DBMS_AQ_INV MOD 19.0.0.0 RU SYS PACKAGE BODY DBMS_ASH MOD 19.0.0.0 RU SYS PACKAGE BODY DBMS_ASH_INTERNAL MOD 19.0.0.0 RU SYS PACKAGE BODY DBMS_AUTO_INDEX_INTERNAL MOD 19.0.0.0 RU SYS PACKAGE BODY DBMS_HEAT_MAP_INTERNAL MOD 19.0.0.0 RU SYS PACKAGE BODY DBMS_SCHEDULER MOD 19.0.0.0 RU SYS PACKAGE BODY PRVT_ASH_OMX MOD 19.0.0.0 RU SYS PACKAGE BODY PRVT_ILM MOD 19.0.0.0 RU SYS TYPE BODY WRI$_REPT_ASH_OMX MOD 19.0.0.0 RU SYS VIEW DBA_AUTO_INDEX_EXECUTIONS MOD 19.0.0.0 RU XDB PACKAGE DBMS_SODA_ADMIN MOD 19.0.0.0 RU XDB PACKAGE BODY DBMS_SODA_ADMIN MOD 19.0.0.0 RU & 19.4RUR & SYS PACKAGE DBMS_BACKUP_RESTORE MOD 19.3RUR 19.0.0.0 RU & 19.4RUR & SYS PACKAGE DBMS_REGISTRY MOD 19.3RUR 19.0.0.0 RU & 19.4RUR & SYS PACKAGE BODY DBMS_RCVMAN MOD 19.3RUR
What changed for each? (click to see the changes)
- 11.2.0.4
- 12.1.0.2
- DVSYS.DBMS_MACUTL - PACKAGE 12cR1 (PSU)
- DVSYS.DBMS_MACADM - PACKAGE BODY 12cR1 (PSU)
- DVSYS.DBMS_MACUTL - PACKAGE BODY 12cR1 (PSU)
- LBACSYS.OLS_ENFORCEMENT - PACKAGE BODY 12cR1 (PSU)
- SYS.DBMS_RCVMAN - PACKAGE 12cR1 (PSU)
- SYS.DBMS_RCVMAN - PACKAGE 12cR1 (BP)
- SYS.PRVT_COMPRESSION - PACKAGE 12cR1 (BP)
- SYS.DBMS_QOPATCH - PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_RCVMAN - PACKAGE BODY 12cR1 (PSU)
- SYS.DBMS_RCVMAN - PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_SNAP_INTERNAL - PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_SQLPATCH - PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_STATS - PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_SYNC_REFRESH - PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_XSTREAM_ADM_INTERNAL - PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_XSTREAM_GG_INTERNAL - PACKAGE BODY 12cR1 (BP)
- SYS.PRVT_COMPRESSION - PACKAGE BODY 12cR1 (BP)
- 12.2.0.1
- SYS.DBMS_RCVMAN - PACKAGE 12cR2 (RU)
- SYS.DBMS_REDEFINITION_INTERNAL - PACKAGE 12cR2 (RU)
- SYS.DBMS_HEAT_MAP_INTERNAL - PACKAGE BODY 12cR2 (RU)
- SYS.DBMS_RCVMAN - PACKAGE BODY 12cR2 (RU)
- SYS.DBMS_REDEFINITION - PACKAGE BODY 12cR2 (RU)
- SYS.DBMS_REDEFINITION_INTERNAL - PACKAGE BODY 12cR2 (RU)
- SYS.DBMS_STATS - PACKAGE BODY 12cR2 (RU)
- SYS.DBMS_STATS_ADVISOR - PACKAGE BODY 12cR2 (RU)
- SYS.PRVT_ILM - PACKAGE BODY 12cR2 (RU)
- SYS.DBA_APPLY_ERROR - VIEW 12cR2 (RU)
- 18.0.0.0
- SYS.DBMS_BACKUP_RESTORE - PACKAGE 18c (18.7RUR)
- SYS.DBMS_BACKUP_RESTORE - PACKAGE 18c (RU)
- SYS.DBMS_BACKUP_RESTORE - PACKAGE 18c (18.6RUR)
- SYS.DBMS_RCVMAN - PACKAGE 18c (RU)
- SYS.DBMS_REDEFINITION_INTERNAL - PACKAGE 18c (RU)
- SYS.DBMS_REGISTRY - PACKAGE 18c (RU)
- SYS.DBMS_REGISTRY - PACKAGE 18c (18.6RUR)
- SYS.DBMS_REGISTRY - PACKAGE 18c (18.7RUR)
- SYS.DBMS_HEAT_MAP_INTERNAL - PACKAGE BODY 18c (RU)
- SYS.DBMS_RCVMAN - PACKAGE BODY 18c (18.6RUR)
- SYS.DBMS_RCVMAN - PACKAGE BODY 18c (18.7RUR)
- SYS.DBMS_RCVMAN - PACKAGE BODY 18c (RU)
- SYS.DBMS_REDEFINITION - PACKAGE BODY 18c (RU)
- SYS.DBMS_REDEFINITION_INTERNAL - PACKAGE BODY 18c (RU)
- SYS.PRVT_ILM - PACKAGE BODY 18c (RU)
- XDB.DBMS_SODA_ADMIN - PACKAGE 18c (RU)
- XDB.DBMS_SODA_ADMIN - PACKAGE BODY 18c (RU)
- 19.0.0.0
- DVSYS.DBMS_MACADM - PACKAGE 19c (RU)
- DVSYS.DBMS_MACUTL - PACKAGE 19c (RU)
- DVSYS.DBMS_MACADM - PACKAGE BODY 19c (RU)
- DVSYS.DBMS_MACUTL - PACKAGE BODY 19c (RU)
- DVSYS.DBA_DV_COMMON_OPERATION_STATUS - VIEW 19c (RU)
- MDSYS.RDF_APIS_INTERNAL - PACKAGE 19c (RU)
- MDSYS.SDO_SEM_INFERENCE - PACKAGE 19c (RU)
- MDSYS.SEM_RDFCTX - PACKAGE 19c (RU)
- MDSYS.SEM_RDFCTX_DR - PACKAGE 19c (RU)
- MDSYS.S_SDO_RDF_INFO - PACKAGE 19c (RU)
- MDSYS.S_SDO_RDF_INTERNAL - PACKAGE 19c (RU)
- MDSYS.S_SDO_RDF_QUERY - PACKAGE 19c (RU)
- MDSYS.RDF_APIS_INTERNAL - PACKAGE BODY 19c (RU)
- MDSYS.SDO_RDF - PACKAGE BODY 19c (RU)
- MDSYS.SDO_RDF_INTERNAL - PACKAGE BODY 19c (RU)
- MDSYS.SDO_SEM_INFERENCE - PACKAGE BODY 19c (RU)
- MDSYS.SDO_SEM_INF_INTERNAL - PACKAGE BODY 19c (RU)
- MDSYS.SEM_RDFCTX_DR - PACKAGE BODY 19c (RU)
- MDSYS.S_SDO_RDF_INTERNAL - PACKAGE BODY 19c (RU)
- MDSYS.SEMCONTEXTINDEXMETHODS - TYPE BODY 19c (RU)
- SYS.DBMS_ASH - PACKAGE 19c (RU)
- SYS.DBMS_BACKUP_RESTORE - PACKAGE 19c (19.4RUR)
- SYS.DBMS_BACKUP_RESTORE - PACKAGE 19c (RU)
- SYS.DBMS_BACKUP_RESTORE - PACKAGE 19c (19.3RUR)
- SYS.DBMS_REGISTRY - PACKAGE 19c (19.4RUR)
- SYS.DBMS_REGISTRY - PACKAGE 19c (19.3RUR)
- SYS.DBMS_REGISTRY - PACKAGE 19c (RU)
- SYS.PRVT_ASH_OMX - PACKAGE 19c (RU)
- SYS.SDO_RDF_EXP_IMP - PACKAGE 19c (RU)
- SYS.SDO_RDF_SYS - PACKAGE 19c (RU)
- SYS.DBMS_AQ_INV - PACKAGE BODY 19c (RU)
- SYS.DBMS_ASH - PACKAGE BODY 19c (RU)
- SYS.DBMS_ASH_INTERNAL - PACKAGE BODY 19c (RU)
- SYS.DBMS_AUTO_INDEX_INTERNAL - PACKAGE BODY 19c (RU)
- SYS.DBMS_DBFS_SFS - PACKAGE BODY 19c (19.3RUR)
- SYS.DBMS_HEAT_MAP_INTERNAL - PACKAGE BODY 19c (RU)
- SYS.DBMS_RCVMAN - PACKAGE BODY 19c (RU)
- SYS.DBMS_RCVMAN - PACKAGE BODY 19c (19.3RUR)
- SYS.DBMS_RCVMAN - PACKAGE BODY 19c (19.4RUR)
- SYS.DBMS_SCHEDULER - PACKAGE BODY 19c (RU)
- SYS.PRVT_ASH_OMX - PACKAGE BODY 19c (RU)
- SYS.PRVT_ILM - PACKAGE BODY 19c (RU)
- SYS.WRI$_REPT_ASH_OMX - TYPE BODY 19c (RU)
- SYS.DBA_AUTO_INDEX_EXECUTIONS - VIEW 19c (RU)
- XDB.DBMS_SODA_ADMIN - PACKAGE 19c (RU)
- XDB.DBMS_SODA_ADMIN - PACKAGE BODY 19c (RU)
Changed Objects
P.S:
> = Added Lines
< = Removed Lines
11.2.0.4
563c563 < NULL COMPLETION_TIME, --- > BDF.COMPLETION_TIME COMPLETION_TIME,
563c563 < NULL COMPLETION_TIME, --- > BDF.COMPLETION_TIME COMPLETION_TIME,
12.1.0.2
463a464,472 > /** > * Checks whether the given role is enabled in the current session. > * > * @param p_role Role to check > * @return TRUE if the role is enabled in the current session > */ > FUNCTION session_enabled_role(p_role IN VARCHAR2) > RETURN BOOLEAN; > 497a507,515 > > /** > * Checks whether the given role is enabled in the current session. > * > * @param p_role Role to check > * @return Y if the role is enabled in the current session, N otherwise > */ > FUNCTION session_enabled_role_varchar(p_role IN VARCHAR2) > RETURN VARCHAR2;
3400c3400,3401 < IF DVSYS.DBMS_MACUTL.USER_HAS_ROLE_VARCHAR('DV_ACCTMGR', LOGIN_USER) = 'N' THEN --- > IF DVSYS.DBMS_MACUTL.USER_HAS_ROLE_VARCHAR('DV_ACCTMGR', LOGIN_USER) = 'N' AND > DVSYS.DBMS_MACUTL.SESSION_ENABLED_ROLE_VARCHAR('DV_ACCTMGR') = 'N' THEN
603a604,620 > FUNCTION SESSION_ENABLED_ROLE(P_ROLE IN VARCHAR2) > RETURN BOOLEAN > IS EXTERNAL > LANGUAGE C > NAME "kzvIsRoleEnabled" > LIBRARY DVSYS.KZV$UTL_LIBT > WITH CONTEXT > PARAMETERS > (CONTEXT, > P_ROLE STRING, > P_ROLE INDICATOR SB4, > P_ROLE LENGTH SB4, > > RETURN INDICATOR SB4, > RETURN SB2 > ); > 776a794,805 > FUNCTION SESSION_ENABLED_ROLE_VARCHAR(P_ROLE IN VARCHAR2) > RETURN VARCHAR2 IS > IS_ENABLED BOOLEAN ; > BEGIN > IS_ENABLED := DBMS_MACUTL.SESSION_ENABLED_ROLE(P_ROLE); > > IF ( IS_ENABLED ) THEN > RETURN G_YES; > ELSE > RETURN G_NO; > END IF; > END;
7a8,24 > FUNCTION SESSION_ENABLED_ROLE(P_ROLE IN VARCHAR2) > RETURN BOOLEAN > IS EXTERNAL > LANGUAGE C > NAME "kzvIsRoleEnabled" > LIBRARY LBACSYS.LBAC$EVENT_LIBT > WITH CONTEXT > PARAMETERS > (CONTEXT, > P_ROLE STRING, > P_ROLE INDICATOR SB4, > P_ROLE LENGTH SB4, > > RETURN INDICATOR SB4, > RETURN SB2 > ); > 14a32,39 > > > > IF (LBACDBA_ROLE_COUNT + DVOWNER_ROLE_COUNT) < 1 THEN > IF (SESSION_ENABLED_ROLE('DV_OWNER')) THEN > DVOWNER_ROLE_COUNT := 1; > END IF; > END IF;
1232c1232,1234 < -- by the find functions. --- > -- by the find functions. This tag is also used by report/delete obsolete > -- functions to restrict what backups to consider and what backups to filter > -- for backup optimization. 1236c1238 < -- tag of the datafile copies to be translated --- > -- tag of the datafile copies/backup sets to be translated 1237a1240,1241 > -- use_like > -- input tag parameter to be used similar to LIKE semantics in SQL 1239c1243 < PROCEDURE setTag(tag IN varchar2 DEFAULT NULL); --- > PROCEDURE setTag(tag IN varchar2 DEFAULT NULL, use_like IN number DEFAULT 0);
1224c1224,1226 < -- by the find functions. --- > -- by the find functions. This tag is also used by report/delete obsolete > -- functions to restrict what backups to consider and what backups to filter > -- for backup optimization. 1228c1230 < -- tag of the datafile copies to be translated --- > -- tag of the datafile copies/backup sets to be translated 1229a1232,1233 > -- use_like > -- input tag parameter to be used similar to LIKE semantics in SQL 1231c1235 < PROCEDURE setTag(tag IN varchar2 DEFAULT NULL); --- > PROCEDURE setTag(tag IN varchar2 DEFAULT NULL, use_like IN number DEFAULT 0);
39a40,41 > COMP_MIN_SAMPLE_BLOCKS CONSTANT NUMBER := 1000; >
23a24,28 > V_CODE NUMBER; > V_ERRM VARCHAR2(128); > > > 105a111,127 > --+ > PROCEDURE LOG_STATUS(MSG VARCHAR2) IS > BEGIN > IF DO_DEBUG THEN > DBMS_OUTPUT.PUT_LINE(MSG); > END IF; > DBMS_SYSTEM.KSDWRT(1,MSG); > > END; > > --+ > > > > > > 304,306d325 < IF DO_DEBUG THEN < DBMS_OUTPUT.PUT_LINE ('QPI: GOT lock at :' || SYSTIMESTAMP); < END IF; 309a329 > LOG_STATUS('QPI: Obtaining lock FAILED, qp_result=' || QP_RESULT || ' at : ' || SYSTIMESTAMP); 310a331,332 > ELSIF QP_RESULT = 0 OR QP_RESULT = 4 THEN > LOG_STATUS('QPI: Obtaining lock SUCCESSFUL, qp_result=' || QP_RESULT || ' at : ' || SYSTIMESTAMP); 333,334c355,359 < IF DO_DEBUG THEN < DBMS_OUTPUT.PUT_LINE ('QPI: Releasing the lock at :' || SYSTIMESTAMP); --- > > IF QP_RESULT = 0 THEN > LOG_STATUS('QPI: Releasing lock SUCCESSFUL, qp_result=' || QP_RESULT || ' at : ' || SYSTIMESTAMP); > ELSE > LOG_STATUS('QPI: Releasing lock FAILED, qp_result=' || QP_RESULT || ' at : ' || SYSTIMESTAMP); 431,432c456,457 < V_ERRM := SUBSTR(SQLERRM, 1, 64); < DBMS_OUTPUT.PUT_LINE('Error code ' || V_CODE || ': ' || V_ERRM); --- > V_ERRM := SUBSTR(SQLERRM, 1, 128); > LOG_STATUS('QPI: in config_oinv_jobs, Error code ' || V_CODE || ': ' || V_ERRM); 731a757 > PRAGMA AUTONOMOUS_TRANSACTION; 736,738c762 < IF DO_DEBUG THEN < DBMS_OUTPUT.PUT_LINE('QPI: In REFRESH_OPATCH_DATA'); < END IF; --- > LOG_STATUS('QPI: In REFRESH_OPATCH_DATA'); 744,746c768 < IF DO_DEBUG THEN < DBMS_OUTPUT.PUT_LINE('QPI: Latest xml inventory is loaded into table'); < END IF; --- > LOG_STATUS('QPI: Latest xml inventory is loaded into table'); 748a771,774 > LOG_STATUS('QPI: Caught error while querying opatch_xml_inv'); > V_CODE := SQLCODE; > V_ERRM := SUBSTR(SQLERRM, 1, 128); > LOG_STATUS('QPI: in REFRESH_OPATCH_DATA, ERROR code ' || V_CODE || ' : ' || V_ERRM); 809a836,842 > WHEN OTHERS THEN > V_CODE := SQLCODE; > V_ERRM := SUBSTR(SQLERRM, 1, 128); > LOG_STATUS('QPI: in get_opatch_install_info, ERROR code ' || V_CODE || ' : ' || V_ERRM); > QP_RESULT:= RELEASE_QOPATCH_LOCK(); > RAISE; > 858a892,898 > WHEN OTHERS THEN > V_CODE := SQLCODE; > V_ERRM := SUBSTR(SQLERRM, 1, 128); > LOG_STATUS('QPI: in get_opatch_install_info, ERROR code ' || V_CODE || ' : ' || V_ERRM); > QP_RESULT:= RELEASE_QOPATCH_LOCK(); > RAISE; > 915a956,962 > WHEN OTHERS THEN > V_CODE := SQLCODE; > V_ERRM := SUBSTR(SQLERRM, 1, 128); > LOG_STATUS('QPI: in IS_PATCH_INSTALLED, ERROR code ' || V_CODE || ' : ' || V_ERRM); > QP_RESULT:= RELEASE_QOPATCH_LOCK(); > RAISE; > 974a1022,1028 > WHEN OTHERS THEN > V_CODE := SQLCODE; > V_ERRM := SUBSTR(SQLERRM, 1, 128); > LOG_STATUS('QPI: in GET_OPATCH_DATA, ERROR code ' || V_CODE || ' : ' || V_ERRM); > QP_RESULT:= RELEASE_QOPATCH_LOCK(); > RAISE; > 1040a1095,1101 > WHEN OTHERS THEN > V_CODE := SQLCODE; > V_ERRM := SUBSTR(SQLERRM, 1, 128); > LOG_STATUS('QPI: in GET_OPATCH_BUGS, ERROR code ' || V_CODE || ' : ' || V_ERRM); > QP_RESULT:= RELEASE_QOPATCH_LOCK(); > RAISE; > 1061,1063c1122,1126 < IF DO_DEBUG THEN < DBMS_OUTPUT.PUT_LINE('QPI: In GET_OPATCH_FILES'); < END IF; --- > LOG_STATUS('QPI: In GET_OPATCH_FILES'); > > QP_RESULT := GET_QOPATCH_LOCK(); > > LOG_STATUS('QPI: Got lock get_opatch_files'); 1076a1140,1143 > > LOG_STATUS('QPI: Release lock get_opatch_files'); > QP_RESULT:= RELEASE_QOPATCH_LOCK(); > 1077a1145,1157 > > EXCEPTION > WHEN UNABLE_TO_LOCK THEN > RAISE_APPLICATION_ERROR(-20016, > 'Unable to get the lock : get_opatch_files : ' || QP_RESULT); > > WHEN OTHERS THEN > V_CODE := SQLCODE; > V_ERRM := SUBSTR(SQLERRM, 1, 128); > LOG_STATUS('QPI: in GET_OPATCH_FILES, ERROR code ' || V_CODE || ' : ' || V_ERRM); > QP_RESULT:= RELEASE_QOPATCH_LOCK(); > RAISE; > 1127a1208,1214 > WHEN OTHERS THEN > V_CODE := SQLCODE; > V_ERRM := SUBSTR(SQLERRM, 1, 128); > LOG_STATUS('QPI: in GET_OPATCH_COUNT, ERROR code ' || V_CODE || ' : ' || V_ERRM); > QP_RESULT:= RELEASE_QOPATCH_LOCK(); > RAISE; > 1180a1268,1274 > WHEN OTHERS THEN > V_CODE := SQLCODE; > V_ERRM := SUBSTR(SQLERRM, 1, 128); > LOG_STATUS('QPI: in GET_OPATCH_PREQS, ERROR code ' || V_CODE || ' : ' || V_ERRM); > QP_RESULT:= RELEASE_QOPATCH_LOCK(); > RAISE; > 1229a1324,1335 > EXCEPTION > WHEN UNABLE_TO_LOCK THEN > RAISE_APPLICATION_ERROR(-20016, > 'Unable to get the lock : get_opatch_install_info : ' || QP_RESULT); > > WHEN OTHERS THEN > V_CODE := SQLCODE; > V_ERRM := SUBSTR(SQLERRM, 1, 128); > LOG_STATUS('QPI: in GET_OPATCH_OLAYS, ERROR code ' || V_CODE || ' : ' || V_ERRM); > QP_RESULT:= RELEASE_QOPATCH_LOCK(); > RAISE; > 1284a1391,1397 > WHEN OTHERS THEN > V_CODE := SQLCODE; > V_ERRM := SUBSTR(SQLERRM, 1, 128); > LOG_STATUS('QPI: in PATCH_CONFLICT_DETECTION, ERROR code ' || V_CODE || ' : ' || V_ERRM); > QP_RESULT:= RELEASE_QOPATCH_LOCK(); > RAISE; > 1564,1565c1677,1678 < V_ERRM := SUBSTR(SQLERRM, 1, 64); < DBMS_OUTPUT.PUT_LINE('Error code ' || V_CODE || ': ' || V_ERRM); --- > V_ERRM := SUBSTR(SQLERRM, 1, 128); > LOG_STATUS('QPI: in add_oinv_job, Error code ' || V_CODE || ': ' || V_ERRM); 1926a2040,2043 > WHEN UNABLE_TO_LOCK THEN > RAISE_APPLICATION_ERROR(-20016, > 'Unable to get the lock : get_pending_activity : ' || QP_RESULT); > 1932,1933c2049,2052 < < WHEN UNABLE_TO_LOCK THEN --- > WHEN OTHERS THEN > V_CODE := SQLCODE; > V_ERRM := SUBSTR(SQLERRM, 1, 128); > LOG_STATUS('QPI: in get_pending_activity, ERROR code ' || V_CODE || ' : ' || V_ERRM); 1935,1937c2054 < IF DO_DEBUG THEN < DBMS_OUTPUT.PUT_LINE('QPI: org_node and inst resore 2:' || ORG_NODE || ':' || ORG_INST); < END IF; --- > LOG_STATUS('QPI: org_node and inst resore 2:' || ORG_NODE || ':' || ORG_INST); 1939,1945d2055 < < IF DO_DEBUG THEN < DBMS_OUTPUT.PUT_LINE('QPI: Unable to get the lock : get_pending_activity'); < END IF; < RAISE_APPLICATION_ERROR(-20016, 'Unable to get the lock : get_pending_activity :' || QP_RESULT ); < < WHEN OTHERS THEN 1949c2059 < --- > 2016a2127,2133 > WHEN OTHERS THEN > V_CODE := SQLCODE; > V_ERRM := SUBSTR(SQLERRM, 1, 128); > LOG_STATUS('QPI: in get_opatch_lsinventory, ERROR code ' || V_CODE || ' : ' || V_ERRM); > QP_RESULT:= RELEASE_QOPATCH_LOCK(); > RAISE; > 2359,2365c2476,2485 < WHEN NO_DATA_FOUND THEN < RAISE_APPLICATION_ERROR(-20005, 'Job ' || JOBNAME || ' cleanup failed'); < WHEN UNABLE_TO_LOCK THEN < RAISE_APPLICATION_ERROR(-20016, < 'Unable to get the lock : clean_metadata : ' || QP_RESULT); < WHEN OTHERS THEN < RAISE; --- > WHEN UNABLE_TO_LOCK THEN > RAISE_APPLICATION_ERROR(-20016, > 'Unable to get the lock : clean_metadata : ' || QP_RESULT); > WHEN OTHERS THEN > V_CODE := SQLCODE; > V_ERRM := SUBSTR(SQLERRM, 1, 128); > LOG_STATUS('QPI: in get_opatch_lsinventory, ERROR code ' || V_CODE || ' : ' || V_ERRM); > QP_RESULT:= RELEASE_QOPATCH_LOCK(); > RAISE; >
158a159 > TAG_LIKE NUMBER := 0; 587a589,591 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 610c614 < NULL COMPLETION_TIME, --- > BDF.COMPLETION_TIME COMPLETION_TIME, 865a870,872 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 956a964 > AND RESTORETAG IS NULL 1027a1036,1038 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1097a1109,1111 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1228a1243,1245 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1334a1352,1354 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1644a1665,1667 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1766a1790,1792 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1861a1888,1890 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1987a2017,2019 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2042a2075,2077 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2177a2213,2215 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2691a2730,2732 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2778a2820,2822 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2872a2917,2919 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2953a3001,3003 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3078a3129 > AND RESTORETAG IS NULL 3294a3346,3348 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3508a3563,3565 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3618a3676,3678 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3665a3726,3728 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3687a3751,3753 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3713a3780,3782 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3748a3818,3820 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3806a3879,3881 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3852a3928,3930 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3900a3979,3981 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3937a4019,4021 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 4027,4030c4111,4120 < DECODE(BITAND(FE.FESTA, (4096+128 +4 )), < 4096+4, 1, < 128+4, 1, < 0) --- > CASE WHEN FE.CON_ID > 1 AND > DECODE(BITAND(FE.FESTA, (4096+128)), 0, 0, > DECODE(FE.FECPS, FE1.PDBSTOPSCN, 1, 0)) > 0 THEN > 0 > ELSE > DECODE(BITAND(FE.FESTA, (4096+128+4)), > 4096+4, 1, > 128+4, 1, > 0) > END 4113,4116c4203,4212 < DECODE(BITAND(FE.FESTA, (4096+128 +4 )), < 4096+4, 1, < 128+4, 1, < 0) --- > CASE WHEN FE.CON_ID > 1 AND > DECODE(BITAND(FE.FESTA, (4096+128)), 0, 0, > DECODE(FE.FECPS, FE1.PDBSTOPSCN, 1, 0)) > 0 THEN > 0 > ELSE > DECODE(BITAND(FE.FESTA, (4096+128+4)), > 4096+4, 1, > 128+4, 1, > 0) > END 4199,4202c4295,4304 < DECODE(BITAND(FE.FESTA, (4096+128 +4 )), < 4096+4, 1, < 128+4, 1, < 0) --- > CASE WHEN FE.CON_ID > 1 AND > DECODE(BITAND(FE.FESTA, (4096+128)), 0, 0, > DECODE(FE.FECPS, FE1.PDBSTOPSCN, 1, 0)) > 0 THEN > 0 > ELSE > DECODE(BITAND(FE.FESTA, (4096+128+4)), > 4096+4, 1, > 128+4, 1, > 0) > END 4288,4291c4390,4399 < DECODE(BITAND(FE.FESTA, (4096+128 +4 )), < 4096+4, 1, < 128+4, 1, < 0) --- > CASE WHEN FE.CON_ID > 1 AND > DECODE(BITAND(FE.FESTA, (4096+128)), 0, 0, > DECODE(FE.FECPS, FE1.PDBSTOPSCN, 1, 0)) > 0 THEN > 0 > ELSE > DECODE(BITAND(FE.FESTA, (4096+128+4)), > 4096+4, 1, > 128+4, 1, > 0) > END 4378,4381c4486,4495 < DECODE(BITAND(FE.FESTA, (4096+128 +4 )), < 4096+4, 1, < 128+4, 1, < 0) --- > CASE WHEN FE.CON_ID > 1 AND > DECODE(BITAND(FE.FESTA, (4096+128)), 0, 0, > DECODE(FE.FECPS, FE1.PDBSTOPSCN, 1, 0)) > 0 THEN > 0 > ELSE > DECODE(BITAND(FE.FESTA, (4096+128+4)), > 4096+4, 1, > 128+4, 1, > 0) > END 4465,4468c4579,4588 < DECODE(BITAND(FE.FESTA, (4096+128 +4 )), < 4096+4, 1, < 128+4, 1, < 0) --- > CASE WHEN FE.CON_ID > 1 AND > DECODE(BITAND(FE.FESTA, (4096+128)), 0, 0, > DECODE(FE.FECPS, FE1.PDBSTOPSCN, 1, 0)) > 0 THEN > 0 > ELSE > DECODE(BITAND(FE.FESTA, (4096+128+4)), > 4096+4, 1, > 128+4, 1, > 0) > END 4554,4557c4674,4683 < DECODE(BITAND(FE.FESTA, (4096+128 +4 )), < 4096+4, 1, < 128+4, 1, < 0) --- > CASE WHEN FE.CON_ID > 1 AND > DECODE(BITAND(FE.FESTA, (4096+128)), 0, 0, > DECODE(FE.FECPS, FE1.PDBSTOPSCN, 1, 0)) > 0 THEN > 0 > ELSE > DECODE(BITAND(FE.FESTA, (4096+128+4)), > 4096+4, 1, > 128+4, 1, > 0) > END 5288,5291c5414,5423 < DECODE(BITAND(FE.FESTA, (4096+128 +4 )), < 4096+4, 1, < 128+4, 1, < 0) --- > CASE WHEN FE.CON_ID > 1 AND > DECODE(BITAND(FE.FESTA, (4096+128)), 0, 0, > DECODE(FE.FECPS, FE1.PDBSTOPSCN, 1, 0)) > 0 THEN > 0 > ELSE > DECODE(BITAND(FE.FESTA, (4096+128+4)), > 4096+4, 1, > 128+4, 1, > 0) > END 6801a6934,6936 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 6816a6952,6954 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 6950a7089,7091 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 6997a7139,7141 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7037a7182,7184 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7121a7269,7271 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7201a7352,7354 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7269a7423,7425 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7344a7501,7503 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7375a7535,7537 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7446a7609,7611 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7523a7689,7691 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7583a7752,7754 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7636a7808,7810 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7722a7897,7899 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7796a7974,7976 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7858a8039,8041 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7911a8095,8097 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7998a8185,8187 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8015a8205,8207 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8037c8229,8232 < WHERE (STATUS = 'A' OR STATUS = 'X')) DC --- > WHERE (STATUS = 'A' OR STATUS = 'X') > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG)))) DC 8066a8262,8264 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND XDF.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND XDF.TAG = RESTORETAG))) 8091a8290,8292 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8133a8335,8337 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND XAL.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND XAL.TAG = RESTORETAG))) 8200a8405,8407 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8230a8438,8440 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8298a8509,8511 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8402a8616,8618 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8445a8662,8664 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8690a8910,8912 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8916a9139,9141 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9035a9261,9263 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9254c9482,9483 < C1REC.TAG_CON = RESTORETAG OR --- > ((TAG_LIKE = 1 AND C1REC.TAG_CON LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND C1REC.TAG_CON = RESTORETAG)) OR 9368a9598 > 9464c9694,9695 < C1REC.TAG_CON = RESTORETAG OR --- > ((TAG_LIKE = 1 AND C1REC.TAG_CON LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND C1REC.TAG_CON = RESTORETAG)) OR 10556c10787 < IF (TAG IS NOT NULL AND NOT TAGMATCHREQUIRED) THEN --- > IF (TAG IS NOT NULL AND TAGMATCHREQUIRED) THEN 10561c10792,10793 < IF (TAG = LOCAL.TAG) THEN --- > IF ((TAG_LIKE = 1 AND LOCAL.TAG LIKE TAG) OR > (TAG_LIKE <> 1 AND LOCAL.TAG = TAG)) THEN 10577c10809,10810 < DEB(DEB_IN, 'tag does not match, continuing search'); --- > DEB(DEB_IN, 'tag does not match, continuing search:' || > LOCAL.TAG); 11268,11269c11501,11505 < (ACTION.TAG_CON <> RESTORETAG OR ACTION.TAG_CON IS NULL)) THEN < DEB(DEB_PRINT, 'isValidAction: tag mismatch - skipped:'); --- > (((TAG_LIKE = 1 AND ACTION.TAG_CON NOT LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND ACTION.TAG_CON <> RESTORETAG)) OR > ACTION.TAG_CON IS NULL)) THEN > DEB(DEB_PRINT, 'isValidAction: tag mismatch - skipped:' || > NVL(ACTION.TAG_CON, '<NUL>')); 12246c12482,12485 < IF (NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) THEN --- > IF ((TAG_LIKE = 1 AND > NVL(TAG, ' ') NOT LIKE NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) OR > (TAG_LIKE <> 1 AND > NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' ')))) THEN 13210a13450,13453 > > > > 13450c13693,13694 < IF (RMANCMD != OBSOLETECMD_T) THEN --- > IF (RMANCMD != OBSOLETECMD_T OR > (RESTORETAG IS NOT NULL AND RMANCMD = OBSOLETECMD_T)) THEN 13598d13841 < 13600,13601c13843 < ACTION.TYPE_CON = BACKUPSET_CON_T AND < RMANCMD != OBSOLETECMD_T ) THEN --- > ACTION.TYPE_CON = BACKUPSET_CON_T) THEN 13610c13852,13853 < IF (VALIDATIONREC.TAG = RESTORETAG OR --- > IF (((TAG_LIKE = 1 AND VALIDATIONREC.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND VALIDATIONREC.TAG = RESTORETAG)) OR 13670,13675d13912 < < IF (RMANCMD = OBSOLETECMD_T AND NOT ISVALIDACTION(ACTION)) THEN < DEB(DEB_EXIT, 'with action_SKIP'); < RETURN ACTION_SKIP; < END IF; < 17066c17303,17306 < IF (NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) THEN --- > IF ((TAG_LIKE = 1 AND > NVL(TAG, ' ') NOT LIKE NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) OR > (TAG_LIKE <> 1 AND > NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' ')))) THEN 17360a17601,17603 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 17638a17882,17884 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 17729a17976 > AND RESTORETAG IS NULL 17801a18049,18051 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 17871a18122,18124 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18440c18693,18694 < AL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)); --- > AL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)) > AND RESTORETAG IS NULL; 18482c18736,18739 < XAL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)); --- > XAL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)) > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))); 18529a18787 > AND RESTORETAG IS NULL 18580a18839,18841 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND XAL.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND XAL.TAG = RESTORETAG))) 18646a18908 > AND RESTORETAG IS NULL 18681a18944,18946 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18710a18976,18978 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18768c19036 < --- > AND RESTORETAG IS NULL 18799a19068,19070 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18824a19096,19098 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18899a19174 > AND RESTORETAG IS NULL 18938a19214,19216 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18970a19249,19251 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19404c19685,19686 < TAG IN VARCHAR2 DEFAULT NULL) --- > TAG IN VARCHAR2 DEFAULT NULL, > USE_LIKE IN NUMBER DEFAULT 0) 19406a19689,19694 > > > IF (NVL(TAG, ' ') <> NVL(RESTORETAG, ' ') AND RCVRECCURSOR1_C%ISOPEN) THEN > DEB(DEB_PRINT, 'closing cursor rcRecCursor_c'); > CLOSE RCVRECCURSOR1_C; > END IF; 19407a19696,19697 > TAG_LIKE := USE_LIKE; > DEB(DEB_PRINT, 'restoreTag='|| RESTORETAG || ',tag_like='|| TAG_LIKE); 24929a25220,25222 > > VALIDATIONREC VALIDBACKUPSETREC_T; > BS_RCVREC RCVREC_T; 25585a25879,25880 > <<NEXTROW>> > 25812a26108,26143 > END IF; > > > IF (LBREC.BACKUP_TYPE = BACKUPSET_TXT AND RESTORETAG IS NOT NULL) THEN > BS_RCVREC.BSKEY_CON := LBREC.BS_KEY; > BS_RCVREC.SETCOUNT_CON := LBREC.BS_COUNT; > BS_RCVREC.SETSTAMP_CON := LBREC.BS_STAMP; > BS_RCVREC.PIECECOUNT_CON := LBREC.BS_PIECES; > IF (LBREC.FILE_TYPE = ARCHIVEDLOG_TXT) THEN > BS_RCVREC.LOGLOWSCN_OBJ := LBREC.RL_FIRST_CHANGE#; > BS_RCVREC.LOGTHREAD_OBJ := LBREC.RL_THREAD#; > BS_RCVREC.LOGSEQUENCE_OBJ := LBREC.RL_SEQUENCE#; > ELSIF (LBREC.FILE_TYPE IN (SPFILE_TXT, CONTROLFILE_TXT)) THEN > BS_RCVREC.DFNUMBER_OBJ := 0; > BS_RCVREC.FROMSCN_ACT := 0; > ELSIF (LBREC.FILE_TYPE = DATAFILE_TXT) THEN > BS_RCVREC.DFNUMBER_OBJ := 0; > BS_RCVREC.FROMSCN_ACT := LBREC.DF_CHECKPOINT_CHANGE#; > IF (LBREC.DF_INCREMENTAL_CHANGE# = LBREC.DF_CREATION_CHANGE# OR > LBREC.BS_INCR_TYPE = FULL_TXT) THEN > BS_RCVREC.FROMSCN_ACT := 0; > ELSIF (LBREC.BS_INCR_TYPE <> FULL_TXT) THEN > BS_RCVREC.FROMSCN_ACT := LBREC.DF_INCREMENTAL_CHANGE#; > END IF; > END IF; > > IF VALIDATEBACKUPSET(BACKUPSETREC=> BS_RCVREC, > TAG => RESTORETAG, > TAGMATCHREQUIRED => TRUE, > CHECKDEVICEISALLOCATED => TRUE, > AVAILABLEMASK => BSAVAILABLE, > VALIDREC => VALIDATIONREC) <> SUCCESS THEN > DEB(DEB_IN, 'tag does not match: bs_key=' || LBREC.BS_KEY); > GOTO NEXTROW; > END IF; > 25907c26238,26239 < ELSIF (LISTBACKUPINMKS(LBSTATE.LBDFRECTABUS, LBREC, --- > ELSIF (LBREC.FILE_TYPE <> SPFILE_TXT AND > LISTBACKUPINMKS(LBSTATE.LBDFRECTABUS, LBREC, 27663c27995 < DEB(DEB_IN, 'tag does not match'); --- > DEB(DEB_IN, 'tag does not match for controlfile proxy copy'); 27988c28320 < DEB(DEB_EXIT, 'tag does not match'); --- > DEB(DEB_EXIT, 'tag does not match for proxy copy:'||BRLREC.TAG_CON); 28227,28239c28559,28565 < IF (RMANCMD = OBSOLETECMD_T) THEN < < < VALRC := SUCCESS; < ELSE < VALRC := VALIDATEBACKUPSET( < BACKUPSETREC => BSFREC, < TAG => RESTORETAG, < TAGMATCHREQUIRED => TRUE, < CHECKDEVICEISALLOCATED => TRUE, < AVAILABLEMASK => BSAVAILABLE, < VALIDREC => VALIDATEREC); < END IF; --- > VALRC := VALIDATEBACKUPSET( > BACKUPSETREC => BSFREC, > TAG => RESTORETAG, > TAGMATCHREQUIRED => TRUE, > CHECKDEVICEISALLOCATED => TRUE, > AVAILABLEMASK => BSAVAILABLE, > VALIDREC => VALIDATEREC); 28256,28265d28581 < ELSIF (RMANCMD = OBSOLETECMD_T) THEN < DEB(DEB_IN, ' Added bsfRec:'); < < RCVRECPUSH(BSFREC); < GETBS_STATUS := SUCCESS; < IF (LCOPIES > 1) THEN < LCOPIES := LCOPIES - 1; < ELSE < EXIT; < END IF; 28531a28848 > DEB(DEB_PRINT, 'getRA_likePattern='|| PATTERN);
147a148 > TAG_LIKE NUMBER := 0; 568a570,572 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 591c595 < NULL COMPLETION_TIME, --- > BDF.COMPLETION_TIME COMPLETION_TIME, 834a839,841 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 922a930 > AND RESTORETAG IS NULL 990a999,1001 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1057a1069,1071 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1187a1202,1204 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1292a1310,1312 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1600a1621,1623 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1721a1745,1747 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1816a1843,1845 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1940a1970,1972 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1994a2027,2029 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2128a2164,2166 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2627a2666,2668 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2713a2755,2757 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2807a2852,2854 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2888a2936,2938 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3013a3064 > AND RESTORETAG IS NULL 3229a3281,3283 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3443a3498,3500 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3553a3611,3613 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3600a3661,3663 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3622a3686,3688 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3648a3715,3717 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3683a3753,3755 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3737a3810,3812 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3783a3859,3861 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3831a3910,3912 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3868a3950,3952 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3958,3961c4042,4051 < DECODE(BITAND(FE.FESTA, (4096+128 +4 )), < 4096+4, 1, < 128+4, 1, < 0) --- > CASE WHEN FE.CON_ID > 1 AND > DECODE(BITAND(FE.FESTA, (4096+128)), 0, 0, > DECODE(FE.FECPS, FE1.PDBSTOPSCN, 1, 0)) > 0 THEN > 0 > ELSE > DECODE(BITAND(FE.FESTA, (4096+128+4)), > 4096+4, 1, > 128+4, 1, > 0) > END 4044,4047c4134,4143 < DECODE(BITAND(FE.FESTA, (4096+128 +4 )), < 4096+4, 1, < 128+4, 1, < 0) --- > CASE WHEN FE.CON_ID > 1 AND > DECODE(BITAND(FE.FESTA, (4096+128)), 0, 0, > DECODE(FE.FECPS, FE1.PDBSTOPSCN, 1, 0)) > 0 THEN > 0 > ELSE > DECODE(BITAND(FE.FESTA, (4096+128+4)), > 4096+4, 1, > 128+4, 1, > 0) > END 4130,4133c4226,4235 < DECODE(BITAND(FE.FESTA, (4096+128 +4 )), < 4096+4, 1, < 128+4, 1, < 0) --- > CASE WHEN FE.CON_ID > 1 AND > DECODE(BITAND(FE.FESTA, (4096+128)), 0, 0, > DECODE(FE.FECPS, FE1.PDBSTOPSCN, 1, 0)) > 0 THEN > 0 > ELSE > DECODE(BITAND(FE.FESTA, (4096+128+4)), > 4096+4, 1, > 128+4, 1, > 0) > END 4219,4222c4321,4330 < DECODE(BITAND(FE.FESTA, (4096+128 +4 )), < 4096+4, 1, < 128+4, 1, < 0) --- > CASE WHEN FE.CON_ID > 1 AND > DECODE(BITAND(FE.FESTA, (4096+128)), 0, 0, > DECODE(FE.FECPS, FE1.PDBSTOPSCN, 1, 0)) > 0 THEN > 0 > ELSE > DECODE(BITAND(FE.FESTA, (4096+128+4)), > 4096+4, 1, > 128+4, 1, > 0) > END 4309,4312c4417,4426 < DECODE(BITAND(FE.FESTA, (4096+128 +4 )), < 4096+4, 1, < 128+4, 1, < 0) --- > CASE WHEN FE.CON_ID > 1 AND > DECODE(BITAND(FE.FESTA, (4096+128)), 0, 0, > DECODE(FE.FECPS, FE1.PDBSTOPSCN, 1, 0)) > 0 THEN > 0 > ELSE > DECODE(BITAND(FE.FESTA, (4096+128+4)), > 4096+4, 1, > 128+4, 1, > 0) > END 4396,4399c4510,4519 < DECODE(BITAND(FE.FESTA, (4096+128 +4 )), < 4096+4, 1, < 128+4, 1, < 0) --- > CASE WHEN FE.CON_ID > 1 AND > DECODE(BITAND(FE.FESTA, (4096+128)), 0, 0, > DECODE(FE.FECPS, FE1.PDBSTOPSCN, 1, 0)) > 0 THEN > 0 > ELSE > DECODE(BITAND(FE.FESTA, (4096+128+4)), > 4096+4, 1, > 128+4, 1, > 0) > END 4485,4488c4605,4614 < DECODE(BITAND(FE.FESTA, (4096+128 +4 )), < 4096+4, 1, < 128+4, 1, < 0) --- > CASE WHEN FE.CON_ID > 1 AND > DECODE(BITAND(FE.FESTA, (4096+128)), 0, 0, > DECODE(FE.FECPS, FE1.PDBSTOPSCN, 1, 0)) > 0 THEN > 0 > ELSE > DECODE(BITAND(FE.FESTA, (4096+128+4)), > 4096+4, 1, > 128+4, 1, > 0) > END 5210,5213c5336,5345 < DECODE(BITAND(FE.FESTA, (4096+128 +4 )), < 4096+4, 1, < 128+4, 1, < 0) --- > CASE WHEN FE.CON_ID > 1 AND > DECODE(BITAND(FE.FESTA, (4096+128)), 0, 0, > DECODE(FE.FECPS, FE1.PDBSTOPSCN, 1, 0)) > 0 THEN > 0 > ELSE > DECODE(BITAND(FE.FESTA, (4096+128+4)), > 4096+4, 1, > 128+4, 1, > 0) > END 6723a6856,6858 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 6738a6874,6876 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 6872a7011,7013 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 6919a7061,7063 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 6959a7104,7106 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7043a7191,7193 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7123a7274,7276 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7191a7345,7347 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7266a7423,7425 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7297a7457,7459 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7368a7531,7533 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7445a7611,7613 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7505a7674,7676 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7558a7730,7732 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7644a7819,7821 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7718a7896,7898 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7780a7961,7963 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7833a8017,8019 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7920a8107,8109 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7937a8127,8129 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7959c8151,8154 < WHERE (STATUS = 'A' OR STATUS = 'X')) DC --- > WHERE (STATUS = 'A' OR STATUS = 'X') > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG)))) DC 7988a8184,8186 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND XDF.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND XDF.TAG = RESTORETAG))) 8013a8212,8214 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8055a8257,8259 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND XAL.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND XAL.TAG = RESTORETAG))) 8123a8328,8330 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8153a8361,8363 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8221a8432,8434 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8325a8539,8541 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8368a8585,8587 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8613a8833,8835 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8839a9062,9064 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8958a9184,9186 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9177c9405,9406 < C1REC.TAG_CON = RESTORETAG OR --- > ((TAG_LIKE = 1 AND C1REC.TAG_CON LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND C1REC.TAG_CON = RESTORETAG)) OR 9291a9521 > 9387c9617,9618 < C1REC.TAG_CON = RESTORETAG OR --- > ((TAG_LIKE = 1 AND C1REC.TAG_CON LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND C1REC.TAG_CON = RESTORETAG)) OR 10479c10710 < IF (TAG IS NOT NULL AND NOT TAGMATCHREQUIRED) THEN --- > IF (TAG IS NOT NULL AND TAGMATCHREQUIRED) THEN 10484c10715,10716 < IF (TAG = LOCAL.TAG) THEN --- > IF ((TAG_LIKE = 1 AND LOCAL.TAG LIKE TAG) OR > (TAG_LIKE <> 1 AND LOCAL.TAG = TAG)) THEN 10500c10732,10733 < DEB(DEB_IN, 'tag does not match, continuing search'); --- > DEB(DEB_IN, 'tag does not match, continuing search:' || > LOCAL.TAG); 11191,11192c11424,11428 < (ACTION.TAG_CON <> RESTORETAG OR ACTION.TAG_CON IS NULL)) THEN < DEB(DEB_PRINT, 'isValidAction: tag mismatch - skipped:'); --- > (((TAG_LIKE = 1 AND ACTION.TAG_CON NOT LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND ACTION.TAG_CON <> RESTORETAG)) OR > ACTION.TAG_CON IS NULL)) THEN > DEB(DEB_PRINT, 'isValidAction: tag mismatch - skipped:' || > NVL(ACTION.TAG_CON, '<NUL>')); 12169c12405,12408 < IF (NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) THEN --- > IF ((TAG_LIKE = 1 AND > NVL(TAG, ' ') NOT LIKE NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) OR > (TAG_LIKE <> 1 AND > NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' ')))) THEN 13133a13373,13376 > > > > 13369c13612,13613 < IF (RMANCMD != OBSOLETECMD_T) THEN --- > IF (RMANCMD != OBSOLETECMD_T OR > (RESTORETAG IS NOT NULL AND RMANCMD = OBSOLETECMD_T)) THEN 13517d13760 < 13519,13520c13762 < ACTION.TYPE_CON = BACKUPSET_CON_T AND < RMANCMD != OBSOLETECMD_T ) THEN --- > ACTION.TYPE_CON = BACKUPSET_CON_T) THEN 13529c13771,13772 < IF (VALIDATIONREC.TAG = RESTORETAG OR --- > IF (((TAG_LIKE = 1 AND VALIDATIONREC.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND VALIDATIONREC.TAG = RESTORETAG)) OR 13589,13594d13831 < < IF (RMANCMD = OBSOLETECMD_T AND NOT ISVALIDACTION(ACTION)) THEN < DEB(DEB_EXIT, 'with action_SKIP'); < RETURN ACTION_SKIP; < END IF; < 16979c17216,17219 < IF (NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) THEN --- > IF ((TAG_LIKE = 1 AND > NVL(TAG, ' ') NOT LIKE NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) OR > (TAG_LIKE <> 1 AND > NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' ')))) THEN 17267a17508,17510 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 17533a17777,17779 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 17621a17868 > AND RESTORETAG IS NULL 17690a17938,17940 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 17757a18008,18010 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18318c18571,18572 < AL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)); --- > AL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)) > AND RESTORETAG IS NULL; 18360c18614,18617 < XAL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)); --- > XAL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)) > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))); 18407a18665 > AND RESTORETAG IS NULL 18458a18717,18719 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND XAL.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND XAL.TAG = RESTORETAG))) 18524a18786 > AND RESTORETAG IS NULL 18559a18822,18824 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18588a18854,18856 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18646c18914 < --- > AND RESTORETAG IS NULL 18677a18946,18948 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18702a18974,18976 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18777a19052 > AND RESTORETAG IS NULL 18816a19092,19094 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18848a19127,19129 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19282c19563,19564 < TAG IN VARCHAR2 DEFAULT NULL) --- > TAG IN VARCHAR2 DEFAULT NULL, > USE_LIKE IN NUMBER DEFAULT 0) 19284a19567,19572 > > > IF (NVL(TAG, ' ') <> NVL(RESTORETAG, ' ') AND RCVRECCURSOR1_C%ISOPEN) THEN > DEB(DEB_PRINT, 'closing cursor rcRecCursor_c'); > CLOSE RCVRECCURSOR1_C; > END IF; 19285a19574,19575 > TAG_LIKE := USE_LIKE; > DEB(DEB_PRINT, 'restoreTag='|| RESTORETAG || ',tag_like='|| TAG_LIKE); 24722a25013,25015 > > VALIDATIONREC VALIDBACKUPSETREC_T; > BS_RCVREC RCVREC_T; 25287a25581,25582 > <<NEXTROW>> > 25514a25810,25845 > END IF; > > > IF (LBREC.BACKUP_TYPE = BACKUPSET_TXT AND RESTORETAG IS NOT NULL) THEN > BS_RCVREC.BSKEY_CON := LBREC.BS_KEY; > BS_RCVREC.SETCOUNT_CON := LBREC.BS_COUNT; > BS_RCVREC.SETSTAMP_CON := LBREC.BS_STAMP; > BS_RCVREC.PIECECOUNT_CON := LBREC.BS_PIECES; > IF (LBREC.FILE_TYPE = ARCHIVEDLOG_TXT) THEN > BS_RCVREC.LOGLOWSCN_OBJ := LBREC.RL_FIRST_CHANGE#; > BS_RCVREC.LOGTHREAD_OBJ := LBREC.RL_THREAD#; > BS_RCVREC.LOGSEQUENCE_OBJ := LBREC.RL_SEQUENCE#; > ELSIF (LBREC.FILE_TYPE IN (SPFILE_TXT, CONTROLFILE_TXT)) THEN > BS_RCVREC.DFNUMBER_OBJ := 0; > BS_RCVREC.FROMSCN_ACT := 0; > ELSIF (LBREC.FILE_TYPE = DATAFILE_TXT) THEN > BS_RCVREC.DFNUMBER_OBJ := 0; > BS_RCVREC.FROMSCN_ACT := LBREC.DF_CHECKPOINT_CHANGE#; > IF (LBREC.DF_INCREMENTAL_CHANGE# = LBREC.DF_CREATION_CHANGE# OR > LBREC.BS_INCR_TYPE = FULL_TXT) THEN > BS_RCVREC.FROMSCN_ACT := 0; > ELSIF (LBREC.BS_INCR_TYPE <> FULL_TXT) THEN > BS_RCVREC.FROMSCN_ACT := LBREC.DF_INCREMENTAL_CHANGE#; > END IF; > END IF; > > IF VALIDATEBACKUPSET(BACKUPSETREC=> BS_RCVREC, > TAG => RESTORETAG, > TAGMATCHREQUIRED => TRUE, > CHECKDEVICEISALLOCATED => TRUE, > AVAILABLEMASK => BSAVAILABLE, > VALIDREC => VALIDATIONREC) <> SUCCESS THEN > DEB(DEB_IN, 'tag does not match: bs_key=' || LBREC.BS_KEY); > GOTO NEXTROW; > END IF; > 27355c27686 < DEB(DEB_IN, 'tag does not match'); --- > DEB(DEB_IN, 'tag does not match for controlfile proxy copy'); 27680c28011 < DEB(DEB_EXIT, 'tag does not match'); --- > DEB(DEB_EXIT, 'tag does not match for proxy copy:'||BRLREC.TAG_CON); 27919,27931c28250,28256 < IF (RMANCMD = OBSOLETECMD_T) THEN < < < VALRC := SUCCESS; < ELSE < VALRC := VALIDATEBACKUPSET( < BACKUPSETREC => BSFREC, < TAG => RESTORETAG, < TAGMATCHREQUIRED => TRUE, < CHECKDEVICEISALLOCATED => TRUE, < AVAILABLEMASK => BSAVAILABLE, < VALIDREC => VALIDATEREC); < END IF; --- > VALRC := VALIDATEBACKUPSET( > BACKUPSETREC => BSFREC, > TAG => RESTORETAG, > TAGMATCHREQUIRED => TRUE, > CHECKDEVICEISALLOCATED => TRUE, > AVAILABLEMASK => BSAVAILABLE, > VALIDREC => VALIDATEREC); 27948,27957d28272 < ELSIF (RMANCMD = OBSOLETECMD_T) THEN < DEB(DEB_IN, ' Added bsfRec:'); < < RCVRECPUSH(BSFREC); < GETBS_STATUS := SUCCESS; < IF (LCOPIES > 1) THEN < LCOPIES := LCOPIES - 1; < ELSE < EXIT; < END IF; 28223a28539 > DEB(DEB_PRINT, 'getRA_likePattern='|| PATTERN);
452,453c452,454 < SECURE_OWNER := SYS.DBMS_ASSERT.SIMPLE_SQL_NAME(TABOWNER); < SECURE_NAME := SYS.DBMS_ASSERT.SIMPLE_SQL_NAME(TABNAME); --- > > SECURE_OWNER := DBMS_SNAP_INTERNAL.CANONICALIZE_IDENTIFIER(TABOWNER); > SECURE_NAME := DBMS_SNAP_INTERNAL.CANONICALIZE_IDENTIFIER(TABNAME); 580,581c581,583 < SECURE_OWNER := TABOWNER; < SECURE_NAME := TABNAME; --- > > SECURE_OWNER := DBMS_SNAP_INTERNAL.CANONICALIZE_IDENTIFIER(TABOWNER); > SECURE_NAME := DBMS_SNAP_INTERNAL.CANONICALIZE_IDENTIFIER(TABNAME);
405d404 < 419c418 < INSTALLED_BUNDLE := 0; --- > INSTALLED_BUNDLE := REGISTRY_ID;
11466c11466,11467 < ALLTXT := ALLTXT || ' add ch1 varchar2(1000)'; --- > > ALLTXT := ALLTXT || ' add ch1 varchar2(1000 byte)'; 11546,11550c11547,11559 < ALLTXT := 'alter table ' || STATTABQ || < ' modify (r1 raw(1000), r2 raw(1000),' || < ' statid varchar2(128), c1 varchar2(128), c2 varchar2(128), ' || < ' c3 varchar2(128), c4 varchar2(128), c5 varchar2(128)) ' || < ' add (c6 varchar2(128), r3 raw(1000), n13 number, t1 timestamp with time zone)'; --- > > ALLTXT := 'alter table ' || STATTABQ > || ' modify (r1 raw(1000), r2 raw(1000),' > || ' statid varchar2(' || DSC_ST_TAB_M_IDEN || ' byte),' > || ' c1 varchar2(' || DSC_ST_TAB_M_IDEN || ' byte),' > || ' c2 varchar2(' || DSC_ST_TAB_M_IDEN || ' byte),' > || ' c3 varchar2(' || DSC_ST_TAB_M_IDEN || ' byte),' > || ' c4 varchar2(' || DSC_ST_TAB_M_IDEN || ' byte),' > || ' c5 varchar2(' || DSC_ST_TAB_M_IDEN || ' byte))' > || ' add (c6 varchar2(' || DSC_ST_TAB_M_IDEN || ' byte),' > || ' r3 raw(1000),' > || ' n13 number,' > || ' t1 timestamp with time zone)'; 17840a17850 > 17842,17843c17852,17853 < ' statid varchar2(' || DSC_ST_TAB_M_IDEN || '),' || < ' type char(1),' || --- > ' statid varchar2(' || DSC_ST_TAB_M_IDEN || ' byte),' || > ' type char(1 byte),' || 17846,17851c17856,17861 < ' c1 varchar2(' || DSC_ST_TAB_M_IDEN || '),' || < ' c2 varchar2(' || DSC_ST_TAB_M_IDEN || '),' || < ' c3 varchar2(' || DSC_ST_TAB_M_IDEN || '),' || < ' c4 varchar2(' || DSC_ST_TAB_M_IDEN || '),' || < ' c5 varchar2(' || DSC_ST_TAB_M_IDEN || '),' || < ' c6 varchar2(' || DSC_ST_TAB_M_IDEN || '),' || --- > ' c1 varchar2(' || DSC_ST_TAB_M_IDEN || ' byte),' || > ' c2 varchar2(' || DSC_ST_TAB_M_IDEN || ' byte),' || > ' c3 varchar2(' || DSC_ST_TAB_M_IDEN || ' byte),' || > ' c4 varchar2(' || DSC_ST_TAB_M_IDEN || ' byte),' || > ' c5 varchar2(' || DSC_ST_TAB_M_IDEN || ' byte),' || > ' c6 varchar2(' || DSC_ST_TAB_M_IDEN || ' byte),' || 17870c17880 < ' ch1 varchar2(1000),' || --- > ' ch1 varchar2(1000 byte),' || 21679c21689,21690 < IF (NDV <= MNB) THEN --- > > IF (MNB = 1 OR NDV <= MNB) THEN
591,592c591,593 < < MV_NAME VARCHAR2(62) := NULL; --- > > > MV_NAME VARCHAR2(300) := NULL; 595c596 < MV_NAME := REC.SOWNER || '.' || REC.VNAME; --- > MV_NAME := '"' || REC.SOWNER || '"."' || REC.VNAME || '"';
411c411 < TOTAL_SIZE := 24; --- > TOTAL_SIZE := 25; 415c415 < TOTAL_SIZE := 25; --- > TOTAL_SIZE := 26; 419c419 < TOTAL_SIZE := 24; --- > TOTAL_SIZE := 25; 423c423 < TOTAL_SIZE := 25; --- > TOTAL_SIZE := 26; 539a540,551 > > IF IS_GRANT THEN > SCRIPT(OLDSIZE + INCREMENT) := CONSTRUCT_SQL_T( > 'grant execute on system.logmnr$gsba_gg_tabf_public to ' || > SAFE_GRANTEE); > ELSE > SCRIPT(OLDSIZE + INCREMENT) := CONSTRUCT_SQL_T( > 'revoke execute on system.logmnr$gsba_gg_tabf_public from ' || > SAFE_GRANTEE); > END IF; > INCREMENT := INCREMENT + 1; >
73a74 > PRBA NUMBER := RBA; 83c84 < SEQ# = SEQNO AND RBA = RBA AND INDEX# = INDEX_NUM; --- > SEQ# = SEQNO AND RBA = PRBA AND INDEX# = INDEX_NUM; 87c88 < SEQ# = SEQNO AND RBA = RBA AND INDEX# = INDEX_NUM; --- > SEQ# = SEQNO AND RBA = PRBA AND INDEX# = INDEX_NUM;
12.2.0.1
1259c1259,1261 < -- by the find functions. --- > -- by the find functions. This tag is also used by report/delete obsolete > -- functions to restrict what backups to consider and what backups to filter > -- for backup optimization. 1263c1265 < -- tag of the datafile copies to be translated --- > -- tag of the datafile copies/backup sets to be translated 1264a1267,1268 > -- use_like > -- input tag parameter to be used similar to LIKE semantics in SQL 1266c1270 < PROCEDURE setTag(tag IN varchar2 DEFAULT NULL); --- > PROCEDURE setTag(tag IN varchar2 DEFAULT NULL, use_like IN number DEFAULT 0);
533a534,565 > FUNCTION IDX_LOC_INT_PART(IDXOWNER IN VARCHAR2, > IDXNAME IN VARCHAR2) RETURN BOOLEAN; > > > > > FUNCTION IDX_INCLUDE_PARTITIONS RETURN BOOLEAN; > > > > > > FUNCTION IDX_SKIP_ATR_CHK RETURN BOOLEAN; > > > > > > > > > > FUNCTION IDX_PART_ATR_CHG(I_OWNER IN VARCHAR2, > I_NAME IN VARCHAR2, > T_OWNER IN VARCHAR2, > T_NAME IN VARCHAR2) RETURN BOOLEAN; > > > > > >
710a711,713 > EXCEP_DEADLOCK EXCEPTION; > I NUMBER; > PRAGMA EXCEPTION_INIT(EXCEP_DEADLOCK, -60); 715,716c718,734 < TRN :='truncate table sys.wri$_heatmap_top_tablespaces'; < EXECUTE IMMEDIATE TRN; --- > > > > FOR I IN 1..3 LOOP > BEGIN > TRN :='truncate table sys.wri$_heatmap_top_tablespaces'; > EXECUTE IMMEDIATE TRN; > EXIT; > EXCEPTION > WHEN EXCEP_DEADLOCK THEN > IF (I = 3) THEN > RAISE; > END IF; > WHEN OTHERS THEN > RAISE; > END; > END LOOP; 817a836,838 > EXCEP_DEADLOCK EXCEPTION; > I NUMBER; > PRAGMA EXCEPTION_INIT(EXCEP_DEADLOCK, -60); 819c840,855 < EXECUTE IMMEDIATE TRN; --- > > > FOR I IN 1..3 LOOP > BEGIN > EXECUTE IMMEDIATE TRN; > EXIT; > EXCEPTION > WHEN EXCEP_DEADLOCK THEN > IF (I = 3) THEN > RAISE; > END IF; > WHEN OTHERS THEN > RAISE; > END; > END LOOP; > 840c876,890 < EXECUTE IMMEDIATE TRN; --- > > > FOR I IN 1..3 LOOP > BEGIN > EXECUTE IMMEDIATE TRN; > EXIT; > EXCEPTION > WHEN EXCEP_DEADLOCK THEN > IF (I = 3) THEN > RAISE; > END IF; > WHEN OTHERS THEN > RAISE; > END; > END LOOP;
166a167 > TAG_LIKE NUMBER := 0; 620a622,624 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 643c647 < NULL COMPLETION_TIME, --- > BDF.COMPLETION_TIME COMPLETION_TIME, 902a907,909 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1011a1019 > AND RESTORETAG IS NULL 1083a1092,1094 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1154a1166,1168 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1288a1303,1305 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1396a1414,1416 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1714a1735,1737 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1837a1861,1863 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1934a1961,1963 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2062a2092,2094 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2118a2151,2153 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2255a2291,2293 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2780a2819,2821 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2869a2911,2913 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2965a3010,3012 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3048a3096,3098 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3175a3226 > AND RESTORETAG IS NULL 3396a3448,3450 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3614a3669,3671 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3726a3784,3786 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3773a3834,3836 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3795a3859,3861 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3821a3888,3890 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3856a3926,3928 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3916a3989,3991 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3964a4040,4042 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 4014a4093,4095 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 4053a4135,4137 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7182a7267,7269 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7197a7285,7287 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7331a7422,7424 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7378a7472,7474 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7418a7515,7517 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7502a7602,7604 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7582a7685,7687 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7650a7756,7758 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7725a7834,7836 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7756a7868,7870 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7827a7942,7944 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7904a8022,8024 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7964a8085,8087 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8017a8141,8143 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8103a8230,8232 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8177a8307,8309 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8239a8372,8374 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8292a8428,8430 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8384a8523,8525 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8401a8543,8545 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8424c8568,8571 < WHERE (STATUS = 'A' OR STATUS = 'X')) DC --- > WHERE (STATUS = 'A' OR STATUS = 'X') > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG)))) DC 8454a8602,8604 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND XDF.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND XDF.TAG = RESTORETAG))) 8480a8631,8633 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8523a8677,8679 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND XAL.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND XAL.TAG = RESTORETAG))) 8592a8749,8751 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8622a8782,8784 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8691a8854,8856 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8807a8973,8975 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8850a9019,9021 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9100a9272,9274 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9344a9519,9521 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9470a9648,9650 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9693c9873,9874 < C1REC.TAG_CON = RESTORETAG OR --- > ((TAG_LIKE = 1 AND C1REC.TAG_CON LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND C1REC.TAG_CON = RESTORETAG)) OR 9809a9991 > 9907c10089,10090 < C1REC.TAG_CON = RESTORETAG OR --- > ((TAG_LIKE = 1 AND C1REC.TAG_CON LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND C1REC.TAG_CON = RESTORETAG)) OR 11044c11227 < IF (TAG IS NOT NULL AND NOT TAGMATCHREQUIRED) THEN --- > IF (TAG IS NOT NULL AND TAGMATCHREQUIRED) THEN 11049c11232,11233 < IF (TAG = LOCAL.TAG) THEN --- > IF ((TAG_LIKE = 1 AND LOCAL.TAG LIKE TAG) OR > (TAG_LIKE <> 1 AND LOCAL.TAG = TAG)) THEN 11065c11249,11250 < DEB(DEB_IN, 'tag does not match, continuing search'); --- > DEB(DEB_IN, 'tag does not match, continuing search:' || > LOCAL.TAG); 11769,11770c11954,11958 < (ACTION.TAG_CON <> RESTORETAG OR ACTION.TAG_CON IS NULL)) THEN < DEB(DEB_PRINT, 'isValidAction: tag mismatch - skipped:'); --- > (((TAG_LIKE = 1 AND ACTION.TAG_CON NOT LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND ACTION.TAG_CON <> RESTORETAG)) OR > ACTION.TAG_CON IS NULL)) THEN > DEB(DEB_PRINT, 'isValidAction: tag mismatch - skipped:' || > NVL(ACTION.TAG_CON, '<NUL>')); 12750c12938,12941 < IF (NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) THEN --- > IF ((TAG_LIKE = 1 AND > NVL(TAG, ' ') NOT LIKE NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) OR > (TAG_LIKE <> 1 AND > NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' ')))) THEN 13718a13910,13913 > > > > 13958c14153,14154 < IF (RMANCMD != OBSOLETECMD_T) THEN --- > IF (RMANCMD != OBSOLETECMD_T OR > (RESTORETAG IS NOT NULL AND RMANCMD = OBSOLETECMD_T)) THEN 14106d14301 < 14108,14109c14303 < ACTION.TYPE_CON = BACKUPSET_CON_T AND < RMANCMD != OBSOLETECMD_T ) THEN --- > ACTION.TYPE_CON = BACKUPSET_CON_T) THEN 14118c14312,14313 < IF (VALIDATIONREC.TAG = RESTORETAG OR --- > IF (((TAG_LIKE = 1 AND VALIDATIONREC.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND VALIDATIONREC.TAG = RESTORETAG)) OR 14178,14183d14372 < < IF (RMANCMD = OBSOLETECMD_T AND NOT ISVALIDACTION(ACTION)) THEN < DEB(DEB_EXIT, 'with action_SKIP'); < RETURN ACTION_SKIP; < END IF; < 17580c17769,17772 < IF (NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) THEN --- > IF ((TAG_LIKE = 1 AND > NVL(TAG, ' ') NOT LIKE NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) OR > (TAG_LIKE <> 1 AND > NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' ')))) THEN 17876a18069,18071 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18158a18354,18356 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18250a18449 > AND RESTORETAG IS NULL 18323a18523,18525 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18394a18597,18599 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18963c19168,19169 < AL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)); --- > AL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)) > AND RESTORETAG IS NULL; 19005c19211,19214 < XAL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)); --- > XAL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)) > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))); 19052a19262 > AND RESTORETAG IS NULL 19103a19314,19316 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND XAL.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND XAL.TAG = RESTORETAG))) 19169a19383 > AND RESTORETAG IS NULL 19204a19419,19421 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19233a19451,19453 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19291c19511 < --- > AND RESTORETAG IS NULL 19322a19543,19545 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19347a19571,19573 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19422a19649 > AND RESTORETAG IS NULL 19461a19689,19691 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19493a19724,19726 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19953c20186,20187 < TAG IN VARCHAR2 DEFAULT NULL) --- > TAG IN VARCHAR2 DEFAULT NULL, > USE_LIKE IN NUMBER DEFAULT 0) 19955a20190,20195 > > > IF (NVL(TAG, ' ') <> NVL(RESTORETAG, ' ') AND RCVRECCURSOR1_C%ISOPEN) THEN > DEB(DEB_PRINT, 'closing cursor rcRecCursor_c'); > CLOSE RCVRECCURSOR1_C; > END IF; 19956a20197,20198 > TAG_LIKE := USE_LIKE; > DEB(DEB_PRINT, 'restoreTag='|| RESTORETAG || ',tag_like='|| TAG_LIKE); 25558a25801,25803 > > VALIDATIONREC VALIDBACKUPSETREC_T; > BS_RCVREC RCVREC_T; 26216a26462,26463 > <<NEXTROW>> > 26443a26691,26726 > END IF; > > > IF (LBREC.BACKUP_TYPE = BACKUPSET_TXT AND RESTORETAG IS NOT NULL) THEN > BS_RCVREC.BSKEY_CON := LBREC.BS_KEY; > BS_RCVREC.SETCOUNT_CON := LBREC.BS_COUNT; > BS_RCVREC.SETSTAMP_CON := LBREC.BS_STAMP; > BS_RCVREC.PIECECOUNT_CON := LBREC.BS_PIECES; > IF (LBREC.FILE_TYPE = ARCHIVEDLOG_TXT) THEN > BS_RCVREC.LOGLOWSCN_OBJ := LBREC.RL_FIRST_CHANGE#; > BS_RCVREC.LOGTHREAD_OBJ := LBREC.RL_THREAD#; > BS_RCVREC.LOGSEQUENCE_OBJ := LBREC.RL_SEQUENCE#; > ELSIF (LBREC.FILE_TYPE IN (SPFILE_TXT, CONTROLFILE_TXT)) THEN > BS_RCVREC.DFNUMBER_OBJ := 0; > BS_RCVREC.FROMSCN_ACT := 0; > ELSIF (LBREC.FILE_TYPE = DATAFILE_TXT) THEN > BS_RCVREC.DFNUMBER_OBJ := 0; > BS_RCVREC.FROMSCN_ACT := LBREC.DF_CHECKPOINT_CHANGE#; > IF (LBREC.DF_INCREMENTAL_CHANGE# = LBREC.DF_CREATION_CHANGE# OR > LBREC.BS_INCR_TYPE = FULL_TXT) THEN > BS_RCVREC.FROMSCN_ACT := 0; > ELSIF (LBREC.BS_INCR_TYPE <> FULL_TXT) THEN > BS_RCVREC.FROMSCN_ACT := LBREC.DF_INCREMENTAL_CHANGE#; > END IF; > END IF; > > IF VALIDATEBACKUPSET(BACKUPSETREC=> BS_RCVREC, > TAG => RESTORETAG, > TAGMATCHREQUIRED => TRUE, > CHECKDEVICEISALLOCATED => TRUE, > AVAILABLEMASK => BSAVAILABLE, > VALIDREC => VALIDATIONREC) <> SUCCESS THEN > DEB(DEB_IN, 'tag does not match: bs_key=' || LBREC.BS_KEY); > GOTO NEXTROW; > END IF; > 28357c28640 < DEB(DEB_IN, 'tag does not match'); --- > DEB(DEB_IN, 'tag does not match for controlfile proxy copy'); 28682c28965 < DEB(DEB_EXIT, 'tag does not match'); --- > DEB(DEB_EXIT, 'tag does not match for proxy copy:'||BRLREC.TAG_CON); 28921,28933c29204,29210 < IF (RMANCMD = OBSOLETECMD_T) THEN < < < VALRC := SUCCESS; < ELSE < VALRC := VALIDATEBACKUPSET( < BACKUPSETREC => BSFREC, < TAG => RESTORETAG, < TAGMATCHREQUIRED => TRUE, < CHECKDEVICEISALLOCATED => TRUE, < AVAILABLEMASK => BSAVAILABLE, < VALIDREC => VALIDATEREC); < END IF; --- > VALRC := VALIDATEBACKUPSET( > BACKUPSETREC => BSFREC, > TAG => RESTORETAG, > TAGMATCHREQUIRED => TRUE, > CHECKDEVICEISALLOCATED => TRUE, > AVAILABLEMASK => BSAVAILABLE, > VALIDREC => VALIDATEREC); 28950,28959d29226 < ELSIF (RMANCMD = OBSOLETECMD_T) THEN < DEB(DEB_IN, ' Added bsfRec:'); < < RCVRECPUSH(BSFREC); < GETBS_STATUS := SUCCESS; < IF (LCOPIES > 1) THEN < LCOPIES := LCOPIES - 1; < ELSE < EXIT; < END IF; 29225a29493 > DEB(DEB_PRINT, 'getRA_likePattern='|| PATTERN);
84a85,86 > > CONS_TS_CHANGED CONSTANT PLS_INTEGER := 32; 1167,1168c1169,1172 < USING_INDEX BOOLEAN :=FALSE; < --- > USING_INDEX BOOLEAN := FALSE; > IDX_ATT_LOCAL BOOLEAN := FALSE; > IDX_TMP_CNT PLS_INTEGER; > IDX_INT_PARTITION BOOLEAN := FALSE; 1364,1366c1368,1400 < IF (FOUND_INTERVAL OR DBMS_REDEFINITION_INTERNAL.IS_PARTITIONED_IDX( < O_OBJ_OWNER, O_OBJ_NAME)) THEN < DBMS_METADATA.SET_TRANSFORM_PARAM(DHANDLE,'INCLUDE_PARTITIONS','ALL'); --- > IF (FOUND_INTERVAL > OR DBMS_REDEFINITION_INTERNAL.IS_PARTITIONED_IDX(O_OBJ_OWNER, > O_OBJ_NAME)) > THEN > IDX_INT_PARTITION := DBMS_REDEFINITION_INTERNAL.IDX_LOC_INT_PART( > O_OBJ_OWNER,O_OBJ_NAME); > IF (NOT IDX_INT_PARTITION) > OR DBMS_REDEFINITION_INTERNAL.IDX_INCLUDE_PARTITIONS > OR DBMS_REDEFINITION_INTERNAL.IDX_PART_ATR_CHG(O_OBJ_OWNER, > O_OBJ_NAME, > O_BT_OWNER, > O_BT_NAME) > OR (BITAND(CTX_FLAG, DBMS_REDEFINITION.CONS_REDEF_TABLE) > <> DBMS_REDEFINITION.CONS_REDEF_TABLE) > THEN > > > > > > > > DBMS_METADATA.SET_TRANSFORM_PARAM(DHANDLE,'INCLUDE_PARTITIONS', > 'ALL'); > ELSE > > > > DBMS_METADATA.SET_TRANSFORM_PARAM(DHANDLE,'PARTITIONING',FALSE); > IDX_ATT_LOCAL := TRUE; > > IDX_INT_PARTITION := FALSE; > END IF; 1423c1457,1482 < --- > IF IDX_ATT_LOCAL THEN > > > > > > > > > SELECT COUNT(REGEXP_SUBSTR( > DBMS_LOB.SUBSTR(MD_DDL_INFO.DDLTEXT,1000), > '(^|\s)TABLESPACE($|\s)')) > INTO IDX_TMP_CNT FROM SYS.DUAL; > IF IDX_TMP_CNT > 0 OR NEW_TABLESPACE IS NULL THEN > > > DBMS_LOB.APPEND(MD_DDL_INFO.DDLTEXT, TO_CLOB(' LOCAL')); > ELSE > IF NEW_TABLESPACE IS NOT NULL THEN > > DBMS_LOB.APPEND(MD_DDL_INFO.DDLTEXT, TO_CLOB(' TABLESPACE '|| > DBMS_ASSERT.ENQUOTE_NAME(NEW_TABLESPACE,FALSE) || > ' LOCAL')); > END IF; > END IF; > END IF; 1646a1706,1722 > > > > > IF IDX_INT_PARTITION AND NEW_TABLESPACE IS NOT NULL > THEN > ALTER_IDX_DDL := 'ALTER INDEX ' || > DBMS_ASSERT.ENQUOTE_NAME(I_OBJ_OWNER, FALSE) || '.' || > DBMS_ASSERT.ENQUOTE_NAME(I_OBJ_NAME, FALSE) || > ' MODIFY DEFAULT ATTRIBUTES TABLESPACE ' || > DBMS_ASSERT.ENQUOTE_NAME(NEW_TABLESPACE, FALSE); > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'transform_ddl: alter index ddl= ' || > ALTER_IDX_DDL); > END IF; > EXECUTE IMMEDIATE ALTER_IDX_DDL; > END IF; 4346a4423 > CTX_FLAG := CTX_FLAG + DBMS_REDEFINITION.CONS_TS_CHANGED;
1002a1003,1338 > > > > > > FUNCTION IDX_LOC_INT_PART(IDXOWNER IN VARCHAR2, > IDXNAME IN VARCHAR2) RETURN BOOLEAN > IS > IND_CONS NUMBER; > BEGIN > SELECT COUNT(1) INTO IND_CONS > FROM DBA_PART_INDEXES IND > WHERE IND.INDEX_NAME = IDXNAME > AND IND.OWNER = IDXOWNER > AND IND.LOCALITY = 'LOCAL' > AND IND.INTERVAL IS NOT NULL; > IF IND_CONS > 0 THEN > RETURN TRUE; > END IF; > RETURN FALSE; > EXCEPTION WHEN OTHERS THEN > RETURN FALSE; > END IDX_LOC_INT_PART; > > > > > FUNCTION IDX_INCLUDE_PARTITIONS RETURN BOOLEAN IS > EVENT_VALUE BINARY_INTEGER := 0; > BEGIN > DBMS_SYSTEM.READ_EV(42055, EVENT_VALUE); > IF BITAND(EVENT_VALUE, 32) = 32 THEN > RETURN TRUE; > ELSE > RETURN FALSE; > END IF; > END IDX_INCLUDE_PARTITIONS; > > > > > > FUNCTION IDX_SKIP_ATR_CHK RETURN BOOLEAN IS > EVENT_VALUE BINARY_INTEGER := 0; > BEGIN > DBMS_SYSTEM.READ_EV(42055, EVENT_VALUE); > IF BITAND(EVENT_VALUE, 64) = 64 THEN > RETURN TRUE; > ELSE > RETURN FALSE; > END IF; > END IDX_SKIP_ATR_CHK; > > > > > > > > > > > FUNCTION IDX_PART_ATR_CHG(I_OWNER IN VARCHAR2, > I_NAME IN VARCHAR2, > T_OWNER IN VARCHAR2, > T_NAME IN VARCHAR2) RETURN BOOLEAN > IS > P_NAME_INT VARCHAR2(128) := NULL; > P_NAME_DEF VARCHAR2(128) := NULL; > CHANGED BOOLEAN := FALSE; > ITEM NUMBER; > CURSOR PATS IS > SELECT MIN(PARTITION_NAME) NAME ,MIN(INTERVAL) INTERVAL > FROM DBA_IND_PARTITIONS > WHERE INDEX_OWNER=I_OWNER AND INDEX_NAME=I_NAME > GROUP BY INTERVAL,COMPOSITE,SUBPARTITION_COUNT,STATUS,TABLESPACE_NAME, > PCT_FREE,INI_TRANS,MAX_TRANS,INITIAL_EXTENT, NEXT_EXTENT, > MIN_EXTENT,MAX_EXTENT,MAX_SIZE,PCT_INCREASE,FREELISTS, > FREELIST_GROUPS,LOGGING,COMPRESSION,BUFFER_POOL,FLASH_CACHE, > CELL_FLASH_CACHE,PARAMETERS,DOMIDX_OPSTATUS; > BEGIN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart : index ' || I_OWNER || '.' || I_NAME || > ' on ' || T_OWNER || '.' || T_NAME); > END IF; > > > > IF (IDX_SKIP_ATR_CHK) THEN > RETURN FALSE; > END IF; > > > > > SELECT COUNT(*) INTO ITEM > FROM DBA_TAB_PARTITIONS U, DBA_IND_PARTITIONS I > WHERE U.TABLE_OWNER=T_OWNER AND U.TABLE_NAME = T_NAME > AND I.INDEX_OWNER=I_OWNER AND I.INDEX_NAME = I_NAME > AND U.PARTITION_POSITION=I.PARTITION_POSITION > AND U.PARTITION_NAME != I.PARTITION_NAME; > IF ITEM >0 THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 1: partition names are changed'); > END IF; > CHANGED := TRUE; > RETURN CHANGED; > END IF; > > > > > > > > FOR PAT IN PATS LOOP > IF (PATS%ROWCOUNT > 2 ) THEN > > CHANGED := TRUE; > EXIT; > END IF; > IF PAT.INTERVAL = 'NO' THEN > IF P_NAME_DEF IS NULL THEN > P_NAME_DEF := PAT.NAME; > ELSE > > CHANGED := TRUE; > EXIT; > END IF; > ELSE > IF P_NAME_INT IS NULL THEN > P_NAME_INT := PAT.NAME; > ELSE > > CHANGED := TRUE; > EXIT; > END IF; > END IF; > END LOOP; > IF P_NAME_INT IS NULL AND > P_NAME_DEF IS NULL THEN > > CHANGED := TRUE; > END IF; > IF CHANGED THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 2: ' || > 'one or more partition attributes are changed'); > END IF; > RETURN CHANGED; > END IF; > > > > IF (P_NAME_INT IS NOT NULL) AND (P_NAME_DEF IS NOT NULL) > THEN > BEGIN > SELECT COUNT(1) INTO ITEM > FROM DBA_IND_PARTITIONS > WHERE INDEX_OWNER=I_OWNER AND INDEX_NAME=I_NAME AND > PARTITION_NAME IN (P_NAME_INT, P_NAME_DEF) > GROUP BY COMPOSITE,SUBPARTITION_COUNT,STATUS,TABLESPACE_NAME, > PCT_FREE,INI_TRANS,MAX_TRANS, LOGGING,COMPRESSION, > BUFFER_POOL,FLASH_CACHE,CELL_FLASH_CACHE; > > > EXCEPTION WHEN OTHERS THEN > > > CHANGED := TRUE; > END; > IF CHANGED THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 3: common attributes are changed'); > END IF; > RETURN CHANGED; > END IF; > END IF; > BEGIN > IF P_NAME_INT IS NOT NULL THEN > > > SELECT COUNT(*) INTO ITEM > FROM DBA_IND_PARTITIONS > WHERE INDEX_OWNER=I_OWNER AND > INDEX_NAME=I_NAME AND > PARTITION_NAME = P_NAME_INT AND > SUBPARTITION_COUNT = 0 AND > STATUS = 'USABLE' AND > COMPOSITE = 'NO'; > IF ITEM = 0 THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 4: attributes of partition ' || > P_NAME_INT || ' are changed'); > END IF; > CHANGED := TRUE; > RETURN CHANGED; > END IF; > > > > > > > SELECT COUNT(*) INTO ITEM > FROM DBA_IND_PARTITIONS I, DBA_PART_INDEXES P, DBA_INDEXES D > WHERE I.INDEX_OWNER=I_OWNER AND I.INDEX_NAME=I_NAME AND > I.PARTITION_NAME = P_NAME_INT AND > I.INDEX_NAME = P.INDEX_NAME AND > I.INDEX_OWNER = D.OWNER AND I.INDEX_NAME= D.INDEX_NAME AND > (P.DEF_TABLESPACE_NAME = I.TABLESPACE_NAME OR > P.DEF_TABLESPACE_NAME IS NULL) > AND > P.DEF_PCT_FREE = I.PCT_FREE AND > P.DEF_INI_TRANS = I.INI_TRANS AND > P.DEF_MAX_TRANS = I.MAX_TRANS AND > (P.DEF_LOGGING = I.LOGGING OR > ((P.DEF_LOGGING = 'NONE' OR P.DEF_LOGGING = 'UNKNOWN') > AND I.LOGGING = 'YES')) > AND > P.DEF_BUFFER_POOL = I.BUFFER_POOL AND > P.DEF_FLASH_CACHE = I.FLASH_CACHE AND > P.DEF_CELL_FLASH_CACHE= I.CELL_FLASH_CACHE AND > P.DEF_INITIAL_EXTENT = 'DEFAULT' AND > P.DEF_NEXT_EXTENT = 'DEFAULT' AND > P.DEF_MIN_EXTENTS = 'DEFAULT' AND > P.DEF_MAX_EXTENTS = 'DEFAULT' AND > P.DEF_MAX_SIZE = 'DEFAULT' AND > P.DEF_PCT_INCREASE = 'DEFAULT' AND > ((P.DEF_FREELISTS = 0 AND > (I.FREELISTS = 1 OR I.FREELISTS IS NULL )) OR > (P.DEF_FREELISTS > 0 AND > P.DEF_FREELISTS = I.FREELISTS)) > AND > ((P.DEF_FREELIST_GROUPS = 0 AND > (I.FREELIST_GROUPS = 1 OR I.FREELIST_GROUPS IS NULL )) OR > (P.DEF_FREELIST_GROUPS > 0 AND > P.DEF_FREELIST_GROUPS = I.FREELIST_GROUPS)) AND > D.COMPRESSION = I.COMPRESSION; > IF ITEM = 0 THEN > CHANGED := TRUE; > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 5: attributes of partition ' || > P_NAME_INT || ' are changed from default'); > END IF; > RETURN CHANGED; > END IF; > > > > > > > SELECT COUNT(*) INTO ITEM > FROM DBA_IND_PARTITIONS I, DBA_TABLESPACES TS > WHERE I.INDEX_OWNER=I_OWNER AND I.INDEX_NAME=I_NAME AND > I.PARTITION_NAME = P_NAME_INT AND > I.TABLESPACE_NAME = TS.TABLESPACE_NAME AND > (TS.NEXT_EXTENT IS NULL OR > I.NEXT_EXTENT = TS.NEXT_EXTENT) AND > (TS.MIN_EXTENTS IS NULL OR > I.MIN_EXTENT = TS.MIN_EXTENTS) AND > (TS.MAX_EXTENTS IS NULL OR > I.MAX_EXTENT = TS.MAX_EXTENTS) AND > (TS.MAX_SIZE IS NULL OR > I.MAX_SIZE = TS.MAX_SIZE) AND > (TS.PCT_INCREASE IS NULL OR > I.PCT_INCREASE = TS.PCT_INCREASE); > IF ITEM = 0 THEN > CHANGED := TRUE; > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 6: storage attributes of partition ' > || P_NAME_INT || ' are changed'); > END IF; > RETURN CHANGED; > END IF; > END IF; > IF P_NAME_DEF IS NOT NULL THEN > > > > > SELECT COUNT(*) INTO ITEM > FROM DBA_IND_PARTITIONS > WHERE INDEX_OWNER=I_OWNER AND > INDEX_NAME=I_NAME AND > PARTITION_NAME = P_NAME_DEF AND > INITIAL_EXTENT IS NULL AND > NEXT_EXTENT IS NULL AND > MIN_EXTENT IS NULL AND > MAX_EXTENT IS NULL AND > MAX_SIZE IS NULL AND > PCT_INCREASE IS NULL AND > FREELISTS IS NULL AND > FREELIST_GROUPS IS NULL; > IF ITEM = 0 THEN > > > > > IF P_NAME_INT IS NOT NULL THEN > BEGIN > SELECT COUNT(1) INTO ITEM > FROM DBA_IND_PARTITIONS > WHERE INDEX_OWNER=I_OWNER AND INDEX_NAME=I_NAME AND > PARTITION_NAME IN (P_NAME_INT, P_NAME_DEF) > GROUP BY INITIAL_EXTENT, MIN_EXTENT, NEXT_EXTENT, > MIN_EXTENT, MAX_EXTENT, MAX_SIZE, PCT_INCREASE, > FREELISTS, FREELIST_GROUPS; > > > EXCEPTION WHEN OTHERS THEN > > CHANGED := TRUE; > END; > ELSE > > CHANGED := TRUE; > END IF; > IF (CHANGED) THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 7: partition attributes of ' || > P_NAME_DEF || ' are changed'); > END IF; > RETURN CHANGED; > END IF; > END IF; > END IF; > EXCEPTION WHEN OTHERS THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 8: exception mark as changed'); > END IF; > CHANGED := TRUE; > END; > RETURN CHANGED; > END IDX_PART_ATR_CHG; 1013c1349 < PROCEDURE ADD_DEP_ERRMSG(RID IN PLS_INTEGER, --- > PROCEDURE ADD_DEP_ERRMSG(RID IN PLS_INTEGER,
51434a51435,51492 > > > > > > > > > > > > > > PROCEDURE INIT_ADVISOR_TASK_PARAMETER( > TASK_NAME IN VARCHAR2, > PARAMETER IN VARCHAR2, > VALUE IN VARCHAR2) > IS > IN_EXEC BOOLEAN := FALSE; > BEGIN > > > > BEGIN > DBMS_STATS_ADVISOR.SET_TASK_PARAMETER(TASK_NAME, PARAMETER, VALUE); > EXCEPTION > WHEN OTHERS THEN > IF (SQLCODE = -13647) THEN > IN_EXEC := TRUE; > ELSE > RAISE; > END IF; > END; > > > > > IF (IN_EXEC = TRUE) THEN > > BEGIN > DBMS_STATS_ADVISOR.CANCEL_TASK(TASK_NAME); > EXCEPTION > WHEN OTHERS THEN > > > > IF (IS_URGENT_ERROR) THEN > RAISE; > END IF; > END; > > DBMS_STATS_ADVISOR.SET_TASK_PARAMETER(TASK_NAME, PARAMETER, VALUE); > > END IF; > > END INIT_ADVISOR_TASK_PARAMETER; > > 51439a51498,51509 > > > > > > > > > > > > 51448a51519,51523 > ELSE > INIT_ADVISOR_TASK_PARAMETER(PRVT_ADVISOR.TASK_RESERVED_NAME_ASTAT, > 'DAYS_TO_EXPIRE', 'UNLIMITED'); > INIT_ADVISOR_TASK_PARAMETER(PRVT_ADVISOR.TASK_RESERVED_NAME_ASTAT, > 'EXECUTION_DAYS_TO_EXPIRE', 30); 51456a51532,51536 > ELSE > INIT_ADVISOR_TASK_PARAMETER(PRVT_ADVISOR.TASK_RESERVED_NAME_ISTAT, > 'DAYS_TO_EXPIRE', 'UNLIMITED'); > INIT_ADVISOR_TASK_PARAMETER(PRVT_ADVISOR.TASK_RESERVED_NAME_ISTAT, > 'EXECUTION_DAYS_TO_EXPIRE', 30);
3306a3307,3316 > > > > > DBMS_STATS.SET_ADVISOR_TASK_PARAMETER(TNAME, > 'DAYS_TO_EXPIRE', 'UNLIMITED'); > DBMS_STATS.SET_ADVISOR_TASK_PARAMETER(TNAME, > 'EXECUTION_DAYS_TO_EXPIRE', 30); > > 4579a4590,4596 > > > WHEN UPPER(PARAMETER) = 'DAYS_TO_EXPIRE' THEN > DBMS_ADVISOR.SET_TASK_PARAMETER(TNAMEU, PARAMETER, VALUE); > > WHEN UPPER(PARAMETER) = 'EXECUTION_DAYS_TO_EXPIRE' THEN > DBMS_ADVISOR.SET_TASK_PARAMETER(TNAMEU, PARAMETER, VALUE);
5929,5930c5929 < TRACE(ILM_DEBUG_ENTRY_EXIT, < 'Exiting execute_ilm_policies '); --- > 5932,5936d5930 < BEGIN < PRVT_ILM.CREATE_TAB_ILMJOB(V_TAB_ILMJOB, EXECUTION_ID); < EXCEPTION < WHEN OTHERS THEN < 5939,5941c5933,5939 < NULL; < END; < --- > > IF (V_TAB_ILMJOB.COUNT > 0) THEN > BEGIN > PRVT_ILM.CREATE_TAB_ILMJOB(V_TAB_ILMJOB, EXECUTION_ID); > EXCEPTION > WHEN OTHERS THEN > 5944c5942,5955 < PRVT_ILM.UPDATE_TAB_ILMJOB(V_TAB_ILMJOB); --- > NULL; > END; > > > > PRVT_ILM.UPDATE_TAB_ILMJOB(V_TAB_ILMJOB); > ELSE > > UPDATE SYS.ILM_EXECUTION$ ILMEXE > SET COMPLETION_TIME = SYSTIMESTAMP, > EXECUTION_STATE = ILM_TASK_COMPLETE > WHERE ILMEXE.EXECUTION_ID = EXECUTE_ILM_POLICIES.EXECUTION_ID; > END IF; > 7875c7886,7887 < WHERE V_TABTASKINFO(I).N_UNRESOL = 0; --- > WHERE V_TABTASKINFO(I).N_UNRESOL = 0 > AND EXECUTION_ID = V_TABTASKINFO(I).TASK_ID;
6a7 > when e.flags > 255 then 'UNDEFINED' 8c9,10 < when (bitand(e.flags, 132) = 132) then 'PROCEDURE ERROR WITH LCRS' --- > when (bitand(e.flags, 32) = 32) then 'REPLICAT RETRIED' > when (bitand(e.flags, 130) = 130) then 'PROCEDURE ERROR WITH LCRS' 11,14c13,22 < when (bitand(e.flags, 66) = 66) then 'CONFLICT INFO, RECORD LCR' < when (bitand(e.flags, 2) = 2) then 'RECORD LCR' < when (bitand(e.flags, 16) = 16) then 'RECORD TXN NO LCRS' < else 'RECORD TXN WITH LCRS' --- > when (bitand(e.flags, 66) = 66) then 'CONFLICT INFO, RECORD LCR' > when (bitand(e.flags, 2) = 2) then 'RECORD LCR' > when (bitand(e.flags, 128) = 128) then 'PROCEDURE ERROR NO LCRS' > when (bitand(e.flags, 16) = 16) then 'RECORD TXN NO LCRS' > else 'RECORD TXN WITH LCRS' > end) > when (bitand(e.flags, 16) = 16) then > (case > when (bitand(e.flags, 128) = 128) then 'PROCEDURE ERROR NO LCRS' > else 'UNHANDLED ERROR NO LCRS' 16d23 < when (bitand(e.flags, 16) = 16) then 'UNHANDLED ERROR NO LCRS' 18c25 < else NULL --- > else 'UNHANDLED ERROR WITH LCRS'
18.0.0.0
12c12 < bannerVersion CONSTANT VARCHAR2(15) := '18.07.00.00'; --- > bannerVersion CONSTANT VARCHAR2(15) := '18.08.00.00'; 24,26c24,26 < fsn CONSTANT NUMBER := instr('18.07.00.00', '.'); < msn CONSTANT NUMBER := instr('18.07.00.00', '.', fsn + 1); < psn CONSTANT NUMBER := instr('18.07.00.00', '.', msn + 1); --- > fsn CONSTANT NUMBER := instr('18.08.00.00', '.'); > msn CONSTANT NUMBER := instr('18.08.00.00', '.', fsn + 1); > psn CONSTANT NUMBER := instr('18.08.00.00', '.', msn + 1); 29c29 < to_number(substr('18.07.00.00', 1, fsn - 1)); --- > to_number(substr('18.08.00.00', 1, fsn - 1)); 31c31 < to_number(substr('18.07.00.00', fsn + 1, msn - fsn - 1)); --- > to_number(substr('18.08.00.00', fsn + 1, msn - fsn - 1)); 33c33 < to_number(substr('18.07.00.00', msn + 1, psn - msn - 1)); --- > to_number(substr('18.08.00.00', msn + 1, psn - msn - 1)); 35c35 < to_number(substr('18.07.00.00', psn + 1)); --- > to_number(substr('18.08.00.00', psn + 1));
12c12 < bannerVersion CONSTANT VARCHAR2(15) := '18.06.01.00'; --- > bannerVersion CONSTANT VARCHAR2(15) := '18.06.02.00'; 24,26c24,26 < fsn CONSTANT NUMBER := instr('18.06.01.00', '.'); < msn CONSTANT NUMBER := instr('18.06.01.00', '.', fsn + 1); < psn CONSTANT NUMBER := instr('18.06.01.00', '.', msn + 1); --- > fsn CONSTANT NUMBER := instr('18.06.02.00', '.'); > msn CONSTANT NUMBER := instr('18.06.02.00', '.', fsn + 1); > psn CONSTANT NUMBER := instr('18.06.02.00', '.', msn + 1); 29c29 < to_number(substr('18.06.01.00', 1, fsn - 1)); --- > to_number(substr('18.06.02.00', 1, fsn - 1)); 31c31 < to_number(substr('18.06.01.00', fsn + 1, msn - fsn - 1)); --- > to_number(substr('18.06.02.00', fsn + 1, msn - fsn - 1)); 33c33 < to_number(substr('18.06.01.00', msn + 1, psn - msn - 1)); --- > to_number(substr('18.06.02.00', msn + 1, psn - msn - 1)); 35c35 < to_number(substr('18.06.01.00', psn + 1)); --- > to_number(substr('18.06.02.00', psn + 1));
12c12 < bannerVersion CONSTANT VARCHAR2(15) := '18.07.00.00'; --- > bannerVersion CONSTANT VARCHAR2(15) := '18.07.01.00'; 24,26c24,26 < fsn CONSTANT NUMBER := instr('18.07.00.00', '.'); < msn CONSTANT NUMBER := instr('18.07.00.00', '.', fsn + 1); < psn CONSTANT NUMBER := instr('18.07.00.00', '.', msn + 1); --- > fsn CONSTANT NUMBER := instr('18.07.01.00', '.'); > msn CONSTANT NUMBER := instr('18.07.01.00', '.', fsn + 1); > psn CONSTANT NUMBER := instr('18.07.01.00', '.', msn + 1); 29c29 < to_number(substr('18.07.00.00', 1, fsn - 1)); --- > to_number(substr('18.07.01.00', 1, fsn - 1)); 31c31 < to_number(substr('18.07.00.00', fsn + 1, msn - fsn - 1)); --- > to_number(substr('18.07.01.00', fsn + 1, msn - fsn - 1)); 33c33 < to_number(substr('18.07.00.00', msn + 1, psn - msn - 1)); --- > to_number(substr('18.07.01.00', msn + 1, psn - msn - 1)); 35c35 < to_number(substr('18.07.00.00', psn + 1)); --- > to_number(substr('18.07.01.00', psn + 1));
1262c1262,1264 < -- by the find functions. --- > -- by the find functions. This tag is also used by report/delete obsolete > -- functions to restrict what backups to consider and what backups to filter > -- for backup optimization. 1266c1268 < -- tag of the datafile copies to be translated --- > -- tag of the datafile copies/backup sets to be translated 1267a1270,1271 > -- use_like > -- input tag parameter to be used similar to LIKE semantics in SQL 1269c1273 < PROCEDURE setTag(tag IN varchar2 DEFAULT NULL); --- > PROCEDURE setTag(tag IN varchar2 DEFAULT NULL, use_like IN number DEFAULT 0);
540a541,572 > FUNCTION IDX_LOC_INT_PART(IDXOWNER IN VARCHAR2, > IDXNAME IN VARCHAR2) RETURN BOOLEAN; > > > > > FUNCTION IDX_INCLUDE_PARTITIONS RETURN BOOLEAN; > > > > > > FUNCTION IDX_SKIP_ATR_CHK RETURN BOOLEAN; > > > > > > > > > > FUNCTION IDX_PART_ATR_CHG(I_OWNER IN VARCHAR2, > I_NAME IN VARCHAR2, > T_OWNER IN VARCHAR2, > T_NAME IN VARCHAR2) RETURN BOOLEAN; > > > > > >
13c13 < '18.6.1.0.0'; --- > '18.6.2.0.0';
13c13 < '18.7.0.0.0'; --- > '18.8.0.0.0';
13c13 < '18.7.0.0.0'; --- > '18.7.1.0.0';
710a711,713 > EXCEP_DEADLOCK EXCEPTION; > I NUMBER; > PRAGMA EXCEPTION_INIT(EXCEP_DEADLOCK, -60); 715,716c718,734 < TRN :='truncate table sys.wri$_heatmap_top_tablespaces'; < EXECUTE IMMEDIATE TRN; --- > > > > FOR I IN 1..3 LOOP > BEGIN > TRN :='truncate table sys.wri$_heatmap_top_tablespaces'; > EXECUTE IMMEDIATE TRN; > EXIT; > EXCEPTION > WHEN EXCEP_DEADLOCK THEN > IF (I = 3) THEN > RAISE; > END IF; > WHEN OTHERS THEN > RAISE; > END; > END LOOP; 817a836,838 > EXCEP_DEADLOCK EXCEPTION; > I NUMBER; > PRAGMA EXCEPTION_INIT(EXCEP_DEADLOCK, -60); 819c840,855 < EXECUTE IMMEDIATE TRN; --- > > > FOR I IN 1..3 LOOP > BEGIN > EXECUTE IMMEDIATE TRN; > EXIT; > EXCEPTION > WHEN EXCEP_DEADLOCK THEN > IF (I = 3) THEN > RAISE; > END IF; > WHEN OTHERS THEN > RAISE; > END; > END LOOP; > 840c876,890 < EXECUTE IMMEDIATE TRN; --- > > > FOR I IN 1..3 LOOP > BEGIN > EXECUTE IMMEDIATE TRN; > EXIT; > EXCEPTION > WHEN EXCEP_DEADLOCK THEN > IF (I = 3) THEN > RAISE; > END IF; > WHEN OTHERS THEN > RAISE; > END; > END LOOP;
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '18.06.01.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '18.06.02.00';
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '18.07.00.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '18.08.00.00'; 211a212 > TAG_LIKE NUMBER := 0; 665a667,669 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 688c692 < NULL COMPLETION_TIME, --- > BDF.COMPLETION_TIME COMPLETION_TIME, 947a952,954 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1056a1064 > AND RESTORETAG IS NULL 1128a1137,1139 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1199a1211,1213 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1333a1348,1350 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1441a1459,1461 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1759a1780,1782 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1882a1906,1908 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 1979a2006,2008 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2107a2137,2139 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2163a2196,2198 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2300a2336,2338 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2825a2864,2866 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 2914a2956,2958 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3010a3055,3057 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3093a3141,3143 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3220a3271 > AND RESTORETAG IS NULL 3441a3493,3495 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3659a3714,3716 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3771a3829,3831 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3818a3879,3881 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3840a3904,3906 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3866a3933,3935 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3901a3971,3973 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 3961a4034,4036 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 4009a4085,4087 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 4059a4138,4140 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 4098a4180,4182 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7274a7359,7361 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7289a7377,7379 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7423a7514,7516 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7470a7564,7566 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7510a7607,7609 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7594a7694,7696 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7674a7777,7779 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7742a7848,7850 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7817a7926,7928 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7848a7960,7962 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7919a8034,8036 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 7996a8114,8116 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8056a8177,8179 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8109a8233,8235 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8195a8322,8324 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8269a8399,8401 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8331a8464,8466 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8384a8520,8522 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8476a8615,8617 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8493a8635,8637 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8516c8660,8663 < WHERE (STATUS = 'A' OR STATUS = 'X')) DC --- > WHERE (STATUS = 'A' OR STATUS = 'X') > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG)))) DC 8546a8694,8696 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND XDF.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND XDF.TAG = RESTORETAG))) 8572a8723,8725 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8615a8769,8771 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND XAL.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND XAL.TAG = RESTORETAG))) 8684a8841,8843 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8714a8874,8876 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8783a8946,8948 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8900a9066,9068 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 8943a9112,9114 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9193a9365,9367 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9437a9612,9614 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9563a9741,9743 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 9786c9966,9967 < C1REC.TAG_CON = RESTORETAG OR --- > ((TAG_LIKE = 1 AND C1REC.TAG_CON LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND C1REC.TAG_CON = RESTORETAG)) OR 9902a10084 > 10000c10182,10183 < C1REC.TAG_CON = RESTORETAG OR --- > ((TAG_LIKE = 1 AND C1REC.TAG_CON LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND C1REC.TAG_CON = RESTORETAG)) OR 11137c11320 < IF (TAG IS NOT NULL AND NOT TAGMATCHREQUIRED) THEN --- > IF (TAG IS NOT NULL AND TAGMATCHREQUIRED) THEN 11142c11325,11326 < IF (TAG = LOCAL.TAG) THEN --- > IF ((TAG_LIKE = 1 AND LOCAL.TAG LIKE TAG) OR > (TAG_LIKE <> 1 AND LOCAL.TAG = TAG)) THEN 11158c11342,11343 < DEB(DEB_IN, 'tag does not match, continuing search'); --- > DEB(DEB_IN, 'tag does not match, continuing search:' || > LOCAL.TAG); 11863,11864c12048,12052 < (ACTION.TAG_CON <> RESTORETAG OR ACTION.TAG_CON IS NULL)) THEN < DEB(DEB_PRINT, 'isValidAction: tag mismatch - skipped:'); --- > (((TAG_LIKE = 1 AND ACTION.TAG_CON NOT LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND ACTION.TAG_CON <> RESTORETAG)) OR > ACTION.TAG_CON IS NULL)) THEN > DEB(DEB_PRINT, 'isValidAction: tag mismatch - skipped:' || > NVL(ACTION.TAG_CON, '<NUL>')); 12854c13042,13045 < IF (NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) THEN --- > IF ((TAG_LIKE = 1 AND > NVL(TAG, ' ') NOT LIKE NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) OR > (TAG_LIKE <> 1 AND > NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' ')))) THEN 13822a14014,14017 > > > > 14061,14062c14256,14257 < < IF (RMANCMD != OBSOLETECMD_T) THEN --- > IF (RMANCMD != OBSOLETECMD_T OR > (RESTORETAG IS NOT NULL AND RMANCMD = OBSOLETECMD_T)) THEN 14210d14404 < 14212,14213c14406 < ACTION.TYPE_CON = BACKUPSET_CON_T AND < RMANCMD != OBSOLETECMD_T ) THEN --- > ACTION.TYPE_CON = BACKUPSET_CON_T) THEN 14222c14415,14416 < IF (VALIDATIONREC.TAG = RESTORETAG OR --- > IF (((TAG_LIKE = 1 AND VALIDATIONREC.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND VALIDATIONREC.TAG = RESTORETAG)) OR 14282,14287d14475 < < IF (RMANCMD = OBSOLETECMD_T AND NOT ISVALIDACTION(ACTION)) THEN < DEB(DEB_EXIT, 'with action_SKIP'); < RETURN ACTION_SKIP; < END IF; < 17699c17887,17890 < IF (NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) THEN --- > IF ((TAG_LIKE = 1 AND > NVL(TAG, ' ') NOT LIKE NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' '))) OR > (TAG_LIKE <> 1 AND > NVL(TAG, ' ') != NVL(CACHEBSRECTABLE.TAG, NVL(TAG, ' ')))) THEN 17995a18187,18189 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18277a18472,18474 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18369a18567 > AND RESTORETAG IS NULL 18442a18641,18643 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 18513a18715,18717 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19082c19286,19287 < AL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)); --- > AL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)) > AND RESTORETAG IS NULL; 19124c19329,19332 < XAL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)); --- > XAL.FIRST_CHANGE# < D2.NEXT_RESETLOGS_CHANGE#)) > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))); 19171a19380 > AND RESTORETAG IS NULL 19222a19432,19434 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND XAL.TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND XAL.TAG = RESTORETAG))) 19288a19501 > AND RESTORETAG IS NULL 19323a19537,19539 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19352a19569,19571 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19410c19629 < --- > AND RESTORETAG IS NULL 19441a19661,19663 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19466a19689,19691 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19541a19767 > AND RESTORETAG IS NULL 19580a19807,19809 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 19612a19842,19844 > AND (RESTORETAG IS NULL OR > ((TAG_LIKE = 1 AND TAG LIKE RESTORETAG) OR > (TAG_LIKE <> 1 AND TAG = RESTORETAG))) 20094c20326,20327 < TAG IN VARCHAR2 DEFAULT NULL) --- > TAG IN VARCHAR2 DEFAULT NULL, > USE_LIKE IN NUMBER DEFAULT 0) 20096a20330,20335 > > > IF (NVL(TAG, ' ') <> NVL(RESTORETAG, ' ') AND RCVRECCURSOR1_C%ISOPEN) THEN > DEB(DEB_PRINT, 'closing cursor rcRecCursor_c'); > CLOSE RCVRECCURSOR1_C; > END IF; 20097a20337,20338 > TAG_LIKE := USE_LIKE; > DEB(DEB_PRINT, 'restoreTag='|| RESTORETAG || ',tag_like='|| TAG_LIKE); 25714a25956,25958 > > VALIDATIONREC VALIDBACKUPSETREC_T; > BS_RCVREC RCVREC_T; 26372a26617,26618 > <<NEXTROW>> > 26599a26846,26881 > END IF; > > > IF (LBREC.BACKUP_TYPE = BACKUPSET_TXT AND RESTORETAG IS NOT NULL) THEN > BS_RCVREC.BSKEY_CON := LBREC.BS_KEY; > BS_RCVREC.SETCOUNT_CON := LBREC.BS_COUNT; > BS_RCVREC.SETSTAMP_CON := LBREC.BS_STAMP; > BS_RCVREC.PIECECOUNT_CON := LBREC.BS_PIECES; > IF (LBREC.FILE_TYPE = ARCHIVEDLOG_TXT) THEN > BS_RCVREC.LOGLOWSCN_OBJ := LBREC.RL_FIRST_CHANGE#; > BS_RCVREC.LOGTHREAD_OBJ := LBREC.RL_THREAD#; > BS_RCVREC.LOGSEQUENCE_OBJ := LBREC.RL_SEQUENCE#; > ELSIF (LBREC.FILE_TYPE IN (SPFILE_TXT, CONTROLFILE_TXT)) THEN > BS_RCVREC.DFNUMBER_OBJ := 0; > BS_RCVREC.FROMSCN_ACT := 0; > ELSIF (LBREC.FILE_TYPE = DATAFILE_TXT) THEN > BS_RCVREC.DFNUMBER_OBJ := 0; > BS_RCVREC.FROMSCN_ACT := LBREC.DF_CHECKPOINT_CHANGE#; > IF (LBREC.DF_INCREMENTAL_CHANGE# = LBREC.DF_CREATION_CHANGE# OR > LBREC.BS_INCR_TYPE = FULL_TXT) THEN > BS_RCVREC.FROMSCN_ACT := 0; > ELSIF (LBREC.BS_INCR_TYPE <> FULL_TXT) THEN > BS_RCVREC.FROMSCN_ACT := LBREC.DF_INCREMENTAL_CHANGE#; > END IF; > END IF; > > IF VALIDATEBACKUPSET(BACKUPSETREC=> BS_RCVREC, > TAG => RESTORETAG, > TAGMATCHREQUIRED => TRUE, > CHECKDEVICEISALLOCATED => TRUE, > AVAILABLEMASK => BSAVAILABLE, > VALIDREC => VALIDATIONREC) <> SUCCESS THEN > DEB(DEB_IN, 'tag does not match: bs_key=' || LBREC.BS_KEY); > GOTO NEXTROW; > END IF; > 27920c28202 < ,ATANYSCN IN BOOLEAN DEFAULT FALSE) --- > ,ATANYSCN IN BOOLEAN DEFAULT FALSE) 28537c28819 < DEB(DEB_IN, 'tag does not match'); --- > DEB(DEB_IN, 'tag does not match for controlfile proxy copy'); 28862c29144 < DEB(DEB_EXIT, 'tag does not match'); --- > DEB(DEB_EXIT, 'tag does not match for proxy copy:'||BRLREC.TAG_CON); 29101,29113c29383,29389 < IF (RMANCMD = OBSOLETECMD_T) THEN < < < VALRC := SUCCESS; < ELSE < VALRC := VALIDATEBACKUPSET( < BACKUPSETREC => BSFREC, < TAG => RESTORETAG, < TAGMATCHREQUIRED => TRUE, < CHECKDEVICEISALLOCATED => TRUE, < AVAILABLEMASK => BSAVAILABLE, < VALIDREC => VALIDATEREC); < END IF; --- > VALRC := VALIDATEBACKUPSET( > BACKUPSETREC => BSFREC, > TAG => RESTORETAG, > TAGMATCHREQUIRED => TRUE, > CHECKDEVICEISALLOCATED => TRUE, > AVAILABLEMASK => BSAVAILABLE, > VALIDREC => VALIDATEREC); 29130,29139d29405 < ELSIF (RMANCMD = OBSOLETECMD_T) THEN < DEB(DEB_IN, ' Added bsfRec:'); < < RCVRECPUSH(BSFREC); < GETBS_STATUS := SUCCESS; < IF (LCOPIES > 1) THEN < LCOPIES := LCOPIES - 1; < ELSE < EXIT; < END IF; 29407a29674 > DEB(DEB_PRINT, 'getRA_likePattern='|| PATTERN);
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '18.07.00.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '18.07.01.00';
84a85,86 > > CONS_TS_CHANGED CONSTANT PLS_INTEGER := 32; 1259,1260c1261,1264 < USING_INDEX BOOLEAN :=FALSE; < --- > USING_INDEX BOOLEAN := FALSE; > IDX_ATT_LOCAL BOOLEAN := FALSE; > IDX_TMP_CNT PLS_INTEGER; > IDX_INT_PARTITION BOOLEAN := FALSE; 1468,1470c1472,1504 < IF (FOUND_INTERVAL OR DBMS_REDEFINITION_INTERNAL.IS_PARTITIONED_IDX( < O_OBJ_OWNER, O_OBJ_NAME)) THEN < DBMS_METADATA.SET_TRANSFORM_PARAM(DHANDLE,'INCLUDE_PARTITIONS','ALL'); --- > IF (FOUND_INTERVAL > OR DBMS_REDEFINITION_INTERNAL.IS_PARTITIONED_IDX(O_OBJ_OWNER, > O_OBJ_NAME)) > THEN > IDX_INT_PARTITION := DBMS_REDEFINITION_INTERNAL.IDX_LOC_INT_PART( > O_OBJ_OWNER,O_OBJ_NAME); > IF (NOT IDX_INT_PARTITION) > OR DBMS_REDEFINITION_INTERNAL.IDX_INCLUDE_PARTITIONS > OR DBMS_REDEFINITION_INTERNAL.IDX_PART_ATR_CHG(O_OBJ_OWNER, > O_OBJ_NAME, > O_BT_OWNER, > O_BT_NAME) > OR (BITAND(CTX_FLAG, DBMS_REDEFINITION.CONS_REDEF_TABLE) > <> DBMS_REDEFINITION.CONS_REDEF_TABLE) > THEN > > > > > > > > DBMS_METADATA.SET_TRANSFORM_PARAM(DHANDLE,'INCLUDE_PARTITIONS', > 'ALL'); > ELSE > > > > DBMS_METADATA.SET_TRANSFORM_PARAM(DHANDLE,'PARTITIONING',FALSE); > IDX_ATT_LOCAL := TRUE; > > IDX_INT_PARTITION := FALSE; > END IF; 1527c1561,1586 < --- > IF IDX_ATT_LOCAL THEN > > > > > > > > > SELECT COUNT(REGEXP_SUBSTR( > DBMS_LOB.SUBSTR(MD_DDL_INFO.DDLTEXT,1000), > '(^|\s)TABLESPACE($|\s)')) > INTO IDX_TMP_CNT FROM SYS.DUAL; > IF IDX_TMP_CNT > 0 OR NEW_TABLESPACE IS NULL THEN > > > DBMS_LOB.APPEND(MD_DDL_INFO.DDLTEXT, TO_CLOB(' LOCAL')); > ELSE > IF NEW_TABLESPACE IS NOT NULL THEN > > DBMS_LOB.APPEND(MD_DDL_INFO.DDLTEXT, TO_CLOB(' TABLESPACE '|| > DBMS_ASSERT.ENQUOTE_NAME(NEW_TABLESPACE,FALSE) || > ' LOCAL')); > END IF; > END IF; > END IF; 1750a1810,1826 > > > > > IF IDX_INT_PARTITION AND NEW_TABLESPACE IS NOT NULL > THEN > ALTER_IDX_DDL := 'ALTER INDEX ' || > DBMS_ASSERT.ENQUOTE_NAME(I_OBJ_OWNER, FALSE) || '.' || > DBMS_ASSERT.ENQUOTE_NAME(I_OBJ_NAME, FALSE) || > ' MODIFY DEFAULT ATTRIBUTES TABLESPACE ' || > DBMS_ASSERT.ENQUOTE_NAME(NEW_TABLESPACE, FALSE); > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'transform_ddl: alter index ddl= ' || > ALTER_IDX_DDL); > END IF; > EXECUTE IMMEDIATE ALTER_IDX_DDL; > END IF; 4614a4691 > CTX_FLAG := CTX_FLAG + DBMS_REDEFINITION.CONS_TS_CHANGED;
1064a1065,1400 > > > > > > FUNCTION IDX_LOC_INT_PART(IDXOWNER IN VARCHAR2, > IDXNAME IN VARCHAR2) RETURN BOOLEAN > IS > IND_CONS NUMBER; > BEGIN > SELECT COUNT(1) INTO IND_CONS > FROM DBA_PART_INDEXES IND > WHERE IND.INDEX_NAME = IDXNAME > AND IND.OWNER = IDXOWNER > AND IND.LOCALITY = 'LOCAL' > AND IND.INTERVAL IS NOT NULL; > IF IND_CONS > 0 THEN > RETURN TRUE; > END IF; > RETURN FALSE; > EXCEPTION WHEN OTHERS THEN > RETURN FALSE; > END IDX_LOC_INT_PART; > > > > > FUNCTION IDX_INCLUDE_PARTITIONS RETURN BOOLEAN IS > EVENT_VALUE BINARY_INTEGER := 0; > BEGIN > DBMS_SYSTEM.READ_EV(42055, EVENT_VALUE); > IF BITAND(EVENT_VALUE, 32) = 32 THEN > RETURN TRUE; > ELSE > RETURN FALSE; > END IF; > END IDX_INCLUDE_PARTITIONS; > > > > > > FUNCTION IDX_SKIP_ATR_CHK RETURN BOOLEAN IS > EVENT_VALUE BINARY_INTEGER := 0; > BEGIN > DBMS_SYSTEM.READ_EV(42055, EVENT_VALUE); > IF BITAND(EVENT_VALUE, 64) = 64 THEN > RETURN TRUE; > ELSE > RETURN FALSE; > END IF; > END IDX_SKIP_ATR_CHK; > > > > > > > > > > > FUNCTION IDX_PART_ATR_CHG(I_OWNER IN VARCHAR2, > I_NAME IN VARCHAR2, > T_OWNER IN VARCHAR2, > T_NAME IN VARCHAR2) RETURN BOOLEAN > IS > P_NAME_INT VARCHAR2(128) := NULL; > P_NAME_DEF VARCHAR2(128) := NULL; > CHANGED BOOLEAN := FALSE; > ITEM NUMBER; > CURSOR PATS IS > SELECT MIN(PARTITION_NAME) NAME ,MIN(INTERVAL) INTERVAL > FROM DBA_IND_PARTITIONS > WHERE INDEX_OWNER=I_OWNER AND INDEX_NAME=I_NAME > GROUP BY INTERVAL,COMPOSITE,SUBPARTITION_COUNT,STATUS,TABLESPACE_NAME, > PCT_FREE,INI_TRANS,MAX_TRANS,INITIAL_EXTENT, NEXT_EXTENT, > MIN_EXTENT,MAX_EXTENT,MAX_SIZE,PCT_INCREASE,FREELISTS, > FREELIST_GROUPS,LOGGING,COMPRESSION,BUFFER_POOL,FLASH_CACHE, > CELL_FLASH_CACHE,PARAMETERS,DOMIDX_OPSTATUS; > BEGIN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart : index ' || I_OWNER || '.' || I_NAME || > ' on ' || T_OWNER || '.' || T_NAME); > END IF; > > > > IF (IDX_SKIP_ATR_CHK) THEN > RETURN FALSE; > END IF; > > > > > SELECT COUNT(*) INTO ITEM > FROM DBA_TAB_PARTITIONS U, DBA_IND_PARTITIONS I > WHERE U.TABLE_OWNER=T_OWNER AND U.TABLE_NAME = T_NAME > AND I.INDEX_OWNER=I_OWNER AND I.INDEX_NAME = I_NAME > AND U.PARTITION_POSITION=I.PARTITION_POSITION > AND U.PARTITION_NAME != I.PARTITION_NAME; > IF ITEM >0 THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 1: partition names are changed'); > END IF; > CHANGED := TRUE; > RETURN CHANGED; > END IF; > > > > > > > > FOR PAT IN PATS LOOP > IF (PATS%ROWCOUNT > 2 ) THEN > > CHANGED := TRUE; > EXIT; > END IF; > IF PAT.INTERVAL = 'NO' THEN > IF P_NAME_DEF IS NULL THEN > P_NAME_DEF := PAT.NAME; > ELSE > > CHANGED := TRUE; > EXIT; > END IF; > ELSE > IF P_NAME_INT IS NULL THEN > P_NAME_INT := PAT.NAME; > ELSE > > CHANGED := TRUE; > EXIT; > END IF; > END IF; > END LOOP; > IF P_NAME_INT IS NULL AND > P_NAME_DEF IS NULL THEN > > CHANGED := TRUE; > END IF; > IF CHANGED THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 2: ' || > 'one or more partition attributes are changed'); > END IF; > RETURN CHANGED; > END IF; > > > > IF (P_NAME_INT IS NOT NULL) AND (P_NAME_DEF IS NOT NULL) > THEN > BEGIN > SELECT COUNT(1) INTO ITEM > FROM DBA_IND_PARTITIONS > WHERE INDEX_OWNER=I_OWNER AND INDEX_NAME=I_NAME AND > PARTITION_NAME IN (P_NAME_INT, P_NAME_DEF) > GROUP BY COMPOSITE,SUBPARTITION_COUNT,STATUS,TABLESPACE_NAME, > PCT_FREE,INI_TRANS,MAX_TRANS, LOGGING,COMPRESSION, > BUFFER_POOL,FLASH_CACHE,CELL_FLASH_CACHE; > > > EXCEPTION WHEN OTHERS THEN > > > CHANGED := TRUE; > END; > IF CHANGED THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 3: common attributes are changed'); > END IF; > RETURN CHANGED; > END IF; > END IF; > BEGIN > IF P_NAME_INT IS NOT NULL THEN > > > SELECT COUNT(*) INTO ITEM > FROM DBA_IND_PARTITIONS > WHERE INDEX_OWNER=I_OWNER AND > INDEX_NAME=I_NAME AND > PARTITION_NAME = P_NAME_INT AND > SUBPARTITION_COUNT = 0 AND > STATUS = 'USABLE' AND > COMPOSITE = 'NO'; > IF ITEM = 0 THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 4: attributes of partition ' || > P_NAME_INT || ' are changed'); > END IF; > CHANGED := TRUE; > RETURN CHANGED; > END IF; > > > > > > > SELECT COUNT(*) INTO ITEM > FROM DBA_IND_PARTITIONS I, DBA_PART_INDEXES P, DBA_INDEXES D > WHERE I.INDEX_OWNER=I_OWNER AND I.INDEX_NAME=I_NAME AND > I.PARTITION_NAME = P_NAME_INT AND > I.INDEX_NAME = P.INDEX_NAME AND > I.INDEX_OWNER = D.OWNER AND I.INDEX_NAME= D.INDEX_NAME AND > (P.DEF_TABLESPACE_NAME = I.TABLESPACE_NAME OR > P.DEF_TABLESPACE_NAME IS NULL) > AND > P.DEF_PCT_FREE = I.PCT_FREE AND > P.DEF_INI_TRANS = I.INI_TRANS AND > P.DEF_MAX_TRANS = I.MAX_TRANS AND > (P.DEF_LOGGING = I.LOGGING OR > ((P.DEF_LOGGING = 'NONE' OR P.DEF_LOGGING = 'UNKNOWN') > AND I.LOGGING = 'YES')) > AND > P.DEF_BUFFER_POOL = I.BUFFER_POOL AND > P.DEF_FLASH_CACHE = I.FLASH_CACHE AND > P.DEF_CELL_FLASH_CACHE= I.CELL_FLASH_CACHE AND > P.DEF_INITIAL_EXTENT = 'DEFAULT' AND > P.DEF_NEXT_EXTENT = 'DEFAULT' AND > P.DEF_MIN_EXTENTS = 'DEFAULT' AND > P.DEF_MAX_EXTENTS = 'DEFAULT' AND > P.DEF_MAX_SIZE = 'DEFAULT' AND > P.DEF_PCT_INCREASE = 'DEFAULT' AND > ((P.DEF_FREELISTS = 0 AND > (I.FREELISTS = 1 OR I.FREELISTS IS NULL )) OR > (P.DEF_FREELISTS > 0 AND > P.DEF_FREELISTS = I.FREELISTS)) > AND > ((P.DEF_FREELIST_GROUPS = 0 AND > (I.FREELIST_GROUPS = 1 OR I.FREELIST_GROUPS IS NULL )) OR > (P.DEF_FREELIST_GROUPS > 0 AND > P.DEF_FREELIST_GROUPS = I.FREELIST_GROUPS)) AND > D.COMPRESSION = I.COMPRESSION; > IF ITEM = 0 THEN > CHANGED := TRUE; > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 5: attributes of partition ' || > P_NAME_INT || ' are changed from default'); > END IF; > RETURN CHANGED; > END IF; > > > > > > > SELECT COUNT(*) INTO ITEM > FROM DBA_IND_PARTITIONS I, DBA_TABLESPACES TS > WHERE I.INDEX_OWNER=I_OWNER AND I.INDEX_NAME=I_NAME AND > I.PARTITION_NAME = P_NAME_INT AND > I.TABLESPACE_NAME = TS.TABLESPACE_NAME AND > (TS.NEXT_EXTENT IS NULL OR > I.NEXT_EXTENT = TS.NEXT_EXTENT) AND > (TS.MIN_EXTENTS IS NULL OR > I.MIN_EXTENT = TS.MIN_EXTENTS) AND > (TS.MAX_EXTENTS IS NULL OR > I.MAX_EXTENT = TS.MAX_EXTENTS) AND > (TS.MAX_SIZE IS NULL OR > I.MAX_SIZE = TS.MAX_SIZE) AND > (TS.PCT_INCREASE IS NULL OR > I.PCT_INCREASE = TS.PCT_INCREASE); > IF ITEM = 0 THEN > CHANGED := TRUE; > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 6: storage attributes of partition ' > || P_NAME_INT || ' are changed'); > END IF; > RETURN CHANGED; > END IF; > END IF; > IF P_NAME_DEF IS NOT NULL THEN > > > > > SELECT COUNT(*) INTO ITEM > FROM DBA_IND_PARTITIONS > WHERE INDEX_OWNER=I_OWNER AND > INDEX_NAME=I_NAME AND > PARTITION_NAME = P_NAME_DEF AND > INITIAL_EXTENT IS NULL AND > NEXT_EXTENT IS NULL AND > MIN_EXTENT IS NULL AND > MAX_EXTENT IS NULL AND > MAX_SIZE IS NULL AND > PCT_INCREASE IS NULL AND > FREELISTS IS NULL AND > FREELIST_GROUPS IS NULL; > IF ITEM = 0 THEN > > > > > IF P_NAME_INT IS NOT NULL THEN > BEGIN > SELECT COUNT(1) INTO ITEM > FROM DBA_IND_PARTITIONS > WHERE INDEX_OWNER=I_OWNER AND INDEX_NAME=I_NAME AND > PARTITION_NAME IN (P_NAME_INT, P_NAME_DEF) > GROUP BY INITIAL_EXTENT, MIN_EXTENT, NEXT_EXTENT, > MIN_EXTENT, MAX_EXTENT, MAX_SIZE, PCT_INCREASE, > FREELISTS, FREELIST_GROUPS; > > > EXCEPTION WHEN OTHERS THEN > > CHANGED := TRUE; > END; > ELSE > > CHANGED := TRUE; > END IF; > IF (CHANGED) THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 7: partition attributes of ' || > P_NAME_DEF || ' are changed'); > END IF; > RETURN CHANGED; > END IF; > END IF; > END IF; > EXCEPTION WHEN OTHERS THEN > IF (DBMS_REDEFINITION_INTERNAL.CHECK_TRACE_EVENT) THEN > DBMS_SYSTEM.KSDWRT(1, 'idxpart 8: exception mark as changed'); > END IF; > CHANGED := TRUE; > END; > RETURN CHANGED; > END IDX_PART_ATR_CHG; 1075c1411 < PROCEDURE ADD_DEP_ERRMSG(RID IN PLS_INTEGER, --- > PROCEDURE ADD_DEP_ERRMSG(RID IN PLS_INTEGER,
5960,5961c5960 < TRACE(ILM_DEBUG_ENTRY_EXIT, < 'Exiting execute_ilm_policies '); --- > 5963,5967d5961 < BEGIN < PRVT_ILM.CREATE_TAB_ILMJOB(V_TAB_ILMJOB, EXECUTION_ID); < EXCEPTION < WHEN OTHERS THEN < 5970,5972c5964,5970 < NULL; < END; < --- > > IF (V_TAB_ILMJOB.COUNT > 0) THEN > BEGIN > PRVT_ILM.CREATE_TAB_ILMJOB(V_TAB_ILMJOB, EXECUTION_ID); > EXCEPTION > WHEN OTHERS THEN > 5975c5973,5986 < PRVT_ILM.UPDATE_TAB_ILMJOB(V_TAB_ILMJOB); --- > NULL; > END; > > > > PRVT_ILM.UPDATE_TAB_ILMJOB(V_TAB_ILMJOB); > ELSE > > UPDATE SYS.ILM_EXECUTION$ ILMEXE > SET COMPLETION_TIME = SYSTIMESTAMP, > EXECUTION_STATE = ILM_TASK_COMPLETE > WHERE ILMEXE.EXECUTION_ID = EXECUTE_ILM_POLICIES.EXECUTION_ID; > END IF; > 7906c7917,7918 < WHERE V_TABTASKINFO(I).N_UNRESOL = 0; --- > WHERE V_TABTASKINFO(I).N_UNRESOL = 0 > AND EXECUTION_ID = V_TABTASKINFO(I).TASK_ID;
20a21 > type INTNTAB is table of PLS_INTEGER;
2189c2189 < P_MAX_LENGTHS OUT NUMNTAB, --- > P_MAX_LENGTHS OUT INTNTAB, 2321c2321 < P_MAX_LENGTHS := NUMNTAB(); --- > P_MAX_LENGTHS := INTNTAB(); 2547c2547 < V_MAX_LENGTHS NUMNTAB; --- > V_MAX_LENGTHS INTNTAB; 2551,2553c2551,2553 < V_NUM_CHAR_COLS NUMBER := 0; < V_NUM_CHAR_COLS_LEN NUMBER := 0; < V_DEFAULT_SIZE NUMBER := 0; --- > V_NUM_CHAR_COLS PLS_INTEGER := 0; > V_NUM_CHAR_COLS_LEN PLS_INTEGER := 0; > V_DEFAULT_SIZE PLS_INTEGER := 0;
19.0.0.0
1797a1798,1806 > * set allow common operation status to TRUE or FALSE for the whole CDB > * > * @param status: The allow common operation status to set for the whole > * CDB. > */ > PROCEDURE allow_common_operation(status IN BOOLEAN DEFAULT TRUE); > PRAGMA SUPPLEMENTAL_LOG_DATA(allow_common_operation, AUTO_WITH_COMMIT); > > /**
239a240,247 > * Returns ALLOW COMMON OPERATION status > * > * @return status string for ALLOW COMMON OPERATION > */ > FUNCTION GET_ACO_STATUS RETURN PLS_INTEGER; > PRAGMA SUPPLEMENTAL_LOG_DATA(GET_ACO_STATUS, NONE); > > /**
2810a2811,2820 > PROCEDURE ALLOW_COMMON_OPERATION(STATUS IN BOOLEAN DEFAULT TRUE) > IS > EXTERNAL > LANGUAGE C > NAME "kzvradmAllowCommOp" > LIBRARY DVSYS.KZV$ADM_LIBT > WITH CONTEXT PARAMETERS(CONTEXT, > STATUS UB1, > STATUS INDICATOR SB2); >
276a277,286 > FUNCTION GET_ACO_STATUS RETURN PLS_INTEGER > IS > LANGUAGE C > NAME "kzvutilGetACOStatus" > LIBRARY DVSYS.KZV$UTL_LIBT > WITH CONTEXT > PARAMETERS (CONTEXT, > RETURN INDICATOR SB4, > RETURN SB2); >
0a1,4 > SELECT 'DV_ALLOW_COMMON_OPERATION' AS NAME, > decode(DVSYS.DBMS_MACUTL.GET_ACO_STATUS, 1, 'TRUE', 'FALSE') AS STATUS > FROM SYS.DUAL >
177c177,178 < MATCHEDSIG OUT VARCHAR2); --- > MATCHEDSIG OUT VARCHAR2, > OPTIONS VARCHAR2 DEFAULT NULL); 186c187,188 < RULEBASEIDS SYS.ODCINUMBERLIST) --- > RULEBASEIDS SYS.ODCINUMBERLIST, > OPTIONS VARCHAR2 DEFAULT NULL) 188a191,195 > FUNCTION GET_RDF_SEQUENCE_NEXTVAL (SEQUENCE_NAME VARCHAR2) > RETURN NUMBER; > FUNCTION W_GET_RDF_SEQUENCE_NEXTVAL (SEQUENCE_NAME VARCHAR2) > RETURN NUMBER; > 849c856,857 < MATCHEDSIG OUT VARCHAR2); --- > MATCHEDSIG OUT VARCHAR2, > OPTIONS VARCHAR2 DEFAULT NULL); 858c866,867 < RULEBASEIDS SYS.ODCINUMBERLIST) --- > RULEBASEIDS SYS.ODCINUMBERLIST, > OPTIONS VARCHAR2 DEFAULT NULL)
39c39,77 < procedure create_rules_index(index_name_in varchar2, --- > -- router version > procedure create_rules_index(index_name_in varchar2, > models_in mdsys.rdf_models, > rulebases_in mdsys.rdf_rulebases, > passes integer default 0, > inf_components_in varchar2 default null, > options varchar2 default null, > delta_in mdsys.rdf_models default null, > include_named_g sem_graphs default null, > include_default_g mdsys.rdf_models default null, > include_all_g mdsys.rdf_models default null, > inf_ng_name varchar2 default null, > inf_ext_user_func_name varchar2 default null, > ols_ladder_inf_lbl_seq varchar2 default null -- A string a numeric labels > -- delimited by a space > ); > > -- PR stub version > procedure create_rules_index_PR(index_name_in varchar2, > models_in mdsys.rdf_models, > rulebases_in mdsys.rdf_rulebases, > passes integer default 0, > inf_components_in varchar2 default null, > options varchar2 default null, > delta_in mdsys.rdf_models default null, > include_named_g sem_graphs default null, > include_default_g mdsys.rdf_models default null, > include_all_g mdsys.rdf_models default null, > inf_ng_name varchar2 default null, > inf_ext_user_func_name varchar2 default null, > ols_ladder_inf_lbl_seq varchar2 default null -- A string a numeric labels > -- delimited by a space > , p_network_owner varchar2 default NULL > , p_network_name varchar2 default NULL > ); > PRAGMA SUPPLEMENTAL_LOG_DATA(create_rules_index_PR, AUTO_WITH_COMMIT); > > -- worker version > procedure w_create_rules_index(index_name_in varchar2,
18a19 > PRAGMA SUPPLEMENTAL_LOG_DATA(create_policy, AUTO_WITH_COMMIT); 25a27 > PRAGMA SUPPLEMENTAL_LOG_DATA(create_policy, AUTO_WITH_COMMIT); 34a37 > PRAGMA SUPPLEMENTAL_LOG_DATA(create_policy, AUTO_WITH_COMMIT); 44a48 > PRAGMA SUPPLEMENTAL_LOG_DATA(create_policy, AUTO_WITH_COMMIT); 50a55 > PRAGMA SUPPLEMENTAL_LOG_DATA(drop_policy, AUTO_WITH_COMMIT); 79a85 > PRAGMA SUPPLEMENTAL_LOG_DATA(maintain_triples, AUTO_WITH_COMMIT);
92a93 > PRAGMA SUPPLEMENTAL_LOG_DATA(CREATE_POLICY, AUTO_WITH_COMMIT); 105a107 > PRAGMA SUPPLEMENTAL_LOG_DATA(CREATE_DEPEND_POLICY, AUTO_WITH_COMMIT); 112a115 > PRAGMA SUPPLEMENTAL_LOG_DATA(DROP_POLICY, AUTO_WITH_COMMIT); 283a287,294 > PROCEDURE W_CREATE_VIRTUAL_RDFCTX_IDX_PR ( > ROLES_AND_PRIVS VARCHAR2, > P_IDXOWNER VARCHAR2, > P_IDXNAME VARCHAR2, > P_IDXPARTNAME VARCHAR2, > P_DEPPLCNM VARCHAR2, > L_VMIDX NUMBER, P_NETWORK_OWNER VARCHAR2, P_NETWORK_NAME VARCHAR2); > PRAGMA SUPPLEMENTAL_LOG_DATA(W_CREATE_VIRTUAL_RDFCTX_IDX_PR, AUTO_WITH_COMMIT); 538a550,667 > > PROCEDURE ODCIINDEXCREATE_PR ( > IDXINFO SYS.ODCIINDEXINFO, > IDXPARMS VARCHAR2, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER); > PRAGMA SUPPLEMENTAL_LOG_DATA(ODCIINDEXCREATE_PR, MANUAL); > > PROCEDURE ODCIINDEXDROP_PR ( > IDXINFO SYS.ODCIINDEXINFO, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER); > PRAGMA SUPPLEMENTAL_LOG_DATA(ODCIINDEXDROP_PR, MANUAL); > > PROCEDURE ODCIINDEXALTER_PR ( > IDXINFO SYS.ODCIINDEXINFO, > IDXPARMS IN OUT VARCHAR2, > ALTOPT NUMBER, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER); > PRAGMA SUPPLEMENTAL_LOG_DATA(ODCIINDEXALTER_PR, MANUAL); > > PROCEDURE ODCIINDEXTRUNCATE_PR ( > IDXINFO SYS.ODCIINDEXINFO, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER); > PRAGMA SUPPLEMENTAL_LOG_DATA(ODCIINDEXTRUNCATE_PR, MANUAL); > > PROCEDURE ODCIINDEXMERGEPARTITION_PR ( > IDXINFO SYS.ODCIINDEXINFO, > PART1_NAME SYS.ODCIPARTINFO, > PART2_NAME SYS.ODCIPARTINFO, > IDXPARMS VARCHAR2, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER); > PRAGMA SUPPLEMENTAL_LOG_DATA(ODCIINDEXMERGEPARTITION_PR, MANUAL); > > PROCEDURE ODCIINDEXSPLITPARTITION_PR ( > IDXINFO SYS.ODCIINDEXINFO, > PART1_NAME SYS.ODCIPARTINFO, > PART2_NAME SYS.ODCIPARTINFO, > IDXPARMS VARCHAR2, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER); > PRAGMA SUPPLEMENTAL_LOG_DATA(ODCIINDEXSPLITPARTITION_PR, MANUAL); > > PROCEDURE ODCIINDEXEXCHANGEPARTITION_PR ( > PA_IDXINFO SYS.ODCIINDEXINFO, > IDXINFO SYS.ODCIINDEXINFO, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER); > PRAGMA SUPPLEMENTAL_LOG_DATA(ODCIINDEXEXCHANGEPARTITION_PR, MANUAL); > > PROCEDURE ODCIINDEXINSERT_PR ( > IDXINFO SYS.ODCIINDEXINFO, > RID VARCHAR2, > NEWVAL VARCHAR2, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER); > PRAGMA SUPPLEMENTAL_LOG_DATA(ODCIINDEXINSERT_PR, MANUAL); > > PROCEDURE ODCIINDEXINSERT_PR ( > IDXINFO SYS.ODCIINDEXINFO, > RID VARCHAR2, > NEWVAL CLOB, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER); > PRAGMA SUPPLEMENTAL_LOG_DATA(ODCIINDEXINSERT_PR, MANUAL); > > PROCEDURE ODCIINDEXDELETE_PR ( > IDXINFO SYS.ODCIINDEXINFO, > RID VARCHAR2, > OLDVAL VARCHAR2, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER); > PRAGMA SUPPLEMENTAL_LOG_DATA(ODCIINDEXDELETE_PR, MANUAL); > > PROCEDURE ODCIINDEXDELETE_PR ( > IDXINFO SYS.ODCIINDEXINFO, > RID VARCHAR2, > OLDVAL CLOB, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER); > PRAGMA SUPPLEMENTAL_LOG_DATA(ODCIINDEXDELETE_PR, MANUAL); > > PROCEDURE ODCIINDEXUPDATE_PR ( > IDXINFO SYS.ODCIINDEXINFO, > RID VARCHAR2, > OLDVAL VARCHAR2, > NEWVAL VARCHAR2, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER); > PRAGMA SUPPLEMENTAL_LOG_DATA(ODCIINDEXUPDATE_PR, MANUAL); > > PROCEDURE ODCIINDEXUPDATE_PR ( > IDXINFO SYS.ODCIINDEXINFO, > RID VARCHAR2, > OLDVAL CLOB, > NEWVAL CLOB, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER); > PRAGMA SUPPLEMENTAL_LOG_DATA(ODCIINDEXUPDATE_PR, MANUAL); > > PROCEDURE ODCIINDEXSTART_PR ( > ICTX IN OUT SEMCONTEXTINDEXMETHODS, > IDXINFO SYS.ODCIINDEXINFO, > OPI SYS.ODCIPREDINFO, > OQI SYS.ODCIQUERYINFO, > STRT NUMBER, > STOP NUMBER, > SPARQL VARCHAR2, > POLICY VARCHAR2, > IDX_STATUS INTEGER, > ALIASES MDSYS.RDF_ALIASES, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER); > PRAGMA SUPPLEMENTAL_LOG_DATA(ODCIINDEXSTART_PR, MANUAL); >
1a2,3 > -- #28103358: MDSYS packages require PRAGMA for DBMS_ROLLING upgrade support > PRAGMA SUPPLEMENTAL_LOG_DATA(default, NONE);
681c681,682 < matchedsig OUT varchar2); --- > matchedsig OUT varchar2, > options varchar2 default NULL); 690c691,692 < RulebaseIDs SYS.ODCINumberList) --- > RulebaseIDs SYS.ODCINumberList, > options varchar2 default NULL) 691a694,696 > > FUNCTION get_rdf_sequence_nextval (sequence_name varchar2) > RETURN number;
3c3 < --PRAGMA SUPPLEMENTAL_LOG_DATA(default, NONE); --- > PRAGMA SUPPLEMENTAL_LOG_DATA(default, NONE);
1744c1744,1745 < MATCHEDSIG OUT VARCHAR2) IS --- > MATCHEDSIG OUT VARCHAR2, > OPTIONS VARCHAR2 DEFAULT NULL) IS 1777c1778 < MODELIDS, RULEBASEIDS); --- > MODELIDS, RULEBASEIDS, OPTIONS); 1889c1890,1891 < RULEBASEIDS SYS.ODCINUMBERLIST) --- > RULEBASEIDS SYS.ODCINUMBERLIST, > OPTIONS VARCHAR2 DEFAULT NULL) 1897c1899,1907 < EXECUTE IMMEDIATE 'select ' || V_PFX_FOR_RDF_OBJ_NAME || 'rdf_model_id_sq.nextval from SYS.DUAL' INTO ISEQ; --- > > ISEQ := NVL(SDO_SEM_UTL.GET_INT_PARAMETER(NLS_UPPER(',' || REPLACE(OPTIONS, ' ', '') || ','), > ',RDFCTX_PRECOMP_ID='),0); > > IF (ISEQ = 0) THEN > EXECUTE IMMEDIATE 'select ' || V_PFX_FOR_RDF_OBJ_NAME || 'rdf_model_id_sq.nextval from SYS.DUAL' INTO ISEQ; > > > END IF; 1931a1942 > 1934a1946,1956 > FUNCTION W_GET_RDF_SEQUENCE_NEXTVAL (SEQUENCE_NAME VARCHAR2) RETURN NUMBER IS > ISEQ NUMBER; > BEGIN > > IF NOT(SDO_RDF_INTERNAL.FIND_SUBPROGS_ON_CALL_STACK('MDSYS', SYS.ODCIVARCHAR2LIST('SDO_SEM_INFERENCE.CREATE_RULES_INDEX'))) THEN > RAISE_APPLICATION_ERROR(-20000, 'unexpected call stack for this call: ' || CHR(10) || DBMS_UTILITY.FORMAT_CALL_STACK); > END IF; > EXECUTE IMMEDIATE 'select ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(V_PFX_FOR_RDF_OBJ_NAME || SEQUENCE_NAME) || '.nextval from SYS.DUAL' INTO ISEQ; > RETURN ISEQ; > END W_GET_RDF_SEQUENCE_NEXTVAL; > 8383c8405 < ' begin :1 := sem_rdfsa.has_triple_level_ols(); end;' USING IN OUT --- > ' begin :1 := MDSYS.sem_rdfsa.has_triple_level_ols(); end;' USING IN OUT 8390c8412,8415 < RDF_APIS_INTERNAL.KSDWRF('W_has_triple_level_ols: EXCEPTION from sem_rdfsa_DR.has_triple_level_ols' || CHR(10) || DBMS_UTILITY.FORMAT_ERROR_STACK, TRUE); --- > RDF_APIS_INTERNAL.KSDWRF('W_has_triple_level_ols: RETURN false [CU=' || SYS_CONTEXT('USERENV','CURRENT_USER') || ']: EXCEPTION from sem_rdfsa_DR.has_triple_level_ols' || > CHR(10) || '[' || CHR(10) || DBMS_UTILITY.FORMAT_ERROR_STACK || CHR(10) || ']' || > CHR(10) || DBMS_UTILITY.FORMAT_CALL_STACK > , DEBUG_TRACE); 8881c8906,8907 < MATCHEDSIG OUT VARCHAR2) IS --- > MATCHEDSIG OUT VARCHAR2, > OPTIONS VARCHAR2 DEFAULT NULL) IS 8886c8912 < S_SDO_RDF_INTERNAL.GETPRECOMPSTATUS(OWNER, INDEX_NAME, PRECOMPSIG, MODELIDS, RULEBASEIDS, PRECOMPID, STATUS, MATCHEDSIG); --- > S_SDO_RDF_INTERNAL.GETPRECOMPSTATUS(OWNER, INDEX_NAME, PRECOMPSIG, MODELIDS, RULEBASEIDS, PRECOMPID, STATUS, MATCHEDSIG, OPTIONS); 8889c8915 < W_GETPRECOMPSTATUS(OWNER, INDEX_NAME, PRECOMPSIG, MODELIDS, RULEBASEIDS, PRECOMPID, STATUS, MATCHEDSIG); --- > W_GETPRECOMPSTATUS(OWNER, INDEX_NAME, PRECOMPSIG, MODELIDS, RULEBASEIDS, PRECOMPID, STATUS, MATCHEDSIG, OPTIONS); 8893,8894c8919,8920 < 'S_SDO_RDF_INTERNAL.getPrecompStatus(:owner, :index_name, :precompsig, :ModelIDs, :RulebaseIDs, :precompID, :status, :matchedsig)'; < EXECUTE IMMEDIATE DYN_SQL_STMT USING OWNER, INDEX_NAME, PRECOMPSIG, MODELIDS, RULEBASEIDS, OUT PRECOMPID, OUT STATUS, OUT MATCHEDSIG; --- > 'S_SDO_RDF_INTERNAL.getPrecompStatus(:owner, :index_name, :precompsig, :ModelIDs, :RulebaseIDs, :precompID, :status, :matchedsig, :options)'; > EXECUTE IMMEDIATE DYN_SQL_STMT USING OWNER, INDEX_NAME, PRECOMPSIG, MODELIDS, RULEBASEIDS, OUT PRECOMPID, OUT STATUS, OUT MATCHEDSIG, OPTIONS; 8920c8946,8947 < RULEBASEIDS SYS.ODCINUMBERLIST) --- > RULEBASEIDS SYS.ODCINUMBERLIST, > OPTIONS VARCHAR2 DEFAULT NULL) 8927c8954 < RETURN S_SDO_RDF_INTERNAL.CREATEPRECOMPSTATUS(OWNER, INDEX_NAME, PRECOMPSIG, MODELIDS, RULEBASEIDS); --- > RETURN S_SDO_RDF_INTERNAL.CREATEPRECOMPSTATUS(OWNER, INDEX_NAME, PRECOMPSIG, MODELIDS, RULEBASEIDS, OPTIONS); 8930c8957 < RETURN W_CREATEPRECOMPSTATUS(OWNER, INDEX_NAME, PRECOMPSIG, MODELIDS, RULEBASEIDS); --- > RETURN W_CREATEPRECOMPSTATUS(OWNER, INDEX_NAME, PRECOMPSIG, MODELIDS, RULEBASEIDS, OPTIONS); 8934,8935c8961,8962 < 'S_SDO_RDF_INTERNAL.createPrecompStatus(:owner, :index_name, :precompsig, :ModelIDs, :RulebaseIDs); END;'; < EXECUTE IMMEDIATE DYN_SQL_STMT USING OUT RET_VAL, OWNER, INDEX_NAME, PRECOMPSIG, MODELIDS, RULEBASEIDS; --- > 'S_SDO_RDF_INTERNAL.createPrecompStatus(:owner, :index_name, :precompsig, :ModelIDs, :RulebaseIDs, :options); END;'; > EXECUTE IMMEDIATE DYN_SQL_STMT USING OUT RET_VAL, OWNER, INDEX_NAME, PRECOMPSIG, MODELIDS, RULEBASEIDS, OPTIONS; 8938a8966,8984 > > FUNCTION GET_RDF_SEQUENCE_NEXTVAL (SEQUENCE_NAME VARCHAR2) RETURN NUMBER IS > RET_VAL NUMBER; > CHOSEN_ROUTE NUMBER := SDO_RDF_INTERNAL.ROUTER(); > BEGIN > IF (CHOSEN_ROUTE = SDO_RDF.ROUTE_MDSYS_DR) THEN > > RETURN S_SDO_RDF_INTERNAL.GET_RDF_SEQUENCE_NEXTVAL(SEQUENCE_NAME); > ELSIF (CHOSEN_ROUTE = SDO_RDF.ROUTE_DIRECT_IR) THEN > > RETURN W_GET_RDF_SEQUENCE_NEXTVAL(SEQUENCE_NAME); > ELSE > > DYN_SQL_STMT := 'call ' || V_PFX_FOR_RDF_OBJ_NAME || > 'S_SDO_RDF_INTERNAL.get_rdf_sequence_nextval(:sequence_name) INTO :ret_val'; > EXECUTE IMMEDIATE DYN_SQL_STMT USING SEQUENCE_NAME, OUT RET_VAL; > RETURN RET_VAL; > END IF; > END GET_RDF_SEQUENCE_NEXTVAL;
13602c13602,13603 < matchedsig OUT varchar2); --- > matchedsig OUT varchar2, > options varchar2 default NULL); 13611c13612,13613 < RulebaseIDs SYS.ODCINumberList) --- > RulebaseIDs SYS.ODCINumberList, > options varchar2 default NULL) 13613a13616,13618 > FUNCTION get_rdf_sequence_nextval (sequence_name varchar2) > RETURN number; > 15116c15121,15122 < matchedsig OUT varchar2) IS --- > matchedsig OUT varchar2, > options varchar2 default NULL) IS 15119c15125 < MDSYS.RDF_APIS_INTERNAL.W_getPrecompStatus(owner, index_name, precompsig, ModelIDs, RulebaseIDs, precompID, status, matchedsig); --- > MDSYS.RDF_APIS_INTERNAL.W_getPrecompStatus(owner, index_name, precompsig, ModelIDs, RulebaseIDs, precompID, status, matchedsig, options); 15133c15139,15140 < RulebaseIDs SYS.ODCINumberList) --- > RulebaseIDs SYS.ODCINumberList, > options varchar2 default NULL) 15137c15144 < RETURN MDSYS.RDF_APIS_INTERNAL.W_createPrecompStatus(owner, index_name, precompsig, ModelIDs, RulebaseIDs); --- > RETURN MDSYS.RDF_APIS_INTERNAL.W_createPrecompStatus(owner, index_name, precompsig, ModelIDs, RulebaseIDs, options); 15138a15146,15152 > > FUNCTION get_rdf_sequence_nextval (sequence_name varchar2) > RETURN number IS > BEGIN > mdsys.sdo_rdf_internal.match_package_with_network(orig_v_pfx_for_rdf_obj_name, package_name); > RETURN MDSYS.RDF_APIS_INTERNAL.W_get_rdf_sequence_nextval(sequence_name); > END get_rdf_sequence_nextval;
5112c5112,5116 < CALLCONTEXT.DUP_DICT := (NETWORK_OWNER != 'MDSYS' AND SDO_SEM_CTX_NETWORK_OWNER IS NOT NULL); --- > IF (CALLCONTEXT.DUP_DICT IS NULL) THEN > CALLCONTEXT.DUP_DICT := (NETWORK_OWNER != 'MDSYS' AND SDO_SEM_CTX_NETWORK_OWNER IS NOT NULL); > > END IF; > 5124a5129,5130 > > 8198c8204 < where mdsys.rdf_apis_internal.hashclob(v.long_value) IS NOT NULL --- > where mdsys.rdf_apis.hashclob(v.long_value) IS NOT NULL 8217c8223 < where mdsys.rdf_apis_internal.hashclob(long_value) IS NOT NULL) v --- > where mdsys.rdf_apis.hashclob(long_value) IS NOT NULL) v 20125a20132 > RDFCTX_VM_IDHINT CONSTANT VARCHAR2(13) := 'RDFCTX_VM_ID='; 20131a20139,20140 > VID_BEG NUMBER; > VID_END NUMBER; 20637d20645 < 20661,20662c20669,20676 < IF (NOT HAVEID) THEN < EXECUTE IMMEDIATE --- > IF (NOT HAVEID) THEN > IF (INSTR(OPTIONS, RDFCTX_VM_IDHINT) > 0) THEN > VID_BEG := INSTR(OPTIONS, RDFCTX_VM_IDHINT) + LENGTH(RDFCTX_VM_IDHINT); > VID_END := INSTR(OPTIONS,' ', VID_BEG); > VMID := TO_NUMBER(SUBSTR(OPTIONS, VID_BEG, VID_END - VID_BEG)); > MDSYS.RDF_APIS_INTERNAL.KSDWRF('RDFCTX vmId ='|| VMID || 'vID_beg vID_end:' || VID_BEG || ' ' || VID_END); > ELSE > EXECUTE IMMEDIATE 20664c20678,20679 < INTO VMID; --- > INTO VMID; > END IF; 27234c27249 < (CASE NETWORK_OWNER WHEN 'MDSYS' THEN 'MDSYS.RDF_APIS_INTERNAL' ELSE 'SEM_APIS' END ) || '.HASHCLOB(long_value)) --- > (CASE NETWORK_OWNER WHEN 'MDSYS' THEN 'MDSYS.RDF_APIS' ELSE 'SEM_APIS' END ) || '.HASHCLOB(long_value)) 27559c27574 < IF NOT(INSTR(ROLES_AND_PRIVS,' DBA ') > 0 OR INSTR(ROLES_AND_PRIVS,' PDB_DBA ') > 0 OR NETWORK_OWNER = SYS_CONTEXT('USERENV','CURRENT_USER')) THEN --- > IF NOT(INSTR(ROLES_AND_PRIVS,' DBA ') > 0 OR INSTR(ROLES_AND_PRIVS,' PDB_DBA ') > 0 OR (NETWORK_OWNER != 'MDSYS' AND NETWORK_OWNER = SYS_CONTEXT('USERENV','CURRENT_USER'))) THEN
342c342 < VCSTATUS, VCMATCHEDSIG); --- > VCSTATUS, VCMATCHEDSIG, OPTIONS); 396a397 > 397a399,481 > MODELS_IN MDSYS.RDF_MODELS, > RULEBASES_IN MDSYS.RDF_RULEBASES, > PASSES INTEGER DEFAULT 0, > INF_COMPONENTS_IN VARCHAR2 DEFAULT NULL, > OPTIONS VARCHAR2 DEFAULT NULL, > DELTA_IN MDSYS.RDF_MODELS DEFAULT NULL, > INCLUDE_NAMED_G SEM_GRAPHS DEFAULT NULL, > INCLUDE_DEFAULT_G MDSYS.RDF_MODELS DEFAULT NULL, > INCLUDE_ALL_G MDSYS.RDF_MODELS DEFAULT NULL, > INF_NG_NAME VARCHAR2 DEFAULT NULL, > INF_EXT_USER_FUNC_NAME VARCHAR2 DEFAULT NULL, > OLS_LADDER_INF_LBL_SEQ VARCHAR2 DEFAULT NULL > > ) > AS > CNT NUMBER := 0; > BEGIN > > IF (NETWORK_OWNER IS NULL) THEN > SEM_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NULL, NULL); > END IF; > > > > IF (INSTR(NLS_UPPER(',' || REPLACE(OPTIONS, ' ', '') || ','), ',LOCAL_NG_INF=T') > 0) THEN > FOR M IN MODELS_IN.FIRST..MODELS_IN.LAST LOOP > EXECUTE IMMEDIATE > 'select count(*) from ' || V_PFX_FOR_RDF_OBJ_NAME || 'RDF_MODEL$ ' || > ' where model_type=:rdfctx and model_name=:modname' > INTO CNT USING SDO_RDF_INTERNAL.MODEL_TYPE_RDFCTX, TRIM(MODELS_IN(M)); > IF (CNT > 0) THEN > EXIT; > END IF; > END LOOP; > END IF; > > IF (CNT > 0) THEN > > > > CREATE_RULES_INDEX_PR(INDEX_NAME_IN,MODELS_IN,RULEBASES_IN,PASSES,INF_COMPONENTS_IN > ,OPTIONS > || (',RDFCTX_PRECOMP_ID=' || RDF_APIS_INTERNAL.GET_RDF_SEQUENCE_NEXTVAL('RDF_MODEL_ID_SQ') || ' ') > || (',RDFCTX_RDF_HIST_ID=' || RDF_APIS_INTERNAL.GET_RDF_SEQUENCE_NEXTVAL('RDF_HIST_ID_SQ') || ' ') > ,DELTA_IN,INCLUDE_NAMED_G,INCLUDE_DEFAULT_G,INCLUDE_ALL_G,INF_NG_NAME,INF_EXT_USER_FUNC_NAME > ,OLS_LADDER_INF_LBL_SEQ,NETWORK_OWNER,RTRIM(NETWORK_NAME,'#')); > ELSE > W_CREATE_RULES_INDEX(INDEX_NAME_IN,MODELS_IN,RULEBASES_IN,PASSES,INF_COMPONENTS_IN,OPTIONS > ,DELTA_IN,INCLUDE_NAMED_G,INCLUDE_DEFAULT_G,INCLUDE_ALL_G,INF_NG_NAME,INF_EXT_USER_FUNC_NAME > ,OLS_LADDER_INF_LBL_SEQ); > END IF; > END CREATE_RULES_INDEX; > > > PROCEDURE CREATE_RULES_INDEX_PR(INDEX_NAME_IN VARCHAR2, > MODELS_IN MDSYS.RDF_MODELS, > RULEBASES_IN MDSYS.RDF_RULEBASES, > PASSES INTEGER DEFAULT 0, > INF_COMPONENTS_IN VARCHAR2 DEFAULT NULL, > OPTIONS VARCHAR2 DEFAULT NULL, > DELTA_IN MDSYS.RDF_MODELS DEFAULT NULL, > INCLUDE_NAMED_G SEM_GRAPHS DEFAULT NULL, > INCLUDE_DEFAULT_G MDSYS.RDF_MODELS DEFAULT NULL, > INCLUDE_ALL_G MDSYS.RDF_MODELS DEFAULT NULL, > INF_NG_NAME VARCHAR2 DEFAULT NULL, > INF_EXT_USER_FUNC_NAME VARCHAR2 DEFAULT NULL, > OLS_LADDER_INF_LBL_SEQ VARCHAR2 DEFAULT NULL > > , P_NETWORK_OWNER VARCHAR2 DEFAULT NULL > , P_NETWORK_NAME VARCHAR2 DEFAULT NULL > ) > AS > BEGIN > SEM_APIS.SET_NETWORK_INFO_CP_TO_PKGS(P_NETWORK_OWNER, P_NETWORK_NAME); > > W_CREATE_RULES_INDEX(INDEX_NAME_IN,MODELS_IN,RULEBASES_IN,PASSES,INF_COMPONENTS_IN,OPTIONS > ,DELTA_IN,INCLUDE_NAMED_G,INCLUDE_DEFAULT_G,INCLUDE_ALL_G,INF_NG_NAME,INF_EXT_USER_FUNC_NAME > ,OLS_LADDER_INF_LBL_SEQ); > > END CREATE_RULES_INDEX_PR; > > > PROCEDURE W_CREATE_RULES_INDEX(INDEX_NAME_IN VARCHAR2,
1699c1699 < 'EXCEPTION[sdoseminfb.sql(' || $$PLSQL_LINE || ')3]: ' || SQLERRM); RAISE; --- > 'EXCEPTION[sdoseminfb.sql(' || $$PLSQL_LINE || ')3]: ' || SQLERRM); 1710c1710 < 'EXCEPTION[sdoseminfb.sql(' || $$PLSQL_LINE || ')4]: ' || SQLERRM); RAISE; --- > 'EXCEPTION[sdoseminfb.sql(' || $$PLSQL_LINE || ')4]: ' || SQLERRM); 1732c1732 < 'EXCEPTION[sdoseminfb.sql(' || $$PLSQL_LINE || ')6]: ' || SQLERRM); RAISE; --- > 'EXCEPTION[sdoseminfb.sql(' || $$PLSQL_LINE || ')6]: ' || SQLERRM); 1783c1783 < 'EXCEPTION[sdoseminfb.sql(' || $$PLSQL_LINE || ')10]: ' || SQLERRM); RAISE; --- > 'EXCEPTION[sdoseminfb.sql(' || $$PLSQL_LINE || ')10]: ' || SQLERRM); 1795c1795 < 'EXCEPTION[sdoseminfb.sql(' || $$PLSQL_LINE || ')11]: ' || SQLERRM); RAISE; --- > 'EXCEPTION[sdoseminfb.sql(' || $$PLSQL_LINE || ')11]: ' || SQLERRM); 1817c1817 < 'EXCEPTION[sdoseminfb.sql(' || $$PLSQL_LINE || ')13]: ' || SQLERRM); RAISE; --- > 'EXCEPTION[sdoseminfb.sql(' || $$PLSQL_LINE || ')13]: ' || SQLERRM); 4327c4327 < FUNCTION RECORD_INF_START(VCACTION VARCHAR2, VCIDX VARCHAR2) --- > FUNCTION RECORD_INF_START(VCACTION VARCHAR2, VCIDX VARCHAR2, OPTIONS VARCHAR2 DEFAULT NULL) 4330a4331 > ISEQ_IN NUMBER; 4332a4334,4341 > > > ISEQ_IN := NVL(SDO_SEM_UTL.GET_INT_PARAMETER(NLS_UPPER(',' || REPLACE(OPTIONS, ' ', '') || ','),',RDFCTX_RDF_HIST_ID='),0); > > IF (ISEQ_IN = 0) THEN > EXECUTE IMMEDIATE 'select ' || V_PFX_FOR_RDF_OBJ_NAME || 'rdf_hist_id_sq.nextval from SYS.DUAL' INTO ISEQ_IN; > END IF; > 4335c4344 < || ' values(:1, ' || V_PFX_FOR_RDF_OBJ_NAME || 'rdf_hist_id_sq.nextval, :2, :3, sysdate, 0) ' --- > || ' values(:1, ' || ISEQ_IN || ', :2, :3, sysdate, 0) ' 4339a4349 > 15931c15941 < VCSTATUS, VCMATCHEDSIG); --- > VCSTATUS, VCMATCHEDSIG, OPTIONS); 16498c16508 < M_IINFACTIONSEQ := RECORD_INF_START(M_VCINFACTIONMSG, NLS_UPPER(VCIDX)); --- > M_IINFACTIONSEQ := RECORD_INF_START(M_VCINFACTIONMSG, NLS_UPPER(VCIDX), OPTIONS);
1660a1661,1672 > BEGIN > EXECUTE IMMEDIATE 'select ' || V_PFX_FOR_RDF_OBJ_NAME || 'rdf_model_id_sq.nextval FROM SYS.DUAL' INTO L_VMIDX; > W_CREATE_VIRTUAL_RDFCTX_IDX_PR(ROLES_AND_PRIVS,P_IDXOWNER,P_IDXNAME,P_IDXPARTNAME,P_DEPPLCNM,L_VMIDX,NETWORK_OWNER,RTRIM(NETWORK_NAME,'#')); > END W_CREATE_VIRTUAL_RDFCTX_INDEX; > > PROCEDURE W_CREATE_VIRTUAL_RDFCTX_IDX_PR ( > ROLES_AND_PRIVS VARCHAR2, > P_IDXOWNER VARCHAR2, > P_IDXNAME VARCHAR2, > P_IDXPARTNAME VARCHAR2, > P_DEPPLCNM VARCHAR2, > L_VMIDX NUMBER, P_NETWORK_OWNER VARCHAR2, P_NETWORK_NAME VARCHAR2) IS 1677,1678d1688 < EXECUTE IMMEDIATE 'select ' || V_PFX_FOR_RDF_OBJ_NAME || 'rdf_model_id_sq.nextval FROM SYS.DUAL' INTO < L_VMIDX; 1680c1690,1693 < EXECUTE IMMEDIATE 'select mdsys.sem_rdfctx.get_policy_key(policy_owner, policy_name), user_models, rulebases, base_policy --- > SEM_APIS.SET_NETWORK_INFO_CP_TO_PKGS(P_NETWORK_OWNER, P_NETWORK_NAME); > > > DYN_SQL_STMT := 'select mdsys.sem_rdfctx.get_policy_key(policy_owner, policy_name), user_models, rulebases, base_policy 1682c1695,1696 < INTO L_POLRID, L_MODLIST, L_RULBLIST, L_DUMNM USING P_IDXOWNER, P_DEPPLCNM; --- > ; > EXECUTE IMMEDIATE DYN_SQL_STMT INTO L_POLRID, L_MODLIST, L_RULBLIST, L_DUMNM USING P_IDXOWNER, P_DEPPLCNM; 1692c1706 < EXECUTE IMMEDIATE 'insert into ' || V_PFX_FOR_RDF_OBJ_NAME || 'rdfctx_index_policies$ --- > DYN_SQL_STMT := 'insert into ' || V_PFX_FOR_RDF_OBJ_NAME || 'rdfctx_index_policies$ 1694c1708,1709 < (:1,:2,:3,:4,:5,:6, NULL)' USING P_IDXOWNER, P_IDXNAME, P_IDXPARTNAME,L_POLRID, --- > (:1,:2,:3,:4,:5,:6, NULL)'; > EXECUTE IMMEDIATE DYN_SQL_STMT USING P_IDXOWNER, P_IDXNAME, P_IDXPARTNAME,L_POLRID, 1704c1719 < EXECUTE IMMEDIATE --- > DYN_SQL_STMT := 1707a1723,1724 > ; > EXECUTE IMMEDIATE DYN_SQL_STMT 1827c1844,1845 < P_IDXOWNER, ROLES_AND_PRIVS, L_VMMODELSLIST, NULL, NULL,L_VMENTAILLIST); --- > P_IDXOWNER, ROLES_AND_PRIVS, L_VMMODELSLIST, NULL, > ' RDFCTX_VM_ID=' || L_VMIDX || ' ', L_VMENTAILLIST); 1829c1847 < EXECUTE IMMEDIATE 'create or replace view ' || V_PFX_FOR_RDF_OBJ_NAME || 'semv_rdfctx_mod_'|| --- > DYN_SQL_STMT := 'create or replace view ' || V_PFX_FOR_RDF_OBJ_NAME || 'semv_rdfctx_mod_'|| 1831a1850 > EXECUTE IMMEDIATE DYN_SQL_STMT; 1833c1852 < EXECUTE IMMEDIATE 'grant select on ' || V_PFX_FOR_RDF_OBJ_NAME || 'semv_rdfctx_mod_'||L_VMIDX|| --- > DYN_SQL_STMT:= 'grant select on ' || V_PFX_FOR_RDF_OBJ_NAME || 'semv_rdfctx_mod_'||L_VMIDX|| 1834a1854 > EXECUTE IMMEDIATE DYN_SQL_STMT; 1840a1861,1865 > RDF_APIS_INTERNAL.KSDWRF('W_create_virtual_rdfctx_idx_PR: ERROR: ' || > CHR(10) || DBMS_UTILITY.FORMAT_ERROR_STACK || > CHR(10) || '[' || CHR(10) || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE || CHR(10) || ']' || > CHR(10) || DYN_SQL_STMT || > CHR(10) || DBMS_UTILITY.FORMAT_CALL_STACK(), TRUE); 1850c1875 < END W_CREATE_VIRTUAL_RDFCTX_INDEX; --- > END W_CREATE_VIRTUAL_RDFCTX_IDX_PR; 3423a3449,6280 > > PROCEDURE ODCIINDEXCREATE_PR ( > IDXINFO SYS.ODCIINDEXINFO, > IDXPARMS VARCHAR2, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER) IS > L_POLLST SYS.ODCIVARCHAR2LIST; > L_BASEPOL SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); > L_BATCHPOL SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); > L_BATCHPOL_COUNT NUMBER := 0; > L_DEPPOL SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); > > L_DUMVR VARCHAR2(200); > L_BASETAB_QUERY_BODY VARCHAR2(4000); > L_INS_PARA_HINT VARCHAR2(200); > L_INS_DOCURI2RID VARCHAR2(4000); > > L_ROWCNT NUMBER; > L_EXTARR MDSYS.T_EXTARR := MDSYS.T_EXTARR(); > L_MODARR SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); > L_ERRCNT SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); > L_POLRIDS SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); > L_RC SYS_REFCURSOR; > S_RID ROWID; > S_CLOB CLOB; > S_XMLRDF CLOB; > DS_CLOB CLOB; > ERRM VARCHAR2(4000); > L_DEFPOL VARCHAR2(130); > L_VMNUM NUMBER; > L_VMMODS MDSYS.RDF_MODELS; > L_VMRBS MDSYS.RDF_RULEBASES; > L_CTXPREF FN_XMLPREF := FN_XMLPREF(); > T_EXTARR FN_EXTARR := FN_EXTARR(); > FILEDIR VARCHAR2(512) := NULL; > FILTERPL VARCHAR2(130) := NULL; > STMT VARCHAR2(32767); > CNT NUMBER; > TRIPLE_CNT NUMBER(38); > STEP_NUM NUMBER := 0; > L_USEDOPTS SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); > L_EXTRPARAMS SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); > USED_OPT VARCHAR2(100); > L_LOAD_METHOD VARCHAR2(128) := 'DML'; > L_BATCH BOOLEAN := FALSE; > OBJCNT PLS_INTEGER; > L_TBSNM VARCHAR2(130); > IS_GLOBAL_IDX BOOLEAN; > IS_IDX_PARTITION BOOLEAN := FALSE; > FIRST_CALL BOOLEAN := FALSE; > L_NETWORK_OWNER VARCHAR2(128) := NULL; > L_NETWORK_NAME VARCHAR2(30) := NULL; > > ROLES_AND_PRIVS VARCHAR2(4000) := SDO_RDF.GET_ROLES_AND_PRIVS(); > > POLICY_PARTNAME VARCHAR2(128); > > CURSOR CUR1(IANAME VARCHAR2) IS > SELECT PARTITION_NAME, TABLESPACE_NAME > FROM SYS.USER_IND_PARTITIONS > WHERE INDEX_NAME = IANAME > ORDER BY PARTITION_POSITION; > > CURSOR CUR2(IANAME VARCHAR2) IS > SELECT XP.PARTITION_NAME, TP.TABLESPACE_NAME > FROM SYS.USER_IND_PARTITIONS XP, SYS.ALL_TAB_PARTITIONS TP, SYS.USER_INDEXES X > WHERE XP.INDEX_NAME = IANAME AND XP.PARTITION_NAME = TP.PARTITION_NAME > AND X.TABLE_NAME = TP.TABLE_NAME AND XP.INDEX_NAME = X.INDEX_NAME > ORDER BY XP.PARTITION_POSITION; > > PARTI_DETAILS VARCHAR2(3000); > CR_STAGTAB_STMT VARCHAR2(4000); > IDX_OBJNUM NUMBER; > STAGTAB_NAME VARCHAR2(270); > STAGTAB_SUFFIX VARCHAR2(128); > STAGTAB VARCHAR2(128); > STAGVIEW_NAME VARCHAR2(270); > STAGVIEW VARCHAR2(128); > STAGTAB_VIEW_NAME VARCHAR2(128); > STAGTAB_PART_VIEW_NAME VARCHAR2(128) := NULL; > XINFOTAB_NAME VARCHAR2(270); > XINFOTAB VARCHAR2(128); > XINFOTAB_SUFFIX VARCHAR2(128); > > BATCH_INTERFACE_OPTION CONSTANT VARCHAR2(100) := 'INTERFACE=BATCH'; > DBUSER_ATTRIBUTE_NAME CONSTANT VARCHAR2(100) := 'DBUSER'; > XUSER VARCHAR2(128); > > LOOPVAR_I NUMBER; > STATUS NUMBER; > > PARTI_CLAUSE VARCHAR2(1000) := NULL; > INS_INTO_DOCVID VARCHAR2(4000); > > > DOCURI2RID VARCHAR2(128); > DOCVID2RID VARCHAR2(128); > > DOCURI2RID_NAME VARCHAR2(270); > DOCURI2RID_DEBUG VARCHAR2(270); > DOCVID2RID_NAME VARCHAR2(270); > > DOCURI2RID_NAMESQ VARCHAR2(270); > DOCVID2RID_NAMESQ VARCHAR2(270); > > KEEP_STAGING_TABLES VARCHAR2(128) := 'KEEP_RDFCTX_STAGING_TABLES'; > KEEP_RDFCTX_STAGING_TABLES BOOLEAN := FALSE; > IS_PARTN_TBL NUMBER; > IS_ADD_PARTITION BOOLEAN := FALSE; > > L_DOCURIPFX VARCHAR2(4000); > L_DOCURISHORTPFX VARCHAR2(500); > ROWS_APPENDED NUMBER; > > SNAP_TIME TIMESTAMP; > UNAME VARCHAR2(128); > > DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > BEGIN > > BEGIN > L_POLLST := SEM_RDFCTX_DR.PRVT_PARAMS_PARSER(IDXPARMS, L_USEDOPTS, L_EXTRPARAMS); > EXCEPTION > WHEN OTHERS THEN > EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values (1, > ''invalid or empty parameters passed to the index'')'; > RETURNVAL := SYS.ODCICONST.FATAL; > RETURN; > > > END; > > SELECT COUNT(DISTINCT(COLUMN_VALUE)) INTO L_ROWCNT > FROM TABLE(L_POLLST); > > IF (L_ROWCNT != L_POLLST.COUNT OR L_POLLST.COUNT > 5) THEN > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'duplicate or too many policies specified for the index'); > END IF; > > > FOR OPT IN (SELECT DISTINCT COLUMN_VALUE FROM TABLE(L_USEDOPTS)) > LOOP > USED_OPT := TRIM(OPT.COLUMN_VALUE); > RDF_APIS_INTERNAL.KSDWRF('CreateIndex option=' || USED_OPT || '*', DEBUG_TRACE); > IF (USED_OPT = 'LOAD_METHOD=BULK') THEN > L_LOAD_METHOD := 'BULKLOAD'; > RDF_APIS_INTERNAL.KSDWRF('l_load_method set to: ' || L_LOAD_METHOD, DEBUG_TRACE); > ELSIF (USED_OPT = BATCH_INTERFACE_OPTION) THEN > L_LOAD_METHOD := 'BULKLOAD'; > L_BATCH := TRUE; > RDF_APIS_INTERNAL.KSDWRF('interface=BATCH', DEBUG_TRACE); > RDF_APIS_INTERNAL.KSDWRF('l_load_method set to: ' || L_LOAD_METHOD, DEBUG_TRACE); > ELSIF (USED_OPT = KEEP_STAGING_TABLES) THEN > KEEP_RDFCTX_STAGING_TABLES := TRUE; > ELSIF (INSTR(USED_OPT, 'NETWORK_OWNER=') > 0) THEN > BEGIN > IF (INSTR(USED_OPT, '"', 15) > 0) THEN > L_NETWORK_OWNER := SUBSTR(USED_OPT, 15); > ELSE > L_NETWORK_OWNER := NLS_UPPER(SUBSTR(USED_OPT, 15)); > END IF; > END; > ELSIF (INSTR(USED_OPT, 'NETWORK_NAME=') > 0) THEN > BEGIN > IF (INSTR(USED_OPT, '"', 14) > 0) THEN > L_NETWORK_NAME := SUBSTR(USED_OPT, 15, LENGTH(USED_OPT)-15); > ELSE > L_NETWORK_NAME := NLS_UPPER(SUBSTR(USED_OPT, 14)); > END IF; > END; > END IF; > END LOOP; > > SEM_APIS.SET_NETWORK_INFO_CP_TO_PKGS(L_NETWORK_OWNER, L_NETWORK_NAME); > SEM_RDFCTX_DR.COPY_NETWORK_INFO_TO_PKG_VARS; > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); > > COMMIT; > > > > > > SEM_RDFCTX_IR.PURGE_TEMP_STAGING_TABLES; > > > IF (IDXPARMS IS NULL OR LENGTH(IDXPARMS) = 0) THEN > EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values (1, > ''invalid or empty parameters passed to the index'')'; > RETURNVAL:= SYS.ODCICONST.FATAL; > RETURN; > > > END IF; > BEGIN > L_DUMVR := SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXNAME, FALSE); > EXCEPTION > WHEN OTHERS THEN > EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values (1, > ''invalid name for the index'')'; > RETURNVAL:= SYS.ODCICONST.FATAL; > RETURN; > END; > > > IF (NOT(IDXINFO.INDEXCOLS(1).COLTYPENAME IN ('CLOB','VARCHAR2'))) THEN > INSERT INTO SYS.ODCI_WARNINGS$ VALUES (1,'unsupported data type '|| > IDXINFO.INDEXCOLS(1).COLTYPENAME ||' for the indextype'); > RETURNVAL:= SYS.ODCICONST.FATAL; > RETURN; > END IF; > > IF ((IDXENV.CALLPROPERTY IS NULL) AND (IDXINFO.INDEXPARTITION IS NULL)) THEN > IS_GLOBAL_IDX := TRUE; > POLICY_PARTNAME := IDXINFO.INDEXNAME; > > > > > > ELSE > IF((IDXENV.CALLPROPERTY IS NULL) AND (IDXINFO.INDEXPARTITION IS NOT NULL)) THEN > > IS_GLOBAL_IDX := FALSE; > IS_ADD_PARTITION := TRUE; > POLICY_PARTNAME := IDXINFO.INDEXPARTITION; > ELSE > IS_GLOBAL_IDX := FALSE; > IF (IDXENV.CALLPROPERTY = SYS.ODCICONST.FIRSTCALL) THEN > FIRST_CALL := TRUE; > > > > PARTI_DETAILS := ''; > LOOPVAR_I := 1; > > FOR C1 IN CUR2(IDXINFO.INDEXNAME) LOOP > IF (LOOPVAR_I >1) THEN > PARTI_DETAILS := PARTI_DETAILS || SDO_SEM_LOG.NEWLINE || ','; > END IF; > PARTI_DETAILS := PARTI_DETAILS > || 'partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(C1.PARTITION_NAME, FALSE) > || ' tablespace ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(C1.TABLESPACE_NAME, FALSE); > LOOPVAR_I := LOOPVAR_I+1; > END LOOP; > RDF_APIS_INTERNAL.KSDWRF('ODCIIndexCreate: partition_details=' || PARTI_DETAILS, DEBUG_TRACE); > > ELSE > IF ((IDXENV.CALLPROPERTY = SYS.ODCICONST.INTERMEDIATECALL) AND > (IDXINFO.INDEXPARTITION IS NOT NULL)) THEN > IS_IDX_PARTITION := TRUE; > POLICY_PARTNAME := IDXINFO.INDEXPARTITION; > END IF; > END IF; > END IF; > END IF; > > BEGIN > L_DEFPOL := L_POLLST(1); > > STEP_NUM := 3.5; > > > SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, STAGTAB_NAME,STAGVIEW_NAME,XINFOTAB_NAME,L_BATCH); > MDSYS.RDF_APIS_INTERNAL.KSDWRF('step 3.5: xinfotab_name=' || XINFOTAB_NAME, DEBUG_TRACE); > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, DOCURI2RID_NAME, DOCVID2RID_NAME); > > > DOCURI2RID_NAMESQ := DOCURI2RID_NAME; > DOCVID2RID_NAMESQ := DOCVID2RID_NAME; > > > > > > > > > > > > > > > > > > > IF (NOT(IS_ADD_PARTITION)) THEN > IF (DEBUG_TRACE AND XINFOTAB_NAME IS NOT NULL) THEN > MDSYS.RDF_APIS_INTERNAL.KSDWRF('step 3.5 before creating staging table: (note: xinfotab_name=' > || XINFOTAB_NAME || ' NOT created', DEBUG_TRACE); > END IF; > IF (IS_GLOBAL_IDX) THEN > > UNAME := SYS_CONTEXT('USERENV','CURRENT_USER'); > MDSYS.RDF_APIS_INTERNAL.KSDWRF('user is odciindexcreate is :' ||UNAME, DEBUG_TRACE); > SEM_RDFCTX_IR.CREATE_STAGING_TABLE(STAGTAB_NAME,NULL,NULL,NULL,TRUE,NULL); > ELSIF (FIRST_CALL) THEN > > SEM_RDFCTX_IR.CREATE_STAGING_TABLE(STAGTAB_NAME,NULL,NULL,PARTI_DETAILS,FALSE,NULL); > END IF; > END IF; > > STEP_NUM := 4; > RDF_APIS_INTERNAL.KSDWRF('starting step 4', DEBUG_TRACE); > > > SEM_RDFCTX_DR.SPLIT_POLICY_LIST (IDXINFO.INDEXSCHEMA, L_POLLST, > L_BASEPOL, L_DEPPOL); > > STEP_NUM := 4.5; > FOR PIDX IN 1 .. L_BASEPOL.COUNT LOOP > L_EXTARR.EXTEND; > L_MODARR.EXTEND; > L_POLRIDS.EXTEND; > L_BATCHPOL.EXTEND; > L_CTXPREF.EXTEND; > T_EXTARR.EXTEND; > L_ERRCNT.EXTEND; > L_ERRCNT(PIDX) := 0; > > > MDSYS.RDF_APIS_INTERNAL.KSDWRF('ODCIIndexCreate: policy name=' || L_BASEPOL(PIDX), DEBUG_TRACE); > > > STEP_NUM := 4.52; > SEM_RDFCTX_DR.GET_POLICY_INFO ( > IDXINFO.INDEXSCHEMA, NLS_UPPER(L_BASEPOL(PIDX)), > L_POLRIDS(PIDX), L_EXTARR(PIDX), L_CTXPREF(PIDX)); > > > IF (L_BATCH) THEN > MDSYS.RDF_APIS_INTERNAL.KSDWRF('BATCH interface: check if the extractor for this base-policy supports batch interface', DEBUG_TRACE); > IF NLS_UPPER(L_EXTARR(PIDX).GETCONTEXT(BATCH_INTERFACE_OPTION)) IN ('YES','Y') THEN > L_BATCHPOL(PIDX) := 1; > L_BATCHPOL_COUNT := L_BATCHPOL_COUNT + 1; > MDSYS.RDF_APIS_INTERNAL.KSDWRF('ODCIIndexCreate: batch capable policy:' > || L_BASEPOL(PIDX) || ' [count so far: ' || L_BATCHPOL_COUNT || ' batch capable policies ' > || ' (out of ' || L_BASEPOL.COUNT || ')]', DEBUG_TRACE); > ELSE > L_BATCHPOL(PIDX) := 0; > MDSYS.RDF_APIS_INTERNAL.KSDWRF('ODCIIndexCreate: NOT batch capable policy:' || L_BASEPOL(PIDX), DEBUG_TRACE); > END IF; > END IF; > > IF (NOT(IS_ADD_PARTITION)) THEN > IF (PIDX > 1) THEN > IF (SEM_RDFCTX_DR.ARE_MATCHING_DATASTORES(L_CTXPREF(1), > L_CTXPREF(PIDX)) != 1) THEN > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'mismatched datastore specifications for base policies'); > END IF; > ELSIF (L_BATCH AND L_CTXPREF(1) IS NOT NULL) THEN > > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'for BATCH interface, no support yet for files or web content'); > ELSIF (L_CTXPREF(1) IS NOT NULL AND > L_CTXPREF(1).EXTRACT('//Datastore') IS NULL) THEN > L_CTXPREF(1) := NULL; > ELSIF (L_CTXPREF(1) IS NOT NULL AND > NLS_UPPER(L_CTXPREF(1).EXTRACT('//Datastore/@type').GETSTRINGVAL()) > = 'FILE') THEN > FILEDIR := TRIM(L_CTXPREF(1).EXTRACT( > '//Datastore/Path/text()').GETSTRINGVAL()); > SELECT COUNT(*) INTO L_ROWCNT FROM SYS.ALL_DIRECTORIES WHERE > DIRECTORY_NAME = FILEDIR; > IF (L_ROWCNT = 0) THEN > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'directory object '||FILEDIR||' does not exist or is inaccessible'); > END IF; > END IF; > END IF; > > STEP_NUM := 4.58; > RDF_APIS_INTERNAL.KSDWRF('starting step 4.58', DEBUG_TRACE); > > IF (IS_GLOBAL_IDX OR IS_IDX_PARTITION OR IS_ADD_PARTITION) THEN > > > > > > > > > SELECT UU.DEFAULT_TABLESPACE INTO L_TBSNM FROM SYS.USER_USERS UU > WHERE UU.USERNAME=IDXINFO.INDEXSCHEMA; > > > IF (L_TBSNM IS NULL) THEN > RDF_APIS_INTERNAL.KSDWRF('Could not determine tablespace_name for use in creating RDF model', DEBUG_TRACE); > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'Could not determine tablespace_name for use in creating RDF model' > ||(CASE IS_IDX_PARTITION > WHEN TRUE THEN ' (partition: ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) > ELSE '' > END)); > RETURNVAL := SYS.ODCICONST.FATAL; > RETURN; > ELSE > RDF_APIS_INTERNAL.KSDWRF('step 4.58: l_tbsnm=' || L_TBSNM, DEBUG_TRACE); > END IF; > > > > RDF_APIS_INTERNAL.KSDWRF('ODCI index create: model_internal$'); > L_MODARR(PIDX) := SEM_RDFCTX_DR.CREATE_RDFCTX_INDEX ( > IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > POLICY_PARTNAME, L_POLRIDS(PIDX), > SEM_RDFCTX_DR.INDST_INPROGRESS, L_TBSNM, > L_EXTRPARAMS(PIDX)); > END IF; > > > > > > IF (L_LOAD_METHOD='BULKLOAD' AND (IS_GLOBAL_IDX OR FIRST_CALL)) THEN > STAGTAB_SUFFIX := > SEM_RDFCTX_DR.GET_STAGTAB_SUFFIX(NLS_UPPER(L_BASEPOL(PIDX)),L_POLRIDS(PIDX)); > IF (IS_GLOBAL_IDX) THEN > SEM_RDFCTX_IR.CREATE_STAGING_TABLE(STAGTAB_NAME,L_TBSNM,STAGTAB_SUFFIX,NULL,FALSE,XINFOTAB_NAME); > ELSIF (FIRST_CALL) THEN > SEM_RDFCTX_IR.CREATE_STAGING_TABLE(STAGTAB_NAME,NULL,STAGTAB_SUFFIX,PARTI_DETAILS,FALSE,XINFOTAB_NAME); > END IF; > > IF (XINFOTAB_NAME IS NOT NULL AND L_BATCHPOL(PIDX)=1) THEN > > > XUSER := L_EXTARR(PIDX).GETCONTEXT(DBUSER_ATTRIBUTE_NAME); > STMT := 'grant select, insert, update, delete on ' > || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(XINFOTAB_NAME || STAGTAB_SUFFIX) > || ' to ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(SYS.DBMS_ASSERT.SCHEMA_NAME(XUSER), FALSE); > EXECUTE IMMEDIATE STMT; > MDSYS.RDF_APIS_INTERNAL.KSDWRF('granted DML privs to DBUSER of extractor: ' || XUSER, DEBUG_TRACE); > END IF; > END IF; > > T_EXTARR(PIDX) := L_EXTARR(PIDX); > END LOOP; > > STEP_NUM := 4.9; > IF (NOT(IS_ADD_PARTITION) AND L_CTXPREF(1) IS NOT NULL) THEN > IF (IDXINFO.INDEXCOLS(1).COLTYPENAME != 'VARCHAR2') THEN > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'FILE/URL datastores only allowed with VARCHAR2 columns'); > END IF; > IF (L_CTXPREF(1).EXTRACT('//Datastore/@filter') IS NOT NULL) THEN > FILTERPL := NLS_UPPER(L_CTXPREF(1).EXTRACT( > '//Datastore/@filter').GETSTRINGVAL()); > END IF; > END IF; > END; > > IF (IS_GLOBAL_IDX OR FIRST_CALL) THEN > > > > > SEM_RDFCTX_IR.CREATE_MAPPING_TABLES(NULL, DOCURI2RID_NAME,DOCVID2RID_NAME, > L_TBSNM,PARTI_DETAILS); > > > FOR EI IN 1 .. L_BASEPOL.COUNT LOOP > L_EXTARR(EI).STARTDRIVER(); > END LOOP; > END IF; > > > STEP_NUM := 5; > RDF_APIS_INTERNAL.KSDWRF('starting step 5', DEBUG_TRACE); > > MDSYS.RDF_APIS_INTERNAL.KSDWRF('initial setup done for creating index', DEBUG_TRACE); > > IF (IS_GLOBAL_IDX OR IS_IDX_PARTITION) THEN > IF (DEBUG_TRACE) THEN > RDF_APIS_INTERNAL.KSDWRF('step 5 before invoking pxs: exceptions-count=' > || SEM_RDFCTX_DR.GET_EXCEPTIONS_COUNT, DEBUG_TRACE); > END IF; > > SEM_RDFCTX_IR.POPULATE_INDEX_SEGMENT( > IDXINFO, FILEDIR, FILTERPL, L_BASEPOL, L_EXTRPARAMS, L_CTXPREF, T_EXTARR, L_MODARR, L_POLRIDS > , L_LOAD_METHOD, STAGTAB_NAME, DOCURI2RID_NAME, DOCVID2RID_NAME, XINFOTAB_NAME > , L_BATCHPOL, L_BATCHPOL_COUNT); > > IF (DEBUG_TRACE) THEN > RDF_APIS_INTERNAL.KSDWRF('step 5 after returning from pxs: exceptions-count=' > || SEM_RDFCTX_DR.GET_EXCEPTIONS_COUNT, DEBUG_TRACE); > END IF; > END IF; > > > > > FOR EI IN 1..L_BASEPOL.COUNT LOOP > SEM_RDFCTX_DR.SET_RDFCTX_INDEX_STATUS_VALID( > IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > POLICY_PARTNAME, L_MODARR(EI)); > END LOOP; > > > IF (IS_GLOBAL_IDX OR IDXENV.CALLPROPERTY = SYS.ODCICONST.FINALCALL) THEN > RDF_APIS_INTERNAL.KSDWRF('closing all the extraction drivers', DEBUG_TRACE); > FOR EI IN 1 .. L_BASEPOL.COUNT LOOP > L_EXTARR(EI).CLOSEDRIVER(); > END LOOP; > END IF; > > STEP_NUM := 9; > RDF_APIS_INTERNAL.KSDWRF('starting step 9', DEBUG_TRACE); > IF (IS_GLOBAL_IDX OR IS_IDX_PARTITION) THEN > > IF (L_LOAD_METHOD = 'BULKLOAD') THEN > BEGIN > FOR EI IN 1 .. L_BASEPOL.COUNT LOOP > MDSYS.RDF_APIS_INTERNAL.KSDWRF('bulk-load issuing: step_num='||STEP_NUM, DEBUG_TRACE); > SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, FALSE, STAGTAB, STAGVIEW, XINFOTAB, L_BATCH); > STAGTAB_SUFFIX := > SEM_RDFCTX_DR.GET_STAGTAB_SUFFIX(NLS_UPPER(L_BASEPOL(EI)),L_POLRIDS(EI)); > > > IF (IS_IDX_PARTITION) THEN > PARTI_CLAUSE := ' partition('||SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION,FALSE)||')'; > > SEM_RDFCTX_DR.GET_STAGTAB_PART_VIEW_NAME( > IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, IDXINFO.INDEXPARTITION, FALSE, > STAGTAB, FALSE, STAGTAB_PART_VIEW_NAME); > STAGTAB_VIEW_NAME := STAGTAB_PART_VIEW_NAME; > ELSE > STAGTAB_VIEW_NAME := STAGVIEW || STAGTAB_SUFFIX; > END IF; > > > > > > > > > > EXECUTE IMMEDIATE > 'CREATE or REPLACE VIEW ' > || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXSCHEMA, FALSE) || '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(STAGTAB_VIEW_NAME, FALSE) > ||' AS SELECT RDF$STC_GRAPH,RDF$STC_SUB,RDF$STC_PRED,RDF$STC_OBJ FROM ' > || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXSCHEMA, FALSE) || '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(STAGTAB || STAGTAB_SUFFIX, FALSE) > || PARTI_CLAUSE > ||' WHERE RDF$STC_OBJ IS NOT NULL' > ; > EXECUTE IMMEDIATE > 'GRANT SELECT ON ' > > || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXSCHEMA, FALSE) || '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(STAGTAB_VIEW_NAME, FALSE) > ||' to ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(SDO_RDF_INTERNAL.GET_NETWORK_OWNER(), FALSE); > > SEM_RDFCTX_DR.BULK_LOAD_INTO_MODEL(L_MODARR(EI),L_USEDOPTS, > IDXINFO.INDEXSCHEMA, STAGTAB || STAGTAB_SUFFIX, IDXINFO.INDEXPARTITION, > DOCURI2RID_NAMESQ, DOCVID2RID_NAMESQ, STAGTAB_VIEW_NAME, SYS_CONTEXT('USERENV','CURRENT_USER'), ROLES_AND_PRIVS); > > EXECUTE IMMEDIATE > 'DROP VIEW ' > > || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXSCHEMA, FALSE) || '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(STAGTAB_VIEW_NAME, FALSE) > ; > > END LOOP; > > EXCEPTION WHEN OTHERS THEN > MDSYS.RDF_APIS_INTERNAL.KSDWRF('bulk-load issuing: step_num='||STEP_NUM||' SQLERRM='||SQLERRM, DEBUG_TRACE); > END; > > END IF; > > STEP_NUM := 9.5; > > > IF (IS_IDX_PARTITION) THEN > PARTI_CLAUSE := ' partition('||SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION,FALSE)||')'; > END IF; > > INS_INTO_DOCVID := > 'INSERT /*+ append */ INTO ' || > SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAMESQ) || PARTI_CLAUSE || ' (docVid, docRid) ' || > ' select v.value_id,u2r.docrid ' || > ' from ' || MDSYS.SDO_RDF_INTERNAL.GET_PFX_FOR_RDF_OBJ_NAME() || 'rdf_value$ v, ' || > SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCURI2RID_NAMESQ) || PARTI_CLAUSE || ' u2r ' || > ' where v.vname_prefix = ' || > ' sem_apis.value_name_prefix(substr(u2r.docUri,2,length(u2r.docUri)-2),''UR'') ' || > ' and v.value_type=''UR'' ' || > ' and v.vname_suffix = ' || > ' sem_apis.value_name_suffix(substr(u2r.docUri,2,length(u2r.docUri)-2),''UR'')' > ; > MDSYS.RDF_APIS_INTERNAL.KSDWRF('Postprocessing for IndexCreate: ins_into_docVid=' || INS_INTO_DOCVID, DEBUG_TRACE); > > EXECUTE IMMEDIATE INS_INTO_DOCVID; > > ROWS_APPENDED := SQL%ROWCOUNT; > COMMIT; > > MDSYS.RDF_APIS_INTERNAL.KSDWRF('Postprocessing for IndexCreate: inserted into ' || DOCVID2RID_NAME || ': rowcount=' || ROWS_APPENDED, DEBUG_TRACE); > > STEP_NUM := 9.8; > > IF (L_LOAD_METHOD != 'BULKLOAD' AND NOT(KEEP_RDFCTX_STAGING_TABLES)) THEN > SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, STAGTAB_NAME, STAGVIEW_NAME,XINFOTAB_NAME,L_BATCH); > IF (IS_IDX_PARTITION) THEN > EXECUTE IMMEDIATE > 'ALTER TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) || ' TRUNCATE PARTITION ' > ||SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION,FALSE); > MDSYS.RDF_APIS_INTERNAL.KSDWRF( > 'non-bulk-load: TRUNCATEd staging table ' || STAGTAB_NAME > ||' partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION,FALSE), DEBUG_TRACE); > ELSE > EXECUTE IMMEDIATE 'delete from '|| SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME); > COMMIT; > MDSYS.RDF_APIS_INTERNAL.KSDWRF('non-bulk-load: DELETEd from staging table ' || STAGTAB_NAME, DEBUG_TRACE); > END IF; > END IF; > > STEP_NUM := 10; > RDF_APIS_INTERNAL.KSDWRF('starting step 10', DEBUG_TRACE); > > FOR PIDX IN 1 .. L_DEPPOL.COUNT LOOP > > > > RDF_APIS_INTERNAL.KSDWRF('** ODCI virtual model_internal$'); > SEM_RDFCTX_DR.CREATE_VIRTUAL_RDFCTX_INDEX ( > ROLES_AND_PRIVS, IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > POLICY_PARTNAME, NLS_UPPER(L_DEPPOL(PIDX))); > END LOOP; > > STEP_NUM := 11; > RDF_APIS_INTERNAL.KSDWRF('starting step 11', DEBUG_TRACE); > > SEM_RDFCTX_DR.SET_DEFAULT_POLICY( > IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > POLICY_PARTNAME, NLS_UPPER(L_DEFPOL)); > COMMIT; > END IF; > > STEP_NUM := 12; > RDF_APIS_INTERNAL.KSDWRF('starting step ' || STEP_NUM, DEBUG_TRACE); > IF (IS_GLOBAL_IDX OR IDXENV.CALLPROPERTY = SYS.ODCICONST.FINALCALL) THEN > > STEP_NUM := 12.1; > RDF_APIS_INTERNAL.KSDWRF('starting step ' || STEP_NUM, DEBUG_TRACE); > > IF (NOT(KEEP_RDFCTX_STAGING_TABLES)) THEN > SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, STAGTAB_NAME, STAGVIEW_NAME,XINFOTAB_NAME,L_BATCH); > MDSYS.RDF_APIS_INTERNAL.KSDWRF('ODCIIndexCreate: dropping staging table(s): ' || STAGTAB_NAME || '*', DEBUG_TRACE); > > > IF (L_LOAD_METHOD='BULKLOAD') THEN > FOR EI IN 1 .. L_BASEPOL.COUNT LOOP > STAGTAB_SUFFIX := > SEM_RDFCTX_DR.GET_STAGTAB_SUFFIX(NLS_UPPER(L_BASEPOL(EI)),L_POLRIDS(EI)); > EXECUTE IMMEDIATE 'DROP TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME || STAGTAB_SUFFIX) || ' PURGE'; > MDSYS.RDF_APIS_INTERNAL.KSDWRF( > 'ODCIIndexCreate: dropped BULKLOAD staging table: ' > || '(policy=' || NLS_UPPER(L_BASEPOL(EI) || ') ') > || STAGTAB_NAME || STAGTAB_SUFFIX, DEBUG_TRACE); > IF (XINFOTAB_NAME IS NOT NULL) THEN > EXECUTE IMMEDIATE 'DROP TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(XINFOTAB_NAME || STAGTAB_SUFFIX) || ' PURGE'; > MDSYS.RDF_APIS_INTERNAL.KSDWRF( > 'ODCIIndexCreate: dropped xinfotab table: ' > || '(policy=' || NLS_UPPER(L_BASEPOL(EI) || ') ') > || XINFOTAB_NAME || STAGTAB_SUFFIX, DEBUG_TRACE); > END IF; > END LOOP; > > ELSE > MDSYS.RDF_APIS_INTERNAL.KSDWRF( > 'ODCIIndexCreate: non-bulk-load case: SKIPPED dropping the staging table: ' > || STAGTAB_NAME, DEBUG_TRACE); > END IF; > END IF; > > STEP_NUM := 12.2; > RDF_APIS_INTERNAL.KSDWRF('starting step ' || STEP_NUM, DEBUG_TRACE); > > > IF (KEEP_RDFCTX_STAGING_TABLES) THEN > > > BEGIN > > IF (L_TBSNM IS NULL) THEN > SELECT UU.DEFAULT_TABLESPACE INTO L_TBSNM FROM SYS.USER_USERS UU > WHERE UU.USERNAME=IDXINFO.INDEXSCHEMA; > END IF; > > DOCURI2RID_DEBUG := SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(SEM_RDFCTX_DR.GET_DOCURI2RID_DEBUG_NAME(IDXINFO.INDEXSCHEMA,DOCURI2RID_NAME)); > STMT := 'CREATE TABLE ' || DOCURI2RID_DEBUG || > ' (command VARCHAR2(100), partition VARCHAR2(128), snap_time TIMESTAMP, docUri VARCHAR2(4000), docRid ROWID) ' > || ' tablespace ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(L_TBSNM, FALSE); > RDF_APIS_INTERNAL.KSDWRF('creating debug table: stmt=' || STMT, DEBUG_TRACE); > > EXECUTE IMMEDIATE STMT; > EXCEPTION WHEN OTHERS THEN > IF (SQLCODE != -942) THEN > RDF_APIS_INTERNAL.KSDWRF('[Ignoring] SQLERRM=' || SQLERRM || ' [stmt=' || STMT || ']'); > END IF; > END; > BEGIN > SNAP_TIME := SYSTIMESTAMP; > STMT := > 'INSERT INTO ' || DOCURI2RID_DEBUG || ' (command, partition, snap_time, docUri, docRid) ' || > ' SELECT :cmd, :parti, :snap_time, docUri, docRid ' || > ' FROM ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCURI2RID_NAME) || PARTI_CLAUSE > ; > RDF_APIS_INTERNAL.KSDWRF('inserting into debug table: (' || SNAP_TIME || ') stmt=' || STMT, DEBUG_TRACE); > > EXECUTE IMMEDIATE STMT USING 'CREATE INDEX', IDXINFO.INDEXPARTITION, SNAP_TIME; > EXCEPTION WHEN OTHERS THEN > RDF_APIS_INTERNAL.KSDWRF('[Ignoring] SQLERRM=' || SQLERRM || ' [stmt=' || STMT || ']'); > END; > END IF; > EXECUTE IMMEDIATE 'DROP TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCURI2RID_NAME) || ' PURGE'; > > > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, FALSE, DOCURI2RID, DOCVID2RID); > SEM_RDFCTX_IR.CREATE_MAPTABLE_INDEXES(IDXINFO.INDEXSCHEMA, DOCVID2RID, NOT(IS_GLOBAL_IDX)); > > END IF; > > STEP_NUM := 13; > RDF_APIS_INTERNAL.KSDWRF('starting step ' || STEP_NUM, DEBUG_TRACE); > IF (IS_ADD_PARTITION) THEN > STEP_NUM := 13.1; > RDF_APIS_INTERNAL.KSDWRF('starting step ' || STEP_NUM, DEBUG_TRACE); > > SEM_RDFCTX_DR.SET_DEFAULT_POLICY( > IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > POLICY_PARTNAME, NLS_UPPER(L_DEFPOL)); > > STEP_NUM := 13.2; > RDF_APIS_INTERNAL.KSDWRF('starting step ' || STEP_NUM, DEBUG_TRACE); > > EXECUTE IMMEDIATE 'alter table ' || > SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAMESQ) || > ' add partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE); > STEP_NUM := 13.3; > RDF_APIS_INTERNAL.KSDWRF('starting step ' || STEP_NUM, DEBUG_TRACE); > EXECUTE IMMEDIATE 'alter table ' || > SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) || > ' add partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE); > STEP_NUM := 13.4; > RDF_APIS_INTERNAL.KSDWRF('starting step ' || STEP_NUM, DEBUG_TRACE); > COMMIT; > END IF; > > RDF_APIS_INTERNAL.KSDWRF('returning from ODCIIndexCreate', DEBUG_TRACE); > RETURNVAL:= ODCICONST.SUCCESS; > RETURN; > EXCEPTION WHEN OTHERS THEN > MDSYS.RDF_APIS_INTERNAL.KSDWRF('ODCIIndexCreate: RAISING: step_num=' || STEP_NUM || > CHR(10) || DBMS_UTILITY.FORMAT_ERROR_STACK || > CHR(10) || '[' || CHR(10)|| DBMS_UTILITY.FORMAT_ERROR_BACKTRACE || CHR(10) || ']' || > CHR(10) || 'stmt=' || CHR(10) || STMT > ); > RAISE; > END ODCIINDEXCREATE_PR; > > PROCEDURE ODCIINDEXDROP_PR ( > IDXINFO SYS.ODCIINDEXINFO, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER) IS > STAGTAB_NAME VARCHAR2(270); > STAGVIEW_NAME VARCHAR2(270); > DUMMY_XINFOTAB_NAME VARCHAR2(270); > > DOCURI2RID_NAME VARCHAR2(270); > DOCVID2RID_NAME VARCHAR2(270); > ROLES_AND_PRIVS VARCHAR2(4000) := SDO_RDF.GET_ROLES_AND_PRIVS(); > DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > BEGIN > > > SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); > > COMMIT; > > > > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, > DOCURI2RID_NAME, DOCVID2RID_NAME); > > > IF (IDXENV.CALLPROPERTY IS NULL AND IDXINFO.INDEXPARTITION IS NULL) THEN > SEM_RDFCTX_DR.DROP_RDFCTX_INDEX (ROLES_AND_PRIVS, IDXINFO.INDEXSCHEMA, > IDXINFO.INDEXNAME, IDXINFO.INDEXNAME); > ELSIF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN > SEM_RDFCTX_DR.DROP_RDFCTX_INDEX (ROLES_AND_PRIVS, IDXINFO.INDEXSCHEMA, > IDXINFO.INDEXNAME, IDXINFO.INDEXPARTITION); > BEGIN > EXECUTE IMMEDIATE 'alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) > || ' drop partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) > || ' update indexes'; > EXCEPTION > WHEN OTHERS THEN > IF (SQLCODE = -14083) THEN > EXECUTE IMMEDIATE > 'drop table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) || ' purge'; > ELSE > RAISE; > END IF; > END; > > END IF; > COMMIT; > > > IF ((IDXENV.CALLPROPERTY IS NULL AND IDXINFO.INDEXPARTITION IS NULL) OR > (IDXENV.CALLPROPERTY = SYS.ODCICONST.FINALCALL)) THEN > SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > NULL, TRUE, STAGTAB_NAME, STAGVIEW_NAME, DUMMY_XINFOTAB_NAME); > BEGIN > COMMIT; > EXECUTE IMMEDIATE > 'drop table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) || ' purge'; > COMMIT; > EXCEPTION WHEN OTHERS THEN > MDSYS.RDF_APIS_INTERNAL.KSDWRF( > 'error dropping staging table: ' || STAGTAB_NAME > ||': ' || SQLERRM > ||' [' || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE || ']'); > END; > > > BEGIN > EXECUTE IMMEDIATE > 'drop table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCURI2RID_NAME) || ' purge'; > EXCEPTION WHEN OTHERS THEN > IF (SQLCODE != -942) THEN > MDSYS.RDF_APIS_INTERNAL.KSDWRF( > 'error dropping docUri2Rid mapping table:' || DOCURI2RID_NAME > ||': ' || SQLERRM > ||' [' || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE || ']'); > END IF; > END; > > BEGIN > EXECUTE IMMEDIATE > 'drop table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) || ' purge'; > EXCEPTION WHEN OTHERS THEN > IF (SQLCODE != -942) THEN > MDSYS.RDF_APIS_INTERNAL.KSDWRF( > 'error dropping docVid2Rid mapping table:' || DOCVID2RID_NAME > ||': ' || SQLERRM > ||' [' || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE || ']'); > END IF; > END; > > END IF; > RETURNVAL := ODCICONST.SUCCESS; > END ODCIINDEXDROP_PR; > > > PROCEDURE ODCIINDEXALTER_PR ( > IDXINFO SYS.ODCIINDEXINFO, > IDXPARMS IN OUT VARCHAR2, > ALTOPT NUMBER, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER) IS > L_DUMVR VARCHAR2(300); > L_POLLST SYS.ODCIVARCHAR2LIST; > L_USEDOPTS SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); > L_EXTRPARAMS SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); > L_ROWCNT NUMBER; > L_LOAD_METHOD VARCHAR2(128) := 'DML'; > L_DEFPOL VARCHAR2(130); > L_BASEPOL SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); > L_BATCHPOL SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); > L_BATCHPOL_COUNT PLS_INTEGER; > L_DEPPOL SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); > L_FLAGS SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); > L_TBSNM VARCHAR2(130); > STAGTAB_NAME VARCHAR2(270); > STAGVIEW_NAME VARCHAR2(270); > XINFOTAB_NAME VARCHAR2(270); > STAGTAB_SUFFIX VARCHAR2(128); > DOCURI2RID_NAME VARCHAR2(270); > DOCURI2RID VARCHAR2(128); > DOCVID2RID_NAME VARCHAR2(270); > DOCVID2RID VARCHAR2(128); > L_MODARR SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); > L_EXTARR MDSYS.T_EXTARR := MDSYS.T_EXTARR(); > L_POLRIDS SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); > L_CTXPREF FN_XMLPREF := FN_XMLPREF(); > L_ERRCNT SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); > T_EXTARR FN_EXTARR := FN_EXTARR(); > FILTERPL VARCHAR2(130) := NULL; > FILEDIR VARCHAR2(512) := NULL; > STATUS NUMBER; > PARTI_CLAUSE VARCHAR2(1000) := NULL; > INS_INTO_DOCVID VARCHAR2(4000); > PARTI_DETAILS VARCHAR2(1000); > STAGTAB VARCHAR2(130); > STAGVIEW VARCHAR2(130); > XINFOTAB VARCHAR2(130); > STAGTAB_VIEW_NAME VARCHAR2(128); > STAGTAB_PART_VIEW_NAME VARCHAR2(128) := NULL; > IS_PARTITION_REBLD BOOLEAN := FALSE; > ADD_POLICY BOOLEAN := FALSE; > DROP_POLICY BOOLEAN := FALSE; > PLAIN_REBUILD BOOLEAN := FALSE; > REBUILD_POLICY BOOLEAN := FALSE; > PARTITION_NAME VARCHAR2(130); > STMT VARCHAR2(32767); > CNT NUMBER; > IS_PARTN_TBL NUMBER; > IS_DEP_POLICY BOOLEAN := FALSE; > POLICY_EXISTS BOOLEAN := FALSE; > > ROLES_AND_PRIVS VARCHAR2(4000) := SDO_RDF.GET_ROLES_AND_PRIVS(); > > L_BATCH BOOLEAN := FALSE; > BATCH_INTERFACE_OPTION CONSTANT VARCHAR2(100) := 'INTERFACE=BATCH'; > > STEP_NUM NUMBER := 0; > ROWS_APPENDED NUMBER; > POL_OPTIONS NUMBER := 0; > > DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > BEGIN > > > SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); > > COMMIT; > > > > > > > > DEBUG_TRACE := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > > > IF (ALTOPT = SYS.ODCICONST.ALTERINDEXREBUILD) THEN > > > > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, FALSE, > DOCURI2RID, DOCVID2RID); > > SELECT COUNT(*) INTO CNT FROM SYS.USER_TABLES WHERE TABLE_NAME=DOCVID2RID; > RDF_APIS_INTERNAL.KSDWRF('count(*)=' || CNT || ' for table=' || DOCVID2RID, DEBUG_TRACE); > IF (CNT=0) THEN SEM_RDFCTX_IR.CREATE_DOCVID2RID_TABLE(IDXINFO, DOCVID2RID); END IF; > > > IF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN > IS_PARTITION_REBLD := TRUE; > PARTITION_NAME := IDXINFO.INDEXPARTITION; > ELSE > PARTITION_NAME := IDXINFO.INDEXNAME; > END IF; > > > BEGIN > L_DUMVR := SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXNAME,FALSE); > EXCEPTION > WHEN OTHERS THEN > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'invalid name for the index'); > > END; > > > IF (IDXPARMS IS NOT NULL) THEN > BEGIN > L_POLLST := SEM_RDFCTX_DR.PRVT_PARAMS_PARSER(IDXPARMS, L_USEDOPTS, L_EXTRPARAMS); > EXCEPTION > WHEN OTHERS THEN > EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values (1, > ''invalid or empty parameters passed to the index'')'; > RETURNVAL := SYS.ODCICONST.WARNING; > RETURN; > END; > > SELECT COUNT(DISTINCT(COLUMN_VALUE)) INTO L_ROWCNT FROM TABLE(L_POLLST); > > > FOR OPT IN (SELECT DISTINCT COLUMN_VALUE FROM TABLE(L_USEDOPTS)) LOOP > RDF_APIS_INTERNAL.KSDWRF('AlterIndexRebuild option=' || OPT.COLUMN_VALUE || '*', DEBUG_TRACE); > IF (TRIM(OPT.COLUMN_VALUE) = 'LOAD_METHOD=BULK') THEN > L_LOAD_METHOD := 'BULKLOAD'; > RDF_APIS_INTERNAL.KSDWRF('l_load_method set to: ' || L_LOAD_METHOD, DEBUG_TRACE); > ELSIF (TRIM(OPT.COLUMN_VALUE) = BATCH_INTERFACE_OPTION) THEN > L_LOAD_METHOD := 'BULKLOAD'; > L_BATCH := TRUE; > RDF_APIS_INTERNAL.KSDWRF('rebuild: interface=BATCH', DEBUG_TRACE); > RDF_APIS_INTERNAL.KSDWRF('rebuild: l_load_method set to: ' || L_LOAD_METHOD, DEBUG_TRACE); > ELSIF (TRIM(OPT.COLUMN_VALUE) = 'ADD_POLICY') THEN > ADD_POLICY := TRUE; > POL_OPTIONS := POL_OPTIONS + 1; > ELSIF (TRIM(OPT.COLUMN_VALUE) = 'DROP_POLICY') THEN > DROP_POLICY := TRUE; > POL_OPTIONS := POL_OPTIONS + 1; > ELSIF (TRIM(OPT.COLUMN_VALUE) = 'REBUILD_POLICY') THEN > REBUILD_POLICY := TRUE; > POL_OPTIONS := POL_OPTIONS + 1; > END IF; > END LOOP; > > > IF (POL_OPTIONS > 1) THEN > EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, > ''cannot ADD/DROP/REBUILD policies for the index at the same time'')'; > RETURNVAL:= SYS.ODCICONST.WARNING; > RETURN; > END IF; > > > IF ((ADD_POLICY OR DROP_POLICY OR REBUILD_POLICY) AND (L_POLLST.COUNT > 1)) THEN > EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, > '' cannot ADD OR DROP OR REBUILD multiple policies for the index at the same time'')'; > RETURNVAL := SYS.ODCICONST.WARNING; > RETURN; > END IF; > > > IF ((ADD_POLICY OR DROP_POLICY OR REBUILD_POLICY) AND (L_POLLST.COUNT = 0 )) THEN > EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, > '' policy name needs to be specified for ADD OR DROP OR REBUILD policy'')'; > RETURNVAL:= SYS.ODCICONST.WARNING; > RETURN; > END IF; > > > IF (NOT(ADD_POLICY OR DROP_POLICY OR REBUILD_POLICY)) THEN > IF (L_POLLST.COUNT > 0) THEN > EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, > ''Cannot specify new policies during rebuild'')'; > RETURNVAL:= SYS.ODCICONST.WARNING; > RETURN; > ELSE > PLAIN_REBUILD := TRUE; > END IF; > END IF; > ELSE > > PLAIN_REBUILD := TRUE; > END IF; > > IF (PLAIN_REBUILD) THEN > > L_CTXPREF.EXTEND; > SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > PARTITION_NAME, L_POLRIDS, L_MODARR, > L_EXTARR, L_CTXPREF(1), L_BASEPOL, > L_EXTRPARAMS, L_FLAGS); > > > SEM_RDFCTX_DR.TRUNCATE_RDFCTX_INDEX(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > PARTITION_NAME); > END IF; > > > IF (REBUILD_POLICY) THEN > > L_EXTARR.EXTEND; > L_POLRIDS.EXTEND; > L_CTXPREF.EXTEND; > L_MODARR.EXTEND; > L_BASEPOL.EXTEND; > > > BEGIN > L_MODARR(1) := SEM_RDFCTX_DR.GET_MODEL_ID(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, PARTITION_NAME, NLS_UPPER(L_POLLST(1))); > EXCEPTION > WHEN OTHERS THEN > EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, > ''the specified index-policy combination does not exist'')'; > > RETURNVAL:= SYS.ODCICONST.WARNING; > RETURN; > END; > > > IF (L_MODARR(1) < 0) THEN > EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, > ''cannot REBUILD a dependent policy for the index with the rebuild_policy option'')'; > > RETURNVAL:= SYS.ODCICONST.WARNING; > RETURN; > END IF; > > L_BASEPOL(1) := L_POLLST(1); > SEM_RDFCTX_DR.GET_POLICY_INFO ( > IDXINFO.INDEXSCHEMA, NLS_UPPER(L_BASEPOL(1)), > L_POLRIDS(1), L_EXTARR(1), L_CTXPREF(1)); > > > SEM_RDFCTX_DR.TRUNCATE_RDFCTX_INDEX(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > PARTITION_NAME, L_POLRIDS(1)); > > END IF; > > > IF (DROP_POLICY) THEN > SEM_RDFCTX_DR.DROP_INDEX_POLICY(SDO_RDF.GET_ROLES_AND_PRIVS(), IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > PARTITION_NAME, NLS_UPPER(L_POLLST(1)), STATUS); > IF (STATUS != 0) THEN > EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, > ''Specified policy could not be dropped for the index'')'; > RETURNVAL:= SYS.ODCICONST.WARNING; > RETURN; > END IF; > ELSE > SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > IDXINFO.INDEXPARTITION, TRUE, STAGTAB_NAME, STAGVIEW_NAME > ,XINFOTAB_NAME,L_BATCH > ); > MDSYS.RDF_APIS_INTERNAL.KSDWRF('Staging table during rebuild : '||STAGTAB_NAME, DEBUG_TRACE); > > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, > DOCURI2RID_NAME, DOCVID2RID_NAME); > > MDSYS.RDF_APIS_INTERNAL.KSDWRF('DocUri2Rid table during rebuild: ' || DOCURI2RID_NAME, DEBUG_TRACE); > MDSYS.RDF_APIS_INTERNAL.KSDWRF('DocVid2Rid table during rebuild: ' || DOCVID2RID_NAME, DEBUG_TRACE); > > IF (IDXINFO.INDEXPARTITION IS NULL) THEN > EXECUTE IMMEDIATE 'truncate table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME); > ELSE > EXECUTE IMMEDIATE > ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) > || ' truncate partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) > || ' update indexes'; > END IF; > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > SELECT UU.DEFAULT_TABLESPACE INTO L_TBSNM FROM SYS.USER_USERS UU > WHERE UU.USERNAME=IDXINFO.INDEXSCHEMA; > > IF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN > PARTI_DETAILS := 'partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) || ' tablespace ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(L_TBSNM, FALSE); > END IF; > > > > IF ((L_LOAD_METHOD != 'BULKLOAD') AND (IDXINFO.INDEXPARTITION IS NOT NULL)) THEN > SEM_RDFCTX_IR.CREATE_STAGING_TABLE(STAGTAB_NAME, NULL, NULL, PARTI_DETAILS, FALSE); > MDSYS.RDF_APIS_INTERNAL.KSDWRF('rebuild: created staging table ' || STAGTAB_NAME || PARTI_DETAILS, DEBUG_TRACE); > END IF; > > IF (ADD_POLICY) THEN > > L_EXTARR.EXTEND; > L_POLRIDS.EXTEND; > L_CTXPREF.EXTEND; > L_MODARR.EXTEND; > > BEGIN > SEM_RDFCTX_DR.SPLIT_POLICY_LIST(IDXINFO.INDEXSCHEMA, L_POLLST, > L_BASEPOL, L_DEPPOL); > EXCEPTION > WHEN OTHERS THEN > IF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN > EXECUTE IMMEDIATE 'DROP TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) || ' PURGE'; > END IF; > EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, > ''cannot add a non-existent policy to the index'')'; > RETURNVAL:= SYS.ODCICONST.WARNING; > RETURN; > END; > > > POLICY_EXISTS := SEM_RDFCTX_DR.IS_INDEX_POLICY(IDXINFO.INDEXSCHEMA, > IDXINFO.INDEXNAME,PARTITION_NAME, L_BASEPOL(1)); > > IF (ADD_POLICY AND POLICY_EXISTS AND (L_DEPPOL.COUNT = 0)) THEN > > > EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, > ''cannot ADD an already existing policy to the index'')'; > > IF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN > EXECUTE IMMEDIATE 'DROP TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) || ' PURGE'; > END IF; > RETURNVAL:= SYS.ODCICONST.WARNING; > RETURN; > END IF; > > > > IF (NOT POLICY_EXISTS) THEN > SEM_RDFCTX_DR.GET_POLICY_INFO ( > IDXINFO.INDEXSCHEMA, NLS_UPPER(L_BASEPOL(1)), > L_POLRIDS(1), L_EXTARR(1), L_CTXPREF(1)); > > L_MODARR(1) := SEM_RDFCTX_DR.CREATE_RDFCTX_INDEX(IDXINFO.INDEXSCHEMA, > IDXINFO.INDEXNAME, PARTITION_NAME, L_POLRIDS(1), > SEM_RDFCTX_DR.INDST_INPROGRESS, L_TBSNM, L_EXTRPARAMS(1)); > END IF; > END IF; > > IF (L_CTXPREF(1) IS NOT NULL AND > L_CTXPREF(1).EXTRACT('//Datastore') IS NULL) THEN > L_CTXPREF(1) := NULL; > ELSIF (L_CTXPREF(1) IS NOT NULL AND > NLS_UPPER(L_CTXPREF(1).EXTRACT('//Datastore/@type').GETSTRINGVAL()) > = 'FILE') THEN > FILEDIR := TRIM(L_CTXPREF(1).EXTRACT( > '//Datastore/Path/text()').GETSTRINGVAL()); > SELECT COUNT(*) INTO L_ROWCNT FROM SYS.ALL_DIRECTORIES WHERE > DIRECTORY_NAME = FILEDIR; > IF (L_ROWCNT = 0) THEN > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'directory object '||FILEDIR||' does not exist or is inaccessible'); > END IF; > END IF; > > > IF (NOT POLICY_EXISTS) THEN > L_BATCHPOL_COUNT := 0; > FOR PIDX IN 1..L_EXTARR.COUNT LOOP > T_EXTARR.EXTEND; > L_ERRCNT.EXTEND; > L_ERRCNT(PIDX) := 0; > L_BATCHPOL.EXTEND; > L_BATCHPOL(PIDX) := 0; > > > IF (XINFOTAB_NAME IS NOT NULL) THEN > IF NLS_UPPER(L_EXTARR(PIDX).GETCONTEXT(BATCH_INTERFACE_OPTION)) IN ('YES','Y') THEN > L_BATCHPOL(PIDX) := 1; > L_BATCHPOL_COUNT := L_BATCHPOL_COUNT + 1; > END IF; > END IF; > > > IF (L_LOAD_METHOD = 'BULKLOAD') THEN > STAGTAB_SUFFIX := > SEM_RDFCTX_DR.GET_STAGTAB_SUFFIX(NLS_UPPER(L_BASEPOL(PIDX)),L_POLRIDS(PIDX)); > IF (IDXINFO.INDEXPARTITION IS NULL) THEN > SEM_RDFCTX_IR.CREATE_STAGING_TABLE(STAGTAB_NAME,L_TBSNM,STAGTAB_SUFFIX, NULL,FALSE, XINFOTAB_NAME); > ELSE > SEM_RDFCTX_IR.CREATE_STAGING_TABLE(STAGTAB_NAME,NULL,STAGTAB_SUFFIX, PARTI_DETAILS,FALSE, XINFOTAB_NAME); > END IF; > END IF; > > T_EXTARR(PIDX) := L_EXTARR(PIDX); > > > L_EXTARR(PIDX).STARTDRIVER(); > > MDSYS.RDF_APIS_INTERNAL.KSDWRF('Extraction driver started in Alter', DEBUG_TRACE); > END LOOP; > > IF (L_CTXPREF(1) IS NOT NULL) THEN > IF (IDXINFO.INDEXCOLS(1).COLTYPENAME != 'VARCHAR2') THEN > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'FILE/URL datastores only allowed with VARCHAR2 columns'); > END IF; > IF (L_CTXPREF(1).EXTRACT('//Datastore/@filter') IS NOT NULL) THEN > FILTERPL := NLS_UPPER(L_CTXPREF(1).EXTRACT( > '//Datastore/@filter').GETSTRINGVAL()); > END IF; > END IF; > > > > IF (IDXINFO.INDEXPARTITION IS NULL) THEN > SEM_RDFCTX_IR.CREATE_MAPPING_TABLES(NULL, DOCURI2RID_NAME, NULL, L_TBSNM, NULL); > ELSE > SEM_RDFCTX_IR.CREATE_MAPPING_TABLES(NULL, DOCURI2RID_NAME, NULL, NULL, PARTI_DETAILS); > END IF; > > > MDSYS.RDF_APIS_INTERNAL.KSDWRF('initial setup done for rebuilding index', DEBUG_TRACE); > > SEM_RDFCTX_IR.POPULATE_INDEX_SEGMENT( > IDXINFO, FILEDIR, FILTERPL, L_BASEPOL, L_EXTRPARAMS, L_CTXPREF, T_EXTARR, L_MODARR, L_POLRIDS > , L_LOAD_METHOD, STAGTAB_NAME, DOCURI2RID_NAME, DOCVID2RID_NAME > , XINFOTAB_NAME, L_BATCHPOL, L_BATCHPOL_COUNT); > > FOR EI IN 1..L_BASEPOL.COUNT LOOP > > SEM_RDFCTX_DR.SET_RDFCTX_INDEX_STATUS_VALID( > IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > PARTITION_NAME, L_MODARR(EI)); > > > L_EXTARR(EI).CLOSEDRIVER(); > MDSYS.RDF_APIS_INTERNAL.KSDWRF('Extraction driver closed in Alter', DEBUG_TRACE); > END LOOP; > > MDSYS.RDF_APIS_INTERNAL.KSDWRF('Postprocessing for Alter', DEBUG_TRACE); > IF (L_LOAD_METHOD = 'BULKLOAD') THEN > BEGIN > SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > IDXINFO.INDEXPARTITION, FALSE, STAGTAB, STAGVIEW > ,XINFOTAB, L_BATCH); > > MDSYS.RDF_APIS_INTERNAL.KSDWRF('staging table for bulkload during index rebuild : ' ||STAGTAB, DEBUG_TRACE); > FOR EI IN 1 .. L_BASEPOL.COUNT LOOP > MDSYS.RDF_APIS_INTERNAL.KSDWRF('bulk-load issuing during index rebuild', DEBUG_TRACE); > STAGTAB_SUFFIX := SEM_RDFCTX_DR.GET_STAGTAB_SUFFIX(NLS_UPPER(L_BASEPOL(EI)),L_POLRIDS(EI)); > MDSYS.RDF_APIS_INTERNAL.KSDWRF('staging table suffix for bulkload during index rebuild : ' ||STAGTAB_SUFFIX, DEBUG_TRACE); > > IF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN > PARTI_CLAUSE := ' partition('||SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION,FALSE)||')'; > > SEM_RDFCTX_DR.GET_STAGTAB_PART_VIEW_NAME( > IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, IDXINFO.INDEXPARTITION, FALSE, > STAGTAB, TRUE, STAGTAB_PART_VIEW_NAME); > STAGTAB_VIEW_NAME := STAGTAB_PART_VIEW_NAME; > ELSE > STAGTAB_VIEW_NAME := STAGVIEW || STAGTAB_SUFFIX; > END IF; > > EXECUTE IMMEDIATE > 'CREATE or REPLACE VIEW ' > || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXSCHEMA, FALSE) || '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(STAGTAB_VIEW_NAME , FALSE) > ||' AS SELECT RDF$STC_GRAPH,RDF$STC_SUB,RDF$STC_PRED,RDF$STC_OBJ FROM ' > || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXSCHEMA, FALSE) || '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(STAGTAB || STAGTAB_SUFFIX, FALSE) > || PARTI_CLAUSE > ||' WHERE RDF$STC_OBJ IS NOT NULL' > ; > EXECUTE IMMEDIATE > 'GRANT SELECT ON ' > || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXSCHEMA, FALSE) || '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(STAGTAB_VIEW_NAME, FALSE) > ||' to ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(SDO_RDF_INTERNAL.GET_NETWORK_OWNER(), FALSE); > > MDSYS.RDF_APIS_INTERNAL.KSDWRF('About to start BULKLOAD in Alter', DEBUG_TRACE); > SEM_RDFCTX_DR.BULK_LOAD_INTO_MODEL(L_MODARR(EI),L_USEDOPTS, > IDXINFO.INDEXSCHEMA, STAGTAB || STAGTAB_SUFFIX, IDXINFO.INDEXPARTITION, > DOCURI2RID_NAME, DOCVID2RID_NAME, STAGTAB_VIEW_NAME, SYS_CONTEXT('USERENV','CURRENT_USER'), ROLES_AND_PRIVS); > > EXECUTE IMMEDIATE > 'DROP VIEW ' > || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXSCHEMA, FALSE) || '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(STAGTAB_VIEW_NAME, FALSE) > ; > > END LOOP; > > EXCEPTION WHEN OTHERS THEN > MDSYS.RDF_APIS_INTERNAL.KSDWRF('bulk-load issuing: SQLERRM='||SQLERRM); > END; > END IF; > > MDSYS.RDF_APIS_INTERNAL.KSDWRF('Postprocessing for Alter: populate docVid2Rid table: ' || DOCVID2RID_NAME, DEBUG_TRACE); > BEGIN > > IF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN > PARTI_CLAUSE := ' partition('||SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION,FALSE)||')'; > END IF; > > INS_INTO_DOCVID := > 'INSERT /*+ append */ INTO ' || > SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) || PARTI_CLAUSE || ' (docVid, docRid) ' || > ' select v.value_id,u2r.docrid ' || > ' from ' || MDSYS.SDO_RDF_INTERNAL.GET_PFX_FOR_RDF_OBJ_NAME() || 'rdf_value$ v, ' || > SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCURI2RID_NAME) || PARTI_CLAUSE || ' u2r ' || > ' where v.vname_prefix = ' || > ' sem_apis.value_name_prefix(substr(u2r.docUri,2,length(u2r.docUri)-2),''UR'') ' || > ' and v.value_type=''UR'' ' || > ' and v.vname_suffix = ' || > ' sem_apis.value_name_suffix(substr(u2r.docUri,2,length(u2r.docUri)-2),''UR'')' > ; > MDSYS.RDF_APIS_INTERNAL.KSDWRF('Postprocessing for Alter: ins_into_docVid=' || INS_INTO_DOCVID, DEBUG_TRACE); > > EXECUTE IMMEDIATE INS_INTO_DOCVID; > > ROWS_APPENDED := SQL%ROWCOUNT; > COMMIT; > > MDSYS.RDF_APIS_INTERNAL.KSDWRF('Postprocessing for Alter: inserted into ' || DOCVID2RID_NAME > || ': rowcount=' || ROWS_APPENDED, DEBUG_TRACE); > > EXCEPTION WHEN OTHERS THEN > MDSYS.RDF_APIS_INTERNAL.KSDWRF('IndexAlter postprocessing: issuing: ins_into_docVid=' > || INS_INTO_DOCVID > || ' SQLERRM='||SQLERRM); > END; > > END IF; > > IF (ADD_POLICY AND L_DEPPOL.COUNT != 0) THEN > MDSYS.RDF_APIS_INTERNAL.KSDWRF('Adding the dependent policy during Alter', DEBUG_TRACE); > SEM_RDFCTX_DR.CREATE_VIRTUAL_RDFCTX_INDEX ( > ROLES_AND_PRIVS, IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > PARTITION_NAME, NLS_UPPER(L_DEPPOL(1))); > END IF; > > > IF (PLAIN_REBUILD) THEN > SEM_RDFCTX_DR.GET_DEP_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > PARTITION_NAME, L_DEPPOL); > IF (L_DEPPOL IS NOT NULL AND L_DEPPOL.COUNT > 0) THEN > FOR PIDX IN 1 .. L_DEPPOL.COUNT LOOP > > > MDSYS.RDF_APIS_INTERNAL.KSDWRF('Adding the dependent policy during Rebuild', DEBUG_TRACE); > SEM_RDFCTX_DR.CREATE_VIRTUAL_RDFCTX_INDEX ( > ROLES_AND_PRIVS, IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > PARTITION_NAME, NLS_UPPER(L_DEPPOL(PIDX))); > END LOOP; > END IF; > END IF; > > COMMIT; > > STEP_NUM := 9; > > IF (L_LOAD_METHOD = 'BULKLOAD' AND (NOT POLICY_EXISTS)) THEN > FOR EI IN 1 .. L_BASEPOL.COUNT LOOP > STAGTAB_SUFFIX := SEM_RDFCTX_DR.GET_STAGTAB_SUFFIX(NLS_UPPER(L_BASEPOL(EI)),L_POLRIDS(EI)); > EXECUTE IMMEDIATE 'DROP TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME || STAGTAB_SUFFIX) || ' PURGE'; > MDSYS.RDF_APIS_INTERNAL.KSDWRF('ODCIIndexAlter: dropped BULKLOAD staging table: ' > || 'DROP TABLE ' || STAGTAB_NAME || STAGTAB_SUFFIX || ' PURGE', DEBUG_TRACE); > END LOOP; > ELSIF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN > EXECUTE IMMEDIATE 'DROP TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) || ' PURGE'; > END IF; > > STEP_NUM := 10; > > STMT := 'DROP TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCURI2RID_NAME) || ' PURGE'; > BEGIN > EXECUTE IMMEDIATE STMT; > EXCEPTION WHEN OTHERS THEN > MDSYS.RDF_APIS_INTERNAL.KSDWRF('Failed during ODCIIndexAlter: step_num=' || STEP_NUM || ' stmt=' || STMT); > END; > > END IF; > ELSE > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'ALTER INDEX (other than rebuild partition not supported for RDFCTX indexes'); > END IF; > RETURNVAL:= ODCICONST.SUCCESS; > RETURN; > > EXCEPTION WHEN OTHERS THEN > MDSYS.RDF_APIS_INTERNAL.KSDWRF('Failed during ODCIIndexAlter: step_num=' > || STEP_NUM || ' stmt=' || STMT || ' SQLERRM=' || SQLERRM); > RETURNVAL:= ODCICONST.SUCCESS; > RETURN; > END ODCIINDEXALTER_PR; > > > PROCEDURE ODCIINDEXTRUNCATE_PR ( > IDXINFO SYS.ODCIINDEXINFO, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER) IS > DOCURI2RID_NAME VARCHAR2(270); > DOCVID2RID_NAME VARCHAR2(270); > DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > BEGIN > > > SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); > > COMMIT; > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME,TRUE,DOCURI2RID_NAME, > DOCVID2RID_NAME); > > IF (IDXENV.CALLPROPERTY IS NULL AND IDXINFO.INDEXPARTITION IS NULL) THEN > SEM_RDFCTX_DR.TRUNCATE_RDFCTX_INDEX (IDXINFO.INDEXSCHEMA, > IDXINFO.INDEXNAME, IDXINFO.INDEXNAME); > EXECUTE IMMEDIATE 'truncate table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME); > ELSIF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN > SEM_RDFCTX_DR.TRUNCATE_RDFCTX_INDEX (IDXINFO.INDEXSCHEMA, > IDXINFO.INDEXNAME, IDXINFO.INDEXPARTITION); > > EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) > || ' truncate partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) > || ' update indexes'; > END IF; > > COMMIT; > RETURNVAL:= ODCICONST.SUCCESS; > END ODCIINDEXTRUNCATE_PR; > > > PROCEDURE ODCIINDEXMERGEPARTITION_PR ( > IDXINFO SYS.ODCIINDEXINFO, > PART1_NAME SYS.ODCIPARTINFO, > PART2_NAME SYS.ODCIPARTINFO, > IDXPARMS VARCHAR2, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER) IS > L_POLRIDS SYS.ODCIVARCHAR2LIST; > L_MODIDX SYS.ODCINUMBERLIST; > L_EXTARR MDSYS.T_EXTARR; > L_EXTPREF SYS.XMLTYPE; > L_TBSNM VARCHAR2(128); > L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; > L_MODARR SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); > L_FLAGS SYS.ODCINUMBERLIST; > DOCURI2RID_NAME VARCHAR2(270); > DOCVID2RID_NAME VARCHAR2(270); > STAGTAB_NAME VARCHAR2(270); > STAGVIEW_NAME VARCHAR2(270); > L_POLNAMES SYS.ODCIVARCHAR2LIST; > DUMMY_XINFOTAB_NAME VARCHAR2(270); > ROLES_AND_PRIVS VARCHAR2(4000) := SDO_RDF.GET_ROLES_AND_PRIVS(); > DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > BEGIN > > > SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); > > SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, > STAGTAB_NAME, STAGVIEW_NAME, DUMMY_XINFOTAB_NAME); > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME,TRUE,DOCURI2RID_NAME, > DOCVID2RID_NAME); > IF (PART2_NAME IS NOT NULL) AND (IDXINFO.INDEXPARTITION IS NOT NULL) AND > (PART1_NAME IS NOT NULL) THEN > > > L_TBSNM := SDO_RDF_INTERNAL.GET_CALLCONTEXT_VC_ATTR('VALUES_TABLESPACE'); > > > SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > IDXINFO.INDEXPARTITION, L_POLRIDS, L_MODIDX, > L_EXTARR, L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); > > FOR EI IN 1..L_EXTARR.COUNT LOOP > L_MODARR.EXTEND; > > L_MODARR(EI) := SEM_RDFCTX_DR.CREATE_RDFCTX_INDEX ( > IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > PART2_NAME.INDEXPARTITION, L_POLRIDS(EI), > L_FLAGS(EI), L_TBSNM, L_EXTRPARAMS(EI)); > > > SEM_RDFCTX_DR.DROP_RDFCTX_INDEX(ROLES_AND_PRIVS, IDXINFO.INDEXSCHEMA, > IDXINFO.INDEXNAME, IDXINFO.INDEXPARTITION, L_POLRIDS(EI)); > > END LOOP; > > > SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > PART1_NAME.INDEXPARTITION, L_POLRIDS, L_MODIDX, > L_EXTARR, L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); > > FOR EI IN 1..L_EXTARR.COUNT LOOP > > > SEM_RDFCTX_DR.DROP_RDFCTX_INDEX(ROLES_AND_PRIVS, IDXINFO.INDEXSCHEMA, > IDXINFO.INDEXNAME, PART1_NAME.INDEXPARTITION, L_POLRIDS(EI)); > END LOOP; > > EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) > || ' merge partitions ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) || ',' > || SYS.DBMS_ASSERT.ENQUOTE_NAME(PART1_NAME.INDEXPARTITION, FALSE) || ' into partition ' > || SYS.DBMS_ASSERT.ENQUOTE_NAME(PART2_NAME.INDEXPARTITION, FALSE) || ' update indexes'; > > EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) > || ' merge partitions ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) || ',' > || SYS.DBMS_ASSERT.ENQUOTE_NAME(PART1_NAME.INDEXPARTITION, FALSE) || ' into partition ' > || SYS.DBMS_ASSERT.ENQUOTE_NAME(PART2_NAME.INDEXPARTITION, FALSE) || ' update indexes'; > END IF; > RETURNVAL := SYS.ODCICONST.SUCCESS; > END ODCIINDEXMERGEPARTITION_PR; > > > PROCEDURE ODCIINDEXSPLITPARTITION_PR ( > IDXINFO SYS.ODCIINDEXINFO, > PART1_NAME SYS.ODCIPARTINFO, > PART2_NAME SYS.ODCIPARTINFO, > IDXPARMS VARCHAR2, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER) IS > L_POLRIDS SYS.ODCIVARCHAR2LIST; > L_MODIDX SYS.ODCINUMBERLIST; > L_EXTARR MDSYS.T_EXTARR; > L_EXTPREF SYS.XMLTYPE; > L_TBSNM VARCHAR2(128); > L_MODARR SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); > L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; > L_FLAGS SYS.ODCINUMBERLIST; > PIDX NUMBER := 0; > DOCURI2RID_NAME VARCHAR2(270); > DOCVID2RID_NAME VARCHAR2(270); > STAGTAB_NAME VARCHAR2(270); > STAGVIEW_NAME VARCHAR2(270); > L_POLNAMES SYS.ODCIVARCHAR2LIST; > DUMMY_XINFOTAB_NAME VARCHAR2(270); > ROLES_AND_PRIVS VARCHAR2(4000) := SDO_RDF.GET_ROLES_AND_PRIVS(); > DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > BEGIN > > > SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); > > SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, > STAGTAB_NAME, STAGVIEW_NAME, DUMMY_XINFOTAB_NAME); > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME,TRUE,DOCURI2RID_NAME, > DOCVID2RID_NAME); > > IF (PART1_NAME IS NOT NULL AND PART2_NAME IS NOT NULL ) THEN > > > L_TBSNM := SDO_RDF_INTERNAL.GET_CALLCONTEXT_VC_ATTR('VALUES_TABLESPACE'); > > > SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > IDXINFO.INDEXPARTITION, L_POLRIDS, L_MODIDX, > L_EXTARR, L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); > > FOR EI IN 1..L_EXTARR.COUNT LOOP > L_MODARR.EXTEND; > PIDX := PIDX + 1; > > L_MODARR(PIDX) := SEM_RDFCTX_DR.CREATE_RDFCTX_INDEX ( > IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > PART1_NAME.INDEXPARTITION, L_POLRIDS(EI), > L_FLAGS(EI), L_TBSNM, L_EXTRPARAMS(EI)); > > L_MODARR.EXTEND; > PIDX := PIDX + 1; > L_MODARR(PIDX) := SEM_RDFCTX_DR.CREATE_RDFCTX_INDEX ( > IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > PART2_NAME.INDEXPARTITION, L_POLRIDS(EI), > L_FLAGS(EI), L_TBSNM, L_EXTRPARAMS(EI)); > > > SEM_RDFCTX_DR.DROP_RDFCTX_INDEX(ROLES_AND_PRIVS, IDXINFO.INDEXSCHEMA, > IDXINFO.INDEXNAME, IDXINFO.INDEXPARTITION, L_POLRIDS(EI)); > END LOOP; > COMMIT; > > > > EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) > || ' add partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(PART1_NAME.INDEXPARTITION, FALSE); > COMMIT; > EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) > || ' add partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(PART1_NAME.INDEXPARTITION, FALSE); > COMMIT; > EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) > || ' add partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(PART2_NAME.INDEXPARTITION, FALSE); > COMMIT; > EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) > || ' add partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(PART2_NAME.INDEXPARTITION, FALSE); > COMMIT; > > > > EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) > || ' drop partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) || ' update indexes'; > COMMIT; > EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) > || ' drop partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) || ' update indexes'; > COMMIT; > END IF; > > RETURNVAL:= SYS.ODCICONST.SUCCESS; > END ODCIINDEXSPLITPARTITION_PR; > > > PROCEDURE ODCIINDEXEXCHANGEPARTITION_PR ( > PA_IDXINFO SYS.ODCIINDEXINFO, > IDXINFO SYS.ODCIINDEXINFO, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER) IS > PL_POLRIDS SYS.ODCIVARCHAR2LIST; > PL_MODIDX SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); > PL_EXTARR MDSYS.T_EXTARR; > PL_EXTPREF SYS.XMLTYPE; > PL_FLAGS SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); > L_POLRIDS SYS.ODCIVARCHAR2LIST; > L_MODIDX SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); > L_EXTARR MDSYS.T_EXTARR; > L_EXTPREF SYS.XMLTYPE; > L_FLAGS SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); > DOCURI2RID_PNAME VARCHAR2(270); > DOCVID2RID_PNAME VARCHAR2(270); > DOCURI2RID_NAME VARCHAR2(270); > DOCVID2RID_NAME VARCHAR2(270); > PL_POLNAMES SYS.ODCIVARCHAR2LIST; > L_POLNAMES SYS.ODCIVARCHAR2LIST; > PL_EXTRPARAMS SYS.ODCIVARCHAR2LIST; > L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; > DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > BEGIN > > > SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); > > > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(PA_IDXINFO.INDEXSCHEMA, PA_IDXINFO.INDEXNAME,TRUE, > DOCURI2RID_PNAME, DOCVID2RID_PNAME); > > > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME,TRUE,DOCURI2RID_NAME, > DOCVID2RID_NAME); > > > SEM_RDFCTX_DR.GET_INDEX_POLICIES(PA_IDXINFO.INDEXSCHEMA, PA_IDXINFO.INDEXNAME, > PA_IDXINFO.INDEXPARTITION, PL_POLRIDS, PL_MODIDX, > PL_EXTARR, PL_EXTPREF, PL_POLNAMES, PL_EXTRPARAMS, PL_FLAGS); > > > SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > IDXINFO.INDEXNAME, L_POLRIDS, L_MODIDX, > L_EXTARR, L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); > > > IF (PL_POLRIDS.COUNT != L_POLRIDS.COUNT) THEN > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'EXCHANGE INDEX PARTITION not supported for different number of index policies'); > ELSE > FOR I IN 1..PL_EXTARR.COUNT LOOP > FOR J IN 1..L_EXTARR.COUNT LOOP > IF (L_POLRIDS(J) = PL_POLRIDS(I)) THEN > EXIT; > ELSE > IF (L_POLRIDS(J) > PL_POLRIDS(I)) THEN > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'EXCHANGE INDEX PARTITION not supported for incompatible index policies'); > END IF; > END IF; > END LOOP; > END LOOP; > END IF; > > > > > FOR I IN 1..PL_EXTARR.COUNT LOOP > > > > SEM_RDFCTX_DR.EXCHANGE_INDEX_POLICIES(PA_IDXINFO.INDEXSCHEMA, PA_IDXINFO.INDEXNAME, > PA_IDXINFO.INDEXPARTITION, PL_MODIDX(I), > IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, > L_MODIDX(I)); > END LOOP; > > > EXECUTE IMMEDIATE 'alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_PNAME) > || ' exchange partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(PA_IDXINFO.INDEXPARTITION, FALSE) > || ' with table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) > || ' including indexes'; > COMMIT; > > RETURNVAL:= SYS.ODCICONST.SUCCESS; > END ODCIINDEXEXCHANGEPARTITION_PR; > > > PROCEDURE ODCIINDEXINSERT_PR ( > IDXINFO SYS.ODCIINDEXINFO, > RID VARCHAR2, > NEWVAL VARCHAR2, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER) IS > L_POLRIDS SYS.ODCIVARCHAR2LIST; > L_MODIDX SYS.ODCINUMBERLIST; > L_EXTARR MDSYS.T_EXTARR; > S_XMLRDF CLOB; > L_EXTPREF SYS.XMLTYPE; > FILEDIR VARCHAR2(4000) := NULL; > L_NEWDOC CLOB := NEWVAL; > L_DUMN NUMBER; > FILTERPL VARCHAR2(130) := NULL; > STAGTAB VARCHAR2(270); > STAGVIEW VARCHAR2(270); > L_DOCURIPFX VARCHAR2(4000); > L_DOCURISHORTPFX VARCHAR2(500); > L_DOCURI VARCHAR2(4000); > DOCVID2RID_NAME VARCHAR2(270); > DOCURI2RID_NAME VARCHAR2(270); > L_ROWCNT CONSTANT NUMBER := 0; > L_ROWDESC VARCHAR2(50); > L_POLNAMES SYS.ODCIVARCHAR2LIST; > L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; > DUMMY_XINFOTAB_NAME VARCHAR2(270); > L_FLAGS SYS.ODCINUMBERLIST; > > DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > BEGIN > > > SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); > > > > > DEBUG_TRACE := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > > > > IF (NEWVAL IS NULL) THEN > RETURNVAL:= SYS.ODCICONST.SUCCESS; > RETURN; > END IF; > > > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, > DOCURI2RID_NAME, DOCVID2RID_NAME); > > > L_DOCURIPFX := SEM_RDFCTX_DR.GEN_DOC_URI_PREFIX( > IDXINFO.INDEXSCHEMA > , IDXINFO.INDEXNAME > , IDXINFO.INDEXPARTITION, L_DOCURISHORTPFX); > RDF_APIS_INTERNAL.KSDWRF('index insert: docUriPfx=' || L_DOCURIPFX, DEBUG_TRACE); > > > > > L_ROWDESC := 'r' || SDO_RDF.FORM_URL_ENCODE(RID); > L_DOCURI := '<' || > L_DOCURIPFX || > L_ROWDESC || > '>'; > > SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, > IDXINFO.INDEXNAME, > (CASE WHEN IDXINFO.INDEXPARTITION IS NULL THEN IDXINFO.INDEXNAME ELSE IDXINFO.INDEXPARTITION END), > L_POLRIDS, L_MODIDX, L_EXTARR, > L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); > > IF (L_EXTPREF IS NOT NULL) THEN > IF (NLS_UPPER(L_EXTPREF.EXTRACT('//Datastore/@type').GETSTRINGVAL()) > = 'FILE') THEN > FILEDIR := TRIM(L_EXTPREF.EXTRACT( > '//Datastore/Path/text()').GETSTRINGVAL()); > END IF; > IF (L_EXTPREF.EXTRACT('//Datastore/@filter') IS NOT NULL) THEN > FILTERPL := NLS_UPPER(L_EXTPREF.EXTRACT( > '//Datastore/@filter').GETSTRINGVAL()); > END IF; > IF (FILEDIR IS NOT NULL) THEN > > SEM_RDFCTX_IR.READ_FROM_FILE(FILEDIR, NEWVAL, L_NEWDOC, FILTERPL); > ELSE > SEM_RDFCTX_IR.READ_FROM_NTWRK(NEWVAL, L_NEWDOC, FILTERPL); > END IF; > END IF; > > SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, STAGTAB, STAGVIEW > ,DUMMY_XINFOTAB_NAME); > > > > > > > MDSYS.RDF_APIS_INTERNAL.KSDWRF('Staging table for indexInsert is ' || STAGTAB, DEBUG_TRACE); > > FOR EI IN 1 .. L_EXTARR.COUNT LOOP > BEGIN > L_EXTARR(EI).STARTDRIVER(); > > IF (L_EXTRPARAMS(EI) IS NULL) THEN > S_XMLRDF := L_EXTARR(EI).EXTRACTRDF(L_NEWDOC, L_DOCURISHORTPFX || L_ROWDESC); > ELSE > S_XMLRDF := L_EXTARR(EI).EXTRACTRDF(L_NEWDOC, L_DOCURISHORTPFX || L_ROWDESC, > L_EXTRPARAMS(EI)); > END IF; > > MDSYS.RDF_APIS_INTERNAL.KSDWRF('Done extracting data for the new document', DEBUG_TRACE); > L_DUMN := SEM_RDFCTX_DR.LOAD_TRIPLES(L_EXTARR(EI).RDFRETURNTYPE(), > S_XMLRDF, L_DOCURI, L_MODIDX(EI), L_POLRIDS(EI), 'DML', STAGTAB, NULL, > IDXINFO.INDEXPARTITION, RID); > L_EXTARR(EI).CLOSEDRIVER(); > > > MDSYS.RDF_APIS_INTERNAL.NOTIFY_MODEL_DML(L_MODIDX(EI), 'INS'); > EXCEPTION > WHEN OTHERS THEN > L_EXTARR(EI).CLOSEDRIVER(); > IF (SQLCODE != -13199) THEN > SEM_RDFCTX_DR.RECORD_RDFCTX_EXCEPTION (L_MODIDX(EI), RID, 1, > SQLCODE, SQLERRM); > END IF; > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'unable to maintain index. See exceptions table' || > CHR(10) || DBMS_UTILITY.FORMAT_ERROR_STACK || > CHR(10) || '[' || CHR(10) || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE || CHR(10) || ']' > ); > END; > END LOOP; > > > SEM_RDFCTX_IR.MAINTAIN_DOCVID2RID_TABLE(IDXINFO, DOCVID2RID_NAME, L_DOCURI, RID); > > RETURNVAL:= SYS.ODCICONST.SUCCESS; > END ODCIINDEXINSERT_PR; > > > PROCEDURE ODCIINDEXINSERT_PR ( > IDXINFO SYS.ODCIINDEXINFO, > RID VARCHAR2, > NEWVAL CLOB, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER) IS > L_POLRIDS SYS.ODCIVARCHAR2LIST; > L_MODIDX SYS.ODCINUMBERLIST; > L_EXTARR MDSYS.T_EXTARR; > S_XMLRDF CLOB; > L_EXTPREF SYS.XMLTYPE; > L_DUMN NUMBER; > STAGTAB VARCHAR2(270); > STAGVIEW VARCHAR2(270); > L_DOCURIPFX VARCHAR2(4000); > L_DOCURISHORTPFX VARCHAR2(500); > L_DOCURI VARCHAR2(4000); > DOCVID2RID_NAME VARCHAR2(270); > DOCURI2RID_NAME VARCHAR2(270); > L_ROWCNT CONSTANT NUMBER := 0; > L_ROWDESC VARCHAR2(50); > L_POLNAMES SYS.ODCIVARCHAR2LIST; > L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; > DUMMY_XINFOTAB_NAME VARCHAR2(270); > L_FLAGS SYS.ODCINUMBERLIST; > > DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > BEGIN > > > SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); > > > DEBUG_TRACE := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > > > > IF (NEWVAL IS NULL) THEN > RETURNVAL:= SYS.ODCICONST.SUCCESS; > RETURN; > END IF; > > > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, > DOCURI2RID_NAME, DOCVID2RID_NAME); > > > L_DOCURIPFX := SEM_RDFCTX_DR.GEN_DOC_URI_PREFIX( > IDXINFO.INDEXSCHEMA > , IDXINFO.INDEXNAME > , IDXINFO.INDEXPARTITION, L_DOCURISHORTPFX); > RDF_APIS_INTERNAL.KSDWRF('index insert: docUriPfx=' || L_DOCURIPFX, DEBUG_TRACE); > > > > > L_ROWDESC := 'r' || SDO_RDF.FORM_URL_ENCODE(RID); > L_DOCURI := '<' || > L_DOCURIPFX || > L_ROWDESC || > '>'; > > SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, > IDXINFO.INDEXNAME, > (CASE WHEN IDXINFO.INDEXPARTITION IS NULL THEN IDXINFO.INDEXNAME ELSE IDXINFO.INDEXPARTITION END), > L_POLRIDS, L_MODIDX, L_EXTARR, > L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); > > SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, STAGTAB, STAGVIEW > ,DUMMY_XINFOTAB_NAME); > > > FOR EI IN 1 .. L_EXTARR.COUNT LOOP > BEGIN > L_EXTARR(EI).STARTDRIVER(); > > IF (L_EXTRPARAMS(EI) IS NULL) THEN > S_XMLRDF := L_EXTARR(EI).EXTRACTRDF(NEWVAL, L_DOCURISHORTPFX || L_ROWDESC); > ELSE > S_XMLRDF := L_EXTARR(EI).EXTRACTRDF(NEWVAL, L_DOCURISHORTPFX || L_ROWDESC, > L_EXTRPARAMS(EI)); > END IF; > > L_DUMN := SEM_RDFCTX_DR.LOAD_TRIPLES(L_EXTARR(EI).RDFRETURNTYPE(), > S_XMLRDF, L_DOCURI, L_MODIDX(EI), L_POLRIDS(EI), 'DML', STAGTAB, NULL, > IDXINFO.INDEXPARTITION, RID); > L_EXTARR(EI).CLOSEDRIVER(); > > > MDSYS.RDF_APIS_INTERNAL.NOTIFY_MODEL_DML(L_MODIDX(EI), 'INS'); > EXCEPTION > WHEN OTHERS THEN > L_EXTARR(EI).CLOSEDRIVER(); > IF (SQLCODE != -13199) THEN > SEM_RDFCTX_DR.RECORD_RDFCTX_EXCEPTION (L_MODIDX(EI), RID, 1, > SQLCODE, SQLERRM); > END IF; > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'unable to maintain index. See exceptions table'); > END; > END LOOP; > > > SEM_RDFCTX_IR.MAINTAIN_DOCVID2RID_TABLE(IDXINFO, DOCVID2RID_NAME, L_DOCURI, RID); > > RETURNVAL:= SYS.ODCICONST.SUCCESS; > END ODCIINDEXINSERT_PR; > > > PROCEDURE ODCIINDEXDELETE_PR ( > IDXINFO SYS.ODCIINDEXINFO, > RID VARCHAR2, > OLDVAL VARCHAR2, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER) IS > L_POLRIDS SYS.ODCIVARCHAR2LIST; > L_MODIDX SYS.ODCINUMBERLIST; > L_EXTARR MDSYS.T_EXTARR; > L_EXTPREF SYS.XMLTYPE; > DOCVID2RID_NAME VARCHAR2(270); > DOCURI2RID_NAME VARCHAR2(270); > L_POLNAMES SYS.ODCIVARCHAR2LIST; > L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; > L_DOCVID NUMBER; > L_FLAGS SYS.ODCINUMBERLIST; > DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > BEGIN > > > SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); > > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, > DOCURI2RID_NAME, DOCVID2RID_NAME); > > SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, > IDXINFO.INDEXNAME, > (CASE WHEN IDXINFO.INDEXPARTITION IS NULL THEN IDXINFO.INDEXNAME ELSE IDXINFO.INDEXPARTITION END), > L_POLRIDS, L_MODIDX, L_EXTARR, > L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); > > > EXECUTE IMMEDIATE 'select docVid from ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) > || ' where docRid = :1' INTO L_DOCVID USING RID; > > FOR EI IN 1 .. L_EXTARR.COUNT LOOP > SEM_RDFCTX_DR.DELETE_TRIPLES(RID, L_MODIDX(EI), L_DOCVID); > > > MDSYS.RDF_APIS_INTERNAL.NOTIFY_MODEL_DML(L_MODIDX(EI), 'DEL'); > END LOOP; > > EXECUTE IMMEDIATE 'delete from ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) > || ' where docRid = :1' USING RID; > > RETURNVAL:= SYS.ODCICONST.SUCCESS; > END ODCIINDEXDELETE_PR; > > > PROCEDURE ODCIINDEXDELETE_PR ( > IDXINFO SYS.ODCIINDEXINFO, > RID VARCHAR2, > OLDVAL CLOB, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER) IS > L_POLRIDS SYS.ODCIVARCHAR2LIST; > L_MODIDX SYS.ODCINUMBERLIST; > L_EXTARR MDSYS.T_EXTARR; > L_EXTPREF SYS.XMLTYPE; > DOCVID2RID_NAME VARCHAR2(270); > DOCURI2RID_NAME VARCHAR2(270); > L_POLNAMES SYS.ODCIVARCHAR2LIST; > L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; > L_DOCVID NUMBER; > L_FLAGS SYS.ODCINUMBERLIST; > DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > BEGIN > > > SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); > > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, > DOCURI2RID_NAME, DOCVID2RID_NAME); > > SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, > IDXINFO.INDEXNAME, > (CASE WHEN IDXINFO.INDEXPARTITION IS NULL THEN IDXINFO.INDEXNAME ELSE IDXINFO.INDEXPARTITION END), > L_POLRIDS, L_MODIDX, L_EXTARR, > L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); > > > EXECUTE IMMEDIATE 'select docVid from ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) > || ' where docRid = :1' INTO L_DOCVID USING RID; > > FOR EI IN 1 .. L_EXTARR.COUNT LOOP > SEM_RDFCTX_DR.DELETE_TRIPLES(RID, L_MODIDX(EI), L_DOCVID); > > > MDSYS.RDF_APIS_INTERNAL.NOTIFY_MODEL_DML(L_MODIDX(EI), 'DEL'); > END LOOP; > > EXECUTE IMMEDIATE 'delete from ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) > || ' where docRid = :1' USING RID; > > RETURNVAL:= SYS.ODCICONST.SUCCESS; > END ODCIINDEXDELETE_PR; > > > PROCEDURE ODCIINDEXUPDATE_PR ( > IDXINFO SYS.ODCIINDEXINFO, > RID VARCHAR2, > OLDVAL VARCHAR2, > NEWVAL VARCHAR2, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER) IS > L_POLRIDS SYS.ODCIVARCHAR2LIST; > L_MODIDX SYS.ODCINUMBERLIST; > L_EXTARR MDSYS.T_EXTARR; > S_XMLRDF CLOB; > L_EXTPREF SYS.XMLTYPE; > FILEDIR VARCHAR2(4000) := NULL; > L_NEWDOC CLOB := NEWVAL; > L_DUMN NUMBER; > FILTERPL VARCHAR2(130); > STAGTAB VARCHAR2(270); > STAGVIEW VARCHAR2(270); > DOCVID2RID_NAME VARCHAR2(270); > DOCURI2RID_NAME VARCHAR2(270); > L_ROWCNT CONSTANT NUMBER := 0; > L_ROWDESC VARCHAR2(50); > L_DOCURIPFX VARCHAR2(4000); > L_DOCURISHORTPFX VARCHAR2(500); > L_DOCURI VARCHAR2(4000); > L_POLNAMES SYS.ODCIVARCHAR2LIST; > L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; > DUMMY_XINFOTAB_NAME VARCHAR2(270); > L_DOCVID NUMBER; > L_FLAGS SYS.ODCINUMBERLIST; > > DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > BEGIN > > > SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); > > > DEBUG_TRACE := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > > > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, > DOCURI2RID_NAME, DOCVID2RID_NAME); > > > > > SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, > IDXINFO.INDEXNAME, > (CASE WHEN IDXINFO.INDEXPARTITION IS NULL THEN IDXINFO.INDEXNAME ELSE IDXINFO.INDEXPARTITION END), > L_POLRIDS, L_MODIDX, L_EXTARR, > L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); > > SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, STAGTAB, STAGVIEW > ,DUMMY_XINFOTAB_NAME); > > EXECUTE IMMEDIATE 'select docVid from ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) > || ' where docRid = :1' INTO L_DOCVID USING RID; > > FOR EI IN 1 .. L_EXTARR.COUNT LOOP > SEM_RDFCTX_DR.DELETE_TRIPLES(RID, L_MODIDX(EI), L_DOCVID); > END LOOP; > > EXECUTE IMMEDIATE 'delete from ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) > || ' where docRid = :1' USING RID; > > IF (NEWVAL IS NULL) THEN > RETURNVAL:= ODCICONST.SUCCESS; > RETURN; > END IF; > > > > L_DOCURIPFX := SEM_RDFCTX_DR.GEN_DOC_URI_PREFIX( > IDXINFO.INDEXSCHEMA > , IDXINFO.INDEXNAME > , IDXINFO.INDEXPARTITION, L_DOCURISHORTPFX); > RDF_APIS_INTERNAL.KSDWRF('index update: docUriPfx=' || L_DOCURIPFX, DEBUG_TRACE); > > L_ROWDESC := 'r' || SDO_RDF.FORM_URL_ENCODE(RID); > L_DOCURI := '<' || > L_DOCURIPFX || > L_ROWDESC || > '>'; > > IF (L_EXTPREF IS NOT NULL) THEN > IF (NLS_UPPER(L_EXTPREF.EXTRACT('//Datastore/@type').GETSTRINGVAL()) > = 'FILE') THEN > FILEDIR := TRIM(L_EXTPREF.EXTRACT( > '//Datastore/Path/text()').GETSTRINGVAL()); > END IF; > IF (L_EXTPREF.EXTRACT('//Datastore/@filter') IS NOT NULL) THEN > FILTERPL := NLS_UPPER(L_EXTPREF.EXTRACT( > '//Datastore/@filter').GETSTRINGVAL()); > END IF; > IF (FILEDIR IS NOT NULL) THEN > > SEM_RDFCTX_IR.READ_FROM_FILE(FILEDIR, NEWVAL, L_NEWDOC, FILTERPL); > ELSE > SEM_RDFCTX_IR.READ_FROM_NTWRK(NEWVAL, L_NEWDOC, FILTERPL); > END IF; > END IF; > > > FOR EI IN 1 .. L_EXTARR.COUNT LOOP > BEGIN > L_EXTARR(EI).STARTDRIVER(); > > IF (L_EXTRPARAMS(EI) IS NULL) THEN > S_XMLRDF := L_EXTARR(EI).EXTRACTRDF(L_NEWDOC, L_DOCURISHORTPFX || L_ROWDESC); > ELSE > S_XMLRDF := L_EXTARR(EI).EXTRACTRDF(L_NEWDOC, L_DOCURISHORTPFX || L_ROWDESC, > L_EXTRPARAMS(EI)); > END IF; > > L_DUMN := SEM_RDFCTX_DR.LOAD_TRIPLES(L_EXTARR(EI).RDFRETURNTYPE(), > S_XMLRDF, L_DOCURI, L_MODIDX(EI), L_POLRIDS(EI), 'DML', STAGTAB, NULL, > IDXINFO.INDEXPARTITION, RID); > L_EXTARR(EI).CLOSEDRIVER(); > > > MDSYS.RDF_APIS_INTERNAL.NOTIFY_MODEL_DML(L_MODIDX(EI), 'UPD'); > EXCEPTION > WHEN OTHERS THEN > L_EXTARR(EI).CLOSEDRIVER(); > IF (SQLCODE != -13199) THEN > SEM_RDFCTX_DR.RECORD_RDFCTX_EXCEPTION (L_MODIDX(EI), RID, 1, > SQLCODE, SQLERRM); > END IF; > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'unable to maintain index. See exceptions table'); > END; > END LOOP; > > > SEM_RDFCTX_IR.MAINTAIN_DOCVID2RID_TABLE(IDXINFO, DOCVID2RID_NAME, L_DOCURI, RID); > > RETURNVAL:= SYS.ODCICONST.SUCCESS; > RETURN; > END ODCIINDEXUPDATE_PR; > > > PROCEDURE ODCIINDEXUPDATE_PR ( > IDXINFO SYS.ODCIINDEXINFO, > RID VARCHAR2, > OLDVAL CLOB, > NEWVAL CLOB, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER) IS > L_POLRIDS SYS.ODCIVARCHAR2LIST; > L_MODIDX SYS.ODCINUMBERLIST; > L_EXTARR MDSYS.T_EXTARR; > S_XMLRDF CLOB; > L_EXTPREF SYS.XMLTYPE; > L_FLAGS SYS.ODCINUMBERLIST; > L_DUMN NUMBER; > STAGTAB VARCHAR2(270); > STAGVIEW VARCHAR2(270); > DOCVID2RID_NAME VARCHAR2(270); > DOCURI2RID_NAME VARCHAR2(270); > L_ROWCNT CONSTANT NUMBER := 0; > L_ROWDESC VARCHAR2(50); > L_DOCURIPFX VARCHAR2(4000); > L_DOCURISHORTPFX VARCHAR2(500); > L_DOCURI VARCHAR2(4000); > L_POLNAMES SYS.ODCIVARCHAR2LIST; > L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; > DUMMY_XINFOTAB_NAME VARCHAR2(270); > L_DOCVID NUMBER; > > DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > BEGIN > > > SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); > > > DEBUG_TRACE := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > > > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, > DOCURI2RID_NAME, DOCVID2RID_NAME); > > > > > SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, > IDXINFO.INDEXNAME, > (CASE WHEN IDXINFO.INDEXPARTITION IS NULL THEN IDXINFO.INDEXNAME ELSE IDXINFO.INDEXPARTITION END), > L_POLRIDS, L_MODIDX, L_EXTARR, > L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); > > SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, STAGTAB, STAGVIEW > ,DUMMY_XINFOTAB_NAME); > > EXECUTE IMMEDIATE 'select docVid from ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) > || ' where docRid = :1' INTO L_DOCVID USING RID; > > FOR EI IN 1 .. L_EXTARR.COUNT LOOP > SEM_RDFCTX_DR.DELETE_TRIPLES(RID, L_MODIDX(EI), L_DOCVID); > END LOOP; > > EXECUTE IMMEDIATE 'delete from ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) > || ' where docRid = :1' USING RID; > > IF (NEWVAL IS NULL) THEN > RETURNVAL:= ODCICONST.SUCCESS; > RETURN; > END IF; > > > > L_DOCURIPFX := SEM_RDFCTX_DR.GEN_DOC_URI_PREFIX( > IDXINFO.INDEXSCHEMA > , IDXINFO.INDEXNAME > , IDXINFO.INDEXPARTITION, L_DOCURISHORTPFX); > RDF_APIS_INTERNAL.KSDWRF('index update: docUriPfx=' || L_DOCURIPFX, DEBUG_TRACE); > > L_ROWDESC := 'r' || SDO_RDF.FORM_URL_ENCODE(RID); > L_DOCURI := '<' || > L_DOCURIPFX || > L_ROWDESC || > '>'; > > > FOR EI IN 1 .. L_EXTARR.COUNT LOOP > BEGIN > L_EXTARR(EI).STARTDRIVER(); > > IF (L_EXTRPARAMS(EI) IS NULL) THEN > S_XMLRDF := L_EXTARR(EI).EXTRACTRDF(NEWVAL, L_DOCURISHORTPFX || L_ROWDESC); > ELSE > S_XMLRDF := L_EXTARR(EI).EXTRACTRDF(NEWVAL, L_DOCURISHORTPFX || L_ROWDESC, > L_EXTRPARAMS(EI)); > END IF; > > L_DUMN := SEM_RDFCTX_DR.LOAD_TRIPLES(L_EXTARR(EI).RDFRETURNTYPE(), > S_XMLRDF, L_DOCURI, L_MODIDX(EI), L_POLRIDS(EI), 'DML', STAGTAB, NULL, > IDXINFO.INDEXPARTITION, RID); > L_EXTARR(EI).CLOSEDRIVER(); > > > MDSYS.RDF_APIS_INTERNAL.NOTIFY_MODEL_DML(L_MODIDX(EI), 'UPD'); > EXCEPTION > WHEN OTHERS THEN > L_EXTARR(EI).CLOSEDRIVER(); > IF (SQLCODE != -13199) THEN > SEM_RDFCTX_DR.RECORD_RDFCTX_EXCEPTION (L_MODIDX(EI), RID, 1, > SQLCODE, SQLERRM); > END IF; > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'unable to maintain index. See exceptions table'); > END; > > END LOOP; > > > SEM_RDFCTX_IR.MAINTAIN_DOCVID2RID_TABLE(IDXINFO, DOCVID2RID_NAME, L_DOCURI, RID); > > RETURNVAL:= SYS.ODCICONST.SUCCESS; > > END ODCIINDEXUPDATE_PR; > > > > > > PROCEDURE ODCIINDEXSTART_PR ( > ICTX IN OUT SEMCONTEXTINDEXMETHODS, > IDXINFO SYS.ODCIINDEXINFO, > OPI SYS.ODCIPREDINFO, > OQI SYS.ODCIQUERYINFO, > STRT NUMBER, > STOP NUMBER, > SPARQL VARCHAR2, > POLICY VARCHAR2, > IDX_STATUS INTEGER, > ALIASES MDSYS.RDF_ALIASES, > IDXENV SYS.ODCIENV, > RETURNVAL OUT NUMBER) IS > L_MODID NUMBER; > L_QRYARR RDF_LONGVARCHARARRAY; > L_COLNAMES RDF_VARCHARARRAY; > L_FLAGS INTEGER := 0; > PS_NCOLS INTEGER; > STMT DBMS_SQL.VARCHAR2A; > SEL VARCHAR2(32767); > COLNAMES RDF_VARCHARARRAY; > SELLST SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); > CURNM INTEGER; > RID ROWID; > SPARQLSEL VARCHAR2(4000) := NULL; > SPARQLWHR VARCHAR2(4000) := SPARQL; > SELCOLS RDF_VARCHARARRAY := NULL; > WHRCOLS RDF_VARCHARARRAY := NULL; > IDX INTEGER; > L_CLOB CLOB; > L_NUM NUMBER; > FLAG_OUT NUMBER; > DUMNUML SYS.ODCINUMBERLIST; > DUMVARCHAR VARCHAR2(32767); > VMNAME VARCHAR(128) := NULL; > SP2SQFLG NUMBER := 4; > DUMMYHINT VARCHAR2(128); > PART_NAME VARCHAR2(128); > > DOCGRAPH CONSTANT VARCHAR2(30) := 'ORARDFGRAPH'; > > DOCGRAPH_SPARQL_VAR VARCHAR2(128) := '?' || DOCGRAPH; > DOCGRAPH$RDFVID_COL VARCHAR2(128) := DOCGRAPH || '$RDFVID'; > > GRAPH_AUG_AT_HEAD CONSTANT VARCHAR2(100) := '{GRAPH ' || DOCGRAPH_SPARQL_VAR || ' '; > GRAPH_AUG_AT_TAIL CONSTANT VARCHAR2(100) := '}'; > > FLAG_MATCH_UNNAMED CONSTANT PLS_INTEGER := 128; > > DUMMY_DOCURI2RID VARCHAR2(128); > DOCVID2RID VARCHAR2(128); > DOCVID2RID_TAB VARCHAR2(128); > SELECT_DOCVID2RID_CLAUSE VARCHAR2(100); > SELECT_DOCVID2RID_ANC_CLAUSE VARCHAR2(100); > SELECT_DOCVID2RID_CNT_CLAUSE VARCHAR2(100); > FROM_DOCVID2RID_CLAUSE VARCHAR2(100); > WHERE_DOCVID2RID_CLAUSE VARCHAR2(100); > REQIDXSTATUS VARCHAR2(30); > DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); > > > HINTKEY CONSTANT VARCHAR2(11) := 'ORARDF$HINT'; > > > > HINTSTR VARCHAR2(4000) := ' ALLOW_DUP=T '; > CLNALIASES MDSYS.RDF_ALIASES := MDSYS.RDF_ALIASES(); > CURRALIAS MDSYS.RDF_ALIAS; > ALIASIDX PLS_INTEGER := 0; > > > SELECT_OP CONSTANT VARCHAR2(19) := 'SEM_CONTAINS_SELECT'; > COUNT_OP CONSTANT VARCHAR2(18) := 'SEM_CONTAINS_COUNT'; > > > L_NETWORK_OWNER VARCHAR2(128) := 'MDSYS'; > L_NETWORK_NAME VARCHAR2(30) := ''; > S_NETWORK_NAME VARCHAR2(30) := ''; > BEGIN > > > SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); > SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); > > L_NETWORK_OWNER := SDO_RDF_INTERNAL.GET_NETWORK_OWNER; > IF (L_NETWORK_OWNER != 'MDSYS') THEN > L_NETWORK_NAME := SDO_RDF_INTERNAL.GET_NETWORK_NAME; > S_NETWORK_NAME := SUBSTR(L_NETWORK_NAME,1,LENGTH(L_NETWORK_NAME)-1); > END IF; > > > > > > IF (ALIASES IS NOT NULL) THEN > FOR ALIASIDX IN ALIASES.FIRST..ALIASES.LAST LOOP > CURRALIAS := ALIASES(ALIASIDX); > IF (NLS_UPPER(CURRALIAS.NAMESPACE_ID) = HINTKEY) THEN > HINTSTR := CURRALIAS.NAMESPACE_VAL; > MDSYS.RDF_APIS_INTERNAL.KSDWRF( > 'extracted hint: [' || HINTSTR || ']', > DEBUG_TRACE); > ELSE > CLNALIASES.EXTEND(1); > CLNALIASES(CLNALIASES.LAST) := CURRALIAS; > MDSYS.RDF_APIS_INTERNAL.KSDWRF( > 'keeping alias: [' || CURRALIAS.NAMESPACE_ID || '][' > || CURRALIAS.NAMESPACE_VAL || ']', > DEBUG_TRACE); > END IF; > END LOOP; > END IF; > > > IF (ICTX IS NOT NULL) THEN > IF (ICTX.SCANCUR IS NOT NULL) THEN > IF (DEBUG_TRACE) THEN > MDSYS.RDF_APIS_INTERNAL.KSDWRF('closing previous open cursor in ODCIIndexStart'); > END IF; > DBMS_SQL.CLOSE_CURSOR(ICTX.SCANCUR); > END IF; > END IF; > > L_MODID := SEM_RDFCTX_DR.GET_MODEL_ID(IDXINFO.INDEXSCHEMA, > IDXINFO.INDEXNAME, > (CASE WHEN IDXINFO.INDEXPARTITION IS NULL THEN IDXINFO.INDEXNAME ELSE IDXINFO.INDEXPARTITION END), > NLS_UPPER(POLICY)); > > > SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, FALSE, DUMMY_DOCURI2RID, DOCVID2RID); > DOCVID2RID_TAB := SYS.DBMS_ASSERT.SIMPLE_SQL_NAME(DOCVID2RID); > > > REQIDXSTATUS := SEM_RDFCTX_DR.GET_IDXSTATUS_STRING(IDX_STATUS); > > MDSYS.RDF_APIS_INTERNAL.KSDWRF('requiredidxStatus : ' ||REQIDXSTATUS || ' idx_status=[' || IDX_STATUS || ']' || CHR(10) || DBMS_UTILITY.FORMAT_CALL_STACK, DEBUG_TRACE); > > IF (REQIDXSTATUS IS NULL) THEN > RAISE_APPLICATION_ERROR(-20000, TO_CHAR(IDX_STATUS) || > ' is not a recognized option for status of a rules index'); > END IF; > > > SELECT_DOCVID2RID_CLAUSE := 'SELECT docRid FROM ('; > SELECT_DOCVID2RID_CNT_CLAUSE := 'SELECT docRid, abs_cnt FROM ('; > SELECT_DOCVID2RID_ANC_CLAUSE := 'SELECT docRid, sparqlrslt FROM ('; > FROM_DOCVID2RID_CLAUSE := '), ' || DOCVID2RID_TAB || ' Vid2Rid'; > WHERE_DOCVID2RID_CLAUSE := ' and Vid2Rid.docVid = ' || DOCGRAPH$RDFVID_COL || ' '; > > > L_FLAGS := 0; > IF (OQI.ANCOPS IS NOT NULL AND OQI.ANCOPS.COUNT > 0) THEN > FOR IDX IN OQI.ANCOPS.FIRST..OQI.ANCOPS.LAST LOOP > MDSYS.RDF_APIS_INTERNAL.KSDWRF( > 'ancop [' || OQI.ANCOPS(IDX).OBJECTNAME || ']', > DEBUG_TRACE); > CASE (NLS_UPPER(OQI.ANCOPS(IDX).OBJECTNAME)) > WHEN SELECT_OP THEN > L_FLAGS := L_FLAGS + SEM_RDFCTX_DR.SELECT_ANCOP; > WHEN COUNT_OP THEN > L_FLAGS := L_FLAGS + SEM_RDFCTX_DR.COUNT_ANCOP; > ELSE > NULL; > END CASE; > END LOOP; > MDSYS.RDF_APIS_INTERNAL.KSDWRF( > 'l_flags [' || L_FLAGS || ']', > DEBUG_TRACE); > END IF; > > IF (L_MODID < 0) THEN > L_MODID := -1*L_MODID; > SP2SQFLG := SP2SQFLG+ FLAG_MATCH_UNNAMED; > VMNAME := SDO_RDF_INTERNAL.GET_PFX_FOR_RDF_OBJ_NAME() || 'SEMV_RDFCTX_MOD_'||L_MODID; > > > > IF (SEM_RDFCTX_DR.IS_ENTAILMENT_COMPAT('RDFCTX_MOD_'||L_MODID, REQIDXSTATUS) = FALSE) THEN > IF (REQIDXSTATUS = SDO_RDF_INTERNAL.RIDX_VALID) THEN > RAISE_APPLICATION_ERROR(-20000, > 'We do not have a valid virtual model with the specified status '); > ELSE > RAISE_APPLICATION_ERROR(-20000, > 'We do not have a virtual model with the specified status '); > END IF; > END IF; > > > ELSE > NULL; > > END IF; > > MDSYS.RDF_APIS_INTERNAL.KSDWRF('model_name in ODCIIndexStart : '||VMNAME, DEBUG_TRACE); > > IF (INSTR(NLS_UPPER(SUBSTR(LTRIM(SPARQL),1, 10)), 'SELECT') = 1) THEN > SELCOLS := SEM_RDFCTX_DR.GETSELECTVARIABLES(SPARQL); > > > SPARQLWHR := SUBSTR(SPARQL, INSTR(SPARQL,'{')); > END IF; > > SPARQLWHR := GRAPH_AUG_AT_HEAD || SPARQLWHR || GRAPH_AUG_AT_TAIL; > > > > > SELLST.EXTEND; > SELLST(SELLST.COUNT) := 2; > > > IF (BITAND(L_FLAGS, SEM_RDFCTX_DR.SELECT_ANCOP) = SEM_RDFCTX_DR.SELECT_ANCOP) THEN > IF (SELCOLS IS NULL) THEN > SELCOLS := RDF_VARCHARARRAY('*'); > END IF; > WHRCOLS := SEM_RDFCTX_DR.GETWHEREVARIABLES(SPARQLWHR, DUMMYHINT); > > > > > > > > > > > > IF (SELCOLS.COUNT = 1 AND SELCOLS(1) = '*') THEN > SELCOLS := RDF_VARCHARARRAY(); > FOR WCL IN 1 .. WHRCOLS.COUNT/2 LOOP > > IF (INSTR(WHRCOLS(WCL*2),'$') = 0 AND WHRCOLS(WCL*2) != NLS_UPPER(DOCGRAPH)) THEN > > SELLST.EXTEND; > SELLST(SELLST.COUNT) := WCL; > > SELLST.EXTEND; > SELLST(SELLST.COUNT) := WCL+4; > > SELCOLS.EXTEND; > SELCOLS(SELCOLS.COUNT) := WHRCOLS(WCL*2); > > > > > > END IF; > END LOOP; > ELSE > > FOR WCL IN 1 .. WHRCOLS.COUNT/2 LOOP > IF (INSTR(WHRCOLS(WCL*2),'$') = 0) THEN > > FOR SCL IN 1 .. SELCOLS.COUNT LOOP > IF (SELCOLS(SCL) = WHRCOLS(WCL*2)) THEN > SELLST.EXTEND; > SELLST(SELLST.COUNT) := WCL; > > SELLST.EXTEND; > SELLST(SELLST.COUNT) := WCL+4; > END IF; > END LOOP; > END IF; > END LOOP; > END IF; > END IF; > > RDF_APIS_INTERNAL.KSDWRF('sp2sqflg=' || TO_CHAR(SP2SQFLG) || ' > WHR=' || SPARQLWHR || '* > SELLST=' || SELLST.COUNT || '*', DEBUG_TRACE); > > MDSYS.RDF_APIS_INTERNAL.KSDWRF( > 'using sem_match options: [' || HINTSTR || ']', > DEBUG_TRACE); > > RDF_APIS_INTERNAL.SPARQL_TO_SQL(SELLST, > SPARQLWHR, > RDF_MODELS('RDFCTX_MOD_'||L_MODID), > NULL, > NULL, > REQIDXSTATUS, > NULL, > NULL, > NULL, > NULL, > ALIASES, > SP2SQFLG, > L_QRYARR, > L_COLNAMES, NULL, VMNAME, > FLAG_OUT, DUMNUML, DUMVARCHAR, NULL, 0 > , L_NETWORK_OWNER, S_NETWORK_NAME); > > > IF (BITAND(FLAG_OUT, 1) = 1) THEN > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'filters in optional graph patterns can only reference local or ' || > 'parent variables'); > END IF; > > IDX := 1; > > > > > > > > > IF (BITAND(L_FLAGS, SEM_RDFCTX_DR.SELECT_ANCOP) = SEM_RDFCTX_DR.SELECT_ANCOP) THEN > > > > STMT(IDX) := SELECT_DOCVID2RID_ANC_CLAUSE > || ' select ' || DOCGRAPH$RDFVID_COL || ', '' <result>''||chr(10)||'; > IDX := IDX+1; > FOR SCI IN 1 .. SELCOLS.COUNT LOOP > STMT(IDX) := ''' <binding name="'||SELCOLS(SCI)||'">''||chr(10)||'; > IDX := IDX+1; > STMT(IDX) := ' (case '||SELCOLS(SCI)||'$RDFVTYP when ''URI'' then '|| > ''' <uri>''||replace('||SELCOLS(SCI)|| > ',''&'',''&'')||''</uri>'''; > IDX := IDX+1; > STMT(IDX) := ' when ''LIT'' then '|| > ''' <literal>''||replace(replace(replace(replace('||SELCOLS(SCI) > ||',''&'',''&''), ''<'',''<''), ''>'',''>'') > ,''"'',''"'')||''</literal>'' end)||chr(10)||'; > IDX := IDX+1; > STMT(IDX) := ''' </binding>''||chr(10)||'; > IDX := IDX+1; > END LOOP; > STMT(IDX) := ''' </result>'' as sparqlrslt from ('; > > > > > > > > > > > > > > > ELSIF (BITAND(L_FLAGS, SEM_RDFCTX_DR.COUNT_ANCOP) = SEM_RDFCTX_DR.COUNT_ANCOP) THEN > STMT(IDX) := SELECT_DOCVID2RID_CNT_CLAUSE > || ' select ' || DOCGRAPH$RDFVID_COL || ', ' || > 'count(*) abs_cnt from ( '; > > ELSE > STMT(IDX) := SELECT_DOCVID2RID_CLAUSE > || ' select ' || DOCGRAPH$RDFVID_COL || ' from ( '; > END IF; > IDX := IDX+1; > > FOR QIDX IN 1 .. L_QRYARR.COUNT LOOP > STMT(IDX) := L_QRYARR(QIDX); > IDX := IDX+1; > END LOOP; > > STMT(IDX) := ') where 1=1 '; > IDX := IDX+1; > > > IF (BITAND(L_FLAGS, SEM_RDFCTX_DR.SELECT_ANCOP) = SEM_RDFCTX_DR.SELECT_ANCOP) THEN > STMT(IDX) := > (CASE WHEN BITAND(SP2SQFLG,16) = 16 THEN > ' and ' || DOCGRAPH$RDFVID_COL || ' is not null ' ELSE ' ' END) > || FROM_DOCVID2RID_CLAUSE || ' where 1=1 ' || WHERE_DOCVID2RID_CLAUSE > ||' order by 1, 2 '; > ELSE > STMT(IDX) := > (CASE WHEN BITAND(SP2SQFLG,16) = 16 THEN > ' and ' || DOCGRAPH$RDFVID_COL || ' is not null ' ELSE ' ' END) > || ' group by ' || DOCGRAPH$RDFVID_COL > || FROM_DOCVID2RID_CLAUSE || ' where 1=1 ' || WHERE_DOCVID2RID_CLAUSE; > END IF; > > > > > > > > > > RDF_APIS_INTERNAL.KSDWRF('stmt.count=' || STMT.COUNT, DEBUG_TRACE); > FOR IDX IN 1..STMT.COUNT LOOP > RDF_APIS_INTERNAL.KSDWRF(STMT(IDX), DEBUG_TRACE); > END LOOP; > > CURNM := DBMS_SQL.OPEN_CURSOR; > DBMS_SQL.PARSE(CURNM, STMT, 1, STMT.COUNT, FALSE, DBMS_SQL.NATIVE); > DBMS_SQL.DEFINE_COLUMN_ROWID(CURNM, 1, RID); > > IF (BITAND(L_FLAGS, SEM_RDFCTX_DR.SELECT_ANCOP) = SEM_RDFCTX_DR.SELECT_ANCOP) THEN > DBMS_SQL.DEFINE_COLUMN(CURNM, 2, L_CLOB); > > ELSIF (BITAND(L_FLAGS, SEM_RDFCTX_DR.COUNT_ANCOP) = SEM_RDFCTX_DR.COUNT_ANCOP) THEN > DBMS_SQL.DEFINE_COLUMN(CURNM, 2, L_NUM); > END IF; > L_MODID := DBMS_SQL.EXECUTE(CURNM); > ICTX := SEMCONTEXTINDEXMETHODS(CURNM, L_FLAGS, NULL); > RETURNVAL:= ODCICONST.SUCCESS; > RETURN; > EXCEPTION WHEN OTHERS THEN > MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, > 'Error during ODCIIndexStart. ' > ||': ' > || SDO_SEM_LOG.NEWLINE || SQLERRM > || SDO_SEM_LOG.NEWLINE ||' [' > || SDO_SEM_LOG.NEWLINE || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE > || SDO_SEM_LOG.NEWLINE || ']'); > > END ODCIINDEXSTART_PR; >
1009c1009,1010 < MATCHEDSIG OUT VARCHAR2) IS --- > MATCHEDSIG OUT VARCHAR2, > OPTIONS VARCHAR2 DEFAULT NULL) IS 1011c1012 < MDSYS.RDF_APIS_INTERNAL.W_GETPRECOMPSTATUS(OWNER, INDEX_NAME, PRECOMPSIG, MODELIDS, RULEBASEIDS, PRECOMPID, STATUS, MATCHEDSIG); --- > MDSYS.RDF_APIS_INTERNAL.W_GETPRECOMPSTATUS(OWNER, INDEX_NAME, PRECOMPSIG, MODELIDS, RULEBASEIDS, PRECOMPID, STATUS, MATCHEDSIG, OPTIONS); 1024c1025,1026 < RULEBASEIDS SYS.ODCINUMBERLIST) --- > RULEBASEIDS SYS.ODCINUMBERLIST, > OPTIONS VARCHAR2 DEFAULT NULL) 1027c1029 < RETURN MDSYS.RDF_APIS_INTERNAL.W_CREATEPRECOMPSTATUS(OWNER, INDEX_NAME, PRECOMPSIG, MODELIDS, RULEBASEIDS); --- > RETURN MDSYS.RDF_APIS_INTERNAL.W_CREATEPRECOMPSTATUS(OWNER, INDEX_NAME, PRECOMPSIG, MODELIDS, RULEBASEIDS, OPTIONS); 1028a1031,1036 > > FUNCTION GET_RDF_SEQUENCE_NEXTVAL (SEQUENCE_NAME VARCHAR2) > RETURN NUMBER IS > BEGIN > RETURN MDSYS.RDF_APIS_INTERNAL.W_GET_RDF_SEQUENCE_NEXTVAL(SEQUENCE_NAME); > END GET_RDF_SEQUENCE_NEXTVAL;
25,136c25 < L_POLLST SYS.ODCIVARCHAR2LIST; < L_BASEPOL SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); < L_BATCHPOL SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); < L_BATCHPOL_COUNT NUMBER := 0; < L_DEPPOL SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); < < L_DUMVR VARCHAR2(200); < L_BASETAB_QUERY_BODY VARCHAR2(4000); < L_INS_PARA_HINT VARCHAR2(200); < L_INS_DOCURI2RID VARCHAR2(4000); < < L_ROWCNT NUMBER; < L_EXTARR MDSYS.T_EXTARR := MDSYS.T_EXTARR(); < L_MODARR SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); < L_ERRCNT SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); < L_POLRIDS SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); < L_RC SYS_REFCURSOR; < S_RID ROWID; < S_CLOB CLOB; < S_XMLRDF CLOB; < DS_CLOB CLOB; < ERRM VARCHAR2(4000); < L_DEFPOL VARCHAR2(130); < L_VMNUM NUMBER; < L_VMMODS MDSYS.RDF_MODELS; < L_VMRBS MDSYS.RDF_RULEBASES; < L_CTXPREF FN_XMLPREF := FN_XMLPREF(); < T_EXTARR FN_EXTARR := FN_EXTARR(); < FILEDIR VARCHAR2(512) := NULL; < FILTERPL VARCHAR2(130) := NULL; < STMT VARCHAR2(32767); < CNT NUMBER; < TRIPLE_CNT NUMBER(38); < STEP_NUM NUMBER := 0; < L_USEDOPTS SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); < L_EXTRPARAMS SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); < USED_OPT VARCHAR2(100); < L_LOAD_METHOD VARCHAR2(128) := 'DML'; < L_BATCH BOOLEAN := FALSE; < OBJCNT PLS_INTEGER; < L_TBSNM VARCHAR2(130); < IS_GLOBAL_IDX BOOLEAN; < IS_IDX_PARTITION BOOLEAN := FALSE; < FIRST_CALL BOOLEAN := FALSE; < L_NETWORK_OWNER VARCHAR2(128) := NULL; < L_NETWORK_NAME VARCHAR2(30) := NULL; < < ROLES_AND_PRIVS VARCHAR2(4000) := SDO_RDF.GET_ROLES_AND_PRIVS(); < < POLICY_PARTNAME VARCHAR2(128); < < CURSOR CUR1(IANAME VARCHAR2) IS < SELECT PARTITION_NAME, TABLESPACE_NAME < FROM SYS.USER_IND_PARTITIONS < WHERE INDEX_NAME = IANAME < ORDER BY PARTITION_POSITION; < < CURSOR CUR2(IANAME VARCHAR2) IS < SELECT XP.PARTITION_NAME, TP.TABLESPACE_NAME < FROM SYS.USER_IND_PARTITIONS XP, SYS.ALL_TAB_PARTITIONS TP, SYS.USER_INDEXES X < WHERE XP.INDEX_NAME = IANAME AND XP.PARTITION_NAME = TP.PARTITION_NAME < AND X.TABLE_NAME = TP.TABLE_NAME AND XP.INDEX_NAME = X.INDEX_NAME < ORDER BY XP.PARTITION_POSITION; < < PARTI_DETAILS VARCHAR2(3000); < CR_STAGTAB_STMT VARCHAR2(4000); < IDX_OBJNUM NUMBER; < STAGTAB_NAME VARCHAR2(270); < STAGTAB_SUFFIX VARCHAR2(128); < STAGTAB VARCHAR2(128); < STAGVIEW_NAME VARCHAR2(270); < STAGVIEW VARCHAR2(128); < STAGTAB_VIEW_NAME VARCHAR2(128); < STAGTAB_PART_VIEW_NAME VARCHAR2(128) := NULL; < XINFOTAB_NAME VARCHAR2(270); < XINFOTAB VARCHAR2(128); < XINFOTAB_SUFFIX VARCHAR2(128); < < BATCH_INTERFACE_OPTION CONSTANT VARCHAR2(100) := 'INTERFACE=BATCH'; < DBUSER_ATTRIBUTE_NAME CONSTANT VARCHAR2(100) := 'DBUSER'; < XUSER VARCHAR2(128); < < LOOPVAR_I NUMBER; < STATUS NUMBER; < < PARTI_CLAUSE VARCHAR2(1000) := NULL; < INS_INTO_DOCVID VARCHAR2(4000); < < < DOCURI2RID VARCHAR2(128); < DOCVID2RID VARCHAR2(128); < < DOCURI2RID_NAME VARCHAR2(270); < DOCURI2RID_DEBUG VARCHAR2(270); < DOCVID2RID_NAME VARCHAR2(270); < < DOCURI2RID_NAMESQ VARCHAR2(270); < DOCVID2RID_NAMESQ VARCHAR2(270); < < KEEP_STAGING_TABLES VARCHAR2(128) := 'KEEP_RDFCTX_STAGING_TABLES'; < KEEP_RDFCTX_STAGING_TABLES BOOLEAN := FALSE; < IS_PARTN_TBL NUMBER; < IS_ADD_PARTITION BOOLEAN := FALSE; < < L_DOCURIPFX VARCHAR2(4000); < L_DOCURISHORTPFX VARCHAR2(500); < ROWS_APPENDED NUMBER; < < SNAP_TIME TIMESTAMP; < UNAME VARCHAR2(128); < < DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); --- > RETURNVAL NUMBER; 138,776c27,29 < < BEGIN < L_POLLST := SEM_RDFCTX_DR.PRVT_PARAMS_PARSER(IDXPARMS, L_USEDOPTS, L_EXTRPARAMS); < EXCEPTION < WHEN OTHERS THEN < EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values (1, < ''invalid or empty parameters passed to the index'')'; < RETURN SYS.ODCICONST.FATAL; < < < END; < < SELECT COUNT(DISTINCT(COLUMN_VALUE)) INTO L_ROWCNT < FROM TABLE(L_POLLST); < < IF (L_ROWCNT != L_POLLST.COUNT OR L_POLLST.COUNT > 5) THEN < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'duplicate or too many policies specified for the index'); < END IF; < < < FOR OPT IN (SELECT DISTINCT COLUMN_VALUE FROM TABLE(L_USEDOPTS)) < LOOP < USED_OPT := TRIM(OPT.COLUMN_VALUE); < RDF_APIS_INTERNAL.KSDWRF('CreateIndex option=' || USED_OPT || '*', DEBUG_TRACE); < IF (USED_OPT = 'LOAD_METHOD=BULK') THEN < L_LOAD_METHOD := 'BULKLOAD'; < RDF_APIS_INTERNAL.KSDWRF('l_load_method set to: ' || L_LOAD_METHOD, DEBUG_TRACE); < ELSIF (USED_OPT = BATCH_INTERFACE_OPTION) THEN < L_LOAD_METHOD := 'BULKLOAD'; < L_BATCH := TRUE; < RDF_APIS_INTERNAL.KSDWRF('interface=BATCH', DEBUG_TRACE); < RDF_APIS_INTERNAL.KSDWRF('l_load_method set to: ' || L_LOAD_METHOD, DEBUG_TRACE); < ELSIF (USED_OPT = KEEP_STAGING_TABLES) THEN < KEEP_RDFCTX_STAGING_TABLES := TRUE; < ELSIF (INSTR(USED_OPT, 'NETWORK_OWNER=') > 0) THEN < BEGIN < IF (INSTR(USED_OPT, '"', 15) > 0) THEN < L_NETWORK_OWNER := SUBSTR(USED_OPT, 15); < ELSE < L_NETWORK_OWNER := NLS_UPPER(SUBSTR(USED_OPT, 15)); < END IF; < END; < ELSIF (INSTR(USED_OPT, 'NETWORK_NAME=') > 0) THEN < BEGIN < IF (INSTR(USED_OPT, '"', 14) > 0) THEN < L_NETWORK_NAME := SUBSTR(USED_OPT, 15, LENGTH(USED_OPT)-15); < ELSE < L_NETWORK_NAME := NLS_UPPER(SUBSTR(USED_OPT, 14)); < END IF; < END; < END IF; < END LOOP; < < SEM_APIS.SET_NETWORK_INFO_CP_TO_PKGS(L_NETWORK_OWNER, L_NETWORK_NAME); < SEM_RDFCTX_DR.COPY_NETWORK_INFO_TO_PKG_VARS; < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); < < COMMIT; < < < < < < SEM_RDFCTX_IR.PURGE_TEMP_STAGING_TABLES; < < < IF (IDXPARMS IS NULL OR LENGTH(IDXPARMS) = 0) THEN < EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values (1, < ''invalid or empty parameters passed to the index'')'; < RETURN SYS.ODCICONST.FATAL; < < < END IF; < BEGIN < L_DUMVR := SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXNAME, FALSE); < EXCEPTION < WHEN OTHERS THEN < EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values (1, < ''invalid name for the index'')'; < RETURN SYS.ODCICONST.FATAL; < END; < < < IF (NOT(IDXINFO.INDEXCOLS(1).COLTYPENAME IN ('CLOB','VARCHAR2'))) THEN < INSERT INTO SYS.ODCI_WARNINGS$ VALUES (1,'unsupported data type '|| < IDXINFO.INDEXCOLS(1).COLTYPENAME ||' for the indextype'); < RETURN SYS.ODCICONST.FATAL; < END IF; < < IF ((IDXENV.CALLPROPERTY IS NULL) AND (IDXINFO.INDEXPARTITION IS NULL)) THEN < IS_GLOBAL_IDX := TRUE; < POLICY_PARTNAME := IDXINFO.INDEXNAME; < < < < < < ELSE < IF((IDXENV.CALLPROPERTY IS NULL) AND (IDXINFO.INDEXPARTITION IS NOT NULL)) THEN < < IS_GLOBAL_IDX := FALSE; < IS_ADD_PARTITION := TRUE; < POLICY_PARTNAME := IDXINFO.INDEXPARTITION; < ELSE < IS_GLOBAL_IDX := FALSE; < IF (IDXENV.CALLPROPERTY = SYS.ODCICONST.FIRSTCALL) THEN < FIRST_CALL := TRUE; < < < < PARTI_DETAILS := ''; < LOOPVAR_I := 1; < < FOR C1 IN CUR2(IDXINFO.INDEXNAME) LOOP < IF (LOOPVAR_I >1) THEN < PARTI_DETAILS := PARTI_DETAILS || SDO_SEM_LOG.NEWLINE || ','; < END IF; < PARTI_DETAILS := PARTI_DETAILS < || 'partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(C1.PARTITION_NAME, FALSE) < || ' tablespace ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(C1.TABLESPACE_NAME, FALSE); < LOOPVAR_I := LOOPVAR_I+1; < END LOOP; < RDF_APIS_INTERNAL.KSDWRF('ODCIIndexCreate: partition_details=' || PARTI_DETAILS, DEBUG_TRACE); < < ELSE < IF ((IDXENV.CALLPROPERTY = SYS.ODCICONST.INTERMEDIATECALL) AND < (IDXINFO.INDEXPARTITION IS NOT NULL)) THEN < IS_IDX_PARTITION := TRUE; < POLICY_PARTNAME := IDXINFO.INDEXPARTITION; < END IF; < END IF; < END IF; < END IF; < < BEGIN < L_DEFPOL := L_POLLST(1); < < STEP_NUM := 3.5; < < < SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, STAGTAB_NAME,STAGVIEW_NAME,XINFOTAB_NAME,L_BATCH); < MDSYS.RDF_APIS_INTERNAL.KSDWRF('step 3.5: xinfotab_name=' || XINFOTAB_NAME, DEBUG_TRACE); < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, DOCURI2RID_NAME, DOCVID2RID_NAME); < < < DOCURI2RID_NAMESQ := DOCURI2RID_NAME; < DOCVID2RID_NAMESQ := DOCVID2RID_NAME; < < < < < < < < < < < < < < < < < < < IF (NOT(IS_ADD_PARTITION)) THEN < IF (DEBUG_TRACE AND XINFOTAB_NAME IS NOT NULL) THEN < MDSYS.RDF_APIS_INTERNAL.KSDWRF('step 3.5 before creating staging table: (note: xinfotab_name=' < || XINFOTAB_NAME || ' NOT created', DEBUG_TRACE); < END IF; < IF (IS_GLOBAL_IDX) THEN < < UNAME := SYS_CONTEXT('USERENV','CURRENT_USER'); < MDSYS.RDF_APIS_INTERNAL.KSDWRF('user is odciindexcreate is :' ||UNAME, DEBUG_TRACE); < SEM_RDFCTX_IR.CREATE_STAGING_TABLE(STAGTAB_NAME,NULL,NULL,NULL,TRUE,NULL); < ELSIF (FIRST_CALL) THEN < < SEM_RDFCTX_IR.CREATE_STAGING_TABLE(STAGTAB_NAME,NULL,NULL,PARTI_DETAILS,FALSE,NULL); < END IF; < END IF; < < STEP_NUM := 4; < RDF_APIS_INTERNAL.KSDWRF('starting step 4', DEBUG_TRACE); < < < SEM_RDFCTX_DR.SPLIT_POLICY_LIST (IDXINFO.INDEXSCHEMA, L_POLLST, < L_BASEPOL, L_DEPPOL); < < STEP_NUM := 4.5; < FOR PIDX IN 1 .. L_BASEPOL.COUNT LOOP < L_EXTARR.EXTEND; < L_MODARR.EXTEND; < L_POLRIDS.EXTEND; < L_BATCHPOL.EXTEND; < L_CTXPREF.EXTEND; < T_EXTARR.EXTEND; < L_ERRCNT.EXTEND; < L_ERRCNT(PIDX) := 0; < < < MDSYS.RDF_APIS_INTERNAL.KSDWRF('ODCIIndexCreate: policy name=' || L_BASEPOL(PIDX), DEBUG_TRACE); < < < STEP_NUM := 4.52; < SEM_RDFCTX_DR.GET_POLICY_INFO ( < IDXINFO.INDEXSCHEMA, NLS_UPPER(L_BASEPOL(PIDX)), < L_POLRIDS(PIDX), L_EXTARR(PIDX), L_CTXPREF(PIDX)); < < < IF (L_BATCH) THEN < MDSYS.RDF_APIS_INTERNAL.KSDWRF('BATCH interface: check if the extractor for this base-policy supports batch interface', DEBUG_TRACE); < IF NLS_UPPER(L_EXTARR(PIDX).GETCONTEXT(BATCH_INTERFACE_OPTION)) IN ('YES','Y') THEN < L_BATCHPOL(PIDX) := 1; < L_BATCHPOL_COUNT := L_BATCHPOL_COUNT + 1; < MDSYS.RDF_APIS_INTERNAL.KSDWRF('ODCIIndexCreate: batch capable policy:' < || L_BASEPOL(PIDX) || ' [count so far: ' || L_BATCHPOL_COUNT || ' batch capable policies ' < || ' (out of ' || L_BASEPOL.COUNT || ')]', DEBUG_TRACE); < ELSE < L_BATCHPOL(PIDX) := 0; < MDSYS.RDF_APIS_INTERNAL.KSDWRF('ODCIIndexCreate: NOT batch capable policy:' || L_BASEPOL(PIDX), DEBUG_TRACE); < END IF; < END IF; < < IF (NOT(IS_ADD_PARTITION)) THEN < IF (PIDX > 1) THEN < IF (SEM_RDFCTX_DR.ARE_MATCHING_DATASTORES(L_CTXPREF(1), < L_CTXPREF(PIDX)) != 1) THEN < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'mismatched datastore specifications for base policies'); < END IF; < ELSIF (L_BATCH AND L_CTXPREF(1) IS NOT NULL) THEN < < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'for BATCH interface, no support yet for files or web content'); < ELSIF (L_CTXPREF(1) IS NOT NULL AND < L_CTXPREF(1).EXTRACT('//Datastore') IS NULL) THEN < L_CTXPREF(1) := NULL; < ELSIF (L_CTXPREF(1) IS NOT NULL AND < NLS_UPPER(L_CTXPREF(1).EXTRACT('//Datastore/@type').GETSTRINGVAL()) < = 'FILE') THEN < FILEDIR := TRIM(L_CTXPREF(1).EXTRACT( < '//Datastore/Path/text()').GETSTRINGVAL()); < SELECT COUNT(*) INTO L_ROWCNT FROM SYS.ALL_DIRECTORIES WHERE < DIRECTORY_NAME = FILEDIR; < IF (L_ROWCNT = 0) THEN < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'directory object '||FILEDIR||' does not exist or is inaccessible'); < END IF; < END IF; < END IF; < < STEP_NUM := 4.58; < RDF_APIS_INTERNAL.KSDWRF('starting step 4.58', DEBUG_TRACE); < < IF (IS_GLOBAL_IDX OR IS_IDX_PARTITION OR IS_ADD_PARTITION) THEN < < < < < < < < < SELECT UU.DEFAULT_TABLESPACE INTO L_TBSNM FROM SYS.USER_USERS UU < WHERE UU.USERNAME=IDXINFO.INDEXSCHEMA; < < < IF (L_TBSNM IS NULL) THEN < RDF_APIS_INTERNAL.KSDWRF('Could not determine tablespace_name for use in creating RDF model', DEBUG_TRACE); < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'Could not determine tablespace_name for use in creating RDF model' < ||(CASE IS_IDX_PARTITION < WHEN TRUE THEN ' (partition: ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) < ELSE '' < END)); < RETURN SYS.ODCICONST.FATAL; < ELSE < RDF_APIS_INTERNAL.KSDWRF('step 4.58: l_tbsnm=' || L_TBSNM, DEBUG_TRACE); < END IF; < < < < L_MODARR(PIDX) := SEM_RDFCTX_DR.CREATE_RDFCTX_INDEX ( < IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < POLICY_PARTNAME, L_POLRIDS(PIDX), < SEM_RDFCTX_DR.INDST_INPROGRESS, L_TBSNM, < L_EXTRPARAMS(PIDX)); < END IF; < < < < < < IF (L_LOAD_METHOD='BULKLOAD' AND (IS_GLOBAL_IDX OR FIRST_CALL)) THEN < STAGTAB_SUFFIX := < SEM_RDFCTX_DR.GET_STAGTAB_SUFFIX(NLS_UPPER(L_BASEPOL(PIDX)),L_POLRIDS(PIDX)); < IF (IS_GLOBAL_IDX) THEN < SEM_RDFCTX_IR.CREATE_STAGING_TABLE(STAGTAB_NAME,L_TBSNM,STAGTAB_SUFFIX,NULL,FALSE,XINFOTAB_NAME); < ELSIF (FIRST_CALL) THEN < SEM_RDFCTX_IR.CREATE_STAGING_TABLE(STAGTAB_NAME,NULL,STAGTAB_SUFFIX,PARTI_DETAILS,FALSE,XINFOTAB_NAME); < END IF; < < IF (XINFOTAB_NAME IS NOT NULL AND L_BATCHPOL(PIDX)=1) THEN < < < XUSER := L_EXTARR(PIDX).GETCONTEXT(DBUSER_ATTRIBUTE_NAME); < STMT := 'grant select, insert, update, delete on ' < || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(XINFOTAB_NAME || STAGTAB_SUFFIX) < || ' to ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(SYS.DBMS_ASSERT.SCHEMA_NAME(XUSER), FALSE); < EXECUTE IMMEDIATE STMT; < MDSYS.RDF_APIS_INTERNAL.KSDWRF('granted DML privs to DBUSER of extractor: ' || XUSER, DEBUG_TRACE); < END IF; < END IF; < < T_EXTARR(PIDX) := L_EXTARR(PIDX); < END LOOP; < < STEP_NUM := 4.9; < IF (NOT(IS_ADD_PARTITION) AND L_CTXPREF(1) IS NOT NULL) THEN < IF (IDXINFO.INDEXCOLS(1).COLTYPENAME != 'VARCHAR2') THEN < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'FILE/URL datastores only allowed with VARCHAR2 columns'); < END IF; < IF (L_CTXPREF(1).EXTRACT('//Datastore/@filter') IS NOT NULL) THEN < FILTERPL := NLS_UPPER(L_CTXPREF(1).EXTRACT( < '//Datastore/@filter').GETSTRINGVAL()); < END IF; < END IF; < END; < < IF (IS_GLOBAL_IDX OR FIRST_CALL) THEN < < < < < SEM_RDFCTX_IR.CREATE_MAPPING_TABLES(NULL, DOCURI2RID_NAME,DOCVID2RID_NAME, < L_TBSNM,PARTI_DETAILS); < < < FOR EI IN 1 .. L_BASEPOL.COUNT LOOP < L_EXTARR(EI).STARTDRIVER(); < END LOOP; < END IF; < < < STEP_NUM := 5; < RDF_APIS_INTERNAL.KSDWRF('starting step 5', DEBUG_TRACE); < < MDSYS.RDF_APIS_INTERNAL.KSDWRF('initial setup done for creating index', DEBUG_TRACE); < < IF (IS_GLOBAL_IDX OR IS_IDX_PARTITION) THEN < IF (DEBUG_TRACE) THEN < RDF_APIS_INTERNAL.KSDWRF('step 5 before invoking pxs: exceptions-count=' < || SEM_RDFCTX_DR.GET_EXCEPTIONS_COUNT, DEBUG_TRACE); < END IF; < < SEM_RDFCTX_IR.POPULATE_INDEX_SEGMENT( < IDXINFO, FILEDIR, FILTERPL, L_BASEPOL, L_EXTRPARAMS, L_CTXPREF, T_EXTARR, L_MODARR, L_POLRIDS < , L_LOAD_METHOD, STAGTAB_NAME, DOCURI2RID_NAME, DOCVID2RID_NAME, XINFOTAB_NAME < , L_BATCHPOL, L_BATCHPOL_COUNT); < < IF (DEBUG_TRACE) THEN < RDF_APIS_INTERNAL.KSDWRF('step 5 after returning from pxs: exceptions-count=' < || SEM_RDFCTX_DR.GET_EXCEPTIONS_COUNT, DEBUG_TRACE); < END IF; < END IF; < < < < < FOR EI IN 1..L_BASEPOL.COUNT LOOP < SEM_RDFCTX_DR.SET_RDFCTX_INDEX_STATUS_VALID( < IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < POLICY_PARTNAME, L_MODARR(EI)); < END LOOP; < < < IF (IS_GLOBAL_IDX OR IDXENV.CALLPROPERTY = SYS.ODCICONST.FINALCALL) THEN < RDF_APIS_INTERNAL.KSDWRF('closing all the extraction drivers', DEBUG_TRACE); < FOR EI IN 1 .. L_BASEPOL.COUNT LOOP < L_EXTARR(EI).CLOSEDRIVER(); < END LOOP; < END IF; < < STEP_NUM := 9; < RDF_APIS_INTERNAL.KSDWRF('starting step 9', DEBUG_TRACE); < IF (IS_GLOBAL_IDX OR IS_IDX_PARTITION) THEN < < IF (L_LOAD_METHOD = 'BULKLOAD') THEN < BEGIN < FOR EI IN 1 .. L_BASEPOL.COUNT LOOP < MDSYS.RDF_APIS_INTERNAL.KSDWRF('bulk-load issuing: step_num='||STEP_NUM, DEBUG_TRACE); < SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, FALSE, STAGTAB, STAGVIEW, XINFOTAB, L_BATCH); < STAGTAB_SUFFIX := < SEM_RDFCTX_DR.GET_STAGTAB_SUFFIX(NLS_UPPER(L_BASEPOL(EI)),L_POLRIDS(EI)); < < < IF (IS_IDX_PARTITION) THEN < PARTI_CLAUSE := ' partition('||SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION,FALSE)||')'; < < SEM_RDFCTX_DR.GET_STAGTAB_PART_VIEW_NAME( < IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, IDXINFO.INDEXPARTITION, FALSE, < STAGTAB, FALSE, STAGTAB_PART_VIEW_NAME); < STAGTAB_VIEW_NAME := STAGTAB_PART_VIEW_NAME; < ELSE < STAGTAB_VIEW_NAME := STAGVIEW || STAGTAB_SUFFIX; < END IF; < < < < < < < < < < EXECUTE IMMEDIATE < 'CREATE or REPLACE VIEW ' < || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXSCHEMA, FALSE) || '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(STAGTAB_VIEW_NAME, FALSE) < ||' AS SELECT RDF$STC_GRAPH,RDF$STC_SUB,RDF$STC_PRED,RDF$STC_OBJ FROM ' < || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXSCHEMA, FALSE) || '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(STAGTAB || STAGTAB_SUFFIX, FALSE) < || PARTI_CLAUSE < ||' WHERE RDF$STC_OBJ IS NOT NULL' < ; < EXECUTE IMMEDIATE < 'GRANT SELECT ON ' < < || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXSCHEMA, FALSE) || '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(STAGTAB_VIEW_NAME, FALSE) < ||' to ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(SDO_RDF_INTERNAL.GET_NETWORK_OWNER(), FALSE); < < SEM_RDFCTX_DR.BULK_LOAD_INTO_MODEL(L_MODARR(EI),L_USEDOPTS, < IDXINFO.INDEXSCHEMA, STAGTAB || STAGTAB_SUFFIX, IDXINFO.INDEXPARTITION, < DOCURI2RID_NAMESQ, DOCVID2RID_NAMESQ, STAGTAB_VIEW_NAME, SYS_CONTEXT('USERENV','CURRENT_USER'), ROLES_AND_PRIVS); < < EXECUTE IMMEDIATE < 'DROP VIEW ' < < || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXSCHEMA, FALSE) || '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(STAGTAB_VIEW_NAME, FALSE) < ; < < END LOOP; < < EXCEPTION WHEN OTHERS THEN < MDSYS.RDF_APIS_INTERNAL.KSDWRF('bulk-load issuing: step_num='||STEP_NUM||' SQLERRM='||SQLERRM, DEBUG_TRACE); < END; < < END IF; < < STEP_NUM := 9.5; < < < IF (IS_IDX_PARTITION) THEN < PARTI_CLAUSE := ' partition('||SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION,FALSE)||')'; < END IF; < < INS_INTO_DOCVID := < 'INSERT /*+ append */ INTO ' || < SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAMESQ) || PARTI_CLAUSE || ' (docVid, docRid) ' || < ' select v.value_id,u2r.docrid ' || < ' from ' || MDSYS.SDO_RDF_INTERNAL.GET_PFX_FOR_RDF_OBJ_NAME() || 'rdf_value$ v, ' || < SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCURI2RID_NAMESQ) || PARTI_CLAUSE || ' u2r ' || < ' where v.vname_prefix = ' || < ' sem_apis.value_name_prefix(substr(u2r.docUri,2,length(u2r.docUri)-2),''UR'') ' || < ' and v.value_type=''UR'' ' || < ' and v.vname_suffix = ' || < ' sem_apis.value_name_suffix(substr(u2r.docUri,2,length(u2r.docUri)-2),''UR'')' < ; < MDSYS.RDF_APIS_INTERNAL.KSDWRF('Postprocessing for IndexCreate: ins_into_docVid=' || INS_INTO_DOCVID, DEBUG_TRACE); < < EXECUTE IMMEDIATE INS_INTO_DOCVID; < < ROWS_APPENDED := SQL%ROWCOUNT; < COMMIT; < < MDSYS.RDF_APIS_INTERNAL.KSDWRF('Postprocessing for IndexCreate: inserted into ' || DOCVID2RID_NAME || ': rowcount=' || ROWS_APPENDED, DEBUG_TRACE); < < STEP_NUM := 9.8; < < IF (L_LOAD_METHOD != 'BULKLOAD' AND NOT(KEEP_RDFCTX_STAGING_TABLES)) THEN < SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, STAGTAB_NAME, STAGVIEW_NAME,XINFOTAB_NAME,L_BATCH); < IF (IS_IDX_PARTITION) THEN < EXECUTE IMMEDIATE < 'ALTER TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) || ' TRUNCATE PARTITION ' < ||SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION,FALSE); < MDSYS.RDF_APIS_INTERNAL.KSDWRF( < 'non-bulk-load: TRUNCATEd staging table ' || STAGTAB_NAME < ||' partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION,FALSE), DEBUG_TRACE); < ELSE < EXECUTE IMMEDIATE 'delete from '|| SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME); < COMMIT; < MDSYS.RDF_APIS_INTERNAL.KSDWRF('non-bulk-load: DELETEd from staging table ' || STAGTAB_NAME, DEBUG_TRACE); < END IF; < END IF; < < STEP_NUM := 10; < RDF_APIS_INTERNAL.KSDWRF('starting step 10', DEBUG_TRACE); < < FOR PIDX IN 1 .. L_DEPPOL.COUNT LOOP < < < < SEM_RDFCTX_DR.CREATE_VIRTUAL_RDFCTX_INDEX ( < ROLES_AND_PRIVS, IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < POLICY_PARTNAME, NLS_UPPER(L_DEPPOL(PIDX))); < END LOOP; < < STEP_NUM := 11; < RDF_APIS_INTERNAL.KSDWRF('starting step 11', DEBUG_TRACE); < < SEM_RDFCTX_DR.SET_DEFAULT_POLICY( < IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < POLICY_PARTNAME, NLS_UPPER(L_DEFPOL)); < COMMIT; < END IF; < < STEP_NUM := 12; < RDF_APIS_INTERNAL.KSDWRF('starting step ' || STEP_NUM, DEBUG_TRACE); < IF (IS_GLOBAL_IDX OR IDXENV.CALLPROPERTY = SYS.ODCICONST.FINALCALL) THEN < < STEP_NUM := 12.1; < RDF_APIS_INTERNAL.KSDWRF('starting step ' || STEP_NUM, DEBUG_TRACE); < < IF (NOT(KEEP_RDFCTX_STAGING_TABLES)) THEN < SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, STAGTAB_NAME, STAGVIEW_NAME,XINFOTAB_NAME,L_BATCH); < MDSYS.RDF_APIS_INTERNAL.KSDWRF('ODCIIndexCreate: dropping staging table(s): ' || STAGTAB_NAME || '*', DEBUG_TRACE); < < < IF (L_LOAD_METHOD='BULKLOAD') THEN < FOR EI IN 1 .. L_BASEPOL.COUNT LOOP < STAGTAB_SUFFIX := < SEM_RDFCTX_DR.GET_STAGTAB_SUFFIX(NLS_UPPER(L_BASEPOL(EI)),L_POLRIDS(EI)); < EXECUTE IMMEDIATE 'DROP TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME || STAGTAB_SUFFIX) || ' PURGE'; < MDSYS.RDF_APIS_INTERNAL.KSDWRF( < 'ODCIIndexCreate: dropped BULKLOAD staging table: ' < || '(policy=' || NLS_UPPER(L_BASEPOL(EI) || ') ') < || STAGTAB_NAME || STAGTAB_SUFFIX, DEBUG_TRACE); < IF (XINFOTAB_NAME IS NOT NULL) THEN < EXECUTE IMMEDIATE 'DROP TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(XINFOTAB_NAME || STAGTAB_SUFFIX) || ' PURGE'; < MDSYS.RDF_APIS_INTERNAL.KSDWRF( < 'ODCIIndexCreate: dropped xinfotab table: ' < || '(policy=' || NLS_UPPER(L_BASEPOL(EI) || ') ') < || XINFOTAB_NAME || STAGTAB_SUFFIX, DEBUG_TRACE); < END IF; < END LOOP; < < ELSE < MDSYS.RDF_APIS_INTERNAL.KSDWRF( < 'ODCIIndexCreate: non-bulk-load case: SKIPPED dropping the staging table: ' < || STAGTAB_NAME, DEBUG_TRACE); < END IF; < END IF; < < STEP_NUM := 12.2; < RDF_APIS_INTERNAL.KSDWRF('starting step ' || STEP_NUM, DEBUG_TRACE); < < < IF (KEEP_RDFCTX_STAGING_TABLES) THEN < < < BEGIN < < IF (L_TBSNM IS NULL) THEN < SELECT UU.DEFAULT_TABLESPACE INTO L_TBSNM FROM SYS.USER_USERS UU < WHERE UU.USERNAME=IDXINFO.INDEXSCHEMA; < END IF; < < DOCURI2RID_DEBUG := SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(SEM_RDFCTX_DR.GET_DOCURI2RID_DEBUG_NAME(IDXINFO.INDEXSCHEMA,DOCURI2RID_NAME)); < STMT := 'CREATE TABLE ' || DOCURI2RID_DEBUG || < ' (command VARCHAR2(100), partition VARCHAR2(128), snap_time TIMESTAMP, docUri VARCHAR2(4000), docRid ROWID) ' < || ' tablespace ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(L_TBSNM, FALSE); < RDF_APIS_INTERNAL.KSDWRF('creating debug table: stmt=' || STMT, DEBUG_TRACE); < < EXECUTE IMMEDIATE STMT; < EXCEPTION WHEN OTHERS THEN < IF (SQLCODE != -942) THEN < RDF_APIS_INTERNAL.KSDWRF('[Ignoring] SQLERRM=' || SQLERRM || ' [stmt=' || STMT || ']'); < END IF; < END; < BEGIN < SNAP_TIME := SYSTIMESTAMP; < STMT := < 'INSERT INTO ' || DOCURI2RID_DEBUG || ' (command, partition, snap_time, docUri, docRid) ' || < ' SELECT :cmd, :parti, :snap_time, docUri, docRid ' || < ' FROM ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCURI2RID_NAME) || PARTI_CLAUSE < ; < RDF_APIS_INTERNAL.KSDWRF('inserting into debug table: (' || SNAP_TIME || ') stmt=' || STMT, DEBUG_TRACE); < < EXECUTE IMMEDIATE STMT USING 'CREATE INDEX', IDXINFO.INDEXPARTITION, SNAP_TIME; < EXCEPTION WHEN OTHERS THEN < RDF_APIS_INTERNAL.KSDWRF('[Ignoring] SQLERRM=' || SQLERRM || ' [stmt=' || STMT || ']'); < END; < END IF; < EXECUTE IMMEDIATE 'DROP TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCURI2RID_NAME) || ' PURGE'; < < < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, FALSE, DOCURI2RID, DOCVID2RID); < SEM_RDFCTX_IR.CREATE_MAPTABLE_INDEXES(IDXINFO.INDEXSCHEMA, DOCVID2RID, NOT(IS_GLOBAL_IDX)); < < END IF; < < STEP_NUM := 13; < RDF_APIS_INTERNAL.KSDWRF('starting step ' || STEP_NUM, DEBUG_TRACE); < IF (IS_ADD_PARTITION) THEN < STEP_NUM := 13.1; < RDF_APIS_INTERNAL.KSDWRF('starting step ' || STEP_NUM, DEBUG_TRACE); < < SEM_RDFCTX_DR.SET_DEFAULT_POLICY( < IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < POLICY_PARTNAME, NLS_UPPER(L_DEFPOL)); < < STEP_NUM := 13.2; < RDF_APIS_INTERNAL.KSDWRF('starting step ' || STEP_NUM, DEBUG_TRACE); < < EXECUTE IMMEDIATE 'alter table ' || < SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAMESQ) || < ' add partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE); < STEP_NUM := 13.3; < RDF_APIS_INTERNAL.KSDWRF('starting step ' || STEP_NUM, DEBUG_TRACE); < EXECUTE IMMEDIATE 'alter table ' || < SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) || < ' add partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE); < STEP_NUM := 13.4; < RDF_APIS_INTERNAL.KSDWRF('starting step ' || STEP_NUM, DEBUG_TRACE); < COMMIT; < END IF; < < RDF_APIS_INTERNAL.KSDWRF('returning from ODCIIndexCreate', DEBUG_TRACE); < RETURN ODCICONST.SUCCESS; < < EXCEPTION WHEN OTHERS THEN < MDSYS.RDF_APIS_INTERNAL.KSDWRF('ODCIIndexCreate: RAISING: step_num=' || STEP_NUM || < CHR(10) || DBMS_UTILITY.FORMAT_ERROR_STACK || < CHR(10) || '[' || CHR(10)|| DBMS_UTILITY.FORMAT_ERROR_BACKTRACE || CHR(10) || ']' || < CHR(10) || 'stmt=' || CHR(10) || STMT < ); < RAISE; < END ODCIINDEXCREATE; --- > SEM_RDFCTX_DR.ODCIINDEXCREATE_PR(IDXINFO, IDXPARMS, IDXENV, RETURNVAL); > RETURN RETURNVAL; > END ODCIINDEXCREATE; 784,791c37 < STAGTAB_NAME VARCHAR2(270); < STAGVIEW_NAME VARCHAR2(270); < DUMMY_XINFOTAB_NAME VARCHAR2(270); < < DOCURI2RID_NAME VARCHAR2(270); < DOCVID2RID_NAME VARCHAR2(270); < ROLES_AND_PRIVS VARCHAR2(4000) := SDO_RDF.GET_ROLES_AND_PRIVS(); < DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); --- > RETURNVAL NUMBER; 793,873c39,41 < < < SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); < < COMMIT; < < < < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, < DOCURI2RID_NAME, DOCVID2RID_NAME); < < < IF (IDXENV.CALLPROPERTY IS NULL AND IDXINFO.INDEXPARTITION IS NULL) THEN < SEM_RDFCTX_DR.DROP_RDFCTX_INDEX (ROLES_AND_PRIVS, IDXINFO.INDEXSCHEMA, < IDXINFO.INDEXNAME, IDXINFO.INDEXNAME); < ELSIF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN < SEM_RDFCTX_DR.DROP_RDFCTX_INDEX (ROLES_AND_PRIVS, IDXINFO.INDEXSCHEMA, < IDXINFO.INDEXNAME, IDXINFO.INDEXPARTITION); < BEGIN < EXECUTE IMMEDIATE 'alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) < || ' drop partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) < || ' update indexes'; < EXCEPTION < WHEN OTHERS THEN < IF (SQLCODE = -14083) THEN < EXECUTE IMMEDIATE < 'drop table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) || ' purge'; < ELSE < RAISE; < END IF; < END; < < END IF; < COMMIT; < < < IF ((IDXENV.CALLPROPERTY IS NULL AND IDXINFO.INDEXPARTITION IS NULL) OR < (IDXENV.CALLPROPERTY = SYS.ODCICONST.FINALCALL)) THEN < SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < NULL, TRUE, STAGTAB_NAME, STAGVIEW_NAME, DUMMY_XINFOTAB_NAME); < BEGIN < COMMIT; < EXECUTE IMMEDIATE < 'drop table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) || ' purge'; < COMMIT; < EXCEPTION WHEN OTHERS THEN < MDSYS.RDF_APIS_INTERNAL.KSDWRF( < 'error dropping staging table: ' || STAGTAB_NAME < ||': ' || SQLERRM < ||' [' || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE || ']'); < END; < < < BEGIN < EXECUTE IMMEDIATE < 'drop table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCURI2RID_NAME) || ' purge'; < EXCEPTION WHEN OTHERS THEN < IF (SQLCODE != -942) THEN < MDSYS.RDF_APIS_INTERNAL.KSDWRF( < 'error dropping docUri2Rid mapping table:' || DOCURI2RID_NAME < ||': ' || SQLERRM < ||' [' || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE || ']'); < END IF; < END; < < BEGIN < EXECUTE IMMEDIATE < 'drop table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) || ' purge'; < EXCEPTION WHEN OTHERS THEN < IF (SQLCODE != -942) THEN < MDSYS.RDF_APIS_INTERNAL.KSDWRF( < 'error dropping docVid2Rid mapping table:' || DOCVID2RID_NAME < ||': ' || SQLERRM < ||' [' || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE || ']'); < END IF; < END; < < END IF; < RETURN ODCICONST.SUCCESS; < END ODCIINDEXDROP; --- > SEM_RDFCTX_DR.ODCIINDEXDROP_PR(IDXINFO, IDXENV, RETURNVAL); > RETURN RETURNVAL; > END ODCIINDEXDROP; 883,942c51 < L_DUMVR VARCHAR2(300); < L_POLLST SYS.ODCIVARCHAR2LIST; < L_USEDOPTS SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); < L_EXTRPARAMS SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); < L_ROWCNT NUMBER; < L_LOAD_METHOD VARCHAR2(128) := 'DML'; < L_DEFPOL VARCHAR2(130); < L_BASEPOL SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); < L_BATCHPOL SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); < L_BATCHPOL_COUNT PLS_INTEGER; < L_DEPPOL SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); < L_FLAGS SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); < L_TBSNM VARCHAR2(130); < STAGTAB_NAME VARCHAR2(270); < STAGVIEW_NAME VARCHAR2(270); < XINFOTAB_NAME VARCHAR2(270); < STAGTAB_SUFFIX VARCHAR2(128); < DOCURI2RID_NAME VARCHAR2(270); < DOCURI2RID VARCHAR2(128); < DOCVID2RID_NAME VARCHAR2(270); < DOCVID2RID VARCHAR2(128); < L_MODARR SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); < L_EXTARR MDSYS.T_EXTARR := MDSYS.T_EXTARR(); < L_POLRIDS SYS.ODCIVARCHAR2LIST := SYS.ODCIVARCHAR2LIST(); < L_CTXPREF FN_XMLPREF := FN_XMLPREF(); < L_ERRCNT SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); < T_EXTARR FN_EXTARR := FN_EXTARR(); < FILTERPL VARCHAR2(130) := NULL; < FILEDIR VARCHAR2(512) := NULL; < STATUS NUMBER; < PARTI_CLAUSE VARCHAR2(1000) := NULL; < INS_INTO_DOCVID VARCHAR2(4000); < PARTI_DETAILS VARCHAR2(1000); < STAGTAB VARCHAR2(130); < STAGVIEW VARCHAR2(130); < XINFOTAB VARCHAR2(130); < STAGTAB_VIEW_NAME VARCHAR2(128); < STAGTAB_PART_VIEW_NAME VARCHAR2(128) := NULL; < IS_PARTITION_REBLD BOOLEAN := FALSE; < ADD_POLICY BOOLEAN := FALSE; < DROP_POLICY BOOLEAN := FALSE; < PLAIN_REBUILD BOOLEAN := FALSE; < REBUILD_POLICY BOOLEAN := FALSE; < PARTITION_NAME VARCHAR2(130); < STMT VARCHAR2(32767); < CNT NUMBER; < IS_PARTN_TBL NUMBER; < IS_DEP_POLICY BOOLEAN := FALSE; < POLICY_EXISTS BOOLEAN := FALSE; < < ROLES_AND_PRIVS VARCHAR2(4000) := SDO_RDF.GET_ROLES_AND_PRIVS(); < < L_BATCH BOOLEAN := FALSE; < BATCH_INTERFACE_OPTION CONSTANT VARCHAR2(100) := 'INTERFACE=BATCH'; < < STEP_NUM NUMBER := 0; < ROWS_APPENDED NUMBER; < POL_OPTIONS NUMBER := 0; < < DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); --- > RETURNVAL NUMBER; 944,1320c53,55 < < < SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); < < COMMIT; < < < < < < < < DEBUG_TRACE := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); < < < IF (ALTOPT = SYS.ODCICONST.ALTERINDEXREBUILD) THEN < < < < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, FALSE, < DOCURI2RID, DOCVID2RID); < < SELECT COUNT(*) INTO CNT FROM SYS.USER_TABLES WHERE TABLE_NAME=DOCVID2RID; < RDF_APIS_INTERNAL.KSDWRF('count(*)=' || CNT || ' for table=' || DOCVID2RID, DEBUG_TRACE); < IF (CNT=0) THEN SEM_RDFCTX_IR.CREATE_DOCVID2RID_TABLE(IDXINFO, DOCVID2RID); END IF; < < < IF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN < IS_PARTITION_REBLD := TRUE; < PARTITION_NAME := IDXINFO.INDEXPARTITION; < ELSE < PARTITION_NAME := IDXINFO.INDEXNAME; < END IF; < < < BEGIN < L_DUMVR := SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXNAME,FALSE); < EXCEPTION < WHEN OTHERS THEN < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'invalid name for the index'); < < END; < < < IF (IDXPARMS IS NOT NULL) THEN < BEGIN < L_POLLST := SEM_RDFCTX_DR.PRVT_PARAMS_PARSER(IDXPARMS, L_USEDOPTS, L_EXTRPARAMS); < EXCEPTION < WHEN OTHERS THEN < EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values (1, < ''invalid or empty parameters passed to the index'')'; < RETURN SYS.ODCICONST.WARNING; < END; < < SELECT COUNT(DISTINCT(COLUMN_VALUE)) INTO L_ROWCNT FROM TABLE(L_POLLST); < < < FOR OPT IN (SELECT DISTINCT COLUMN_VALUE FROM TABLE(L_USEDOPTS)) LOOP < RDF_APIS_INTERNAL.KSDWRF('AlterIndexRebuild option=' || OPT.COLUMN_VALUE || '*', DEBUG_TRACE); < IF (TRIM(OPT.COLUMN_VALUE) = 'LOAD_METHOD=BULK') THEN < L_LOAD_METHOD := 'BULKLOAD'; < RDF_APIS_INTERNAL.KSDWRF('l_load_method set to: ' || L_LOAD_METHOD, DEBUG_TRACE); < ELSIF (TRIM(OPT.COLUMN_VALUE) = BATCH_INTERFACE_OPTION) THEN < L_LOAD_METHOD := 'BULKLOAD'; < L_BATCH := TRUE; < RDF_APIS_INTERNAL.KSDWRF('rebuild: interface=BATCH', DEBUG_TRACE); < RDF_APIS_INTERNAL.KSDWRF('rebuild: l_load_method set to: ' || L_LOAD_METHOD, DEBUG_TRACE); < ELSIF (TRIM(OPT.COLUMN_VALUE) = 'ADD_POLICY') THEN < ADD_POLICY := TRUE; < POL_OPTIONS := POL_OPTIONS + 1; < ELSIF (TRIM(OPT.COLUMN_VALUE) = 'DROP_POLICY') THEN < DROP_POLICY := TRUE; < POL_OPTIONS := POL_OPTIONS + 1; < ELSIF (TRIM(OPT.COLUMN_VALUE) = 'REBUILD_POLICY') THEN < REBUILD_POLICY := TRUE; < POL_OPTIONS := POL_OPTIONS + 1; < END IF; < END LOOP; < < < IF (POL_OPTIONS > 1) THEN < EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, < ''cannot ADD/DROP/REBUILD policies for the index at the same time'')'; < RETURN SYS.ODCICONST.WARNING; < END IF; < < < IF ((ADD_POLICY OR DROP_POLICY OR REBUILD_POLICY) AND (L_POLLST.COUNT > 1)) THEN < EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, < '' cannot ADD OR DROP OR REBUILD multiple policies for the index at the same time'')'; < RETURN SYS.ODCICONST.WARNING; < END IF; < < < IF ((ADD_POLICY OR DROP_POLICY OR REBUILD_POLICY) AND (L_POLLST.COUNT = 0 )) THEN < EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, < '' policy name needs to be specified for ADD OR DROP OR REBUILD policy'')'; < RETURN SYS.ODCICONST.WARNING; < END IF; < < < IF (NOT(ADD_POLICY OR DROP_POLICY OR REBUILD_POLICY)) THEN < IF (L_POLLST.COUNT > 0) THEN < EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, < ''Cannot specify new policies during rebuild'')'; < RETURN SYS.ODCICONST.WARNING; < ELSE < PLAIN_REBUILD := TRUE; < END IF; < END IF; < ELSE < < PLAIN_REBUILD := TRUE; < END IF; < < IF (PLAIN_REBUILD) THEN < < L_CTXPREF.EXTEND; < SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < PARTITION_NAME, L_POLRIDS, L_MODARR, < L_EXTARR, L_CTXPREF(1), L_BASEPOL, < L_EXTRPARAMS, L_FLAGS); < < < SEM_RDFCTX_DR.TRUNCATE_RDFCTX_INDEX(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < PARTITION_NAME); < END IF; < < < IF (REBUILD_POLICY) THEN < < L_EXTARR.EXTEND; < L_POLRIDS.EXTEND; < L_CTXPREF.EXTEND; < L_MODARR.EXTEND; < L_BASEPOL.EXTEND; < < < BEGIN < L_MODARR(1) := SEM_RDFCTX_DR.GET_MODEL_ID(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, PARTITION_NAME, NLS_UPPER(L_POLLST(1))); < EXCEPTION < WHEN OTHERS THEN < EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, < ''the specified index-policy combination does not exist'')'; < < RETURN SYS.ODCICONST.WARNING; < END; < < < IF (L_MODARR(1) < 0) THEN < EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, < ''cannot REBUILD a dependent policy for the index with the rebuild_policy option'')'; < < RETURN SYS.ODCICONST.WARNING; < END IF; < < L_BASEPOL(1) := L_POLLST(1); < SEM_RDFCTX_DR.GET_POLICY_INFO ( < IDXINFO.INDEXSCHEMA, NLS_UPPER(L_BASEPOL(1)), < L_POLRIDS(1), L_EXTARR(1), L_CTXPREF(1)); < < < SEM_RDFCTX_DR.TRUNCATE_RDFCTX_INDEX(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < PARTITION_NAME, L_POLRIDS(1)); < < END IF; < < < IF (DROP_POLICY) THEN < SEM_RDFCTX_DR.DROP_INDEX_POLICY(SDO_RDF.GET_ROLES_AND_PRIVS(), IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < PARTITION_NAME, NLS_UPPER(L_POLLST(1)), STATUS); < IF (STATUS != 0) THEN < EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, < ''Specified policy could not be dropped for the index'')'; < RETURN SYS.ODCICONST.WARNING; < END IF; < ELSE < SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < IDXINFO.INDEXPARTITION, TRUE, STAGTAB_NAME, STAGVIEW_NAME < ,XINFOTAB_NAME,L_BATCH < ); < MDSYS.RDF_APIS_INTERNAL.KSDWRF('Staging table during rebuild : '||STAGTAB_NAME, DEBUG_TRACE); < < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, < DOCURI2RID_NAME, DOCVID2RID_NAME); < < MDSYS.RDF_APIS_INTERNAL.KSDWRF('DocUri2Rid table during rebuild: ' || DOCURI2RID_NAME, DEBUG_TRACE); < MDSYS.RDF_APIS_INTERNAL.KSDWRF('DocVid2Rid table during rebuild: ' || DOCVID2RID_NAME, DEBUG_TRACE); < < IF (IDXINFO.INDEXPARTITION IS NULL) THEN < EXECUTE IMMEDIATE 'truncate table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME); < ELSE < EXECUTE IMMEDIATE < ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) < || ' truncate partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) < || ' update indexes'; < END IF; < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < SELECT UU.DEFAULT_TABLESPACE INTO L_TBSNM FROM SYS.USER_USERS UU < WHERE UU.USERNAME=IDXINFO.INDEXSCHEMA; < < IF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN < PARTI_DETAILS := 'partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) || ' tablespace ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(L_TBSNM, FALSE); < END IF; < < < < IF ((L_LOAD_METHOD != 'BULKLOAD') AND (IDXINFO.INDEXPARTITION IS NOT NULL)) THEN < SEM_RDFCTX_IR.CREATE_STAGING_TABLE(STAGTAB_NAME, NULL, NULL, PARTI_DETAILS, FALSE); < MDSYS.RDF_APIS_INTERNAL.KSDWRF('rebuild: created staging table ' || STAGTAB_NAME || PARTI_DETAILS, DEBUG_TRACE); < END IF; < < IF (ADD_POLICY) THEN < < L_EXTARR.EXTEND; < L_POLRIDS.EXTEND; < L_CTXPREF.EXTEND; < L_MODARR.EXTEND; < < BEGIN < SEM_RDFCTX_DR.SPLIT_POLICY_LIST(IDXINFO.INDEXSCHEMA, L_POLLST, < L_BASEPOL, L_DEPPOL); < EXCEPTION < WHEN OTHERS THEN < IF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN < EXECUTE IMMEDIATE 'DROP TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) || ' PURGE'; < END IF; < EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, < ''cannot add a non-existent policy to the index'')'; < RETURN SYS.ODCICONST.WARNING; < END; < < < POLICY_EXISTS := SEM_RDFCTX_DR.IS_INDEX_POLICY(IDXINFO.INDEXSCHEMA, < IDXINFO.INDEXNAME,PARTITION_NAME, L_BASEPOL(1)); < < IF (ADD_POLICY AND POLICY_EXISTS AND (L_DEPPOL.COUNT = 0)) THEN < < < EXECUTE IMMEDIATE 'insert into sys.odci_warnings$ values(1, < ''cannot ADD an already existing policy to the index'')'; < < IF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN < EXECUTE IMMEDIATE 'DROP TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) || ' PURGE'; < END IF; < RETURN SYS.ODCICONST.WARNING; < END IF; < < < < IF (NOT POLICY_EXISTS) THEN < SEM_RDFCTX_DR.GET_POLICY_INFO ( < IDXINFO.INDEXSCHEMA, NLS_UPPER(L_BASEPOL(1)), < L_POLRIDS(1), L_EXTARR(1), L_CTXPREF(1)); < < L_MODARR(1) := SEM_RDFCTX_DR.CREATE_RDFCTX_INDEX(IDXINFO.INDEXSCHEMA, < IDXINFO.INDEXNAME, PARTITION_NAME, L_POLRIDS(1), < SEM_RDFCTX_DR.INDST_INPROGRESS, L_TBSNM, L_EXTRPARAMS(1)); < END IF; < END IF; < < IF (L_CTXPREF(1) IS NOT NULL AND < L_CTXPREF(1).EXTRACT('//Datastore') IS NULL) THEN < L_CTXPREF(1) := NULL; < ELSIF (L_CTXPREF(1) IS NOT NULL AND < NLS_UPPER(L_CTXPREF(1).EXTRACT('//Datastore/@type').GETSTRINGVAL()) < = 'FILE') THEN < FILEDIR := TRIM(L_CTXPREF(1).EXTRACT( < '//Datastore/Path/text()').GETSTRINGVAL()); < SELECT COUNT(*) INTO L_ROWCNT FROM SYS.ALL_DIRECTORIES WHERE < DIRECTORY_NAME = FILEDIR; < IF (L_ROWCNT = 0) THEN < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'directory object '||FILEDIR||' does not exist or is inaccessible'); < END IF; < END IF; < < < IF (NOT POLICY_EXISTS) THEN < L_BATCHPOL_COUNT := 0; < FOR PIDX IN 1..L_EXTARR.COUNT LOOP < T_EXTARR.EXTEND; < L_ERRCNT.EXTEND; < L_ERRCNT(PIDX) := 0; < L_BATCHPOL.EXTEND; < L_BATCHPOL(PIDX) := 0; < < < IF (XINFOTAB_NAME IS NOT NULL) THEN < IF NLS_UPPER(L_EXTARR(PIDX).GETCONTEXT(BATCH_INTERFACE_OPTION)) IN ('YES','Y') THEN < L_BATCHPOL(PIDX) := 1; < L_BATCHPOL_COUNT := L_BATCHPOL_COUNT + 1; < END IF; < END IF; < < < IF (L_LOAD_METHOD = 'BULKLOAD') THEN < STAGTAB_SUFFIX := < SEM_RDFCTX_DR.GET_STAGTAB_SUFFIX(NLS_UPPER(L_BASEPOL(PIDX)),L_POLRIDS(PIDX)); < IF (IDXINFO.INDEXPARTITION IS NULL) THEN < SEM_RDFCTX_IR.CREATE_STAGING_TABLE(STAGTAB_NAME,L_TBSNM,STAGTAB_SUFFIX, NULL,FALSE, XINFOTAB_NAME); < ELSE < SEM_RDFCTX_IR.CREATE_STAGING_TABLE(STAGTAB_NAME,NULL,STAGTAB_SUFFIX, PARTI_DETAILS,FALSE, XINFOTAB_NAME); < END IF; < END IF; < < T_EXTARR(PIDX) := L_EXTARR(PIDX); < < < L_EXTARR(PIDX).STARTDRIVER(); < < MDSYS.RDF_APIS_INTERNAL.KSDWRF('Extraction driver started in Alter', DEBUG_TRACE); < END LOOP; < < IF (L_CTXPREF(1) IS NOT NULL) THEN < IF (IDXINFO.INDEXCOLS(1).COLTYPENAME != 'VARCHAR2') THEN < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'FILE/URL datastores only allowed with VARCHAR2 columns'); < END IF; < IF (L_CTXPREF(1).EXTRACT('//Datastore/@filter') IS NOT NULL) THEN < FILTERPL := NLS_UPPER(L_CTXPREF(1).EXTRACT( < '//Datastore/@filter').GETSTRINGVAL()); < END IF; < END IF; < < < < IF (IDXINFO.INDEXPARTITION IS NULL) THEN < SEM_RDFCTX_IR.CREATE_MAPPING_TABLES(NULL, DOCURI2RID_NAME, NULL, L_TBSNM, NULL); < ELSE < SEM_RDFCTX_IR.CREATE_MAPPING_TABLES(NULL, DOCURI2RID_NAME, NULL, NULL, PARTI_DETAILS); < END IF; < < < MDSYS.RDF_APIS_INTERNAL.KSDWRF('initial setup done for rebuilding index', DEBUG_TRACE); < < SEM_RDFCTX_IR.POPULATE_INDEX_SEGMENT( < IDXINFO, FILEDIR, FILTERPL, L_BASEPOL, L_EXTRPARAMS, L_CTXPREF, T_EXTARR, L_MODARR, L_POLRIDS < , L_LOAD_METHOD, STAGTAB_NAME, DOCURI2RID_NAME, DOCVID2RID_NAME < , XINFOTAB_NAME, L_BATCHPOL, L_BATCHPOL_COUNT); < < FOR EI IN 1..L_BASEPOL.COUNT LOOP < < SEM_RDFCTX_DR.SET_RDFCTX_INDEX_STATUS_VALID( < IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < PARTITION_NAME, L_MODARR(EI)); --- > SEM_RDFCTX_DR.ODCIINDEXALTER_PR(IDXINFO, IDXPARMS, ALTOPT, IDXENV, RETURNVAL); > RETURN RETURNVAL; > END ODCIINDEXALTER; 1322,1477d56 < < L_EXTARR(EI).CLOSEDRIVER(); < MDSYS.RDF_APIS_INTERNAL.KSDWRF('Extraction driver closed in Alter', DEBUG_TRACE); < END LOOP; < < MDSYS.RDF_APIS_INTERNAL.KSDWRF('Postprocessing for Alter', DEBUG_TRACE); < IF (L_LOAD_METHOD = 'BULKLOAD') THEN < BEGIN < SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < IDXINFO.INDEXPARTITION, FALSE, STAGTAB, STAGVIEW < ,XINFOTAB, L_BATCH); < < MDSYS.RDF_APIS_INTERNAL.KSDWRF('staging table for bulkload during index rebuild : ' ||STAGTAB, DEBUG_TRACE); < FOR EI IN 1 .. L_BASEPOL.COUNT LOOP < MDSYS.RDF_APIS_INTERNAL.KSDWRF('bulk-load issuing during index rebuild', DEBUG_TRACE); < STAGTAB_SUFFIX := SEM_RDFCTX_DR.GET_STAGTAB_SUFFIX(NLS_UPPER(L_BASEPOL(EI)),L_POLRIDS(EI)); < MDSYS.RDF_APIS_INTERNAL.KSDWRF('staging table suffix for bulkload during index rebuild : ' ||STAGTAB_SUFFIX, DEBUG_TRACE); < < IF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN < PARTI_CLAUSE := ' partition('||SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION,FALSE)||')'; < < SEM_RDFCTX_DR.GET_STAGTAB_PART_VIEW_NAME( < IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, IDXINFO.INDEXPARTITION, FALSE, < STAGTAB, TRUE, STAGTAB_PART_VIEW_NAME); < STAGTAB_VIEW_NAME := STAGTAB_PART_VIEW_NAME; < ELSE < STAGTAB_VIEW_NAME := STAGVIEW || STAGTAB_SUFFIX; < END IF; < < EXECUTE IMMEDIATE < 'CREATE or REPLACE VIEW ' < || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXSCHEMA, FALSE) || '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(STAGTAB_VIEW_NAME , FALSE) < ||' AS SELECT RDF$STC_GRAPH,RDF$STC_SUB,RDF$STC_PRED,RDF$STC_OBJ FROM ' < || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXSCHEMA, FALSE) || '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(STAGTAB || STAGTAB_SUFFIX, FALSE) < || PARTI_CLAUSE < ||' WHERE RDF$STC_OBJ IS NOT NULL' < ; < EXECUTE IMMEDIATE < 'GRANT SELECT ON ' < || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXSCHEMA, FALSE) || '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(STAGTAB_VIEW_NAME, FALSE) < ||' to ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(SDO_RDF_INTERNAL.GET_NETWORK_OWNER(), FALSE); < < MDSYS.RDF_APIS_INTERNAL.KSDWRF('About to start BULKLOAD in Alter', DEBUG_TRACE); < SEM_RDFCTX_DR.BULK_LOAD_INTO_MODEL(L_MODARR(EI),L_USEDOPTS, < IDXINFO.INDEXSCHEMA, STAGTAB || STAGTAB_SUFFIX, IDXINFO.INDEXPARTITION, < DOCURI2RID_NAME, DOCVID2RID_NAME, STAGTAB_VIEW_NAME, SYS_CONTEXT('USERENV','CURRENT_USER'), ROLES_AND_PRIVS); < < EXECUTE IMMEDIATE < 'DROP VIEW ' < || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXSCHEMA, FALSE) || '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(STAGTAB_VIEW_NAME, FALSE) < ; < < END LOOP; < < EXCEPTION WHEN OTHERS THEN < MDSYS.RDF_APIS_INTERNAL.KSDWRF('bulk-load issuing: SQLERRM='||SQLERRM); < END; < END IF; < < MDSYS.RDF_APIS_INTERNAL.KSDWRF('Postprocessing for Alter: populate docVid2Rid table: ' || DOCVID2RID_NAME, DEBUG_TRACE); < BEGIN < < IF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN < PARTI_CLAUSE := ' partition('||SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION,FALSE)||')'; < END IF; < < INS_INTO_DOCVID := < 'INSERT /*+ append */ INTO ' || < SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) || PARTI_CLAUSE || ' (docVid, docRid) ' || < ' select v.value_id,u2r.docrid ' || < ' from ' || MDSYS.SDO_RDF_INTERNAL.GET_PFX_FOR_RDF_OBJ_NAME() || 'rdf_value$ v, ' || < SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCURI2RID_NAME) || PARTI_CLAUSE || ' u2r ' || < ' where v.vname_prefix = ' || < ' sem_apis.value_name_prefix(substr(u2r.docUri,2,length(u2r.docUri)-2),''UR'') ' || < ' and v.value_type=''UR'' ' || < ' and v.vname_suffix = ' || < ' sem_apis.value_name_suffix(substr(u2r.docUri,2,length(u2r.docUri)-2),''UR'')' < ; < MDSYS.RDF_APIS_INTERNAL.KSDWRF('Postprocessing for Alter: ins_into_docVid=' || INS_INTO_DOCVID, DEBUG_TRACE); < < EXECUTE IMMEDIATE INS_INTO_DOCVID; < < ROWS_APPENDED := SQL%ROWCOUNT; < COMMIT; < < MDSYS.RDF_APIS_INTERNAL.KSDWRF('Postprocessing for Alter: inserted into ' || DOCVID2RID_NAME < || ': rowcount=' || ROWS_APPENDED, DEBUG_TRACE); < < EXCEPTION WHEN OTHERS THEN < MDSYS.RDF_APIS_INTERNAL.KSDWRF('IndexAlter postprocessing: issuing: ins_into_docVid=' < || INS_INTO_DOCVID < || ' SQLERRM='||SQLERRM); < END; < < END IF; < < IF (ADD_POLICY AND L_DEPPOL.COUNT != 0) THEN < MDSYS.RDF_APIS_INTERNAL.KSDWRF('Adding the dependent policy during Alter', DEBUG_TRACE); < SEM_RDFCTX_DR.CREATE_VIRTUAL_RDFCTX_INDEX ( < ROLES_AND_PRIVS, IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < PARTITION_NAME, NLS_UPPER(L_DEPPOL(1))); < END IF; < < < IF (PLAIN_REBUILD) THEN < SEM_RDFCTX_DR.GET_DEP_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < PARTITION_NAME, L_DEPPOL); < IF (L_DEPPOL IS NOT NULL AND L_DEPPOL.COUNT > 0) THEN < FOR PIDX IN 1 .. L_DEPPOL.COUNT LOOP < < < MDSYS.RDF_APIS_INTERNAL.KSDWRF('Adding the dependent policy during Rebuild', DEBUG_TRACE); < SEM_RDFCTX_DR.CREATE_VIRTUAL_RDFCTX_INDEX ( < ROLES_AND_PRIVS, IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < PARTITION_NAME, NLS_UPPER(L_DEPPOL(PIDX))); < END LOOP; < END IF; < END IF; < < COMMIT; < < STEP_NUM := 9; < < IF (L_LOAD_METHOD = 'BULKLOAD' AND (NOT POLICY_EXISTS)) THEN < FOR EI IN 1 .. L_BASEPOL.COUNT LOOP < STAGTAB_SUFFIX := SEM_RDFCTX_DR.GET_STAGTAB_SUFFIX(NLS_UPPER(L_BASEPOL(EI)),L_POLRIDS(EI)); < EXECUTE IMMEDIATE 'DROP TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME || STAGTAB_SUFFIX) || ' PURGE'; < MDSYS.RDF_APIS_INTERNAL.KSDWRF('ODCIIndexAlter: dropped BULKLOAD staging table: ' < || 'DROP TABLE ' || STAGTAB_NAME || STAGTAB_SUFFIX || ' PURGE', DEBUG_TRACE); < END LOOP; < ELSIF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN < EXECUTE IMMEDIATE 'DROP TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) || ' PURGE'; < END IF; < < STEP_NUM := 10; < < STMT := 'DROP TABLE ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCURI2RID_NAME) || ' PURGE'; < BEGIN < EXECUTE IMMEDIATE STMT; < EXCEPTION WHEN OTHERS THEN < MDSYS.RDF_APIS_INTERNAL.KSDWRF('Failed during ODCIIndexAlter: step_num=' || STEP_NUM || ' stmt=' || STMT); < END; < < END IF; < ELSE < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'ALTER INDEX (other than rebuild partition not supported for RDFCTX indexes'); < END IF; < RETURN ODCICONST.SUCCESS; < < EXCEPTION WHEN OTHERS THEN < MDSYS.RDF_APIS_INTERNAL.KSDWRF('Failed during ODCIIndexAlter: step_num=' < || STEP_NUM || ' stmt=' || STMT || ' SQLERRM=' || SQLERRM); < RETURN ODCICONST.SUCCESS; < END ODCIINDEXALTER; < 1484,1513c63,67 < DOCURI2RID_NAME VARCHAR2(270); < DOCVID2RID_NAME VARCHAR2(270); < DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); < BEGIN < < < SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); < < COMMIT; < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME,TRUE,DOCURI2RID_NAME, < DOCVID2RID_NAME); < < IF (IDXENV.CALLPROPERTY IS NULL AND IDXINFO.INDEXPARTITION IS NULL) THEN < SEM_RDFCTX_DR.TRUNCATE_RDFCTX_INDEX (IDXINFO.INDEXSCHEMA, < IDXINFO.INDEXNAME, IDXINFO.INDEXNAME); < EXECUTE IMMEDIATE 'truncate table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME); < ELSIF (IDXINFO.INDEXPARTITION IS NOT NULL) THEN < SEM_RDFCTX_DR.TRUNCATE_RDFCTX_INDEX (IDXINFO.INDEXSCHEMA, < IDXINFO.INDEXNAME, IDXINFO.INDEXPARTITION); < < EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) < || ' truncate partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) < || ' update indexes'; < END IF; < < COMMIT; < RETURN ODCICONST.SUCCESS; < END ODCIINDEXTRUNCATE; --- > RETURNVAL NUMBER; > BEGIN > SEM_RDFCTX_DR.ODCIINDEXTRUNCATE_PR(IDXINFO, IDXENV, RETURNVAL); > RETURN RETURNVAL; > END ODCIINDEXTRUNCATE; 1524,1539c78 < L_POLRIDS SYS.ODCIVARCHAR2LIST; < L_MODIDX SYS.ODCINUMBERLIST; < L_EXTARR MDSYS.T_EXTARR; < L_EXTPREF SYS.XMLTYPE; < L_TBSNM VARCHAR2(128); < L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; < L_MODARR SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); < L_FLAGS SYS.ODCINUMBERLIST; < DOCURI2RID_NAME VARCHAR2(270); < DOCVID2RID_NAME VARCHAR2(270); < STAGTAB_NAME VARCHAR2(270); < STAGVIEW_NAME VARCHAR2(270); < L_POLNAMES SYS.ODCIVARCHAR2LIST; < DUMMY_XINFOTAB_NAME VARCHAR2(270); < ROLES_AND_PRIVS VARCHAR2(4000) := SDO_RDF.GET_ROLES_AND_PRIVS(); < DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); --- > RETURNVAL NUMBER; 1541,1598c80,82 < < < SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); < < SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, < STAGTAB_NAME, STAGVIEW_NAME, DUMMY_XINFOTAB_NAME); < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME,TRUE,DOCURI2RID_NAME, < DOCVID2RID_NAME); < IF (PART2_NAME IS NOT NULL) AND (IDXINFO.INDEXPARTITION IS NOT NULL) AND < (PART1_NAME IS NOT NULL) THEN < < < L_TBSNM := SDO_RDF_INTERNAL.GET_CALLCONTEXT_VC_ATTR('VALUES_TABLESPACE'); < < < SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < IDXINFO.INDEXPARTITION, L_POLRIDS, L_MODIDX, < L_EXTARR, L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); < < FOR EI IN 1..L_EXTARR.COUNT LOOP < L_MODARR.EXTEND; < < L_MODARR(EI) := SEM_RDFCTX_DR.CREATE_RDFCTX_INDEX ( < IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < PART2_NAME.INDEXPARTITION, L_POLRIDS(EI), < L_FLAGS(EI), L_TBSNM, L_EXTRPARAMS(EI)); < < < SEM_RDFCTX_DR.DROP_RDFCTX_INDEX(ROLES_AND_PRIVS, IDXINFO.INDEXSCHEMA, < IDXINFO.INDEXNAME, IDXINFO.INDEXPARTITION, L_POLRIDS(EI)); < < END LOOP; < < < SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < PART1_NAME.INDEXPARTITION, L_POLRIDS, L_MODIDX, < L_EXTARR, L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); < < FOR EI IN 1..L_EXTARR.COUNT LOOP < < < SEM_RDFCTX_DR.DROP_RDFCTX_INDEX(ROLES_AND_PRIVS, IDXINFO.INDEXSCHEMA, < IDXINFO.INDEXNAME, PART1_NAME.INDEXPARTITION, L_POLRIDS(EI)); < END LOOP; < < EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) < || ' merge partitions ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) || ',' < || SYS.DBMS_ASSERT.ENQUOTE_NAME(PART1_NAME.INDEXPARTITION, FALSE) || ' into partition ' < || SYS.DBMS_ASSERT.ENQUOTE_NAME(PART2_NAME.INDEXPARTITION, FALSE) || ' update indexes'; < < EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) < || ' merge partitions ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) || ',' < || SYS.DBMS_ASSERT.ENQUOTE_NAME(PART1_NAME.INDEXPARTITION, FALSE) || ' into partition ' < || SYS.DBMS_ASSERT.ENQUOTE_NAME(PART2_NAME.INDEXPARTITION, FALSE) || ' update indexes'; < END IF; < RETURN SYS.ODCICONST.SUCCESS; --- > SEM_RDFCTX_DR.ODCIINDEXMERGEPARTITION_PR(IDXINFO, PART1_NAME, PART2_NAME, > IDXPARMS, IDXENV, RETURNVAL); > RETURN RETURNVAL; 1610,1626c94 < L_POLRIDS SYS.ODCIVARCHAR2LIST; < L_MODIDX SYS.ODCINUMBERLIST; < L_EXTARR MDSYS.T_EXTARR; < L_EXTPREF SYS.XMLTYPE; < L_TBSNM VARCHAR2(128); < L_MODARR SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); < L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; < L_FLAGS SYS.ODCINUMBERLIST; < PIDX NUMBER := 0; < DOCURI2RID_NAME VARCHAR2(270); < DOCVID2RID_NAME VARCHAR2(270); < STAGTAB_NAME VARCHAR2(270); < STAGVIEW_NAME VARCHAR2(270); < L_POLNAMES SYS.ODCIVARCHAR2LIST; < DUMMY_XINFOTAB_NAME VARCHAR2(270); < ROLES_AND_PRIVS VARCHAR2(4000) := SDO_RDF.GET_ROLES_AND_PRIVS(); < DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); --- > RETURNVAL NUMBER; 1628,1696c96,98 < < < SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); < < SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, < STAGTAB_NAME, STAGVIEW_NAME, DUMMY_XINFOTAB_NAME); < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME,TRUE,DOCURI2RID_NAME, < DOCVID2RID_NAME); < < IF (PART1_NAME IS NOT NULL AND PART2_NAME IS NOT NULL ) THEN < < < L_TBSNM := SDO_RDF_INTERNAL.GET_CALLCONTEXT_VC_ATTR('VALUES_TABLESPACE'); < < < SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < IDXINFO.INDEXPARTITION, L_POLRIDS, L_MODIDX, < L_EXTARR, L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); < < FOR EI IN 1..L_EXTARR.COUNT LOOP < L_MODARR.EXTEND; < PIDX := PIDX + 1; < < L_MODARR(PIDX) := SEM_RDFCTX_DR.CREATE_RDFCTX_INDEX ( < IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < PART1_NAME.INDEXPARTITION, L_POLRIDS(EI), < L_FLAGS(EI), L_TBSNM, L_EXTRPARAMS(EI)); < < L_MODARR.EXTEND; < PIDX := PIDX + 1; < L_MODARR(PIDX) := SEM_RDFCTX_DR.CREATE_RDFCTX_INDEX ( < IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < PART2_NAME.INDEXPARTITION, L_POLRIDS(EI), < L_FLAGS(EI), L_TBSNM, L_EXTRPARAMS(EI)); < < < SEM_RDFCTX_DR.DROP_RDFCTX_INDEX(ROLES_AND_PRIVS, IDXINFO.INDEXSCHEMA, < IDXINFO.INDEXNAME, IDXINFO.INDEXPARTITION, L_POLRIDS(EI)); < END LOOP; < COMMIT; < < < < EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) < || ' add partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(PART1_NAME.INDEXPARTITION, FALSE); < COMMIT; < EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) < || ' add partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(PART1_NAME.INDEXPARTITION, FALSE); < COMMIT; < EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) < || ' add partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(PART2_NAME.INDEXPARTITION, FALSE); < COMMIT; < EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) < || ' add partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(PART2_NAME.INDEXPARTITION, FALSE); < COMMIT; < < < < EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) < || ' drop partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) || ' update indexes'; < COMMIT; < EXECUTE IMMEDIATE ' alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(STAGTAB_NAME) < || ' drop partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(IDXINFO.INDEXPARTITION, FALSE) || ' update indexes'; < COMMIT; < END IF; < < RETURN SYS.ODCICONST.SUCCESS; --- > SEM_RDFCTX_DR.ODCIINDEXSPLITPARTITION_PR(IDXINFO, PART1_NAME, PART2_NAME, > IDXPARMS, IDXENV, RETURNVAL); > RETURN RETURNVAL; 1706,1724c108 < PL_POLRIDS SYS.ODCIVARCHAR2LIST; < PL_MODIDX SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); < PL_EXTARR MDSYS.T_EXTARR; < PL_EXTPREF SYS.XMLTYPE; < PL_FLAGS SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); < L_POLRIDS SYS.ODCIVARCHAR2LIST; < L_MODIDX SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); < L_EXTARR MDSYS.T_EXTARR; < L_EXTPREF SYS.XMLTYPE; < L_FLAGS SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); < DOCURI2RID_PNAME VARCHAR2(270); < DOCVID2RID_PNAME VARCHAR2(270); < DOCURI2RID_NAME VARCHAR2(270); < DOCVID2RID_NAME VARCHAR2(270); < PL_POLNAMES SYS.ODCIVARCHAR2LIST; < L_POLNAMES SYS.ODCIVARCHAR2LIST; < PL_EXTRPARAMS SYS.ODCIVARCHAR2LIST; < L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; < DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); --- > RETURNVAL NUMBER; 1726,1789c110,111 < < < SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); < < < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(PA_IDXINFO.INDEXSCHEMA, PA_IDXINFO.INDEXNAME,TRUE, < DOCURI2RID_PNAME, DOCVID2RID_PNAME); < < < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME,TRUE,DOCURI2RID_NAME, < DOCVID2RID_NAME); < < < SEM_RDFCTX_DR.GET_INDEX_POLICIES(PA_IDXINFO.INDEXSCHEMA, PA_IDXINFO.INDEXNAME, < PA_IDXINFO.INDEXPARTITION, PL_POLRIDS, PL_MODIDX, < PL_EXTARR, PL_EXTPREF, PL_POLNAMES, PL_EXTRPARAMS, PL_FLAGS); < < < SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < IDXINFO.INDEXNAME, L_POLRIDS, L_MODIDX, < L_EXTARR, L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); < < < IF (PL_POLRIDS.COUNT != L_POLRIDS.COUNT) THEN < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'EXCHANGE INDEX PARTITION not supported for different number of index policies'); < ELSE < FOR I IN 1..PL_EXTARR.COUNT LOOP < FOR J IN 1..L_EXTARR.COUNT LOOP < IF (L_POLRIDS(J) = PL_POLRIDS(I)) THEN < EXIT; < ELSE < IF (L_POLRIDS(J) > PL_POLRIDS(I)) THEN < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'EXCHANGE INDEX PARTITION not supported for incompatible index policies'); < END IF; < END IF; < END LOOP; < END LOOP; < END IF; < < < < < FOR I IN 1..PL_EXTARR.COUNT LOOP < < < < SEM_RDFCTX_DR.EXCHANGE_INDEX_POLICIES(PA_IDXINFO.INDEXSCHEMA, PA_IDXINFO.INDEXNAME, < PA_IDXINFO.INDEXPARTITION, PL_MODIDX(I), < IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, < L_MODIDX(I)); < END LOOP; < < < EXECUTE IMMEDIATE 'alter table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_PNAME) < || ' exchange partition ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(PA_IDXINFO.INDEXPARTITION, FALSE) < || ' with table ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) < || ' including indexes'; < COMMIT; < < RETURN SYS.ODCICONST.SUCCESS; --- > SEM_RDFCTX_DR.ODCIINDEXEXCHANGEPARTITION_PR(PA_IDXINFO, IDXINFO, IDXENV, RETURNVAL); > RETURN RETURNVAL; 1800,1823c122 < L_POLRIDS SYS.ODCIVARCHAR2LIST; < L_MODIDX SYS.ODCINUMBERLIST; < L_EXTARR MDSYS.T_EXTARR; < S_XMLRDF CLOB; < L_EXTPREF SYS.XMLTYPE; < FILEDIR VARCHAR2(4000) := NULL; < L_NEWDOC CLOB := NEWVAL; < L_DUMN NUMBER; < FILTERPL VARCHAR2(130) := NULL; < STAGTAB VARCHAR2(270); < STAGVIEW VARCHAR2(270); < L_DOCURIPFX VARCHAR2(4000); < L_DOCURISHORTPFX VARCHAR2(500); < L_DOCURI VARCHAR2(4000); < DOCVID2RID_NAME VARCHAR2(270); < DOCURI2RID_NAME VARCHAR2(270); < L_ROWCNT CONSTANT NUMBER := 0; < L_ROWDESC VARCHAR2(50); < L_POLNAMES SYS.ODCIVARCHAR2LIST; < L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; < DUMMY_XINFOTAB_NAME VARCHAR2(270); < L_FLAGS SYS.ODCINUMBERLIST; < < DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); --- > RETURNVAL NUMBER; 1825,1934c124,126 < < < SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); < < < < < DEBUG_TRACE := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); < < < < IF (NEWVAL IS NULL) THEN < RETURN SYS.ODCICONST.SUCCESS; < END IF; < < < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, < DOCURI2RID_NAME, DOCVID2RID_NAME); < < < L_DOCURIPFX := SEM_RDFCTX_DR.GEN_DOC_URI_PREFIX( < IDXINFO.INDEXSCHEMA < , IDXINFO.INDEXNAME < , IDXINFO.INDEXPARTITION, L_DOCURISHORTPFX); < RDF_APIS_INTERNAL.KSDWRF('index insert: docUriPfx=' || L_DOCURIPFX, DEBUG_TRACE); < < < < < L_ROWDESC := 'r' || SDO_RDF.FORM_URL_ENCODE(RID); < L_DOCURI := '<' || < L_DOCURIPFX || < L_ROWDESC || < '>'; < < SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, < IDXINFO.INDEXNAME, < (CASE WHEN IDXINFO.INDEXPARTITION IS NULL THEN IDXINFO.INDEXNAME ELSE IDXINFO.INDEXPARTITION END), < L_POLRIDS, L_MODIDX, L_EXTARR, < L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); < < IF (L_EXTPREF IS NOT NULL) THEN < IF (NLS_UPPER(L_EXTPREF.EXTRACT('//Datastore/@type').GETSTRINGVAL()) < = 'FILE') THEN < FILEDIR := TRIM(L_EXTPREF.EXTRACT( < '//Datastore/Path/text()').GETSTRINGVAL()); < END IF; < IF (L_EXTPREF.EXTRACT('//Datastore/@filter') IS NOT NULL) THEN < FILTERPL := NLS_UPPER(L_EXTPREF.EXTRACT( < '//Datastore/@filter').GETSTRINGVAL()); < END IF; < IF (FILEDIR IS NOT NULL) THEN < < SEM_RDFCTX_IR.READ_FROM_FILE(FILEDIR, NEWVAL, L_NEWDOC, FILTERPL); < ELSE < SEM_RDFCTX_IR.READ_FROM_NTWRK(NEWVAL, L_NEWDOC, FILTERPL); < END IF; < END IF; < < SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, STAGTAB, STAGVIEW < ,DUMMY_XINFOTAB_NAME); < < < < < < < MDSYS.RDF_APIS_INTERNAL.KSDWRF('Staging table for indexInsert is ' || STAGTAB, DEBUG_TRACE); < < FOR EI IN 1 .. L_EXTARR.COUNT LOOP < BEGIN < L_EXTARR(EI).STARTDRIVER(); < < IF (L_EXTRPARAMS(EI) IS NULL) THEN < S_XMLRDF := L_EXTARR(EI).EXTRACTRDF(L_NEWDOC, L_DOCURISHORTPFX || L_ROWDESC); < ELSE < S_XMLRDF := L_EXTARR(EI).EXTRACTRDF(L_NEWDOC, L_DOCURISHORTPFX || L_ROWDESC, < L_EXTRPARAMS(EI)); < END IF; < < MDSYS.RDF_APIS_INTERNAL.KSDWRF('Done extracting data for the new document', DEBUG_TRACE); < L_DUMN := SEM_RDFCTX_DR.LOAD_TRIPLES(L_EXTARR(EI).RDFRETURNTYPE(), < S_XMLRDF, L_DOCURI, L_MODIDX(EI), L_POLRIDS(EI), 'DML', STAGTAB, NULL, < IDXINFO.INDEXPARTITION, RID); < L_EXTARR(EI).CLOSEDRIVER(); < < < MDSYS.RDF_APIS_INTERNAL.NOTIFY_MODEL_DML(L_MODIDX(EI), 'INS'); < EXCEPTION < WHEN OTHERS THEN < L_EXTARR(EI).CLOSEDRIVER(); < IF (SQLCODE != -13199) THEN < SEM_RDFCTX_DR.RECORD_RDFCTX_EXCEPTION (L_MODIDX(EI), RID, 1, < SQLCODE, SQLERRM); < END IF; < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'unable to maintain index. See exceptions table' || < CHR(10) || DBMS_UTILITY.FORMAT_ERROR_STACK || < CHR(10) || '[' || CHR(10) || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE || CHR(10) || ']' < ); < END; < END LOOP; < < < SEM_RDFCTX_IR.MAINTAIN_DOCVID2RID_TABLE(IDXINFO, DOCVID2RID_NAME, L_DOCURI, RID); < < RETURN SYS.ODCICONST.SUCCESS; < END ODCIINDEXINSERT; --- > SEM_RDFCTX_DR.ODCIINDEXINSERT_PR(IDXINFO, RID, NEWVAL, IDXENV, RETURNVAL); > RETURN RETURNVAL; > END ODCIINDEXINSERT; 1944,1964c136 < L_POLRIDS SYS.ODCIVARCHAR2LIST; < L_MODIDX SYS.ODCINUMBERLIST; < L_EXTARR MDSYS.T_EXTARR; < S_XMLRDF CLOB; < L_EXTPREF SYS.XMLTYPE; < L_DUMN NUMBER; < STAGTAB VARCHAR2(270); < STAGVIEW VARCHAR2(270); < L_DOCURIPFX VARCHAR2(4000); < L_DOCURISHORTPFX VARCHAR2(500); < L_DOCURI VARCHAR2(4000); < DOCVID2RID_NAME VARCHAR2(270); < DOCURI2RID_NAME VARCHAR2(270); < L_ROWCNT CONSTANT NUMBER := 0; < L_ROWDESC VARCHAR2(50); < L_POLNAMES SYS.ODCIVARCHAR2LIST; < L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; < DUMMY_XINFOTAB_NAME VARCHAR2(270); < L_FLAGS SYS.ODCINUMBERLIST; < < DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); --- > RETURNVAL NUMBER; 1966,2045c138,140 < < < SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); < < < DEBUG_TRACE := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); < < < < IF (NEWVAL IS NULL) THEN < RETURN SYS.ODCICONST.SUCCESS; < END IF; < < < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, < DOCURI2RID_NAME, DOCVID2RID_NAME); < < < L_DOCURIPFX := SEM_RDFCTX_DR.GEN_DOC_URI_PREFIX( < IDXINFO.INDEXSCHEMA < , IDXINFO.INDEXNAME < , IDXINFO.INDEXPARTITION, L_DOCURISHORTPFX); < RDF_APIS_INTERNAL.KSDWRF('index insert: docUriPfx=' || L_DOCURIPFX, DEBUG_TRACE); < < < < < L_ROWDESC := 'r' || SDO_RDF.FORM_URL_ENCODE(RID); < L_DOCURI := '<' || < L_DOCURIPFX || < L_ROWDESC || < '>'; < < SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, < IDXINFO.INDEXNAME, < (CASE WHEN IDXINFO.INDEXPARTITION IS NULL THEN IDXINFO.INDEXNAME ELSE IDXINFO.INDEXPARTITION END), < L_POLRIDS, L_MODIDX, L_EXTARR, < L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); < < SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, STAGTAB, STAGVIEW < ,DUMMY_XINFOTAB_NAME); < < < FOR EI IN 1 .. L_EXTARR.COUNT LOOP < BEGIN < L_EXTARR(EI).STARTDRIVER(); < < IF (L_EXTRPARAMS(EI) IS NULL) THEN < S_XMLRDF := L_EXTARR(EI).EXTRACTRDF(NEWVAL, L_DOCURISHORTPFX || L_ROWDESC); < ELSE < S_XMLRDF := L_EXTARR(EI).EXTRACTRDF(NEWVAL, L_DOCURISHORTPFX || L_ROWDESC, < L_EXTRPARAMS(EI)); < END IF; < < L_DUMN := SEM_RDFCTX_DR.LOAD_TRIPLES(L_EXTARR(EI).RDFRETURNTYPE(), < S_XMLRDF, L_DOCURI, L_MODIDX(EI), L_POLRIDS(EI), 'DML', STAGTAB, NULL, < IDXINFO.INDEXPARTITION, RID); < L_EXTARR(EI).CLOSEDRIVER(); < < < MDSYS.RDF_APIS_INTERNAL.NOTIFY_MODEL_DML(L_MODIDX(EI), 'INS'); < EXCEPTION < WHEN OTHERS THEN < L_EXTARR(EI).CLOSEDRIVER(); < IF (SQLCODE != -13199) THEN < SEM_RDFCTX_DR.RECORD_RDFCTX_EXCEPTION (L_MODIDX(EI), RID, 1, < SQLCODE, SQLERRM); < END IF; < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'unable to maintain index. See exceptions table'); < END; < END LOOP; < < < SEM_RDFCTX_IR.MAINTAIN_DOCVID2RID_TABLE(IDXINFO, DOCVID2RID_NAME, L_DOCURI, RID); < < RETURN SYS.ODCICONST.SUCCESS; < END ODCIINDEXINSERT; --- > SEM_RDFCTX_DR.ODCIINDEXINSERT_PR(IDXINFO, RID, NEWVAL, IDXENV, RETURNVAL); > RETURN RETURNVAL; > END ODCIINDEXINSERT; 2055,2065c150 < L_POLRIDS SYS.ODCIVARCHAR2LIST; < L_MODIDX SYS.ODCINUMBERLIST; < L_EXTARR MDSYS.T_EXTARR; < L_EXTPREF SYS.XMLTYPE; < DOCVID2RID_NAME VARCHAR2(270); < DOCURI2RID_NAME VARCHAR2(270); < L_POLNAMES SYS.ODCIVARCHAR2LIST; < L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; < L_DOCVID NUMBER; < L_FLAGS SYS.ODCINUMBERLIST; < DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); --- > RETURNVAL NUMBER; 2067,2097c152,154 < < < SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); < < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, < DOCURI2RID_NAME, DOCVID2RID_NAME); < < SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, < IDXINFO.INDEXNAME, < (CASE WHEN IDXINFO.INDEXPARTITION IS NULL THEN IDXINFO.INDEXNAME ELSE IDXINFO.INDEXPARTITION END), < L_POLRIDS, L_MODIDX, L_EXTARR, < L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); < < < EXECUTE IMMEDIATE 'select docVid from ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) < || ' where docRid = :1' INTO L_DOCVID USING RID; < < FOR EI IN 1 .. L_EXTARR.COUNT LOOP < SEM_RDFCTX_DR.DELETE_TRIPLES(RID, L_MODIDX(EI), L_DOCVID); < < < MDSYS.RDF_APIS_INTERNAL.NOTIFY_MODEL_DML(L_MODIDX(EI), 'DEL'); < END LOOP; < < EXECUTE IMMEDIATE 'delete from ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) < || ' where docRid = :1' USING RID; < < RETURN SYS.ODCICONST.SUCCESS; < END ODCIINDEXDELETE; --- > SEM_RDFCTX_DR.ODCIINDEXDELETE_PR(IDXINFO, RID, OLDVAL, IDXENV, RETURNVAL); > RETURN RETURNVAL; > END ODCIINDEXDELETE; 2107,2117c164 < L_POLRIDS SYS.ODCIVARCHAR2LIST; < L_MODIDX SYS.ODCINUMBERLIST; < L_EXTARR MDSYS.T_EXTARR; < L_EXTPREF SYS.XMLTYPE; < DOCVID2RID_NAME VARCHAR2(270); < DOCURI2RID_NAME VARCHAR2(270); < L_POLNAMES SYS.ODCIVARCHAR2LIST; < L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; < L_DOCVID NUMBER; < L_FLAGS SYS.ODCINUMBERLIST; < DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); --- > RETURNVAL NUMBER; 2119,2149c166,168 < < < SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); < < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, < DOCURI2RID_NAME, DOCVID2RID_NAME); < < SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, < IDXINFO.INDEXNAME, < (CASE WHEN IDXINFO.INDEXPARTITION IS NULL THEN IDXINFO.INDEXNAME ELSE IDXINFO.INDEXPARTITION END), < L_POLRIDS, L_MODIDX, L_EXTARR, < L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); < < < EXECUTE IMMEDIATE 'select docVid from ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) < || ' where docRid = :1' INTO L_DOCVID USING RID; < < FOR EI IN 1 .. L_EXTARR.COUNT LOOP < SEM_RDFCTX_DR.DELETE_TRIPLES(RID, L_MODIDX(EI), L_DOCVID); < < < MDSYS.RDF_APIS_INTERNAL.NOTIFY_MODEL_DML(L_MODIDX(EI), 'DEL'); < END LOOP; < < EXECUTE IMMEDIATE 'delete from ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) < || ' where docRid = :1' USING RID; < < RETURN SYS.ODCICONST.SUCCESS; < END ODCIINDEXDELETE; --- > SEM_RDFCTX_DR.ODCIINDEXDELETE_PR(IDXINFO, RID, OLDVAL, IDXENV, RETURNVAL); > RETURN RETURNVAL; > END ODCIINDEXDELETE; 2160,2184c179 < L_POLRIDS SYS.ODCIVARCHAR2LIST; < L_MODIDX SYS.ODCINUMBERLIST; < L_EXTARR MDSYS.T_EXTARR; < S_XMLRDF CLOB; < L_EXTPREF SYS.XMLTYPE; < FILEDIR VARCHAR2(4000) := NULL; < L_NEWDOC CLOB := NEWVAL; < L_DUMN NUMBER; < FILTERPL VARCHAR2(130); < STAGTAB VARCHAR2(270); < STAGVIEW VARCHAR2(270); < DOCVID2RID_NAME VARCHAR2(270); < DOCURI2RID_NAME VARCHAR2(270); < L_ROWCNT CONSTANT NUMBER := 0; < L_ROWDESC VARCHAR2(50); < L_DOCURIPFX VARCHAR2(4000); < L_DOCURISHORTPFX VARCHAR2(500); < L_DOCURI VARCHAR2(4000); < L_POLNAMES SYS.ODCIVARCHAR2LIST; < L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; < DUMMY_XINFOTAB_NAME VARCHAR2(270); < L_DOCVID NUMBER; < L_FLAGS SYS.ODCINUMBERLIST; < < DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); --- > RETURNVAL NUMBER; 2186,2292c181,183 < < < SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); < < < DEBUG_TRACE := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); < < < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, < DOCURI2RID_NAME, DOCVID2RID_NAME); < < < < < SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, < IDXINFO.INDEXNAME, < (CASE WHEN IDXINFO.INDEXPARTITION IS NULL THEN IDXINFO.INDEXNAME ELSE IDXINFO.INDEXPARTITION END), < L_POLRIDS, L_MODIDX, L_EXTARR, < L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); < < SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, STAGTAB, STAGVIEW < ,DUMMY_XINFOTAB_NAME); < < EXECUTE IMMEDIATE 'select docVid from ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) < || ' where docRid = :1' INTO L_DOCVID USING RID; < < FOR EI IN 1 .. L_EXTARR.COUNT LOOP < SEM_RDFCTX_DR.DELETE_TRIPLES(RID, L_MODIDX(EI), L_DOCVID); < END LOOP; < < EXECUTE IMMEDIATE 'delete from ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) < || ' where docRid = :1' USING RID; < < IF (NEWVAL IS NULL) THEN < RETURN ODCICONST.SUCCESS; < END IF; < < < < L_DOCURIPFX := SEM_RDFCTX_DR.GEN_DOC_URI_PREFIX( < IDXINFO.INDEXSCHEMA < , IDXINFO.INDEXNAME < , IDXINFO.INDEXPARTITION, L_DOCURISHORTPFX); < RDF_APIS_INTERNAL.KSDWRF('index update: docUriPfx=' || L_DOCURIPFX, DEBUG_TRACE); < < L_ROWDESC := 'r' || SDO_RDF.FORM_URL_ENCODE(RID); < L_DOCURI := '<' || < L_DOCURIPFX || < L_ROWDESC || < '>'; < < IF (L_EXTPREF IS NOT NULL) THEN < IF (NLS_UPPER(L_EXTPREF.EXTRACT('//Datastore/@type').GETSTRINGVAL()) < = 'FILE') THEN < FILEDIR := TRIM(L_EXTPREF.EXTRACT( < '//Datastore/Path/text()').GETSTRINGVAL()); < END IF; < IF (L_EXTPREF.EXTRACT('//Datastore/@filter') IS NOT NULL) THEN < FILTERPL := NLS_UPPER(L_EXTPREF.EXTRACT( < '//Datastore/@filter').GETSTRINGVAL()); < END IF; < IF (FILEDIR IS NOT NULL) THEN < < SEM_RDFCTX_IR.READ_FROM_FILE(FILEDIR, NEWVAL, L_NEWDOC, FILTERPL); < ELSE < SEM_RDFCTX_IR.READ_FROM_NTWRK(NEWVAL, L_NEWDOC, FILTERPL); < END IF; < END IF; < < < FOR EI IN 1 .. L_EXTARR.COUNT LOOP < BEGIN < L_EXTARR(EI).STARTDRIVER(); < < IF (L_EXTRPARAMS(EI) IS NULL) THEN < S_XMLRDF := L_EXTARR(EI).EXTRACTRDF(L_NEWDOC, L_DOCURISHORTPFX || L_ROWDESC); < ELSE < S_XMLRDF := L_EXTARR(EI).EXTRACTRDF(L_NEWDOC, L_DOCURISHORTPFX || L_ROWDESC, < L_EXTRPARAMS(EI)); < END IF; < < L_DUMN := SEM_RDFCTX_DR.LOAD_TRIPLES(L_EXTARR(EI).RDFRETURNTYPE(), < S_XMLRDF, L_DOCURI, L_MODIDX(EI), L_POLRIDS(EI), 'DML', STAGTAB, NULL, < IDXINFO.INDEXPARTITION, RID); < L_EXTARR(EI).CLOSEDRIVER(); < < < MDSYS.RDF_APIS_INTERNAL.NOTIFY_MODEL_DML(L_MODIDX(EI), 'UPD'); < EXCEPTION < WHEN OTHERS THEN < L_EXTARR(EI).CLOSEDRIVER(); < IF (SQLCODE != -13199) THEN < SEM_RDFCTX_DR.RECORD_RDFCTX_EXCEPTION (L_MODIDX(EI), RID, 1, < SQLCODE, SQLERRM); < END IF; < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'unable to maintain index. See exceptions table'); < END; < END LOOP; < < < SEM_RDFCTX_IR.MAINTAIN_DOCVID2RID_TABLE(IDXINFO, DOCVID2RID_NAME, L_DOCURI, RID); < < RETURN SYS.ODCICONST.SUCCESS; < END ODCIINDEXUPDATE; --- > SEM_RDFCTX_DR.ODCIINDEXUPDATE_PR(IDXINFO, RID, OLDVAL, NEWVAL, IDXENV, RETURNVAL); > RETURN RETURNVAL; > END ODCIINDEXUPDATE; 2303,2324c194 < L_POLRIDS SYS.ODCIVARCHAR2LIST; < L_MODIDX SYS.ODCINUMBERLIST; < L_EXTARR MDSYS.T_EXTARR; < S_XMLRDF CLOB; < L_EXTPREF SYS.XMLTYPE; < L_FLAGS SYS.ODCINUMBERLIST; < L_DUMN NUMBER; < STAGTAB VARCHAR2(270); < STAGVIEW VARCHAR2(270); < DOCVID2RID_NAME VARCHAR2(270); < DOCURI2RID_NAME VARCHAR2(270); < L_ROWCNT CONSTANT NUMBER := 0; < L_ROWDESC VARCHAR2(50); < L_DOCURIPFX VARCHAR2(4000); < L_DOCURISHORTPFX VARCHAR2(500); < L_DOCURI VARCHAR2(4000); < L_POLNAMES SYS.ODCIVARCHAR2LIST; < L_EXTRPARAMS SYS.ODCIVARCHAR2LIST; < DUMMY_XINFOTAB_NAME VARCHAR2(270); < L_DOCVID NUMBER; < < DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); --- > RETURNVAL NUMBER; 2326,2416c196,198 < < < SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); < < < DEBUG_TRACE := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); < < < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, TRUE, < DOCURI2RID_NAME, DOCVID2RID_NAME); < < < < < SEM_RDFCTX_DR.GET_INDEX_POLICIES(IDXINFO.INDEXSCHEMA, < IDXINFO.INDEXNAME, < (CASE WHEN IDXINFO.INDEXPARTITION IS NULL THEN IDXINFO.INDEXNAME ELSE IDXINFO.INDEXPARTITION END), < L_POLRIDS, L_MODIDX, L_EXTARR, < L_EXTPREF, L_POLNAMES, L_EXTRPARAMS, L_FLAGS); < < SEM_RDFCTX_DR.GET_STAGTAB_NAME(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, NULL, TRUE, STAGTAB, STAGVIEW < ,DUMMY_XINFOTAB_NAME); < < EXECUTE IMMEDIATE 'select docVid from ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) < || ' where docRid = :1' INTO L_DOCVID USING RID; < < FOR EI IN 1 .. L_EXTARR.COUNT LOOP < SEM_RDFCTX_DR.DELETE_TRIPLES(RID, L_MODIDX(EI), L_DOCVID); < END LOOP; < < EXECUTE IMMEDIATE 'delete from ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(DOCVID2RID_NAME) < || ' where docRid = :1' USING RID; < < IF (NEWVAL IS NULL) THEN < RETURN ODCICONST.SUCCESS; < END IF; < < < < L_DOCURIPFX := SEM_RDFCTX_DR.GEN_DOC_URI_PREFIX( < IDXINFO.INDEXSCHEMA < , IDXINFO.INDEXNAME < , IDXINFO.INDEXPARTITION, L_DOCURISHORTPFX); < RDF_APIS_INTERNAL.KSDWRF('index update: docUriPfx=' || L_DOCURIPFX, DEBUG_TRACE); < < L_ROWDESC := 'r' || SDO_RDF.FORM_URL_ENCODE(RID); < L_DOCURI := '<' || < L_DOCURIPFX || < L_ROWDESC || < '>'; < < < FOR EI IN 1 .. L_EXTARR.COUNT LOOP < BEGIN < L_EXTARR(EI).STARTDRIVER(); < < IF (L_EXTRPARAMS(EI) IS NULL) THEN < S_XMLRDF := L_EXTARR(EI).EXTRACTRDF(NEWVAL, L_DOCURISHORTPFX || L_ROWDESC); < ELSE < S_XMLRDF := L_EXTARR(EI).EXTRACTRDF(NEWVAL, L_DOCURISHORTPFX || L_ROWDESC, < L_EXTRPARAMS(EI)); < END IF; < < L_DUMN := SEM_RDFCTX_DR.LOAD_TRIPLES(L_EXTARR(EI).RDFRETURNTYPE(), < S_XMLRDF, L_DOCURI, L_MODIDX(EI), L_POLRIDS(EI), 'DML', STAGTAB, NULL, < IDXINFO.INDEXPARTITION, RID); < L_EXTARR(EI).CLOSEDRIVER(); < < < MDSYS.RDF_APIS_INTERNAL.NOTIFY_MODEL_DML(L_MODIDX(EI), 'UPD'); < EXCEPTION < WHEN OTHERS THEN < L_EXTARR(EI).CLOSEDRIVER(); < IF (SQLCODE != -13199) THEN < SEM_RDFCTX_DR.RECORD_RDFCTX_EXCEPTION (L_MODIDX(EI), RID, 1, < SQLCODE, SQLERRM); < END IF; < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'unable to maintain index. See exceptions table'); < END; < < END LOOP; < < < SEM_RDFCTX_IR.MAINTAIN_DOCVID2RID_TABLE(IDXINFO, DOCVID2RID_NAME, L_DOCURI, RID); < < RETURN SYS.ODCICONST.SUCCESS; < < END ODCIINDEXUPDATE; --- > SEM_RDFCTX_DR.ODCIINDEXUPDATE_PR(IDXINFO, RID, OLDVAL, NEWVAL, IDXENV, RETURNVAL); > RETURN RETURNVAL; > END ODCIINDEXUPDATE; 2429a212 > RETURNVAL NUMBER; 2431,2433c214,217 < RETURN ODCIINDEXSTART(ICTX, IDXINFO, OPI, OQI, STRT, STOP, SPARQL, < NULL, RDF_APIS.RULESIDX_VALID, NULL, IDXENV); < END ODCIINDEXSTART; --- > SEM_RDFCTX_DR.ODCIINDEXSTART_PR(ICTX, IDXINFO, OPI, OQI, STRT, STOP, SPARQL, > NULL, RDF_APIS.RULESIDX_VALID, NULL, IDXENV, RETURNVAL); > RETURN RETURNVAL; > END ODCIINDEXSTART; 2447a232 > RETURNVAL NUMBER; 2449,2450c234,236 < RETURN ODCIINDEXSTART(ICTX, IDXINFO, OPI, OQI, STRT, STOP, SPARQL, < POLICY, RDF_APIS.RULESIDX_VALID, NULL, IDXENV); --- > SEM_RDFCTX_DR.ODCIINDEXSTART_PR(ICTX, IDXINFO, OPI, OQI, STRT, STOP, SPARQL, > POLICY, RDF_APIS.RULESIDX_VALID, NULL, IDXENV, RETURNVAL); > RETURN RETURNVAL; 2465a252 > RETURNVAL NUMBER; 2467,2468c254,256 < RETURN ODCIINDEXSTART(ICTX, IDXINFO, OPI, OQI, STRT, STOP, SPARQL, < NULL, RDF_APIS.RULESIDX_VALID, ALIASES, IDXENV); --- > SEM_RDFCTX_DR.ODCIINDEXSTART_PR(ICTX, IDXINFO, OPI, OQI, STRT, STOP, SPARQL, > NULL, RDF_APIS.RULESIDX_VALID, ALIASES, IDXENV, RETURNVAL); > RETURN RETURNVAL; 2484a273 > RETURNVAL NUMBER; 2486,2487c275,277 < RETURN ODCIINDEXSTART(ICTX, IDXINFO, OPI, OQI, STRT, STOP, SPARQL, < POLICY, RDF_APIS.RULESIDX_VALID, ALIASES, IDXENV); --- > SEM_RDFCTX_DR.ODCIINDEXSTART_PR(ICTX, IDXINFO, OPI, OQI, STRT, STOP, SPARQL, > POLICY, RDF_APIS.RULESIDX_VALID, ALIASES, IDXENV, RETURNVAL); > RETURN RETURNVAL; 2490d279 < 2505,2570c294,295 < IDXENV SYS.ODCIENV) RETURN NUMBER IS < L_MODID NUMBER; < L_QRYARR RDF_LONGVARCHARARRAY; < L_COLNAMES RDF_VARCHARARRAY; < L_FLAGS INTEGER := 0; < PS_NCOLS INTEGER; < STMT DBMS_SQL.VARCHAR2A; < SEL VARCHAR2(32767); < COLNAMES RDF_VARCHARARRAY; < SELLST SYS.ODCINUMBERLIST := SYS.ODCINUMBERLIST(); < CURNM INTEGER; < RID ROWID; < SPARQLSEL VARCHAR2(4000) := NULL; < SPARQLWHR VARCHAR2(4000) := SPARQL; < SELCOLS RDF_VARCHARARRAY := NULL; < WHRCOLS RDF_VARCHARARRAY := NULL; < IDX INTEGER; < L_CLOB CLOB; < L_NUM NUMBER; < FLAG_OUT NUMBER; < DUMNUML SYS.ODCINUMBERLIST; < DUMVARCHAR VARCHAR2(32767); < VMNAME VARCHAR(128) := NULL; < SP2SQFLG NUMBER := 4; < DUMMYHINT VARCHAR2(128); < PART_NAME VARCHAR2(128); < < DOCGRAPH CONSTANT VARCHAR2(30) := 'ORARDFGRAPH'; < < DOCGRAPH_SPARQL_VAR VARCHAR2(128) := '?' || DOCGRAPH; < DOCGRAPH$RDFVID_COL VARCHAR2(128) := DOCGRAPH || '$RDFVID'; < < GRAPH_AUG_AT_HEAD CONSTANT VARCHAR2(100) := '{GRAPH ' || DOCGRAPH_SPARQL_VAR || ' '; < GRAPH_AUG_AT_TAIL CONSTANT VARCHAR2(100) := '}'; < < FLAG_MATCH_UNNAMED CONSTANT PLS_INTEGER := 128; < < DUMMY_DOCURI2RID VARCHAR2(128); < DOCVID2RID VARCHAR2(128); < DOCVID2RID_TAB VARCHAR2(128); < SELECT_DOCVID2RID_CLAUSE VARCHAR2(100); < SELECT_DOCVID2RID_ANC_CLAUSE VARCHAR2(100); < SELECT_DOCVID2RID_CNT_CLAUSE VARCHAR2(100); < FROM_DOCVID2RID_CLAUSE VARCHAR2(100); < WHERE_DOCVID2RID_CLAUSE VARCHAR2(100); < REQIDXSTATUS VARCHAR2(30); < DEBUG_TRACE BOOLEAN := SEM_RDFCTX_IR.SET_DEBUG_TRACE(IDXENV.ENVFLAGS); < < < HINTKEY CONSTANT VARCHAR2(11) := 'ORARDF$HINT'; < < < < HINTSTR VARCHAR2(4000) := ' ALLOW_DUP=T '; < CLNALIASES MDSYS.RDF_ALIASES := MDSYS.RDF_ALIASES(); < CURRALIAS MDSYS.RDF_ALIAS; < ALIASIDX PLS_INTEGER := 0; < < < SELECT_OP CONSTANT VARCHAR2(19) := 'SEM_CONTAINS_SELECT'; < COUNT_OP CONSTANT VARCHAR2(18) := 'SEM_CONTAINS_COUNT'; < < < L_NETWORK_OWNER VARCHAR2(128) := 'MDSYS'; < L_NETWORK_NAME VARCHAR2(30) := ''; < S_NETWORK_NAME VARCHAR2(30) := ''; --- > IDXENV SYS.ODCIENV) RETURN NUMBER IS > RETURNVAL NUMBER; 2572,2907c297,299 < < < SEM_RDFCTX_IR.LOOKUP_AND_SET_NETWORK_INFO(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_INFO', NULL, TRUE); < SDO_RDF_INTERNAL.SET_CALLCONTEXT('NETWORK_P_INFO', NULL, TRUE); < < L_NETWORK_OWNER := SDO_RDF_INTERNAL.GET_NETWORK_OWNER; < IF (L_NETWORK_OWNER != 'MDSYS') THEN < L_NETWORK_NAME := SDO_RDF_INTERNAL.GET_NETWORK_NAME; < S_NETWORK_NAME := SUBSTR(L_NETWORK_NAME,1,LENGTH(L_NETWORK_NAME)-1); < END IF; < < < < < < IF (ALIASES IS NOT NULL) THEN < FOR ALIASIDX IN ALIASES.FIRST..ALIASES.LAST LOOP < CURRALIAS := ALIASES(ALIASIDX); < IF (NLS_UPPER(CURRALIAS.NAMESPACE_ID) = HINTKEY) THEN < HINTSTR := CURRALIAS.NAMESPACE_VAL; < MDSYS.RDF_APIS_INTERNAL.KSDWRF( < 'extracted hint: [' || HINTSTR || ']', < DEBUG_TRACE); < ELSE < CLNALIASES.EXTEND(1); < CLNALIASES(CLNALIASES.LAST) := CURRALIAS; < MDSYS.RDF_APIS_INTERNAL.KSDWRF( < 'keeping alias: [' || CURRALIAS.NAMESPACE_ID || '][' < || CURRALIAS.NAMESPACE_VAL || ']', < DEBUG_TRACE); < END IF; < END LOOP; < END IF; < < < IF (ICTX IS NOT NULL) THEN < IF (ICTX.SCANCUR IS NOT NULL) THEN < IF (DEBUG_TRACE) THEN < MDSYS.RDF_APIS_INTERNAL.KSDWRF('closing previous open cursor in ODCIIndexStart'); < END IF; < DBMS_SQL.CLOSE_CURSOR(ICTX.SCANCUR); < END IF; < END IF; < < L_MODID := SEM_RDFCTX_DR.GET_MODEL_ID(IDXINFO.INDEXSCHEMA, < IDXINFO.INDEXNAME, < (CASE WHEN IDXINFO.INDEXPARTITION IS NULL THEN IDXINFO.INDEXNAME ELSE IDXINFO.INDEXPARTITION END), < NLS_UPPER(POLICY)); < < < SEM_RDFCTX_DR.GET_MAPTAB_NAMES(IDXINFO.INDEXSCHEMA, IDXINFO.INDEXNAME, FALSE, DUMMY_DOCURI2RID, DOCVID2RID); < DOCVID2RID_TAB := SYS.DBMS_ASSERT.SIMPLE_SQL_NAME(DOCVID2RID); < < < REQIDXSTATUS := SEM_RDFCTX_DR.GET_IDXSTATUS_STRING(IDX_STATUS); < < MDSYS.RDF_APIS_INTERNAL.KSDWRF('requiredidxStatus : ' ||REQIDXSTATUS, DEBUG_TRACE); < < IF (REQIDXSTATUS IS NULL) THEN < RAISE_APPLICATION_ERROR(-20000, TO_CHAR(IDX_STATUS) || < ' is not a recognized option for status of a rules index'); < END IF; < < < SELECT_DOCVID2RID_CLAUSE := 'SELECT docRid FROM ('; < SELECT_DOCVID2RID_CNT_CLAUSE := 'SELECT docRid, abs_cnt FROM ('; < SELECT_DOCVID2RID_ANC_CLAUSE := 'SELECT docRid, sparqlrslt FROM ('; < FROM_DOCVID2RID_CLAUSE := '), ' || DOCVID2RID_TAB || ' Vid2Rid'; < WHERE_DOCVID2RID_CLAUSE := ' and Vid2Rid.docVid = ' || DOCGRAPH$RDFVID_COL || ' '; < < < L_FLAGS := 0; < IF (OQI.ANCOPS IS NOT NULL AND OQI.ANCOPS.COUNT > 0) THEN < FOR IDX IN OQI.ANCOPS.FIRST..OQI.ANCOPS.LAST LOOP < MDSYS.RDF_APIS_INTERNAL.KSDWRF( < 'ancop [' || OQI.ANCOPS(IDX).OBJECTNAME || ']', < DEBUG_TRACE); < CASE (NLS_UPPER(OQI.ANCOPS(IDX).OBJECTNAME)) < WHEN SELECT_OP THEN < L_FLAGS := L_FLAGS + SEM_RDFCTX_DR.SELECT_ANCOP; < WHEN COUNT_OP THEN < L_FLAGS := L_FLAGS + SEM_RDFCTX_DR.COUNT_ANCOP; < ELSE < NULL; < END CASE; < END LOOP; < MDSYS.RDF_APIS_INTERNAL.KSDWRF( < 'l_flags [' || L_FLAGS || ']', < DEBUG_TRACE); < END IF; < < IF (L_MODID < 0) THEN < L_MODID := -1*L_MODID; < SP2SQFLG := SP2SQFLG+ FLAG_MATCH_UNNAMED; < VMNAME := SDO_RDF_INTERNAL.GET_PFX_FOR_RDF_OBJ_NAME() || 'SEMV_RDFCTX_MOD_'||L_MODID; < < < < IF (SEM_RDFCTX_DR.IS_ENTAILMENT_COMPAT('RDFCTX_MOD_'||L_MODID, REQIDXSTATUS) = FALSE) THEN < IF (REQIDXSTATUS = SDO_RDF_INTERNAL.RIDX_VALID) THEN < RAISE_APPLICATION_ERROR(-20000, < 'We do not have a valid virtual model with the specified status '); < ELSE < RAISE_APPLICATION_ERROR(-20000, < 'We do not have a virtual model with the specified status '); < END IF; < END IF; < < < ELSE < NULL; < < END IF; < < MDSYS.RDF_APIS_INTERNAL.KSDWRF('model_name in ODCIIndexStart : '||VMNAME, DEBUG_TRACE); < < IF (INSTR(NLS_UPPER(SUBSTR(LTRIM(SPARQL),1, 10)), 'SELECT') = 1) THEN < SELCOLS := SEM_RDFCTX_DR.GETSELECTVARIABLES(SPARQL); < < < SPARQLWHR := SUBSTR(SPARQL, INSTR(SPARQL,'{')); < END IF; < < SPARQLWHR := GRAPH_AUG_AT_HEAD || SPARQLWHR || GRAPH_AUG_AT_TAIL; < < < < < SELLST.EXTEND; < SELLST(SELLST.COUNT) := 2; < < < IF (BITAND(L_FLAGS, SEM_RDFCTX_DR.SELECT_ANCOP) = SEM_RDFCTX_DR.SELECT_ANCOP) THEN < IF (SELCOLS IS NULL) THEN < SELCOLS := RDF_VARCHARARRAY('*'); < END IF; < WHRCOLS := SEM_RDFCTX_DR.GETWHEREVARIABLES(SPARQLWHR, DUMMYHINT); < < < < < < < < < < < < IF (SELCOLS.COUNT = 1 AND SELCOLS(1) = '*') THEN < SELCOLS := RDF_VARCHARARRAY(); < FOR WCL IN 1 .. WHRCOLS.COUNT/2 LOOP < < IF (INSTR(WHRCOLS(WCL*2),'$') = 0 AND WHRCOLS(WCL*2) != NLS_UPPER(DOCGRAPH)) THEN < < SELLST.EXTEND; < SELLST(SELLST.COUNT) := WCL; < < SELLST.EXTEND; < SELLST(SELLST.COUNT) := WCL+4; < < SELCOLS.EXTEND; < SELCOLS(SELCOLS.COUNT) := WHRCOLS(WCL*2); < < < < < < END IF; < END LOOP; < ELSE < < FOR WCL IN 1 .. WHRCOLS.COUNT/2 LOOP < IF (INSTR(WHRCOLS(WCL*2),'$') = 0) THEN < < FOR SCL IN 1 .. SELCOLS.COUNT LOOP < IF (SELCOLS(SCL) = WHRCOLS(WCL*2)) THEN < SELLST.EXTEND; < SELLST(SELLST.COUNT) := WCL; < < SELLST.EXTEND; < SELLST(SELLST.COUNT) := WCL+4; < END IF; < END LOOP; < END IF; < END LOOP; < END IF; < END IF; < < RDF_APIS_INTERNAL.KSDWRF('sp2sqflg=' || TO_CHAR(SP2SQFLG) || ' < WHR=' || SPARQLWHR || '* < SELLST=' || SELLST.COUNT || '*', DEBUG_TRACE); < < MDSYS.RDF_APIS_INTERNAL.KSDWRF( < 'using sem_match options: [' || HINTSTR || ']', < DEBUG_TRACE); < < RDF_APIS_INTERNAL.SPARQL_TO_SQL(SELLST, < SPARQLWHR, < RDF_MODELS('RDFCTX_MOD_'||L_MODID), < NULL, < NULL, < REQIDXSTATUS, < NULL, < NULL, < NULL, < NULL, < ALIASES, < SP2SQFLG, < L_QRYARR, < L_COLNAMES, NULL, VMNAME, < FLAG_OUT, DUMNUML, DUMVARCHAR, NULL, 0 < , L_NETWORK_OWNER, S_NETWORK_NAME); < < < IF (BITAND(FLAG_OUT, 1) = 1) THEN < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'filters in optional graph patterns can only reference local or ' || < 'parent variables'); < END IF; < < IDX := 1; < < < < < < < < < IF (BITAND(L_FLAGS, SEM_RDFCTX_DR.SELECT_ANCOP) = SEM_RDFCTX_DR.SELECT_ANCOP) THEN < < < < STMT(IDX) := SELECT_DOCVID2RID_ANC_CLAUSE < || ' select ' || DOCGRAPH$RDFVID_COL || ', '' <result>''||chr(10)||'; < IDX := IDX+1; < FOR SCI IN 1 .. SELCOLS.COUNT LOOP < STMT(IDX) := ''' <binding name="'||SELCOLS(SCI)||'">''||chr(10)||'; < IDX := IDX+1; < STMT(IDX) := ' (case '||SELCOLS(SCI)||'$RDFVTYP when ''URI'' then '|| < ''' <uri>''||replace('||SELCOLS(SCI)|| < ',''&'',''&'')||''</uri>'''; < IDX := IDX+1; < STMT(IDX) := ' when ''LIT'' then '|| < ''' <literal>''||replace(replace(replace(replace('||SELCOLS(SCI) < ||',''&'',''&''), ''<'',''<''), ''>'',''>'') < ,''"'',''"'')||''</literal>'' end)||chr(10)||'; < IDX := IDX+1; < STMT(IDX) := ''' </binding>''||chr(10)||'; < IDX := IDX+1; < END LOOP; < STMT(IDX) := ''' </result>'' as sparqlrslt from ('; < < < < < < < < < < < < < < < ELSIF (BITAND(L_FLAGS, SEM_RDFCTX_DR.COUNT_ANCOP) = SEM_RDFCTX_DR.COUNT_ANCOP) THEN < STMT(IDX) := SELECT_DOCVID2RID_CNT_CLAUSE < || ' select ' || DOCGRAPH$RDFVID_COL || ', ' || < 'count(*) abs_cnt from ( '; < < ELSE < STMT(IDX) := SELECT_DOCVID2RID_CLAUSE < || ' select ' || DOCGRAPH$RDFVID_COL || ' from ( '; < END IF; < IDX := IDX+1; < < FOR QIDX IN 1 .. L_QRYARR.COUNT LOOP < STMT(IDX) := L_QRYARR(QIDX); < IDX := IDX+1; < END LOOP; < < STMT(IDX) := ') where 1=1 '; < IDX := IDX+1; < < < IF (BITAND(L_FLAGS, SEM_RDFCTX_DR.SELECT_ANCOP) = SEM_RDFCTX_DR.SELECT_ANCOP) THEN < STMT(IDX) := < (CASE WHEN BITAND(SP2SQFLG,16) = 16 THEN < ' and ' || DOCGRAPH$RDFVID_COL || ' is not null ' ELSE ' ' END) < || FROM_DOCVID2RID_CLAUSE || ' where 1=1 ' || WHERE_DOCVID2RID_CLAUSE < ||' order by 1, 2 '; < ELSE < STMT(IDX) := < (CASE WHEN BITAND(SP2SQFLG,16) = 16 THEN < ' and ' || DOCGRAPH$RDFVID_COL || ' is not null ' ELSE ' ' END) < || ' group by ' || DOCGRAPH$RDFVID_COL < || FROM_DOCVID2RID_CLAUSE || ' where 1=1 ' || WHERE_DOCVID2RID_CLAUSE; < END IF; < < < < < < < < < < RDF_APIS_INTERNAL.KSDWRF('stmt.count=' || STMT.COUNT, DEBUG_TRACE); < FOR IDX IN 1..STMT.COUNT LOOP < RDF_APIS_INTERNAL.KSDWRF(STMT(IDX), DEBUG_TRACE); < END LOOP; < < CURNM := DBMS_SQL.OPEN_CURSOR; < DBMS_SQL.PARSE(CURNM, STMT, 1, STMT.COUNT, FALSE, DBMS_SQL.NATIVE); < DBMS_SQL.DEFINE_COLUMN_ROWID(CURNM, 1, RID); < < IF (BITAND(L_FLAGS, SEM_RDFCTX_DR.SELECT_ANCOP) = SEM_RDFCTX_DR.SELECT_ANCOP) THEN < DBMS_SQL.DEFINE_COLUMN(CURNM, 2, L_CLOB); < < ELSIF (BITAND(L_FLAGS, SEM_RDFCTX_DR.COUNT_ANCOP) = SEM_RDFCTX_DR.COUNT_ANCOP) THEN < DBMS_SQL.DEFINE_COLUMN(CURNM, 2, L_NUM); < END IF; < L_MODID := DBMS_SQL.EXECUTE(CURNM); < ICTX := SEMCONTEXTINDEXMETHODS(CURNM, L_FLAGS, NULL); < RETURN ODCICONST.SUCCESS; < EXCEPTION WHEN OTHERS THEN < MDERR.RAISE_MD_ERROR('MD', 'SDO', -13199, < 'Error during ODCIIndexStart. ' < ||': ' < || SDO_SEM_LOG.NEWLINE || SQLERRM < || SDO_SEM_LOG.NEWLINE ||' [' < || SDO_SEM_LOG.NEWLINE || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE < || SDO_SEM_LOG.NEWLINE || ']'); < --- > SEM_RDFCTX_DR.ODCIINDEXSTART_PR(ICTX, IDXINFO, OPI, OQI, STRT, STOP, SPARQL, > POLICY, IDX_STATUS, ALIASES, IDXENV, RETURNVAL); > RETURN RETURNVAL;
55a56 > , LOCAL_AUTO_TYPE VARCHAR(20) 91a93 > , IGNORE_CPU_HISTORY BOOLEAN 118c120 < REPORT_INTERNAL_VERSION CONSTANT VARCHAR2(64) := '41'; --- > REPORT_INTERNAL_VERSION CONSTANT VARCHAR2(64) := '42'; 126c128 < OMC_ALLOWED_ERR_RATIO CONSTANT NUMBER := 0.9; --- > OMC_ALLOWED_ERR_RATIO CONSTANT NUMBER := 0.98; 259a262,266 > > > > > 293a301,302 > > 296c305,306 < INSTANCE_NUMBER IN NUMBER := NULL) --- > INSTANCE_NUMBER IN NUMBER := NULL, > IGNORE_CPU_HISTORY IN VARCHAR := 'n') 345c355,356 < , AWR_INFO IN VARCHAR2 := 'n') --- > , AWR_INFO IN VARCHAR2 := 'n' > , IGNORE_CPU_HISTORY IN VARCHAR := 'n') 394c405,406 < , AWR_INFO IN VARCHAR2 := 'n') --- > , AWR_INFO IN VARCHAR2 := 'n' > , IGNORE_CPU_HISTORY IN VARCHAR := 'n') 415c427,428 < , INSTANCE_NUMBER IN NUMBER := NULL) --- > , INSTANCE_NUMBER IN NUMBER := NULL > , IGNORE_CPU_HISTORY IN VARCHAR := 'n') 468c481,482 < , INSTANCE_NUMBER IN NUMBER := NULL) --- > , INSTANCE_NUMBER IN NUMBER := NULL > , IGNORE_CPU_HISTORY IN VARCHAR := 'n')
12c12 < bannerVersion CONSTANT VARCHAR2(15) := '19.04.00.00'; --- > bannerVersion CONSTANT VARCHAR2(15) := '19.04.01.00'; 24,26c24,26 < fsn CONSTANT NUMBER := instr('19.04.00.00', '.'); < msn CONSTANT NUMBER := instr('19.04.00.00', '.', fsn + 1); < psn CONSTANT NUMBER := instr('19.04.00.00', '.', msn + 1); --- > fsn CONSTANT NUMBER := instr('19.04.01.00', '.'); > msn CONSTANT NUMBER := instr('19.04.01.00', '.', fsn + 1); > psn CONSTANT NUMBER := instr('19.04.01.00', '.', msn + 1); 29c29 < to_number(substr('19.04.00.00', 1, fsn - 1)); --- > to_number(substr('19.04.01.00', 1, fsn - 1)); 31c31 < to_number(substr('19.04.00.00', fsn + 1, msn - fsn - 1)); --- > to_number(substr('19.04.01.00', fsn + 1, msn - fsn - 1)); 33c33 < to_number(substr('19.04.00.00', msn + 1, psn - msn - 1)); --- > to_number(substr('19.04.01.00', msn + 1, psn - msn - 1)); 35c35 < to_number(substr('19.04.00.00', psn + 1)); --- > to_number(substr('19.04.01.00', psn + 1));
12c12 < bannerVersion CONSTANT VARCHAR2(15) := '19.04.00.00'; --- > bannerVersion CONSTANT VARCHAR2(15) := '19.05.00.00'; 24,26c24,26 < fsn CONSTANT NUMBER := instr('19.04.00.00', '.'); < msn CONSTANT NUMBER := instr('19.04.00.00', '.', fsn + 1); < psn CONSTANT NUMBER := instr('19.04.00.00', '.', msn + 1); --- > fsn CONSTANT NUMBER := instr('19.05.00.00', '.'); > msn CONSTANT NUMBER := instr('19.05.00.00', '.', fsn + 1); > psn CONSTANT NUMBER := instr('19.05.00.00', '.', msn + 1); 29c29 < to_number(substr('19.04.00.00', 1, fsn - 1)); --- > to_number(substr('19.05.00.00', 1, fsn - 1)); 31c31 < to_number(substr('19.04.00.00', fsn + 1, msn - fsn - 1)); --- > to_number(substr('19.05.00.00', fsn + 1, msn - fsn - 1)); 33c33 < to_number(substr('19.04.00.00', msn + 1, psn - msn - 1)); --- > to_number(substr('19.05.00.00', msn + 1, psn - msn - 1)); 35c35 < to_number(substr('19.04.00.00', psn + 1)); --- > to_number(substr('19.05.00.00', psn + 1));
12c12 < bannerVersion CONSTANT VARCHAR2(15) := '19.03.01.00'; --- > bannerVersion CONSTANT VARCHAR2(15) := '19.03.02.00'; 24,26c24,26 < fsn CONSTANT NUMBER := instr('19.03.01.00', '.'); < msn CONSTANT NUMBER := instr('19.03.01.00', '.', fsn + 1); < psn CONSTANT NUMBER := instr('19.03.01.00', '.', msn + 1); --- > fsn CONSTANT NUMBER := instr('19.03.02.00', '.'); > msn CONSTANT NUMBER := instr('19.03.02.00', '.', fsn + 1); > psn CONSTANT NUMBER := instr('19.03.02.00', '.', msn + 1); 29c29 < to_number(substr('19.03.01.00', 1, fsn - 1)); --- > to_number(substr('19.03.02.00', 1, fsn - 1)); 31c31 < to_number(substr('19.03.01.00', fsn + 1, msn - fsn - 1)); --- > to_number(substr('19.03.02.00', fsn + 1, msn - fsn - 1)); 33c33 < to_number(substr('19.03.01.00', msn + 1, psn - msn - 1)); --- > to_number(substr('19.03.02.00', msn + 1, psn - msn - 1)); 35c35 < to_number(substr('19.03.01.00', psn + 1)); --- > to_number(substr('19.03.02.00', psn + 1));
13c13 < '19.4.0.0.0'; --- > '19.4.1.0.0';
13c13 < '19.4.0.0.0'; --- > '19.5.0.0.0';
13c13 < '19.3.1.0.0'; --- > '19.3.2.0.0';
43a44 > 56a58 > AWR_INFO IN VARCHAR2 := NULL,
2a3,5 > -- #28103358: MDSYS packages require PRAGMA for DBMS_ROLLING upgrade support > PRAGMA SUPPLEMENTAL_LOG_DATA(default, NONE); >
2a3,5 > > PRAGMA SUPPLEMENTAL_LOG_DATA(DEFAULT, NONE); >
37a38,41 > TA SYS.RE$TABLE_ALIAS_LIST; > RESULT BOOLEAN; > INSUFFICIENT_PRIVILEGE EXCEPTION; > PRAGMA EXCEPTION_INIT(INSUFFICIENT_PRIVILEGE, -1031); 56a61,68 > TA := SYS.RE$TABLE_ALIAS_LIST(SYS.RE$TABLE_ALIAS('qtview', > DBMS_ASSERT.ENQUOTE_NAME(DQT||QT_SCHEMA||DQT) || '.' || > DBMS_ASSERT.ENQUOTE_NAME(DQT||'AQ$'||QT_NAME||DQT))); > > SYS.DBMS_RULE.IS_FAST( > EXPRESSION => NEW_PURGE_COND, > TABLE_ALIASES => TA, > RESULT_VAL => RESULT); 57a70,72 > IF RESULT = FALSE THEN > RAISE INSUFFICIENT_PRIVILEGE; > END IF; 267a283,286 > TA SYS.RE$TABLE_ALIAS_LIST; > RESULT BOOLEAN; > INSUFFICIENT_PRIVILEGE EXCEPTION; > PRAGMA EXCEPTION_INIT(INSUFFICIENT_PRIVILEGE, -1031); 301a321,334 > TA := SYS.RE$TABLE_ALIAS_LIST(SYS.RE$TABLE_ALIAS('qtview', > DBMS_ASSERT.ENQUOTE_NAME(DQT||QT_SCHEMA||DQT) || '.' || > DBMS_ASSERT.ENQUOTE_NAME(DQT||'AQ$'||QT_NAME||DQT))); > IF PURGE_CONDITION IS NOT NULL THEN > > SYS.DBMS_RULE.IS_FAST( > EXPRESSION => PURGE_CONDITION, > TABLE_ALIASES => TA, > RESULT_VAL => RESULT); > > IF RESULT = FALSE THEN > RAISE INSUFFICIENT_PRIVILEGE; > END IF; > END IF; 365a399,402 > TA SYS.RE$TABLE_ALIAS_LIST; > RESULT BOOLEAN; > INSUFFICIENT_PRIVILEGE EXCEPTION; > PRAGMA EXCEPTION_INIT(INSUFFICIENT_PRIVILEGE, -1031); 392a430,441 > TA := SYS.RE$TABLE_ALIAS_LIST(SYS.RE$TABLE_ALIAS('qtview', > DBMS_ASSERT.ENQUOTE_NAME(DQT||QT_SCHEMA||DQT) || '.' || > DBMS_ASSERT.ENQUOTE_NAME(DQT||'AQ$'||QT_NAME||DQT))); > > SYS.DBMS_RULE.IS_FAST( > EXPRESSION => PURGE_CONDITION, > TABLE_ALIASES => TA, > RESULT_VAL => RESULT); > > IF RESULT = FALSE THEN > RAISE INSUFFICIENT_PRIVILEGE; > END IF;
465a466,468 > ,NVL(CONTEXT.LOCAL_CONID,0) AS "con_id" > ,NVL(CONTEXT.LOCAL_AUTO_TYPE,'NONE') AS "auto_type" > ,CONTEXT.LOCAL_VERSION AS "version" 475c478 < AWR_INFO IN VARCHAR) --- > AWR_INFO IN VARCHAR, IGNORE_CPU_HISTORY IN VARCHAR) 519a523,527 > IF UPPER(IGNORE_CPU_HISTORY) = 'Y' THEN > CONTEXT.IGNORE_CPU_HISTORY := TRUE; > ELSE > CONTEXT.IGNORE_CPU_HISTORY := FALSE; > END IF; 547,558c555,562 < IF CONTEXT.LOCAL_COMP_VER >= VER_20 THEN < EXECUTE IMMEDIATE < 'SELECT SYS.dbms_sqltune_util2.is_system_data_locked FROM SYS.DUAL' < INTO AUTO_PARAM_VALUE; < ELSE < EXECUTE IMMEDIATE < 'SELECT MAX(SUBSTR(value,1,10)) FROM v$system_parameter < WHERE name = ''_cloud_service_type''' < INTO AUTO_PARAM_VALUE; < END IF; < IF AUTO_PARAM_VALUE IS NULL OR UPPER(AUTO_PARAM_VALUE) = 'NONE' < OR UPPER(AUTO_PARAM_VALUE) = 'NO' THEN --- > BEGIN > AUTO_PARAM_VALUE := UPPER(NVL(SYS_CONTEXT('USERENV','CLOUD_SERVICE'), > 'NONE')); > EXCEPTION WHEN OTHERS THEN > AUTO_PARAM_VALUE := 'NONE'; > END; > CONTEXT.LOCAL_AUTO_TYPE := SUBSTR(AUTO_PARAM_VALUE, 1, 20); > IF CONTEXT.LOCAL_AUTO_TYPE = 'NONE' THEN 901c905 < MINIMIZE_COST, AWR_INFO); --- > MINIMIZE_COST, AWR_INFO, 'n'); 920c924,925 < , AWR_INFO IN VARCHAR) --- > , AWR_INFO IN VARCHAR > , IGNORE_CPU_HISTORY IN VARCHAR) 925c930 < MINIMIZE_COST, AWR_INFO); --- > MINIMIZE_COST, AWR_INFO, IGNORE_CPU_HISTORY); 961c966,967 < , AWR_INFO IN VARCHAR) --- > , AWR_INFO IN VARCHAR > , IGNORE_CPU_HISTORY IN VARCHAR) 966c972 < MINIMIZE_COST, AWR_INFO); --- > MINIMIZE_COST, AWR_INFO, IGNORE_CPU_HISTORY); 1064a1071,1118 > > > > > > > PROCEDURE GETDATABOUNDARY(CONTEXT IN OUT NOCOPY CONTEXTTYPE) > IS > L_MIN_SNAP NUMBER := NULL; > L_MAX_SNAP NUMBER := NULL; > L_MIN_TIME DATE := NULL; > L_MAX_TIME DATE := NULL; > L_SQLTEXT VARCHAR2(4000); > L_ERR_MSG VARCHAR2(4000); > BEGIN > L_SQLTEXT := > 'SELECT min(snap_id), max(snap_id) FROM ' || CONTEXT.AWRTABLEPREFIX || > 'SNAPSHOT WHERE dbid = :1'; > EXECUTE IMMEDIATE L_SQLTEXT > INTO L_MIN_SNAP, L_MAX_SNAP > USING CONTEXT.DBID; > > IF L_MIN_SNAP IS NOT NULL THEN > L_SQLTEXT := > 'SELECT CAST(MIN(begin_interval_time-snap_timezone) AS DATE), > CAST(MAX(end_interval_time-snap_timezone) AS DATE) > FROM ' || CONTEXT.AWRTABLEPREFIX || 'SNAPSHOT > WHERE dbid = :1 AND snap_id IN (:2,:3)'; > EXECUTE IMMEDIATE L_SQLTEXT > INTO L_MIN_TIME, L_MAX_TIME > USING CONTEXT.DBID, L_MIN_SNAP, L_MAX_SNAP; > END IF; > > IF CONTEXT.IS_LOCAL THEN > L_MAX_TIME := CAST(SYS_EXTRACT_UTC(SYSTIMESTAMP) AS DATE); > IF L_MIN_TIME IS NULL THEN > L_MIN_TIME := L_MAX_TIME - CONTEXT.MEMSIZEDAYS; > END IF; > END IF; > CONTEXT.MINAVAILTIMEUTC := L_MIN_TIME; > CONTEXT.MAXAVAILTIMEUTC := L_MAX_TIME; > > EXCEPTION WHEN OTHERS THEN > L_ERR_MSG := SQLERRM; > SELECT XMLELEMENT("error",L_ERR_MSG,XMLELEMENT("sqltext",L_SQLTEXT)) > INTO CONTEXT.ERROR_XML FROM SYS.DUAL; > END GETDATABOUNDARY; > 1511c1565 < CONTEXT := INITBASECONTEXT(P_DBID,'n','n','n',P_INST_NUM,'n','y'); --- > CONTEXT := INITBASECONTEXT(P_DBID,'n','n','n',P_INST_NUM,'n','y','n'); 1547c1601,1602 < P_FULL_REPORT IN BOOLEAN) --- > P_FULL_REPORT IN BOOLEAN, > P_HISTORY IN XMLTYPE) 1552c1607,1611 < L_INST_PRED VARCHAR2(1000); --- > L_CPUS NUMBER := NULL; > L_CORES NUMBER := NULL; > L_LIMIT NUMBER := NULL; > L_INST_PRED_WHERE VARCHAR2(1000) := NULL; > L_INST_PRED_AND VARCHAR2(1000) := NULL; 1554c1613 < L_INFO XMLTYPE; --- > L_ERR_MSG VARCHAR2(4000); 1557,1560c1616,1619 < IF CONTEXT.INSTANCE_NUMBER IS NULL THEN < L_INST_PRED := NULL; < ELSE < L_INST_PRED := ' WHERE TO_NUMBER(USERENV(''INSTANCE'')) = ' --- > IF CONTEXT.INSTANCE_NUMBER IS NOT NULL THEN > L_INST_PRED_WHERE := ' WHERE TO_NUMBER(USERENV(''INSTANCE'')) = ' > || CONTEXT.INSTANCE_NUMBER || ' '; > L_INST_PRED_AND := ' AND TO_NUMBER(USERENV(''INSTANCE'')) = ' 1564,1575c1623,1625 < q'[ < SELECT xmlelement("cpuinfo", < xmlattributes( < :1 as "time", < num_cpus as "cpus", < num_cpu_cores as "cores", < cpu_limit as "limit" < )) < FROM ( < SELECT SUM(num_cpus) as num_cpus, < SUM(num_cpu_cores) as num_cpu_cores, < SUM(LEAST(cpu_limit,num_cpus)) as cpu_limit --- > q'[SELECT SUM(num_cpus) as num_cpus, > SUM(num_cpu_cores) as num_cpu_cores, > SUM(LEAST(cpu_limit,num_cpus)) as cpu_limit 1599c1649 < ) par ]' || L_INST_PRED || q'[ --- > ) par ]' || L_INST_PRED_WHERE || q'[ 1602,1603c1652 < ) < ) ]'; --- > ) ]'; 1605,1607c1654,1677 < EXECUTE IMMEDIATE L_SQLTEXT < INTO L_INFO < USING L_NOW; --- > IF CONTEXT.LOCAL_IS_PDB THEN > BEGIN > EXECUTE IMMEDIATE L_SQLTEXT > INTO L_CPUS, L_CORES, L_LIMIT; > EXCEPTION WHEN OTHERS THEN > L_LIMIT := NULL; > END; > IF L_LIMIT IS NULL THEN > L_SQLTEXT := > 'SELECT SUM(cpu_limit) > FROM TABLE(GV$(CURSOR( > SELECT TO_NUMBER(value) as cpu_limit > FROM v$parameter > WHERE name = ''cpu_count'' ' || L_INST_PRED_AND || ' > )))'; > EXECUTE IMMEDIATE L_SQLTEXT > INTO L_LIMIT; > END IF; > L_CPUS := NULL; > L_CORES := NULL; > ELSE > EXECUTE IMMEDIATE L_SQLTEXT > INTO L_CPUS, L_CORES, L_LIMIT; > END IF; 1610c1680,1693 < SELECT XMLELEMENT("report", P_INPUT, L_INFO) --- > SELECT XMLELEMENT("report", P_INPUT, > XMLELEMENT("cpuinfo", XMLATTRIBUTES( > L_NOW AS "time", > L_CPUS AS "cpus", > L_CORES AS "cores", > L_LIMIT AS "limit"), P_HISTORY)) > INTO L_REPORT > FROM SYS.DUAL; > ELSE > SELECT XMLELEMENT("cpuinfo", XMLATTRIBUTES( > L_NOW AS "time", > L_CPUS AS "cpus", > L_CORES AS "cores", > L_LIMIT AS "limit"), P_HISTORY) 1613d1695 < RETURN L_REPORT; 1615c1697,1707 < RETURN L_INFO; --- > RETURN L_REPORT; > > EXCEPTION WHEN OTHERS THEN > L_ERR_MSG := SQLERRM; > SELECT XMLELEMENT("error",L_ERR_MSG,XMLELEMENT("sqltext",L_SQLTEXT)) > INTO L_REPORT FROM SYS.DUAL; > IF NOT CONTEXT.SHOW_SQL THEN > PRINT_SQL(L_SQLTEXT); > END IF; > DBMS_OUTPUT.PUT_LINE(L_ERR_MSG); > RETURN L_REPORT; 1624,1628c1716 < < FUNCTION GETCPUINFOFROMAWR(CONTEXT IN OUT NOCOPY CONTEXTTYPE, < P_SNAP_ID IN NUMBER, < P_INPUT IN XMLTYPE, < P_FULL_REPORT IN BOOLEAN) --- > FUNCTION GETCPUHISTORY(CONTEXT IN OUT NOCOPY CONTEXTTYPE) 1631a1720,1722 > L_SQLCLOB CLOB; > L_INST_PRED_S VARCHAR2(1000) := NULL; > L_CON_DBID VARCHAR2(1000) := NULL; 1633,1636c1724 < L_INFO XMLTYPE; < L_SNAP_ID NUMBER := P_SNAP_ID; < L_INST_PRED1 VARCHAR2(1000); < L_INST_PRED2 VARCHAR2(1000); --- > L_ERR_MSG VARCHAR2(4000); 1638,1644c1726,1727 < IF CONTEXT.INSTANCE_NUMBER IS NULL THEN < L_INST_PRED1 := NULL; < L_INST_PRED2 := NULL; < ELSE < L_INST_PRED1 := ' AND instance_number = ' || < CONTEXT.INSTANCE_NUMBER || ' '; < L_INST_PRED2 := ' AND i.inst_id = ' || CONTEXT.INSTANCE_NUMBER || ' '; --- > IF NOT CONTEXT.DISKENABLE OR CONTEXT.IGNORE_CPU_HISTORY THEN > RETURN NULL; 1646,1662c1729,1730 < < IF L_SNAP_ID IS NULL THEN < L_SQLTEXT := < 'WITH snaps AS < (SELECT snap_id, count(*) as cnt < FROM ' || CONTEXT.AWRTABLEPREFIX || 'snapshot < WHERE dbid = ' || TO_CHAR(CONTEXT.DBID) || L_INST_PRED1 || < ' AND snap_id >= ' || TO_CHAR(NVL(CONTEXT.BEGINSNAPID,0)) || < ' AND snap_id <= ' || TO_CHAR(NVL(CONTEXT.ENDSNAPID,1000000000)) || < ' GROUP BY snap_id) < SELECT max(snap_id) FROM snaps < WHERE cnt = (SELECT max(cnt) FROM snaps) '; < EXECUTE IMMEDIATE L_SQLTEXT < INTO L_SNAP_ID; < IF L_SNAP_ID IS NULL THEN < RETURN NULL; < END IF; --- > IF CONTEXT.INSTANCE_NUMBER IS NOT NULL THEN > L_INST_PRED_S := ' AND s.instance_number = ' || CONTEXT.INSTANCE_NUMBER; 1664,1726c1732,1824 < < L_SQLTEXT := < q'[ < SELECT xmlelement("cpuinfo", < xmlattributes( < to_char(s_time, ]' || < SYS.DBMS_ASSERT.ENQUOTE_LITERAL(OMC_TIME_FORMAT) < || q'[ ) as "time", < num_cpus as "cpus", < num_cpu_cores as "cores", < cpu_limit as "limit" < )) < FROM ( < SELECT SUM(num_cpus) as num_cpus, < SUM(num_cpu_cores) as num_cpu_cores, < SUM(LEAST(cpu_limit,num_cpus)) as cpu_limit, < MAX(s_time) as s_time < FROM ( < SELECT host_name, max(s_time) as s_time, AVG(num_cpus) as num_cpus, < AVG(num_cpu_cores) as num_cpu_cores, SUM(cpu_limit) as cpu_limit < FROM ( < SELECT i.inst_id, i.host_name, i.s_time, < NVL(os.num_cpus, os.num_cpu_cores) as num_cpus, < NVL(os.num_cpu_cores, os.num_cpus) as num_cpu_cores, < CASE WHEN (par.res_plan IS NULL < OR par.cpu_count IS NULL < OR par.cpu_count = 0) < THEN NVL(os.num_cpus, os.num_cpu_cores) < ELSE LEAST(par.cpu_count, NVL(os.num_cpus, os.num_cpu_cores)) < END as cpu_limit < FROM ( SELECT s.instance_number as inst_id, < di.host_name as host_name, < s.end_interval_time - s.snap_timezone as s_time < FROM AWRPREFIXsnapshot s, AWRPREFIXdatabase_instance di < WHERE s.dbid = :1 < AND s.snap_id = :2 < AND di.dbid = :3 < AND di.startup_time = s.startup_time < ) i, < ( SELECT instance_number as inst_id < ,MAX(DECODE(stat_name, 'NUM_CPUS', value, NULL)) as num_cpus < ,MAX(DECODE(stat_name, 'NUM_CPUS', NULL, value)) as num_cpu_cores < FROM AWRPREFIXosstat < WHERE dbid = :4 < AND snap_id = :5 < AND stat_name IN ('NUM_CPUS', 'NUM_CPU_CORES') < GROUP BY instance_number < ) os, < ( SELECT instance_number as inst_id < ,TO_NUMBER(MAX(DECODE(parameter_name, 'cpu_count', value, NULL))) as cpu_count < ,MAX(DECODE(parameter_name, 'cpu_count', NULL, value)) as res_plan < FROM AWRPREFIXparameter < WHERE dbid = :6 < AND snap_id = :7 < AND parameter_name IN ('cpu_count', 'resource_manager_plan') < GROUP BY instance_number < ) par < WHERE i.inst_id = os.inst_id < AND i.inst_id = par.inst_id ]' || L_INST_PRED2 || q'[ < ) < GROUP BY host_name < ) < ) ]'; --- > IF CONTEXT.DISK_COMP_VER >= VER_12 THEN > L_CON_DBID := ' AND s.con_dbid = s.dbid '; > END IF; > > L_SQLTEXT := > q'[ WITH > snaps as ( > SELECT /*+ NO_MERGE */ s.snap_id, s.instance_number, > s.end_interval_time-s.snap_timezone as snap_time, > i.host_name > FROM AWRPREFIXsnapshot s, AWRPREFIXdatabase_instance i > WHERE s.dbid = :l_dbid > AND s.snap_id >= :l_begin_snap > AND s.snap_id <= :l_end_snap @INST_S@ > AND i.dbid = :l_dbid > AND i.startup_time = s.startup_time > AND i.instance_number = s.instance_number > ), > base_os_stat as ( > SELECT /*+ NO_MERGE */ s.snap_id, s.instance_number, > s.stat_name, s.value > FROM AWRPREFIXosstat s > WHERE s.dbid = :l_dbid > AND s.snap_id >= :l_begin_snap > AND s.snap_id <= :l_end_snap @INST_S@ > AND s.stat_name IN ('NUM_CPUS', 'NUM_CPU_CORES') > ), > full_os_stat as ( > SELECT nvl(s1.snap_id, s2.snap_id) as snap_id, > nvl(s1.instance_number, s2.instance_number) as instance_number, > nvl(s1.value, s2.value) as num_cpus, > nvl(s2.value, s1.value) as num_cores > FROM base_os_stat s1 FULL OUTER JOIN base_os_stat s2 > ON (s1.snap_id = s2.snap_id > AND s1.instance_number = s2.instance_number) > WHERE s1.stat_name = 'NUM_CPUS' and s2.stat_name = 'NUM_CPU_CORES' > ), > base_param as ( > SELECT /*+ NO_MERGE */ s.snap_id, s.instance_number, > s.parameter_name, s.value, s.con_dbid > FROM AWRPREFIXparameter s > WHERE s.dbid = :l_dbid > AND s.snap_id >= :l_begin_snap > AND s.snap_id <= :l_end_snap @INST_S@ > AND s.parameter_name in ('cpu_count', 'resource_manager_plan') @CONDBID@ > ), > full_param as ( > SELECT nvl(s1.snap_id, s2.snap_id) as snap_id, > nvl(s1.instance_number, s2.instance_number) as instance_number, > case when s2.value IS NULL > THEN NULL > ELSE TO_NUMBER(s1.value) > END as cpu_limit > FROM base_param s1 FULL OUTER JOIN base_param s2 > ON (s1.snap_id = s2.snap_id > AND s1.instance_number = s2.instance_number) > WHERE s1.parameter_name = 'cpu_count' > AND s2.parameter_name = 'resource_manager_plan' > ), > all_stats as ( > SELECT nvl(s.snap_id, p.snap_id) as snap_id, > nvl(s.instance_number, p.instance_number) as instance_number, > s.num_cpus, s.num_cores, > CASE WHEN p.cpu_limit IS NULL THEN s.num_cpus > ELSE LEAST(p.cpu_limit, NVL(s.num_cpus, p.cpu_limit)) > END as cpu_limit > FROM full_os_stat s FULL OUTER JOIN full_param p > ON (s.snap_id = p.snap_id > AND s.instance_number = p.instance_number) > ), > db_stats as ( > SELECT /*+ NO_MERGE */ snap_id, > MAX(snap_time) as snap_time, > SUM(num_cpus) as num_cpus, > SUM(num_cores) as num_cores, > SUM(cpu_limit) as cpu_limit > FROM ( > SELECT s.snap_id, s.host_name, > MAX(s.snap_time) as snap_time, > MAX(a.num_cpus) as num_cpus, > MAX(a.num_cores) as num_cores, > LEAST(MAX(a.num_cpus), SUM(a.cpu_limit)) as cpu_limit > FROM all_stats a, snaps s > WHERE a.snap_id = s.snap_id > AND a.instance_number = s.instance_number > GROUP BY s.snap_id, s.host_name > ) > GROUP BY snap_id > ), > row_data as ( > SELECT snap_time, 'limit' as name, cpu_limit as value > FROM db_stats ]'; > 1727a1826,1868 > L_SQLTEXT := REPLACE(L_SQLTEXT, '@INST_S@', L_INST_PRED_S); > L_SQLTEXT := REPLACE(L_SQLTEXT, '@CONDBID@', L_CON_DBID); > L_SQLCLOB := L_SQLTEXT; > > IF NOT CONTEXT.IS_LOCAL OR NOT CONTEXT.LOCAL_IS_PDB THEN > L_SQLTEXT := q'[ UNION ALL > SELECT snap_time, 'cpus' as name, num_cpus as value > FROM db_stats > UNION ALL > SELECT snap_time, 'cores' as name, num_cores as value > FROM db_stats ]'; > SYS.DBMS_LOB.WRITEAPPEND(L_SQLCLOB, LENGTH(L_SQLTEXT), L_SQLTEXT); > END IF; > L_SQLTEXT := q'[ ), > l_data as ( > SELECT name, snap_time, value, > LAG(value,1) OVER (ORDER BY name, snap_time) as p_value, > LAG(name,1) OVER (ORDER BY name, snap_time) as p_name, > LEAD(name,1) OVER (ORDER BY name, snap_time) as n_name > FROM row_data > ORDER BY name,snap_time > ), > final_data as ( > SELECT name, snap_time, value > FROM l_data > WHERE p_name IS NULL > OR n_name IS NULL > OR name <> p_name > OR name <> n_name > OR value <> p_value > ORDER BY name,snap_time > ), > xml_data as > (SELECT name, > xmlelement("list",xmlattributes(name as "name"),xmlagg(xmlelement("c",xmlattributes( > to_char(snap_time,'MM/DD/YYYY HH24:MI:SS') as "t", > value as "v" > )))) as x > FROM final_data > GROUP BY name > ) > SELECT xmlagg(x) FROM xml_data ]'; > SYS.DBMS_LOB.WRITEAPPEND(L_SQLCLOB, LENGTH(L_SQLTEXT), L_SQLTEXT); 1729,1732c1870,1875 < EXECUTE IMMEDIATE L_SQLTEXT < INTO L_INFO < USING CONTEXT.DBID, L_SNAP_ID, CONTEXT.DBID, < CONTEXT.DBID, L_SNAP_ID, CONTEXT.DBID, L_SNAP_ID; --- > EXECUTE IMMEDIATE L_SQLCLOB > INTO L_REPORT > USING CONTEXT.DBID, CONTEXT.BEGINSNAPID, CONTEXT.ENDSNAPID, CONTEXT.DBID, > CONTEXT.DBID, CONTEXT.BEGINSNAPID, CONTEXT.ENDSNAPID, > CONTEXT.DBID, CONTEXT.BEGINSNAPID, CONTEXT.ENDSNAPID; > RETURN L_REPORT; 1734,1741c1877,1882 < IF P_FULL_REPORT THEN < SELECT XMLELEMENT("report", P_INPUT, L_INFO) < INTO L_REPORT < FROM SYS.DUAL; < RETURN L_REPORT; < END IF; < RETURN L_INFO; < END GETCPUINFOFROMAWR; --- > EXCEPTION WHEN OTHERS THEN > L_ERR_MSG := SQLERRM; > SELECT XMLELEMENT("error",L_ERR_MSG,XMLELEMENT("sqltext",L_SQLCLOB)) > INTO L_REPORT FROM SYS.DUAL; > RETURN L_REPORT; > END GETCPUHISTORY; 1758c1899,1900 < INSTANCE_NUMBER IN NUMBER := NULL) --- > INSTANCE_NUMBER IN NUMBER := NULL, > IGNORE_CPU_HISTORY IN VARCHAR := 'n') 1761,1762c1903 < CONTEXT CONTEXTTYPE := < INITBASECONTEXT(DBID,'n','n','n',INSTANCE_NUMBER,'n','n'); --- > CONTEXT CONTEXTTYPE ; 1764,1774c1905,1906 < L_SQLTEXT VARCHAR2(4000); < L_END_TIME DATE; < L_BEGIN_TIME DATE; < L_END_SNAP NUMBER; < L_BEGIN_SNAP NUMBER; < L_REQ_TIME DATE; < L_REQ_TIMESTAMP TIMESTAMP; < L_NOW DATE; < L_EMPTY XMLTYPE; < L_INST NUMBER; < L_INST_PRED VARCHAR2(1000); --- > L_HISTORY XMLTYPE := NULL; > L_REPORT XMLTYPE; 1775a1908,1916 > CONTEXT := BUILDBASECONTEXTHISTORICAL( > DBID > , OBSERVATIONTIME > , TO_CHAR(SYS_EXTRACT_UTC(SYSTIMESTAMP), OMC_TIME_FORMAT) > , NULL > , 'n', 'n', 'n' > , INSTANCE_NUMBER > , 'n', 'n', IGNORE_CPU_HISTORY); > 1783,1823c1924,1925 < < IF CONTEXT.INSTANCE_NUMBER IS NULL THEN < L_INST := NULL; < L_INST_PRED := NULL; < ELSE < L_INST := CONTEXT.INSTANCE_NUMBER; < L_INST_PRED := ' AND instance_number = ' || L_INST || ' '; < END IF; < < < IF DBID IS NULL OR DBID = CONTEXT.LOCAL_DBID THEN < IF OBSERVATIONTIME IS NULL THEN < RETURN GETCPUINFOFROMMEMORY(CONTEXT,L_INPUT,TRUE); < ELSE < L_SQLTEXT := < 'SELECT MAX(snap_id), < CAST(MAX(end_interval_time-snap_timezone) AS DATE) < FROM ' || CONTEXT.AWRTABLEPREFIX || 'SNAPSHOT WHERE dbid = :1' < || L_INST_PRED; < EXECUTE IMMEDIATE L_SQLTEXT < INTO L_END_SNAP, L_END_TIME < USING CONTEXT.LOCAL_DBID; < IF L_END_SNAP IS NULL THEN < < RETURN GETCPUINFOFROMMEMORY(CONTEXT,L_INPUT,TRUE); < END IF; < < L_REQ_TIME := TO_DATE(OBSERVATIONTIME, OMC_TIME_FORMAT); < L_NOW := CAST(SYS_EXTRACT_UTC(SYSTIMESTAMP) AS DATE); < IF L_REQ_TIME >= L_END_TIME THEN < IF L_NOW - L_REQ_TIME < L_REQ_TIME - L_END_TIME THEN < < RETURN GETCPUINFOFROMMEMORY(CONTEXT, L_INPUT,TRUE); < ELSE < CONTEXT.DBID := CONTEXT.LOCAL_DBID; < RETURN GETCPUINFOFROMAWR(CONTEXT, L_END_SNAP, L_INPUT, TRUE); < END IF; < END IF; < END IF; < < --- > IF LOWER(IGNORE_CPU_HISTORY) <> 'y' THEN > L_HISTORY := GETCPUHISTORY(CONTEXT); 1825,1844c1927,1928 < < < IF OBSERVATIONTIME IS NULL THEN < < L_SQLTEXT := < 'SELECT MAX(snap_id) < FROM ' || CONTEXT.AWRTABLEPREFIX || 'SNAPSHOT WHERE dbid = :1' < || L_INST_PRED; < EXECUTE IMMEDIATE L_SQLTEXT < INTO L_END_SNAP < USING CONTEXT.DBID; < IF L_END_SNAP IS NULL THEN < < SELECT XMLELEMENT("report", L_INPUT, < XMLELEMENT("error",'No Data in AWR')) < INTO L_EMPTY < FROM SYS.DUAL; < RETURN L_EMPTY; < END IF; < RETURN GETCPUINFOFROMAWR(CONTEXT, L_END_SNAP, L_INPUT, TRUE); --- > IF CONTEXT.IS_LOCAL THEN > RETURN GETCPUINFOFROMMEMORY(CONTEXT,L_INPUT,TRUE,L_HISTORY); 1847,1868c1931,1935 < L_REQ_TIMESTAMP := TO_TIMESTAMP(OBSERVATIONTIME, OMC_TIME_FORMAT); < L_SQLTEXT := < 'SELECT MAX(CASE WHEN end_interval_time-snap_timezone <= :1 < THEN snap_id ELSE NULL END), < MIN(CASE WHEN end_interval_time-snap_timezone >= :2 < THEN snap_id ELSE NULL END) < FROM ' || CONTEXT.AWRTABLEPREFIX || 'SNAPSHOT < WHERE dbid = :3' || L_INST_PRED; < EXECUTE IMMEDIATE L_SQLTEXT < INTO L_BEGIN_SNAP, L_END_SNAP < USING L_REQ_TIMESTAMP, L_REQ_TIMESTAMP, CONTEXT.DBID; < IF L_BEGIN_SNAP IS NULL AND L_END_SNAP IS NULL THEN < SELECT XMLELEMENT("report", L_INPUT, < XMLELEMENT("error",'No Data in AWR')) < INTO L_EMPTY < FROM SYS.DUAL; < RETURN L_EMPTY; < END IF; < RETURN GETCPUINFOFROMAWR(CONTEXT, < GREATEST(NVL(L_BEGIN_SNAP, L_END_SNAP), < NVL(L_END_SNAP, L_BEGIN_SNAP)), < L_INPUT, TRUE); --- > SELECT XMLELEMENT("report", L_INPUT, > XMLELEMENT("cpuinfo", L_HISTORY)) > INTO L_REPORT > FROM SYS.DUAL; > RETURN L_REPORT; 1876a1944 > L_HISTORY XMLTYPE := NULL; 1877a1946 > L_HISTORY := GETCPUHISTORY(CONTEXT); 1879,1886c1948 < IF CONTEXT.MEMENABLE THEN < L_CPU := GETCPUINFOFROMMEMORY(CONTEXT, NULL, FALSE); < ELSE < L_CPU := GETCPUINFOFROMAWR(CONTEXT, NULL, NULL, FALSE); < IF L_CPU IS NULL THEN < L_CPU := GETCPUINFOFROMMEMORY(CONTEXT, NULL, FALSE); < END IF; < END IF; --- > L_CPU := GETCPUINFOFROMMEMORY(CONTEXT,NULL,FALSE,L_HISTORY); 1888c1950,1952 < L_CPU := GETCPUINFOFROMAWR(CONTEXT, NULL, NULL, FALSE); --- > SELECT XMLELEMENT("cpuinfo", L_HISTORY) > INTO L_CPU > FROM SYS.DUAL; 2226a2291,2292 > > GETDATABOUNDARY(CONTEXT); 2374c2440 < OR a.wait_class <> 'Idle') @DISK_PRED@ @AND_FG_ONLY@ @AND_INST_GVD@ --- > OR a.wait_class <> 'Idle') @AND_FG_ONLY@ @AND_INST_GVD@ 2399,2405d2464 < IF CONTEXT.DISKENABLE THEN < L_SQLTEXT := REPLACE(L_SQLTEXT, '@DISK_PRED@', < ' AND a.is_awr_sample = ''Y'' AND bitand(a.flags,128)=0 '); < ELSE < L_SQLTEXT := REPLACE(L_SQLTEXT, '@DISK_PRED@', NULL); < END IF; < 3473c3532,3533 < AND (CONTEXT.BEGINSNAPID IS NOT NULL) AND (CONTEXT.ENDSNAPID IS NOT NULL)) THEN --- > AND (CONTEXT.BEGINSNAPID IS NOT NULL) > AND (CONTEXT.ENDSNAPID IS NOT NULL)) THEN 3511c3571,3572 < L_TEXT := REPLACE(L_TEXT, '%con_dbid_to_id%', ',con_dbid_to_id(con_dbid) as con_id'); --- > L_TEXT := REPLACE(L_TEXT, '%con_dbid_to_id%', > ',con_dbid_to_id(con_dbid) as con_id'); 3513,3516c3574,3581 < IF CONTEXT.DISKENABLE THEN < L_TEXT := REPLACE(L_TEXT, '%con_id_pred%', ' AND m.con_dbid = n.con_dbid(+) '); < ELSE < L_TEXT := REPLACE(L_TEXT, '%con_id_pred%', ' AND m.con_id = n.con_id(+) '); --- > IF (CONTEXT.DISKENABLE > AND (CONTEXT.BEGINSNAPID IS NOT NULL) > AND (CONTEXT.ENDSNAPID IS NOT NULL)) THEN > L_TEXT := REPLACE(L_TEXT, '%con_id_pred%', > ' AND m.con_dbid = n.con_dbid(+) '); > ELSE > L_TEXT := REPLACE(L_TEXT, '%con_id_pred%', > ' AND m.con_id = n.con_id(+) '); 4019d4083 < 4699a4764,4769 > > > IF HISTOGRAM_ONLY THEN > GETDATABOUNDARY(CONTEXT); > END IF; > 5087a5158,5162 > > > > > 5139,5144c5214,5223 < IF NOT L_DATA_TYPE IN ('data','timepicker','histogram') THEN < RAISE_APPLICATION_ERROR(-20001, 'Invalid value for data_type: ' || DATA_TYPE); < END IF; < < IF NOT L_TIME_TYPE IN ('realtime','historical','incremental') THEN < RAISE_APPLICATION_ERROR(-20002, 'Invalid value for time_type: ' || TIME_TYPE); --- > > IF NOT L_DATA_TYPE IN > ('data','timepicker','histogram','version','awr','cpu') THEN > RAISE_APPLICATION_ERROR(-20001, 'Invalid value for data_type: ' > || DATA_TYPE); > END IF; > IF L_DATA_TYPE IN ('data','timepicker','histogram') AND > NOT L_TIME_TYPE IN ('realtime','historical','incremental') THEN > RAISE_APPLICATION_ERROR(-20002, 'Invalid value for time_type: ' > || TIME_TYPE); 5146a5226 > 5160c5240,5280 < --- > > > IF LOWER(DATA_TYPE) = 'version' THEN > SELECT XMLELEMENT("report",XMLATTRIBUTES( > SYS.DBMS_ASH.GETVERSION() AS "version" > )) > INTO L_RESULT > FROM SYS.DUAL; > RETURN L_RESULT; > END IF; > > > IF LOWER(DATA_TYPE) = 'cpu' THEN > RETURN SYS.DBMS_ASH.GETCPUINFO( > L_DBID, L_BEGIN_TIME_UTC, L_INSTANCE_NUMBER); > END IF; > > > IF LOWER(DATA_TYPE) = 'awr' THEN > IF L_DBID IS NULL > OR L_BEGIN_TIME_UTC IS NULL > OR L_END_TIME_UTC IS NULL THEN > RAISE_APPLICATION_ERROR(-20003, > 'Missing either dbid, begin_time_utc or end_time_utc arguments for "awr" API'); > END IF; > RETURN SYS.DBMS_ASH.GETAWRINFO( > L_DBID, L_BEGIN_TIME_UTC, L_END_TIME_UTC, L_INSTANCE_NUMBER); > END IF; > > > IF LOWER(TIME_TYPE) = 'increment' THEN > IF L_BEGIN_TIME_UTC IS NULL THEN > RAISE_APPLICATION_ERROR(-20003, > 'Missing begin_time_utc argument for "increment" time type'); > END IF; > IF L_BUCKET_SIZE IS NULL THEN > RAISE_APPLICATION_ERROR(-20003, > 'Missing bucket_size argument for "increment" time type'); > END IF; > END IF; > 5227c5347,5348 < INSTANCE_NUMBER IN NUMBER := NULL) --- > INSTANCE_NUMBER IN NUMBER := NULL, > IGNORE_CPU_HISTORY IN VARCHAR := 'n') 5231c5352,5353 < RETURN GETCPUINFOREPORT(DBID, OBSERVATIONTIME, INSTANCE_NUMBER); --- > RETURN GETCPUINFOREPORT(DBID, OBSERVATIONTIME, INSTANCE_NUMBER, > IGNORE_CPU_HISTORY); 5251c5373,5374 < , AWR_INFO IN VARCHAR2 := 'n') --- > , AWR_INFO IN VARCHAR2 := 'n' > , IGNORE_CPU_HISTORY IN VARCHAR := 'n') 5259c5382 < NVL(AWR_INFO,'n')); --- > NVL(AWR_INFO,'n'), NVL(IGNORE_CPU_HISTORY,'n')); 5346c5469,5470 < , AWR_INFO IN VARCHAR2 := 'n') --- > , AWR_INFO IN VARCHAR2 := 'n' > , IGNORE_CPU_HISTORY IN VARCHAR := 'n') 5355c5479,5480 < INSTANCE_NUMBER,'n',NVL(AWR_INFO,'n')); --- > INSTANCE_NUMBER,'n',NVL(AWR_INFO,'n'), > NVL(IGNORE_CPU_HISTORY,'n')); 5394c5519,5520 < , MINIMIZE_COST IN VARCHAR := 'n') --- > , MINIMIZE_COST IN VARCHAR := 'n' > , IGNORE_CPU_HISTORY IN VARCHAR := 'n') 5405c5531,5532 < VERBOSE_XML, INCLUDE_BG, INSTANCE_NUMBER, MINIMIZE_COST,'n'); --- > VERBOSE_XML, INCLUDE_BG, INSTANCE_NUMBER, > MINIMIZE_COST,'n',IGNORE_CPU_HISTORY); 5522c5649,5650 < , MINIMIZE_COST IN VARCHAR := 'n') --- > , MINIMIZE_COST IN VARCHAR := 'n' > , IGNORE_CPU_HISTORY IN VARCHAR := 'n') 5535c5663 < MINIMIZE_COST,'n'); --- > MINIMIZE_COST,'n',IGNORE_CPU_HISTORY); 5583c5711,5712 < , INSTANCE_NUMBER IN NUMBER := NULL) --- > , INSTANCE_NUMBER IN NUMBER := NULL > , IGNORE_CPU_HISTORY IN VARCHAR := 'n') 5589c5718,5719 < NVL(INCLUDE_BG,'n'), INSTANCE_NUMBER, 'n'); --- > NVL(INCLUDE_BG,'n'), INSTANCE_NUMBER, 'n', > NVL(IGNORE_CPU_HISTORY,'n')); 5648c5778,5779 < , INSTANCE_NUMBER IN NUMBER := NULL) --- > , INSTANCE_NUMBER IN NUMBER := NULL > , IGNORE_CPU_HISTORY IN VARCHAR := 'n') 5655c5786,5787 < NVL(INCLUDE_BG,'n'), INSTANCE_NUMBER, 'n'); --- > NVL(INCLUDE_BG,'n'), INSTANCE_NUMBER, 'n', > NVL(IGNORE_CPU_HISTORY,'n')); 5684c5816 < NVL(INCLUDE_BG,'n'), INSTANCE_NUMBER, NVL(MINIMIZE_COST,'n')); --- > NVL(INCLUDE_BG,'n'), INSTANCE_NUMBER, NVL(MINIMIZE_COST,'n'),'n'); 5753c5885 < NVL(MINIMIZE_COST,'n')); --- > NVL(MINIMIZE_COST,'n'),'n');
363c363 < ' (SELECT dbid, con_dbid, ' || --- > ' (SELECT /*+ NO_MERGE */ dbid, con_dbid, ' || 373,379c373,374 < 'pdb_instance i, ' || < SYS.DBMS_UMF_PROTECTED.KEUQQPAT_AWR_VN_DFLT_PAT || < 'snapshot s ' || < ' WHERE s.dbid = i.dbid ' || < ' AND s.instance_number = i.instance_number ' || < ' AND i.startup_time >= s.startup_time ' || < ' AND i.con_dbid <> 0 ' || --- > 'pdb_instance i ' || > ' WHERE i.con_dbid <> 0 ' ||
421a422,425 > > AI_MAX_STMTS_FOR_COMPILE CONSTANT NUMBER := 10000; > > 1032,1033c1036,1037 < CAN_CANCEL IN INTEGER, < CAN_INTERRUPT IN INTEGER --- > CAN_CANCEL IN PLS_INTEGER, > CAN_INTERRUPT IN PLS_INTEGER 1038,1039c1042,1043 < CAN_CANCEL OCINUMBER, CAN_CANCEL INDICATOR SB4, < CAN_INTERRUPT OCINUMBER, CAN_INTERRUPT INDICATOR SB4 --- > CAN_CANCEL SB4, CAN_CANCEL INDICATOR SB4, > CAN_INTERRUPT SB4, CAN_INTERRUPT INDICATOR SB4 1042a1047 > 3365,3367c3370,3374 < WHEN HT.OBJ# IS NULL AND < (BITAND(T.FLAGS, 16) = 0 OR < DBMS_STATS_INTERNAL.IS_STALE( --- > WHEN HT.OBJ# IS NULL AND > > BITAND(T.TRIGFLAG, 67108864) = 0 AND > (BITAND(T.FLAGS, 16) = 0 OR > DBMS_STATS_INTERNAL.IS_STALE( 3616,3617c3623,3624 < 'dbms_stats_internal.aggregate_index_stats(' || < FIXQ(DQ(OWN)) || ',' || FIXQ(DQ(IND)) || ')'); --- > 'begin dbms_stats_internal.aggregate_index_stats(' || > FIXQ(DQ(OWN)) || ',' || FIXQ(DQ(IND)) || '); end;'); 3620c3627 < 'dbms_stats.gather_index_stats(' || --- > 'begin dbms_stats.gather_index_stats(' || 3622c3629 < ', no_invalidate => true)'); --- > ', no_invalidate => true); end;'); 5531c5538 < (SELECT PO.SQL_ID_VC, PO.ATTR5, --- > (SELECT /*+ no_merge(po) no_merge(i) */ PO.SQL_ID_VC, PO.ATTR5, 5535c5542 < (SELECT/*+ no_merge no_push_pred */ OST.SQL_ID_VC, OST.ATTR5, --- > (SELECT/*+ no_push_pred */ OST.SQL_ID_VC, OST.ATTR5, 5568c5575 < (SELECT PO.SQL_ID_VC, PO.ATTR5 --- > (SELECT /*+ no_merge(po) no_merge(i) */ PO.SQL_ID_VC, PO.ATTR5 5570c5577 < (SELECT/*+ no_merge no_push_pred */ OST.SQL_ID_VC, OST.ATTR5, --- > (SELECT/*+ no_push_pred */ OST.SQL_ID_VC, OST.ATTR5, 5858,5863c5865,5870 < (SELECT F.NAME AS SQLSET_NAME, F.OWNER AS SQLSET_OWNER, < S.SQL_ID, < P.PLAN_HASH_VALUE, < C.ELAPSED_TIME, C.BUFFER_GETS, < C.EXECUTIONS, < EXTRACTVALUE(XMLTYPE(L.OTHER_XML), --- > (SELECT SSF.NAME AS SQLSET_NAME, SSF.OWNER AS SQLSET_OWNER, > SSS.SQL_ID, > SSP.PLAN_HASH_VALUE, > SSC.ELAPSED_TIME, SSC.BUFFER_GETS, > SSC.EXECUTIONS, > EXTRACTVALUE(XMLTYPE(SSPL.OTHER_XML), 5865,5882c5872,5889 < FROM WRI$_SQLSET_DEFINITIONS F, WRI$_SQLSET_STATEMENTS S, < WRI$_SQLSET_PLANS P,WRI$_SQLSET_MASK M, WRH$_SQLTEXT T, < WRI$_SQLSET_STATISTICS C, WRI$_SQLSET_PLAN_LINES L < WHERE F.ID = S.SQLSET_ID AND S.ID = P.STMT_ID < AND S.CON_DBID = P.CON_DBID < AND P.STMT_ID = C.STMT_ID < AND P.PLAN_HASH_VALUE = C.PLAN_HASH_VALUE < AND P.CON_DBID = C.CON_DBID < AND P.STMT_ID = M.STMT_ID < AND P.PLAN_HASH_VALUE = M.PLAN_HASH_VALUE < AND P.CON_DBID = M.CON_DBID < AND S.SQL_ID = T.SQL_ID < AND S.CON_DBID = T.CON_DBID < AND T.DBID = F.CON_DBID < AND P.STMT_ID=L.STMT_ID < AND P.PLAN_HASH_VALUE = L.PLAN_HASH_VALUE < AND P.CON_DBID = L.CON_DBID < AND L.OTHER_XML IS NOT NULL) S --- > FROM WRI$_SQLSET_DEFINITIONS SSF, WRI$_SQLSET_STATEMENTS SSS, > WRI$_SQLSET_PLANS SSP,WRI$_SQLSET_MASK SSM, WRH$_SQLTEXT ST, > WRI$_SQLSET_STATISTICS SSC, WRI$_SQLSET_PLAN_LINES SSPL > WHERE SSF.ID = SSS.SQLSET_ID AND SSS.ID = SSP.STMT_ID > AND SSS.CON_DBID = SSP.CON_DBID > AND SSP.STMT_ID = SSC.STMT_ID > AND SSP.PLAN_HASH_VALUE = SSC.PLAN_HASH_VALUE > AND SSP.CON_DBID = SSC.CON_DBID > AND SSP.STMT_ID = SSM.STMT_ID > AND SSP.PLAN_HASH_VALUE = SSM.PLAN_HASH_VALUE > AND SSP.CON_DBID = SSM.CON_DBID > AND SSS.SQL_ID = ST.SQL_ID > AND SSS.CON_DBID = ST.CON_DBID > AND ST.DBID = SSF.CON_DBID > AND SSP.STMT_ID=SSPL.STMT_ID > AND SSP.PLAN_HASH_VALUE = SSPL.PLAN_HASH_VALUE > AND SSP.CON_DBID = SSPL.CON_DBID > AND SSPL.OTHER_XML IS NOT NULL) S 6501c6508 < FROM DBA_INDEXES I, DBA_INDEX_USAGE U, DBA_OBJECTS DO --- > FROM DBA_INDEXES I, DBA_INDEX_USAGE U, DBA_OBJECTS DO, IND$ IB 6513a6521 > AND DO.OBJECT_ID = IB.OBJ# 6519a6528,6530 > > BITAND(IB.FLAGS, 536870912) > 0 > OR 7184c7195,7198 < IF (ELAPSED_SO_FAR >= AI_JOB_INTERVAL * 1000 * 1000) THEN --- > > > IF (ELAPSED_SO_FAR >= AI_JOB_INTERVAL * 1000 * 1000 OR > SQLCNT_COMPILE >= AI_MAX_STMTS_FOR_COMPILE) THEN 7187c7201 < --- >
11493a11494 > GOODLINK BOOLEAN; 11511a11513,11520 > > IF DBMS_DBFS_SFS_ADMIN.GET_PARAM('_dbfs_symlink_path_prefix') THEN > GOODLINK := DBMS_PDB_IS_VALID_PATH(LINK); > IF NOT GOODLINK THEN > LINK := ''; > RAISE DBMS_DBFS_CONTENT.UNSUPPORTED_OPERATION; > END IF; > END IF;
710a711,713 > EXCEP_DEADLOCK EXCEPTION; > I NUMBER; > PRAGMA EXCEPTION_INIT(EXCEP_DEADLOCK, -60); 715,716c718,734 < TRN :='truncate table sys.wri$_heatmap_top_tablespaces'; < EXECUTE IMMEDIATE TRN; --- > > > > FOR I IN 1..3 LOOP > BEGIN > TRN :='truncate table sys.wri$_heatmap_top_tablespaces'; > EXECUTE IMMEDIATE TRN; > EXIT; > EXCEPTION > WHEN EXCEP_DEADLOCK THEN > IF (I = 3) THEN > RAISE; > END IF; > WHEN OTHERS THEN > RAISE; > END; > END LOOP; 817a836,838 > EXCEP_DEADLOCK EXCEPTION; > I NUMBER; > PRAGMA EXCEPTION_INIT(EXCEP_DEADLOCK, -60); 819c840,855 < EXECUTE IMMEDIATE TRN; --- > > > FOR I IN 1..3 LOOP > BEGIN > EXECUTE IMMEDIATE TRN; > EXIT; > EXCEPTION > WHEN EXCEP_DEADLOCK THEN > IF (I = 3) THEN > RAISE; > END IF; > WHEN OTHERS THEN > RAISE; > END; > END LOOP; > 840c876,890 < EXECUTE IMMEDIATE TRN; --- > > > FOR I IN 1..3 LOOP > BEGIN > EXECUTE IMMEDIATE TRN; > EXIT; > EXCEPTION > WHEN EXCEP_DEADLOCK THEN > IF (I = 3) THEN > RAISE; > END IF; > WHEN OTHERS THEN > RAISE; > END; > END LOOP;
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '19.04.00.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '19.05.00.00'; 692c692 < NULL COMPLETION_TIME, --- > BDF.COMPLETION_TIME COMPLETION_TIME,
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '19.04.00.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '19.04.01.00';
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '19.03.01.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '19.03.02.00';
3618c3618,3621 < IF LENGTH(PREFIX) > 18 THEN --- > > > > IF LENGTH(PREFIX) > 20 THEN 3629c3632,3634 < IF LENGTH(RTRIM(CANON_PREFIX, '0123456789')) < LENGTH(CANON_PREFIX) THEN --- > > IF LENGTH(RTRIM(CANON_PREFIX, '0123456789')) < LENGTH(CANON_PREFIX) > OR LENGTH(CANON_PREFIX) > 18 THEN
43a44 > 56a58 > AWR_INFO IN VARCHAR2 := NULL, 109c111,112 < INSTANCE_NUMBER => INST_ID); --- > INSTANCE_NUMBER => INST_ID, > AWR_INFO => AWR_INFO); 118c121,122 < INSTANCE_NUMBER => INST_ID); --- > INSTANCE_NUMBER => INST_ID, > AWR_INFO => AWR_INFO); 129c133,134 < INSTANCE_NUMBER => INST_ID); --- > INSTANCE_NUMBER => INST_ID, > AWR_INFO => AWR_INFO);
8373a8374,8386 > > > > > > > > > > > > > 8375,8398c8388,8403 < SELECT B.EXECUTION_ID, < NVL(A.N_COUNT,0), < A.COMP_TIME < FROM < ( SELECT A.EXECUTION_ID, < COUNT(*) N_COUNT, < NVL(MAX(B.COMPLETION_TIME), SYSDATE) COMP_TIME < FROM SYS.ILM_EXECUTION$ A, < SYS.ILM_RESULTS$ B < WHERE EXECUTION_STATE = ILM_TASK_ACTIVE < AND A.EXECUTION_ID = B.EXECUTION_ID < AND B.JOB_STATUS NOT IN (ILMJOB_SUCCESS, < ILMJOB_FAILED, < ILMJOB_FAILED_REBUILD_DEP, < ILMJOB_STOPPED, < ILMJOB_CREATION_FAILED, < ILMJOB_STATE_OTHER) < GROUP BY A.EXECUTION_ID < )A, < ILM_EXECUTION$ B < WHERE B.EXECUTION_ID = A.EXECUTION_ID (+) < AND EXECUTION_STATE = ILM_TASK_ACTIVE < AND (ROWNUM <= N_TASKS < OR N_TASKS = ALL_UNRESOL_TASKS); --- > SELECT C.EXECUTION_ID, > (SELECT COUNT(*) N_COUNT FROM SYS.ILM_RESULTS$ A > WHERE A.EXECUTION_ID = C.EXECUTION_ID > AND A.JOB_STATUS NOT IN (ILMJOB_SUCCESS, > ILMJOB_FAILED, > ILMJOB_FAILED_REBUILD_DEP, > ILMJOB_STOPPED, > ILMJOB_CREATION_FAILED, > ILMJOB_STATE_OTHER)) N_COUNT, > (SELECT NVL(MAX(B.COMPLETION_TIME), SYSDATE) COMP_TIME > FROM SYS.ILM_RESULTS$ B > WHERE B.EXECUTION_ID = C.EXECUTION_ID) COMP_TIME > FROM SYS.ILM_EXECUTION$ C > WHERE C.EXECUTION_STATE = ILM_TASK_ACTIVE > AND (ROWNUM <= N_TASKS > OR N_TASKS = ALL_UNRESOL_TASKS);
10a11 > L_COMPRESS_XML VARCHAR2(2000) := 'n'; 23a25 > L_AWR_INFO VARCHAR2(2000) := 'n'; 39c41,42 < L_DBID := TO_NUMBER(DBMS_REPORT.GET_PARAM(L_PARAMS,'dbid',NULLABLE=>TRUE)); --- > L_DBID := TO_NUMBER(DBMS_REPORT.GET_PARAM(L_PARAMS,'dbid', > NULLABLE=>TRUE)); 73,74c76,81 < L_SHOW_SQL := NVL(DBMS_REPORT.GET_PARAM(L_PARAMS,'show_sql', NULLABLE=>TRUE), < 'n'); --- > L_SHOW_SQL := NVL(DBMS_REPORT.GET_PARAM(L_PARAMS,'show_sql', > NULLABLE=>TRUE), 'n'); > > > L_AWR_INFO := NVL(DBMS_REPORT.GET_PARAM(L_PARAMS,'awr_info', > NULLABLE=>TRUE), 'n'); 96a104 > AWR_INFO => L_AWR_INFO, 172a181,188 > END IF; > > > L_COMPRESS_XML := NVL(SYS.DBMS_REPORT.GET_PARAM(L_PARAMS, 'compress_xml', > NULLABLE=>TRUE), > 'n'); > IF LOWER(L_COMPRESS_XML) = 'y' THEN > L_REPORT_XML := DBMS_REPORT.TRANSFORM_REPORT_XML(L_REPORT_XML, 1);
5,6c5,11 < error_message, < status --- > case when e.error_message is null and e.status = 'FATAL ERROR' > then (select max(message) from dba_advisor_findings f > where f.task_id = e.task_id > and f.execution_name=f.execution_name > and f.type = 'ERROR') > else e.error_message end error_message, > decode(e.status, 'FATAL ERROR', 'STOPPED', e.status) status
21a22 > type INTNTAB is table of PLS_INTEGER;
2474c2474 < P_MAX_LENGTHS OUT NUMNTAB, --- > P_MAX_LENGTHS OUT INTNTAB, 2606c2606 < P_MAX_LENGTHS := NUMNTAB(); --- > P_MAX_LENGTHS := INTNTAB(); 2832c2832 < V_MAX_LENGTHS NUMNTAB; --- > V_MAX_LENGTHS INTNTAB; 2836,2838c2836,2838 < V_NUM_CHAR_COLS NUMBER := 0; < V_NUM_CHAR_COLS_LEN NUMBER := 0; < V_DEFAULT_SIZE NUMBER := 0; --- > V_NUM_CHAR_COLS PLS_INTEGER := 0; > V_NUM_CHAR_COLS_LEN PLS_INTEGER := 0; > V_DEFAULT_SIZE PLS_INTEGER := 0;
Useful Links:
- Download Assistant: MOS Note: 2118136.2
- 2019 October CPU: https://www.oracle.com/security-alerts/cpuoct2019.html