This post is also available in: English
Oracle April 2020 Critical Patch Advisory changed objects performed by each database patch.
For more details and the catalog, check the main post: Dissecting 200414 BP, PSU, RU and RUR
What exactly changed for each?
(click to see detailed line changes)
- 12.1.0.2
- DVSYS.DBMS_MACADM - PACKAGE 12cR1 (BP)
- DVSYS.DBMS_MACADM - PACKAGE BODY 12cR1 (BP)
- DVSYS.DBA_DV_PREPROCESSOR_AUTH - VIEW 12cR1 (BP)
- SYS.DBMS_SQLDIAG_INTERNAL - PACKAGE 12cR1 (BP)
- SYS.PRVT_ILM - PACKAGE 12cR1 (BP)
- SYS.DBMS_QOPATCH - PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_REDEFINITION - PACKAGE BODY 12cR1 (BP)
- SYS.DBMS_SQLDIAG_INTERNAL - PACKAGE BODY 12cR1 (BP)
- SYS.LOGMNR_DICT_CACHE - PACKAGE BODY 12cR1 (BP)
- SYS.PRVT_ILM - PACKAGE BODY 12cR1 (BP)
- SYS.SYS_PLSQL_1EE1A140_153_1 - TYPE 12cR1 (BP)
- SYS.SYS_PLSQL_1EE1A140_184_1 - TYPE 12cR1 (BP)
- SYS.SYS_PLSQL_1EE1A140_DUMMY_1 - TYPE 12cR1 (BP)
- SYS.DBA_ILMOBJECTS - VIEW 12cR1 (BP)
- SYS.USER_ILMOBJECTS - VIEW 12cR1 (BP)
- 12.2.0.1
- 18.0.0.0
- SYS.DBMS_BACKUP_RESTORE - PACKAGE 18c (18.9RUR)
- SYS.DBMS_BACKUP_RESTORE - PACKAGE 18c (18.8RUR)
- SYS.DBMS_BACKUP_RESTORE - PACKAGE 18c (RU)
- SYS.DBMS_REGISTRY - PACKAGE 18c (RU)
- SYS.DBMS_REGISTRY - PACKAGE 18c (18.8RUR)
- SYS.DBMS_REGISTRY - PACKAGE 18c (18.9RUR)
- SYS.DBMS_RCVMAN - PACKAGE BODY 18c (18.8RUR)
- SYS.DBMS_RCVMAN - PACKAGE BODY 18c (RU)
- SYS.DBMS_RCVMAN - PACKAGE BODY 18c (18.9RUR)
- SYS.DBMS_FEATURE_JSON - PROCEDURE 18c (RU)
- SYS.CDB_WORKLOAD_CAPTURES - VIEW 18c (RU)
- SYS.CDB_WORKLOAD_REPLAY_FILTER_SET - VIEW 18c (RU)
- SYS.DBA_WORKLOAD_CAPTURES - VIEW 18c (RU)
- SYS.DBA_WORKLOAD_REPLAY_FILTER_SET - VIEW 18c (RU)
- 19.0.0.0
- AUDSYS.DBMS_AUDIT_MGMT - PACKAGE BODY 19c (RU)
- CTXSYS.DRIXMD - PACKAGE 19c (RU)
- CTXSYS.DRIPARSE - PACKAGE BODY 19c (RU)
- CTXSYS.DRIREPM - PACKAGE BODY 19c (RU)
- CTXSYS.DRIXMD - PACKAGE BODY 19c (RU)
- CTXSYS.DRVDDL - PACKAGE BODY 19c (RU)
- DVSYS.DBMS_MACADM - PACKAGE BODY 19c (RU)
- LBACSYS.LBAC_POLICY_ADMIN - PACKAGE 19c (RU)
- LBACSYS.LBAC_POLICY_ADMIN_INT - PACKAGE 19c (RU)
- LBACSYS.SA_USER_ADMIN - PACKAGE 19c (RU)
- LBACSYS.SA_USER_ADMIN_INT - PACKAGE 19c (RU)
- LBACSYS.LBAC_POLICY_ADMIN - PACKAGE BODY 19c (RU)
- LBACSYS.LBAC_POLICY_ADMIN_INT - PACKAGE BODY 19c (RU)
- LBACSYS.SA_SYSDBA - PACKAGE BODY 19c (RU)
- LBACSYS.SA_USER_ADMIN - PACKAGE BODY 19c (RU)
- LBACSYS.SA_USER_ADMIN_INT - PACKAGE BODY 19c (RU)
- MDSYS.SDO_3GL - PACKAGE 19c (RU)
- MDSYS.RDF_APIS - PACKAGE BODY 19c (RU)
- MDSYS.RDF_APIS_INTERNAL - PACKAGE BODY 19c (RU)
- MDSYS.SDO_GEOM - PACKAGE BODY 19c (RU)
- MDSYS.SDO_RDF - PACKAGE BODY 19c (RU)
- MDSYS.SDO_RDF_INTERNAL - PACKAGE BODY 19c (RU)
- MDSYS.SDO_UTIL - PACKAGE BODY 19c (RU)
- MDSYS.SDO_RDF_TRIPLE_S - TYPE BODY 19c (RU)
- SYS.DBMS_APP_CONT_ADMIN - PACKAGE 19c (RU)
- SYS.DBMS_AUTOTASK_PRVT - PACKAGE 19c (RU)
- SYS.DBMS_BACKUP_RESTORE - PACKAGE 19c (19.6RUR)
- SYS.DBMS_BACKUP_RESTORE - PACKAGE 19c (RU)
- SYS.DBMS_BACKUP_RESTORE - PACKAGE 19c (19.5RUR)
- SYS.DBMS_HADOOP_INTERNAL - PACKAGE 19c (RU)
- SYS.DBMS_JSON0 - PACKAGE 19c (RU)
- SYS.DBMS_REDACT_INT - PACKAGE 19c (RU)
- SYS.DBMS_REGISTRY - PACKAGE 19c (RU)
- SYS.DBMS_REGISTRY - PACKAGE 19c (19.6RUR)
- SYS.DBMS_REGISTRY - PACKAGE 19c (19.5RUR)
- SYS.DBMS_REPORT - PACKAGE 19c (RU)
- SYS.DBMS_RLS_INT - PACKAGE 19c (RU)
- SYS.DBMS_SQLTUNE_UTIL2 - PACKAGE 19c (RU)
- SYS.DBMS_SWRF_REPORT_INTERNAL - PACKAGE 19c (RU)
- SYS.KUPU$UTILITIES_INT - PACKAGE 19c (RU)
- SYS.PRVTEMX_PERF - PACKAGE 19c (RU)
- SYS.PRVT_ASH_OMX - PACKAGE 19c (RU)
- SYS.PRVT_AWR_VIEWER - PACKAGE 19c (RU)
- SYS.XS_DATA_SECURITY_INT - PACKAGE 19c (RU)
- SYS.XS_DIAG_INT - PACKAGE 19c (RU)
- SYS.DBMS_APP_CONT_ADMIN - PACKAGE BODY 19c (RU)
- SYS.DBMS_AUTOTASK_PRVT - PACKAGE BODY 19c (RU)
- SYS.DBMS_AUTO_INDEX_INTERNAL - PACKAGE BODY 19c (RU)
- SYS.DBMS_AUTO_REPORT - PACKAGE BODY 19c (RU)
- SYS.DBMS_HADOOP - PACKAGE BODY 19c (RU)
- SYS.DBMS_HADOOP_INTERNAL - PACKAGE BODY 19c (RU)
- SYS.DBMS_JSON0 - PACKAGE BODY 19c (RU)
- SYS.DBMS_PART - PACKAGE BODY 19c (RU)
- SYS.DBMS_PERF - PACKAGE BODY 19c (RU)
- SYS.DBMS_RCVMAN - PACKAGE BODY 19c (19.5RUR)
- SYS.DBMS_RCVMAN - PACKAGE BODY 19c (RU)
- SYS.DBMS_RCVMAN - PACKAGE BODY 19c (19.6RUR)
- SYS.DBMS_REPORT - PACKAGE BODY 19c (RU)
- SYS.DBMS_RLS - PACKAGE BODY 19c (RU)
- SYS.DBMS_RLS_INT - PACKAGE BODY 19c (RU)
- SYS.DBMS_SPM - PACKAGE BODY 19c (RU)
- SYS.DBMS_SQLTCB_INTERNAL - PACKAGE BODY 19c (RU)
- SYS.DBMS_SQLTUNE_UTIL2 - PACKAGE BODY 19c (RU)
- SYS.DBMS_SWRF_REPORT_INTERNAL - PACKAGE BODY 19c (RU)
- SYS.KUPF$FILE - PACKAGE BODY 19c (RU)
- SYS.KUPU$UTILITIES_INT - PACKAGE BODY 19c (RU)
- SYS.KUPW$WORKER - PACKAGE BODY 19c (RU)
- SYS.PRVTEMX_PERF - PACKAGE BODY 19c (RU)
- SYS.PRVTEMX_RSRCMGR - PACKAGE BODY 19c (RU)
- SYS.PRVT_ASH_OMX - PACKAGE BODY 19c (RU)
- SYS.PRVT_AWR_VIEWER - PACKAGE BODY 19c (RU)
- SYS.PRVT_EMX - PACKAGE BODY 19c (RU)
- SYS.XS_DATA_SECURITY - PACKAGE BODY 19c (RU)
- SYS.XS_DATA_SECURITY_INT - PACKAGE BODY 19c (RU)
- SYS.XS_DIAG - PACKAGE BODY 19c (RU)
- SYS.XS_DIAG_INT - PACKAGE BODY 19c (RU)
- SYS.XOQ_VALIDATE - PROCEDURE 19c (RU)
- SYS.WRI$_REPT_ASH_OMX - TYPE BODY 19c (RU)
- SYS.WRI$_REPT_AWRV - TYPE BODY 19c (RU)
- SYS.WRI$_REPT_SESSION - TYPE BODY 19c (RU)
- SYS.CDB_WORKLOAD_CAPTURES - VIEW 19c (RU)
- SYS.DBA_APP_VERSIONS - VIEW 19c (RU)
- SYS.DBA_WORKLOAD_CAPTURES - VIEW 19c (RU)
- SYS.DBA_WORKLOAD_REPLAYS - VIEW 19c (RU)
- XDB.DBMS_JSON - PACKAGE 19c (RU)
- XDB.DBMS_JSON - PACKAGE BODY 19c (RU)
Changed Objects
P.S:
> = Added Lines
< = Removed Lines
12.1.0.2
1228a1229,1239 > /* APIs to authorize a user to execute PREPROCESSOR directive in external > * tables. > */ > PROCEDURE authorize_preprocessor > ( uname IN VARCHAR2 > ); > > PROCEDURE unauthorize_preprocessor > ( uname IN VARCHAR2 > ); >
2419a2420,2431 > > > PROCEDURE AUTHORIZE_PREPROCESSOR( UNAME IN VARCHAR2 ) IS > BEGIN > AUTHORIZE_DV_AUTH('PREPROCESSOR', UNAME, NULL, NULL, NULL); > END; > > PROCEDURE UNAUTHORIZE_PREPROCESSOR( UNAME IN VARCHAR2 ) IS > BEGIN > REVOKE_DV_AUTH('PREPROCESSOR', UNAME, NULL, NULL, NULL); > END; >
0a1,5 > SELECT > u1.name > FROM dvsys.dv_auth$ da, sys.user$ u1 > WHERE da.grant_type = 'PREPROCESSOR' and da.grantee_id = u1.user# >
7a8 > 8a10,12 > ERR_INCID_INVALID CONSTANT NUMBER := -56950; > ERR_INVALID_SQLID CONSTANT NUMBER := -56975; > 67a72,73 > > FUNCTION CLOB_TO_SQLPROF_ATTR(CL CLOB) RETURN SQLPROF_ATTR; 72c78,96 < HINT_TEXT IN VARCHAR2, --- > HINT_TEXT IN CLOB, > NAME IN VARCHAR2 := NULL, > DESCRIPTION IN VARCHAR2 := NULL, > CATEGORY IN VARCHAR2 := 'DEFAULT', > VALIDATE IN BOOLEAN := TRUE); > > > PROCEDURE I_CREATE_HINTSET( > SQL_ID IN VARCHAR2, > HINT_TEXT IN CLOB, > NAME IN VARCHAR2 := NULL, > DESCRIPTION IN VARCHAR2 := NULL, > CATEGORY IN VARCHAR2 := 'DEFAULT', > VALIDATE IN BOOLEAN := TRUE); > > > PROCEDURE I_CREATE_PATCH( > SQL_ID IN VARCHAR2, > HINT_TEXT IN CLOB, 81c105 < HINT_TEXT IN VARCHAR2, --- > HINT_TEXT IN CLOB,
36c36,39 < --- > > DICT_ROW_LEVEL_LOCKING CONSTANT NUMBER := 32; > ROW_LVL_LOCKING_PREFIX CONSTANT VARCHAR2(20) := ' ROW LEVEL LOCKING '; >
490a491,496 > > EV_TIMEOUT BINARY_INTEGER := 18079311; > LV_VALUE BINARY_INTEGER := 120; > > TIMEOUT_VAL INTEGER := 120; > 639a646,659 > DBMS_SYSTEM.READ_EV(EV_TIMEOUT, LV_VALUE); > > > IF LV_VALUE <= 0 THEN > TIMEOUT_VAL := 120; > ELSIF LV_VALUE > 1800 THEN > TIMEOUT_VAL := 1800; > ELSE > TIMEOUT_VAL := LV_VALUE; > END IF; > > IF DO_DEBUG THEN > DBMS_OUTPUT.PUT_LINE('run_job timeout set to =' || LV_VALUE || 'timeout =' || TIMEOUT_VAL); > END IF; 649c669 < IF JWTIME > 120 THEN --- > IF JWTIME > TIMEOUT_VAL THEN 709c729 < || ' time is more than 120Secs'); --- > || ' time is more than' || TIMEOUT_VAL ||' Secs'); 759d778 < 1456a1476 > PRAGMA AUTONOMOUS_TRANSACTION; 1507a1528,1529 > > COMMIT;
54a55,57 > CONS_REDEF_TABLE_API CONSTANT PLS_INTEGER := 1; > > 104a108,109 > > 110c115,116 < CONT_ERR IN BOOLEAN) IS --- > CONT_ERR IN BOOLEAN, > CALLER_FLAGS IN PLS_INTEGER) IS 121c127,128 < CONT_ERR SB1, CONT_ERR INDICATOR SB2) --- > CONT_ERR SB1, CONT_ERR INDICATOR SB2, > CALLER_FLAGS UB4, CALLER_FLAGS INDICATOR SB2) 2922a2930,2993 > PROCEDURE FINISH_REDEF_TABLE_INT(UNAME IN VARCHAR2, > ORIG_TABLE IN VARCHAR2, > INT_TABLE IN VARCHAR2, > PART_NAME IN VARCHAR2 := NULL, > DML_LOCK_TIMEOUT IN PLS_INTEGER := NULL, > CONTINUE_AFTER_ERRORS IN BOOLEAN := FALSE, > CALLER_FLAGS IN PLS_INTEGER := 0) IS > NUM_PARTS BINARY_INTEGER; > TMP_PARTS DBMS_UTILITY.UNCL_ARRAY; > NUM_ITABS BINARY_INTEGER; > TMP_ITABS DBMS_UTILITY.UNCL_ARRAY; > CANON_UNAME IDENS; > CANON_ORIGTAB IDENS; > CANON_INTTAB IDENS; > CANON_PARTNM IDENS; > BEGIN > COMMIT WORK; > > > IF (UNAME IS NULL) OR (ORIG_TABLE IS NULL) OR (INT_TABLE IS NULL) THEN > DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(INVALID_ARG_ERROR_NUM); > END IF; > > DBMS_UTILITY.COMMA_TO_TABLE(INT_TABLE, NUM_ITABS, TMP_ITABS); > CANON_UNAME(1) := DBMS_SNAP_INTERNAL.CANONICALIZE_IDENTIFIER(UNAME); > CANON_ORIGTAB(1) := DBMS_SNAP_INTERNAL.CANONICALIZE_IDENTIFIER(ORIG_TABLE); > > FOR I IN 1..NUM_ITABS LOOP > CANON_INTTAB(I) := DBMS_SNAP_INTERNAL.CANONICALIZE_IDENTIFIER(TMP_ITABS(I)); > END LOOP; > > IF (PART_NAME IS NOT NULL) THEN > DBMS_UTILITY.COMMA_TO_TABLE(PART_NAME, NUM_PARTS, TMP_PARTS); > IF (NUM_ITABS != NUM_PARTS) THEN > DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(INVALID_ARG_ERROR_NUM); > END IF; > FOR I IN 1..NUM_PARTS LOOP > CANON_PARTNM(I) := DBMS_SNAP_INTERNAL.CANONICALIZE_IDENTIFIER(TMP_PARTS(I)); > END LOOP; > ELSE > CANON_PARTNM(1) := NULL; > END IF; > > > > IF (DML_LOCK_TIMEOUT > 1000000 OR > DML_LOCK_TIMEOUT < 0) THEN > DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(INVALID_DML_TIMEOUT_ERROR_NUM); > END IF; > > FINISH_REDEF_INT(CANON_UNAME, CANON_ORIGTAB, CANON_INTTAB, CANON_PARTNM, > DML_LOCK_TIMEOUT, CONTINUE_AFTER_ERRORS, CALLER_FLAGS); > > END; > > > > > > > > > > 2983a3055 > CALLERFLAG PLS_INTEGER := CONS_REDEF_TABLE_API; 3472c3544,3545 < FINISH_REDEF_TABLE(UNAME, TNAME, CANON_INAME); --- > FINISH_REDEF_TABLE_INT(UNAME, TNAME, CANON_INAME, NULL, NULL, FALSE, > CALLERFLAG); 3623a3697,3698 > > 3627c3702 < PART_NAME IN VARCHAR2 := NULL, --- > PART_NAME IN VARCHAR2 := NULL, 3630,3637d3704 < NUM_PARTS BINARY_INTEGER; < TMP_PARTS DBMS_UTILITY.UNCL_ARRAY; < NUM_ITABS BINARY_INTEGER; < TMP_ITABS DBMS_UTILITY.UNCL_ARRAY; < CANON_UNAME IDENS; < CANON_ORIGTAB IDENS; < CANON_INTTAB IDENS; < CANON_PARTNM IDENS; 3639,3675c3706,3708 < COMMIT WORK; < < < IF (UNAME IS NULL) OR (ORIG_TABLE IS NULL) OR (INT_TABLE IS NULL) THEN < DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(INVALID_ARG_ERROR_NUM); < END IF; < < DBMS_UTILITY.COMMA_TO_TABLE(INT_TABLE, NUM_ITABS, TMP_ITABS); < CANON_UNAME(1) := DBMS_SNAP_INTERNAL.CANONICALIZE_IDENTIFIER(UNAME); < CANON_ORIGTAB(1) := DBMS_SNAP_INTERNAL.CANONICALIZE_IDENTIFIER(ORIG_TABLE); < < FOR I IN 1..NUM_ITABS LOOP < CANON_INTTAB(I) := DBMS_SNAP_INTERNAL.CANONICALIZE_IDENTIFIER(TMP_ITABS(I)); < END LOOP; < < IF (PART_NAME IS NOT NULL) THEN < DBMS_UTILITY.COMMA_TO_TABLE(PART_NAME, NUM_PARTS, TMP_PARTS); < IF (NUM_ITABS != NUM_PARTS) THEN < DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(INVALID_ARG_ERROR_NUM); < END IF; < FOR I IN 1..NUM_PARTS LOOP < CANON_PARTNM(I) := DBMS_SNAP_INTERNAL.CANONICALIZE_IDENTIFIER(TMP_PARTS(I)); < END LOOP; < ELSE < CANON_PARTNM(1) := NULL; < END IF; < < < < IF (DML_LOCK_TIMEOUT > 1000000 OR < DML_LOCK_TIMEOUT < 0) THEN < DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(INVALID_DML_TIMEOUT_ERROR_NUM); < END IF; < < FINISH_REDEF_INT(CANON_UNAME, CANON_ORIGTAB, CANON_INTTAB, CANON_PARTNM, < DML_LOCK_TIMEOUT, CONTINUE_AFTER_ERRORS); < --- > FINISH_REDEF_TABLE_INT(UNAME, ORIG_TABLE, INT_TABLE, PART_NAME, > DML_LOCK_TIMEOUT, CONTINUE_AFTER_ERRORS, > 0);
189a190,238 > > > > > > > > > > > > > > > > > FUNCTION CLOB_TO_SQLPROF_ATTR(CL CLOB) RETURN SQLPROF_ATTR > IS > SQLPROF_V SQLPROF_ATTR; > OFFSET INTEGER; > BUF_500 VARCHAR2(500 CHAR); > BUFLEN INTEGER; > BEGIN > IF CL IS NULL THEN > RETURN NULL; > END IF; > > SQLPROF_V := SQLPROF_ATTR(); > OFFSET := 1; > > LOOP > BUF_500 := DBMS_LOB.SUBSTR(CL, 500, OFFSET); > BUFLEN := LENGTH(BUF_500); > > IF (BUFLEN > 0) THEN > SQLPROF_V.EXTEND(1); > SQLPROF_V(SQLPROF_V.COUNT) := BUF_500; > END IF; > > > EXIT WHEN (BUFLEN < 500 OR BUFLEN IS NULL); > > > OFFSET := OFFSET + BUFLEN; > END LOOP; > > RETURN SQLPROF_V; > > END CLOB_TO_SQLPROF_ATTR; 196c245 < HINT_TEXT IN VARCHAR2, --- > HINT_TEXT IN CLOB, 212c261 < HS := SYS.SQLPROF_ATTR(HINT_TEXT); --- > HS := CLOB_TO_SQLPROF_ATTR(HINT_TEXT); 226a276,322 > PROCEDURE I_CREATE_HINTSET( > SQL_ID IN VARCHAR2, > HINT_TEXT IN CLOB, > NAME IN VARCHAR2 := NULL, > DESCRIPTION IN VARCHAR2 := NULL, > CATEGORY IN VARCHAR2 := 'DEFAULT', > VALIDATE IN BOOLEAN := TRUE) > IS > SQL_TEXT CLOB; > GETSQLTXTQ VARCHAR2(150); > BEGIN > > COMMIT; > > > DBMS_SMB.CHECK_SMB_PRIV; > > > BEGIN > IF SQL_ID IS NOT NULL THEN > GETSQLTXTQ := 'select sql_fulltext from sys.v$sql ' || > 'where upper(sql_id) = upper(:sqlid) and '|| > ' rownum = 1 '; > EXECUTE IMMEDIATE GETSQLTXTQ INTO SQL_TEXT USING SQL_ID; > ELSE > DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR( > SYS.DBMS_SQLDIAG_INTERNAL.ERR_INCID_INVALID); > END IF; > EXCEPTION > WHEN NO_DATA_FOUND THEN > DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR( > SYS.DBMS_SQLDIAG_INTERNAL.ERR_INVALID_SQLID); > WHEN OTHERS THEN > RAISE; > END; > > I_CREATE_HINTSET (SQL_TEXT => SQL_TEXT, > HINT_TEXT => HINT_TEXT, > NAME => NAME, > DESCRIPTION=> DESCRIPTION, > CATEGORY=> CATEGORY, > VALIDATE => VALIDATE); > END; > > > > 229c325 < HINT_TEXT IN VARCHAR2, --- > HINT_TEXT IN CLOB, 245c341 < HS := SYS.SQLPROF_ATTR(HINT_TEXT); --- > HS := CLOB_TO_SQLPROF_ATTR(HINT_TEXT); 256a353,399 > END; > > > > > PROCEDURE I_CREATE_PATCH( > SQL_ID IN VARCHAR2, > HINT_TEXT IN CLOB, > NAME IN VARCHAR2 := NULL, > DESCRIPTION IN VARCHAR2 := NULL, > CATEGORY IN VARCHAR2 := 'DEFAULT', > VALIDATE IN BOOLEAN := TRUE) > IS > SQL_TEXT CLOB; > GETSQLTXTQ VARCHAR2(150); > BEGIN > > COMMIT; > > > DBMS_SMB.CHECK_SMB_PRIV; > > > BEGIN > IF SQL_ID IS NOT NULL THEN > GETSQLTXTQ := 'select sql_fulltext from sys.v$sql ' || > 'where upper(sql_id) = upper(:sqlid) and '|| > ' rownum = 1'; > EXECUTE IMMEDIATE GETSQLTXTQ INTO SQL_TEXT USING SQL_ID; > ELSE > DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR( > SYS.DBMS_SQLDIAG_INTERNAL.ERR_INCID_INVALID); > END IF; > EXCEPTION > WHEN NO_DATA_FOUND THEN > DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR( > SYS.DBMS_SQLDIAG_INTERNAL.ERR_INVALID_SQLID); > WHEN OTHERS THEN > RAISE; > END; > > I_CREATE_PATCH (SQL_TEXT => SQL_TEXT, > HINT_TEXT => HINT_TEXT, > NAME => NAME, > DESCRIPTION=> DESCRIPTION, > CATEGORY=> CATEGORY, > VALIDATE => VALIDATE);
128a129 > 134a136,138 > > DUPLICATE_FOUND BOOLEAN := FALSE; > 136,139c140,167 < INSERT INTO SYSTEM.LOGMNRC_CONCOL_GG ( < LOGMNR_UID, CON#, INTCOL#, POS#, SPARE1, COMMIT_SCN) VALUES ( < LM_LOGMNR_UID, LM_CON#, LM_INTCOL#, LM_POS#, LM_COLFLAGS, < LM_COMMIT_SCN); --- > BEGIN > INSERT INTO SYSTEM.LOGMNRC_CONCOL_GG ( > LOGMNR_UID, CON#, INTCOL#, POS#, SPARE1, COMMIT_SCN) VALUES ( > LM_LOGMNR_UID, LM_CON#, LM_INTCOL#, LM_POS#, LM_COLFLAGS, > LM_COMMIT_SCN); > EXCEPTION > WHEN DUP_VAL_ON_INDEX THEN > DUPLICATE_FOUND := TRUE; > END; > > > > > > > > > IF (DUPLICATE_FOUND = TRUE) THEN > UPDATE SYSTEM.LOGMNRC_CONCOL_GG > SET POS# = LM_POS#, > SPARE1 = LM_COLFLAGS, > SPARE2 = NULL, > SPARE3 = NULL > WHERE LOGMNR_UID = LM_LOGMNR_UID > AND CON# = LM_CON# > AND INTCOL# = LM_INTCOL# > AND COMMIT_SCN = LM_COMMIT_SCN; > END IF; 156a185,189 > > > > > 172,173c205 < CURSOR CONS_C (C_LOGMNR_UID IN NUMBER, C_BASEOBJV# IN NUMBER, < C_BASEOBJ# IN NUMBER) IS --- > CURSOR CONS_C (C_LOGMNR_UID IN NUMBER, C_BASEOBJ# IN NUMBER) IS 191,192c223 < FROM SYSTEM.LOGMNR_USER$ U, < SYSTEM.LOGMNR_CDEF$ CD, --- > FROM SYSTEM.LOGMNR_CDEF$ CD, 194d224 < SYSTEM.LOGMNR_OBJ$ O, 198,199c228 < U.LOGMNR_UID = C_LOGMNR_UID < AND CD.LOGMNR_UID = C_LOGMNR_UID --- > CD.LOGMNR_UID = C_LOGMNR_UID 201d229 < AND O.LOGMNR_UID = C_LOGMNR_UID 204c232 < AND O.OBJ# = C_BASEOBJ# --- > AND CD.OBJ# = C_BASEOBJ# 206d233 < AND O.OWNER# = U.USER# 212,213c239 < AND CD.OBJ# = O.OBJ# < ORDER BY NAME, POSITION; --- > ORDER BY CON#, POSITION; 215,217c241,243 < CURRENT_CON_NAME VARCHAR2(128); < LM_FLAGS NUMBER; < LM_CON# NUMBER; --- > CURRENT_CON_CON# NUMBER; > LM_FLAGS NUMBER; > LM_CON# NUMBER; 219,221c245,249 < LM_CON_NAME VARCHAR2(128); < LM_COMMIT_SCN NUMBER; < TRACE_LEVEL NUMBER; --- > LM_CON_CON# NUMBER; > LM_COMMIT_SCN NUMBER; > TRACE_LEVEL NUMBER; > AS_OF_SCN NUMBER; > IS_DML_EVENT NUMBER; 226c254 < CURRENT_CON_NAME := ' '; --- > CURRENT_CON_CON# := NULL; 235c263 < FOR SEL_REC IN CONS_C (LM_LOGMNR_UID, LM_BASEOBJV#,LM_BASEOBJ#) --- > FOR SEL_REC IN CONS_C (LM_LOGMNR_UID, LM_BASEOBJ#) 237c265 < LM_CON_NAME := SEL_REC.NAME; --- > LM_CON_CON# := SEL_REC.CON#; 242c270,271 < IF CURRENT_CON_NAME <> LM_CON_NAME THEN --- > IF (CURRENT_CON_CON# <> LM_CON_CON#) OR > (CURRENT_CON_CON# IS NULL) THEN 256c285 < CURRENT_CON_NAME := LM_CON_NAME; --- > CURRENT_CON_CON# := LM_CON_CON#; 258c287,288 < ':con_name='||CURRENT_CON_NAME|| --- > ':con_name='||SEL_REC.NAME|| > ':con_con#='||CURRENT_CON_CON#|| 397a428 > 403a435,437 > > DUPLICATE_FOUND BOOLEAN := FALSE; > 405,409c439,448 < INSERT INTO SYSTEM.LOGMNRC_INDCOL_GG ( < LOGMNR_UID, OBJ#, INTCOL#, POS#, SPARE1, COMMIT_SCN < ) VALUES ( < LM_LOGMNR_UID, LM_INDEX_OBJ#, LM_INTCOL#, < LM_POS#, LM_COLFLAGS, LM_COMMIT_SCN); --- > BEGIN > INSERT INTO SYSTEM.LOGMNRC_INDCOL_GG ( > LOGMNR_UID, OBJ#, INTCOL#, POS#, SPARE1, COMMIT_SCN > ) VALUES ( > LM_LOGMNR_UID, LM_INDEX_OBJ#, LM_INTCOL#, > LM_POS#, LM_COLFLAGS, LM_COMMIT_SCN); > EXCEPTION > WHEN DUP_VAL_ON_INDEX THEN > DUPLICATE_FOUND := TRUE; > END; 410a450,471 > > > > > > > > > > > IF (DUPLICATE_FOUND = TRUE) THEN > UPDATE SYSTEM.LOGMNRC_INDCOL_GG > SET POS# = LM_POS#, > SPARE1 = LM_COLFLAGS, > SPARE2 = NULL, > SPARE3 = NULL > WHERE LOGMNR_UID = LM_LOGMNR_UID > AND OBJ# = LM_INDEX_OBJ# > AND INTCOL# = LM_INTCOL# > AND COMMIT_SCN = LM_COMMIT_SCN; > END IF; > 426a488,496 > > > > > > > > > 481c551 < ORDER BY NAME, POSITION; --- > ORDER BY INDEX_OBJ#, POSITION; 483,484c553,554 < CURRENT_IND_NAME VARCHAR2(128); < LM_FLAGS NUMBER; --- > CURRENT_IND_OBJ# NUMBER; > LM_FLAGS NUMBER; 486,488c556,558 < LM_IND_NAME VARCHAR2(128); < LM_COMMIT_SCN NUMBER; < TRACE_LEVEL NUMBER; --- > LM_IND_OBJ# NUMBER; > LM_COMMIT_SCN NUMBER; > TRACE_LEVEL NUMBER; 493c563 < CURRENT_IND_NAME := ' '; --- > CURRENT_IND_OBJ# := NULL; 504c574 < LM_IND_NAME := SEL_REC.NAME; --- > LM_IND_OBJ# := SEL_REC.INDEX_OBJ#; 507,508c577,578 < 'save_indexes:old='||CURRENT_IND_NAME||':new='|| < LM_IND_NAME); --- > 'save_indexes:old obj#='||CURRENT_IND_OBJ# > ||':new obj#='||LM_IND_OBJ#); 513c583,584 < IF CURRENT_IND_NAME <> LM_IND_NAME THEN --- > IF (CURRENT_IND_OBJ# <> LM_IND_OBJ#) OR > (CURRENT_IND_OBJ# IS NULL) THEN 515c586 < SEL_REC.INDEX_OBJ#, --- > LM_IND_OBJ#, 517c588 < LM_IND_NAME, --- > SEL_REC.NAME, 527c598 < CURRENT_IND_NAME := LM_IND_NAME; --- > CURRENT_IND_OBJ# := LM_IND_OBJ#; 530c601,602 < ':con_name='||CURRENT_IND_NAME|| --- > ':ind_name='||SEL_REC.NAME|| > ':ind_obj#='||CURRENT_IND_OBJ#||
3420c3420 < --- > 3434a3435,3442 > > IF(BITAND(V_ILM_OBJPOLICY_INFO.FLAG, > DICT_ROW_LEVEL_LOCKING) = > DICT_ROW_LEVEL_LOCKING) > THEN > V_COMP_CLAUSE := V_COMP_CLAUSE || > ROW_LVL_LOCKING_PREFIX; > END IF; 5109,5110c5117 < TRACE(ILM_DEBUG_ENTRY_EXIT, < 'Exiting execute_ilm_policies '); --- > 5112,5116d5118 < BEGIN < PRVT_ILM.CREATE_TAB_ILMJOB(V_TAB_ILMJOB, EXECUTION_ID); < EXCEPTION < WHEN OTHERS THEN < 5119,5121c5121,5127 < NULL; < END; < --- > > IF (V_TAB_ILMJOB.COUNT > 0) THEN > BEGIN > PRVT_ILM.CREATE_TAB_ILMJOB(V_TAB_ILMJOB, EXECUTION_ID); > EXCEPTION > WHEN OTHERS THEN > 5124c5130,5143 < 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; > 6942a6962,6974 > > > > > > > > > > > > > 6944,6967c6976,6991 < 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); 6994c7018,7019 < WHERE V_TABTASKINFO(I).N_UNRESOL = 0; --- > WHERE V_TABTASKINFO(I).N_UNRESOL = 0 > AND EXECUTION_ID = V_TABTASKINFO(I).TASK_ID;
0a1,5 > type SYS_PLSQL_1EE1A140_153_1 as object (DIMOWNER VARCHAR2(30 BYTE), > DIMNAME VARCHAR2(30 BYTE), > LVLNAME VARCHAR2(30 BYTE), > ATREXPR VARCHAR2(100 BYTE)); >
0a1 > type SYS_PLSQL_1EE1A140_184_1 as table of "SYS"."SYS_PLSQL_1EE1A140_153_1";
0a1 > type SYS_PLSQL_1EE1A140_DUMMY_1 as table of number;
36,73d35 < minus < select a.name, e.name, c.name, c.subname, < DECODE(c.type#,19, 'TABLE PARTITION', < 2,'TABLE', < 34,'TABLE SUBPARTITION'), < (CASE < WHEN bitand(a.FLAG,8) = 8 < THEN 'TABLESPACE' < WHEN (b.obj_typ <> b.obj_typ_orig AND b.obj_typ_orig = 2) < THEN 'TABLE' < WHEN (b.obj_typ <> b.obj_typ_orig AND b.obj_typ_orig = 19) < THEN 'TABLE PARTITION' < ELSE 'POLICY NOT INHERITED' < END), < g.name, < (CASE < WHEN (bitand(b.FLAG,1) = 1) < THEN 'NO' < ELSE 'YES' < END), < (CASE < WHEN (bitand(b.FLAG,64) = 0) < THEN 'NO' < ELSE 'YES' < END) < from sys.ilm$ a, < sys.ilmobj$ b, < sys.obj$ c, < sys.user$ e, < sys.redef_object$ f, < sys.ts$ g < where a.policy# = b.policy# < AND b.obj# = c.obj# < AND c.owner# = e.user# < AND f.obj_type = 1 < AND f.int_obj_owner= e.name < AND f.int_obj_name = c.name < AND g.ts# (+) = a.ts#
59,119d58 < minus < select a.name, d.name, c.name, c.subname, < DECODE(c.type#,19, 'TABLE PARTITION', < 2,'TABLE', < 34,'TABLE SUBPARTITION'), < (CASE < WHEN bitand(a.FLAG,8) = 8 < THEN 'TABLESPACE' < WHEN (b.obj_typ <> b.obj_typ_orig AND b.obj_typ_orig = 2) < THEN 'TABLE' < WHEN (b.obj_typ <> b.obj_typ_orig AND b.obj_typ_orig = 19) < THEN 'TABLE PARTITION' < ELSE 'POLICY NOT INHERITED' < END), < g.name, < (CASE < WHEN (bitand(b.FLAG,1) = 1) < THEN 'NO' < ELSE 'YES' < END), < (CASE < WHEN (bitand(b.FLAG,64) = 0) < THEN 'NO' < ELSE 'YES' < END) < from sys.ilm$ a, < sys.ilmobj$ b, < sys.obj$ c, < sys.user$ d, < (select a.policy# < from sys.ilm$ a < where bitand(a.flag, 8) = 0 < and a.owner# = userenv('SCHEMAID') < union < select a.policy# < from sys.ilm$ a , < sys.ts$ b, < sys.tsq$ c < where bitand(a.flag, 8) = 8 < and a.ts# = b.ts# < and b.ts# = c.ts# < and c.user# = userenv('SCHEMAID') < and (c.blocks > 0 or c.maxblocks != 0) < union < select a.policy# < from sys.ilm$ a < where bitand(a.flag, 8) = 8 < and exists < (select null < from sys.v$enabledprivs < where priv_number = -15 /* UNLIMITED TABLESPACE */)) e, < sys.redef_object$ f, < sys.ts$ g < where a.policy# = b.policy# < AND b.obj# = c.obj# < AND c.owner# = d.user# < AND a.policy# = e.policy# < AND f.obj_type = 1 < AND f.int_obj_owner= d.name < AND f.int_obj_name = c.name < AND g.ts# (+) = a.ts#
12.2.0.1
1a2,3 > MAXCHARSIZE CONSTANT BINARY_INTEGER := 32767; > MAXRAWSIZE CONSTANT BINARY_INTEGER := 2000; 1249d1250 < DBMS_AQADM_SYS.WRITE_TRACE('header_field_val: located = ' || LOCATED); 1252d1252 < DBMS_AQADM_SYS.WRITE_TRACE( 'header_field_val: mtyp = ' || MTYP); 1255d1254 < DBMS_AQADM_SYS.WRITE_TRACE('header_field_val: located = ' || LOCATED); 1258d1256 < DBMS_AQADM_SYS.WRITE_TRACE('header_field_val: strlen = ' || STRLEN); 1261d1258 < DBMS_AQADM_SYS.WRITE_TRACE('header_field_val: located = ' || LOCATED); 1264d1260 < DBMS_AQADM_SYS.WRITE_TRACE('header_field_val: located = ' || LOCATED); 1268d1263 < DBMS_AQADM_SYS.WRITE_TRACE( 'header_field_val: ' || FIELD_NAME || ' = ' || LOCATED); 1271a1267,1326 > PROCEDURE ADT_ENCAPSULATE_SMALL( > JMS_HEADER IN VARCHAR2, > JMS_USERPROP IN VARCHAR2, > JMS_MSG_TYP IN NUMBER, > HEADER OUT AQ$_JMS_HEADER) IS > MTYP NUMBER; > NAME VARCHAR2(32767) ; > VAL VARCHAR2(32767) ; > STRLEN NUMBER; > COUNTER NUMBER := 0 ; > LOCATED VARCHAR2(32767) ; > AGENT SYS.AQ$_AGENT ; > PROP SYS.AQ$_JMS_USERPROPERTY ; > PROP_LIST AQ$_JMS_USERPROPARRAY := SYS.AQ$_JMS_USERPROPARRAY() ; > BEGIN > AGENT := SYS.AQ$_AGENT(HEADER_FIELD_VAL(JMS_HEADER, 'JMSReplyTo'), NULL, 0); > > IF ((JMS_MSG_TYP != 100) AND (JMS_USERPROP IS NOT NULL)) THEN > > > > COUNTER := TO_NUMBER(SUBSTR(JMS_USERPROP,1,INSTR(JMS_USERPROP,',')-1)); > > LOCATED := SUBSTR(JMS_USERPROP,INSTR(JMS_USERPROP,',')+1); > > PROP_LIST.EXTEND(COUNTER); > > FOR I IN 1..COUNTER LOOP > > STRLEN := TO_NUMBER(SUBSTR(LOCATED,1,INSTR(LOCATED,',')-1)); > > LOCATED := SUBSTR(LOCATED,INSTR(LOCATED,',')+1); > > NAME := SUBSTR(LOCATED, 1, STRLEN); > > LOCATED := SUBSTR(LOCATED, STRLEN+2); > > MTYP := TO_NUMBER(SUBSTR(LOCATED, 1, INSTR(LOCATED,',')-1)); > > LOCATED := SUBSTR(LOCATED, INSTR(LOCATED,',')+1); > > STRLEN := TO_NUMBER(SUBSTR(LOCATED,1,INSTR(LOCATED,',')-1)); > > LOCATED := SUBSTR(LOCATED,INSTR(LOCATED,',')+1); > > VAL := SUBSTR(LOCATED, 1, STRLEN); > > LOCATED := SUBSTR(LOCATED,STRLEN+2); > IF (MTYP = 20 OR MTYP = 27 OR MTYP = 28) THEN > PROP := SYS.AQ$_JMS_USERPROPERTY(NAME, 2, VAL, NULL, MTYP); > ELSE > PROP := SYS.AQ$_JMS_USERPROPERTY(NAME, 1, NULL, TO_NUMBER(VAL), MTYP); > END IF; > PROP_LIST(I) := PROP ; > END LOOP ; > HEADER := SYS.AQ$_JMS_HEADER(AGENT, HEADER_FIELD_VAL(JMS_HEADER, 'JMSType'), NULL, NULL, NULL, NULL, PROP_LIST); > ELSE > HEADER := SYS.AQ$_JMS_HEADER(AGENT, HEADER_FIELD_VAL(JMS_HEADER, 'JMSType'), NULL, NULL, NULL, NULL, NULL); > END IF; > END ; 1288,1289d1342 < DBMS_AQADM_SYS.WRITE_TRACE('adt_encapsulate: jms_header ' || JMS_HEADER); < DBMS_AQADM_SYS.WRITE_TRACE('adt_encapsulate: jms_msg_typ ' || JMS_MSG_TYP); 1296,1297c1349 < < DBMS_AQADM_SYS.WRITE_TRACE('adt_encapsulate: jms_userprop len ' || DBMS_LOB.GETLENGTH(JMS_USERPROP)); --- > 1301,1302d1352 < DBMS_AQADM_SYS.WRITE_TRACE('adt_encapsulate: located len ' || DBMS_LOB.GETLENGTH(LOCATED)); < DBMS_AQADM_SYS.WRITE_TRACE('adt_encapsulate: counter = ' || COUNTER); 1309d1358 < DBMS_AQADM_SYS.WRITE_TRACE('adt_encapsulate: Name strlen = ' || STRLEN); 1312d1360 < DBMS_AQADM_SYS.WRITE_TRACE('adt_encapsulate: located len ' || DBMS_LOB.GETLENGTH(LOCATED)); 1315d1362 < DBMS_AQADM_SYS.WRITE_TRACE('adt_encapsulate: Name = ' || NAME); 1318d1364 < DBMS_AQADM_SYS.WRITE_TRACE('adt_encapsulate: located len ' || DBMS_LOB.GETLENGTH(LOCATED)); 1321d1366 < DBMS_AQADM_SYS.WRITE_TRACE('adt_encapsulate: mtyp = ' || MTYP); 1326d1370 < DBMS_AQADM_SYS.WRITE_TRACE('adt_encapsulate: Value strlen = ' || STRLEN); 1329d1372 < DBMS_AQADM_SYS.WRITE_TRACE('adt_encapsulate: located len ' || DBMS_LOB.GETLENGTH(LOCATED)); 1332d1374 < DBMS_AQADM_SYS.WRITE_TRACE('adt_encapsulate: Value = ' || VAL); 1335d1376 < DBMS_AQADM_SYS.WRITE_TRACE('adt_encapsulate: located len ' || DBMS_LOB.GETLENGTH(LOCATED)); 1358,1361c1399,1403 < DBMS_AQADM_SYS.WRITE_TRACE('create_bytes_message: jms_header ' || JMS_HEADER) ; < IF (JMS_USERPROP IS NOT NULL) THEN < DBMS_AQADM_SYS.WRITE_TRACE('create_bytes_message: jms_userprop len ' < || DBMS_LOB.GETLENGTH(JMS_USERPROP)); --- > IF (DBMS_LOB.GETLENGTH(JMS_USERPROP) < MAXCHARSIZE) THEN > ADT_ENCAPSULATE_SMALL(JMS_HEADER, DBMS_LOB.SUBSTR(JMS_USERPROP), > DBMS_AQJMS.JMS_BYTES_MESSAGE, HEADER) ; > ELSE > ADT_ENCAPSULATE(JMS_HEADER, JMS_USERPROP, DBMS_AQJMS.JMS_BYTES_MESSAGE, HEADER) ; 1362a1405 > 1368,1369d1410 < ADT_ENCAPSULATE(JMS_HEADER, JMS_USERPROP, DBMS_AQJMS.JMS_BYTES_MESSAGE, HEADER) ; < 1371c1412 < IF (PLODLEN <= 2000) THEN --- > IF (PLODLEN <= MAXRAWSIZE) THEN 1378a1420 > 1379a1422 > 1390,1393c1433,1436 < DBMS_AQADM_SYS.WRITE_TRACE('create_text_message: jms_header ' || JMS_HEADER) ; < IF (JMS_USERPROP IS NOT NULL) THEN < DBMS_AQADM_SYS.WRITE_TRACE('create_text_message: jms_userprop len ' < || DBMS_LOB.GETLENGTH(JMS_USERPROP)); --- > IF (DBMS_LOB.GETLENGTH(JMS_USERPROP) < MAXCHARSIZE) THEN > ADT_ENCAPSULATE_SMALL(JMS_HEADER, JMS_USERPROP, DBMS_AQJMS.JMS_TEXT_MESSAGE, HEADER) ; > ELSE > ADT_ENCAPSULATE(JMS_HEADER, JMS_USERPROP, DBMS_AQJMS.JMS_TEXT_MESSAGE, HEADER) ; 1394a1438 > 1400,1401d1443 < ADT_ENCAPSULATE(JMS_HEADER, JMS_USERPROP, DBMS_AQJMS.JMS_TEXT_MESSAGE, HEADER) ; < 1403c1445 < IF (PLODLEN <= 2000) THEN --- > IF (PLODLEN <= MAXRAWSIZE) THEN 1414d1455 < DBMS_AQADM_SYS.WRITE_TRACE('create_text_message: payload.TEXT_LEN = ' || PAYLOAD.TEXT_LEN); 1425,1428c1466,1469 < DBMS_AQADM_SYS.WRITE_TRACE('create_stream_message: jms_header ' || JMS_HEADER) ; < IF (JMS_USERPROP IS NOT NULL) THEN < DBMS_AQADM_SYS.WRITE_TRACE('create_stream_message: jms_userprop len ' < || DBMS_LOB.GETLENGTH(JMS_USERPROP)); --- > IF (DBMS_LOB.GETLENGTH(JMS_USERPROP) < MAXCHARSIZE) THEN > ADT_ENCAPSULATE_SMALL(JMS_HEADER, JMS_USERPROP, DBMS_AQJMS.JMS_STREAM_MESSAGE, HEADER) ; > ELSE > ADT_ENCAPSULATE(JMS_HEADER, JMS_USERPROP, DBMS_AQJMS.JMS_STREAM_MESSAGE, HEADER) ; 1429a1471 > 1433,1435c1475 < END IF ; < < ADT_ENCAPSULATE(JMS_HEADER, JMS_USERPROP, DBMS_AQJMS.JMS_STREAM_MESSAGE, HEADER) ; --- > END IF; 1438c1478 < IF (PLODLEN <= 2000) THEN --- > IF (PLODLEN <= MAXRAWSIZE) THEN 1446d1485 < DBMS_AQADM_SYS.WRITE_TRACE('create_stream_message: payload.BYTES_LEN = ' || PAYLOAD.BYTES_LEN); 1457,1460c1496,1499 < DBMS_AQADM_SYS.WRITE_TRACE('create_map_message: jms_header ' || JMS_HEADER) ; < IF (JMS_USERPROP IS NOT NULL) THEN < DBMS_AQADM_SYS.WRITE_TRACE('create_map_message: jms_userprop len ' < || DBMS_LOB.GETLENGTH(JMS_USERPROP)); --- > IF (DBMS_LOB.GETLENGTH(JMS_USERPROP) < MAXCHARSIZE) THEN > ADT_ENCAPSULATE_SMALL(JMS_HEADER, JMS_USERPROP, DBMS_AQJMS.JMS_MAP_MESSAGE, HEADER) ; > ELSE > ADT_ENCAPSULATE(JMS_HEADER, JMS_USERPROP, DBMS_AQJMS.JMS_MAP_MESSAGE, HEADER) ; 1461a1501 > 1465,1467c1505 < END IF ; < < ADT_ENCAPSULATE(JMS_HEADER, JMS_USERPROP, DBMS_AQJMS.JMS_MAP_MESSAGE, HEADER) ; --- > END IF; 1470c1508 < IF (PLODLEN <= 2000) THEN --- > IF (PLODLEN <= MAXRAWSIZE) THEN 1478d1515 < DBMS_AQADM_SYS.WRITE_TRACE( 'create_map_message: payload.BYTES_LEN = ' || PAYLOAD.BYTES_LEN); 1489,1492c1526,1529 < DBMS_AQADM_SYS.WRITE_TRACE('create_object_message: jms_header ' || JMS_HEADER) ; < IF (JMS_USERPROP IS NOT NULL) THEN < DBMS_AQADM_SYS.WRITE_TRACE('create_object_message: jms_userprop len ' < || DBMS_LOB.GETLENGTH(JMS_USERPROP)); --- > IF (DBMS_LOB.GETLENGTH(JMS_USERPROP) < MAXCHARSIZE) THEN > ADT_ENCAPSULATE_SMALL(JMS_HEADER, JMS_USERPROP, DBMS_AQJMS.JMS_OBJECT_MESSAGE, HEADER) ; > ELSE > ADT_ENCAPSULATE(JMS_HEADER, JMS_USERPROP, DBMS_AQJMS.JMS_OBJECT_MESSAGE, HEADER) ; 1493a1531 > 1497,1499c1535 < END IF ; < < ADT_ENCAPSULATE(JMS_HEADER, JMS_USERPROP, DBMS_AQJMS.JMS_MAP_MESSAGE, HEADER) ; --- > END IF; 1502c1538 < IF (PLODLEN <= 2000) THEN --- > IF (PLODLEN <= MAXRAWSIZE) THEN 1510d1545 < DBMS_AQADM_SYS.WRITE_TRACE( 'create_object_message: payload.BYTES_LEN = ' || PAYLOAD.BYTES_LEN); 1515,1518c1550,1553 < BYTE_PLOD IN BLOB, < JMS_HEADER IN VARCHAR2, < JMS_USERPROP IN CLOB, < JMS_MSG_TYPE IN NUMBER) IS --- > BYTE_PLOD IN BLOB, > JMS_HEADER IN VARCHAR2, > JMS_USERPROP IN CLOB, > JMS_MSG_TYPE IN NUMBER) IS 1522,1525c1557,1561 < DBMS_AQADM_SYS.WRITE_TRACE('create_jms_message: jms_header ' || JMS_HEADER) ; < IF (JMS_USERPROP IS NOT NULL) THEN < DBMS_AQADM_SYS.WRITE_TRACE('create_jms_message: jms_userprop len ' < || DBMS_LOB.GETLENGTH(JMS_USERPROP)); --- > PLODLEN := DBMS_LOB.GETLENGTH(BYTE_PLOD) ; > IF (DBMS_LOB.GETLENGTH(JMS_USERPROP) < MAXCHARSIZE) THEN > ADT_ENCAPSULATE_SMALL(JMS_HEADER, JMS_USERPROP, JMS_MSG_TYPE, HEADER) ; > ELSE > ADT_ENCAPSULATE(JMS_HEADER, JMS_USERPROP, JMS_MSG_TYPE, HEADER) ; 1526a1563 > 1529,1532c1566,1567 < DBMS_AQADM_SYS.WRITE_TRACE('create_jms_message: byte_plod len ' || PLODLEN); < END IF ; < < ADT_ENCAPSULATE(JMS_HEADER, JMS_USERPROP, JMS_MSG_TYPE, HEADER) ; --- > DBMS_AQADM_SYS.WRITE_TRACE('create_generic_message: byte_plod len ' || PLODLEN); > END IF; 1535,1538c1570,1579 < IF (PLODLEN <= 2000) THEN < PAYLOAD := SYS.AQ$_JMS_MESSAGE(HEADER, 'sender_id', JMS_MSG_TYPE, PLODLEN, 0, < UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(BYTE_PLOD)), < NULL, NULL, NULL); --- > IF (PLODLEN > 0) THEN > IF (PLODLEN <= MAXRAWSIZE) THEN > PAYLOAD := SYS.AQ$_JMS_MESSAGE(HEADER, 'sender_id', JMS_MSG_TYPE, PLODLEN, 0, > UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(BYTE_PLOD)), > NULL, NULL, NULL); > ELSE > PAYLOAD := SYS.AQ$_JMS_MESSAGE(HEADER, 'sender_id', JMS_MSG_TYPE, PLODLEN, 0, NULL, NULL, > TO_CLOB(UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(BYTE_PLOD))), > NULL); > END IF; 1540,1542c1581 < PAYLOAD := SYS.AQ$_JMS_MESSAGE(HEADER, 'sender_id', JMS_MSG_TYPE, PLODLEN, 0, NULL, NULL, < TO_CLOB(UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(BYTE_PLOD))), < NULL); --- > PAYLOAD := SYS.AQ$_JMS_MESSAGE(HEADER, 'sender_id', JMS_MSG_TYPE, 0, 0, NULL, NULL, NULL, NULL); 1544d1582 < DBMS_AQADM_SYS.WRITE_TRACE( 'payload.TEXT_LEN = ' || PAYLOAD.TEXT_LEN); 1546,1551c1584,1593 < IF (PLODLEN <= 2000) THEN < PAYLOAD := SYS.AQ$_JMS_MESSAGE(HEADER, 'sender_id', JMS_MSG_TYPE, 0, PLODLEN, NULL, < DBMS_LOB.SUBSTR(BYTE_PLOD), NULL, NULL); < ELSE < PAYLOAD := SYS.AQ$_JMS_MESSAGE(HEADER, 'sender_id', JMS_MSG_TYPE, 0, PLODLEN, < NULL, NULL, NULL, BYTE_PLOD); --- > IF (PLODLEN > 0) THEN > IF (PLODLEN <= MAXRAWSIZE) THEN > PAYLOAD := SYS.AQ$_JMS_MESSAGE(HEADER, 'sender_id', JMS_MSG_TYPE, 0, PLODLEN, NULL, > DBMS_LOB.SUBSTR(BYTE_PLOD), NULL, NULL); > ELSE > PAYLOAD := SYS.AQ$_JMS_MESSAGE(HEADER, 'sender_id', JMS_MSG_TYPE, 0, PLODLEN, > NULL, NULL, NULL, BYTE_PLOD); > END IF; > ELSE > PAYLOAD := SYS.AQ$_JMS_MESSAGE(HEADER, 'sender_id', JMS_MSG_TYPE, 0, 0, NULL, NULL, NULL, NULL); 1553d1594 < DBMS_AQADM_SYS.WRITE_TRACE( 'payload.BYTES_LEN = ' || PAYLOAD.BYTES_LEN); 1582,1584d1622 < DBMS_AQADM_SYS.WRITE_TRACE( 'bytes_raw ' || BYTES_RAW); < DBMS_AQADM_SYS.WRITE_TRACE( 'bytes_lob length ' || DBMS_LOB.GETLENGTH(BYTES_LOB)); < 1587d1624 < DBMS_AQADM_SYS.WRITE_TRACE( 'REPLYTO.NAME converted'); 1615d1651 < DBMS_AQADM_SYS.WRITE_TRACE( 'prop_list(i).name converted'); 1626d1661 < DBMS_AQADM_SYS.WRITE_TRACE( 'prop_list(i).str_value converted'); 1633d1667 < DBMS_AQADM_SYS.WRITE_TRACE( 'prop_list(i).num_value converted'); 1645,1646d1678 < DBMS_AQADM_SYS.WRITE_TRACE( 'userprp_formatted length ' < || DBMS_LOB.GETLENGTH(USERPRP_FORMATTED)); 1655d1686 < DBMS_AQADM_SYS.WRITE_TRACE( 'byte_plod length' || DBMS_LOB.GETLENGTH(BYTE_PLOD)); 1664d1694 < DBMS_AQADM_SYS.WRITE_TRACE( 'text_plod length' || DBMS_LOB.GETLENGTH(BYTE_PLOD)); 1666,1667d1695 < < DBMS_AQADM_SYS.WRITE_TRACE( 'header_formatted ' || HEADER_FORMATTED) ;
996c996,997 < --- > HEATMAP VARCHAR2(3); > 997a999,1004 > > SELECT VALUE INTO HEATMAP FROM V$PARAMETER WHERE NAME='heat_map'; > IF (HEATMAP = 'OFF') THEN > RETURN; > END IF; >
573a574 > 579a581,583 > > DUPLICATE_FOUND BOOLEAN := FALSE; > 581,584c585,612 < INSERT INTO SYSTEM.LOGMNRC_CONCOL_GG ( < LOGMNR_UID, CON#, INTCOL#, POS#, SPARE1, COMMIT_SCN) VALUES ( < LM_LOGMNR_UID, LM_CON#, LM_INTCOL#, LM_POS#, LM_COLFLAGS, < LM_COMMIT_SCN); --- > BEGIN > INSERT INTO SYSTEM.LOGMNRC_CONCOL_GG ( > LOGMNR_UID, CON#, INTCOL#, POS#, SPARE1, COMMIT_SCN) VALUES ( > LM_LOGMNR_UID, LM_CON#, LM_INTCOL#, LM_POS#, LM_COLFLAGS, > LM_COMMIT_SCN); > EXCEPTION > WHEN DUP_VAL_ON_INDEX THEN > DUPLICATE_FOUND := TRUE; > END; > > > > > > > > > IF (DUPLICATE_FOUND = TRUE) THEN > UPDATE SYSTEM.LOGMNRC_CONCOL_GG > SET POS# = LM_POS#, > SPARE1 = LM_COLFLAGS, > SPARE2 = NULL, > SPARE3 = NULL > WHERE LOGMNR_UID = LM_LOGMNR_UID > AND CON# = LM_CON# > AND INTCOL# = LM_INTCOL# > AND COMMIT_SCN = LM_COMMIT_SCN; > END IF; 603a632,636 > > > > > 654c687 < ORDER BY NAME, POSITION; --- > ORDER BY CON#, POSITION; 656,658c689,691 < CURRENT_CON_NAME VARCHAR2(384); < LM_FLAGS NUMBER; < LM_CON# NUMBER; --- > CURRENT_CON_CON# NUMBER; > LM_FLAGS NUMBER; > LM_CON# NUMBER; 660,662c693,695 < LM_CON_NAME VARCHAR2(384); < LM_COMMIT_SCN NUMBER; < TRACE_LEVEL NUMBER; --- > LM_CON_CON# NUMBER; > LM_COMMIT_SCN NUMBER; > TRACE_LEVEL NUMBER; 669c702 < CURRENT_CON_NAME := NULL; --- > CURRENT_CON_CON# := NULL; 680c713 < LM_CON_NAME := SEL_REC.NAME; --- > LM_CON_CON# := SEL_REC.CON#; 685,686c718,719 < IF (CURRENT_CON_NAME <> LM_CON_NAME) OR < (CURRENT_CON_NAME IS NULL) THEN --- > IF (CURRENT_CON_CON# <> LM_CON_CON#) OR > (CURRENT_CON_CON# IS NULL) THEN 700c733 < CURRENT_CON_NAME := LM_CON_NAME; --- > CURRENT_CON_CON# := LM_CON_CON#; 702c735,736 < ':con_name='||CURRENT_CON_NAME|| --- > ':con_name='||SEL_REC.NAME|| > ':con_con#='||CURRENT_CON_CON#|| 1305a1340 > 1311a1347,1349 > > DUPLICATE_FOUND BOOLEAN := FALSE; > 1313,1317c1351,1366 < INSERT INTO SYSTEM.LOGMNRC_INDCOL_GG ( < LOGMNR_UID, OBJ#, INTCOL#, POS#, SPARE1, COMMIT_SCN < ) VALUES ( < LM_LOGMNR_UID, LM_INDEX_OBJ#, LM_INTCOL#, < LM_POS#, LM_COLFLAGS, LM_COMMIT_SCN); --- > BEGIN > INSERT INTO SYSTEM.LOGMNRC_INDCOL_GG ( > LOGMNR_UID, OBJ#, INTCOL#, POS#, SPARE1, COMMIT_SCN > ) VALUES ( > LM_LOGMNR_UID, LM_INDEX_OBJ#, LM_INTCOL#, > LM_POS#, LM_COLFLAGS, LM_COMMIT_SCN); > EXCEPTION > WHEN DUP_VAL_ON_INDEX THEN > DUPLICATE_FOUND := TRUE; > END; > > > > > > 1318a1368,1383 > > > > > IF (DUPLICATE_FOUND = TRUE) THEN > UPDATE SYSTEM.LOGMNRC_INDCOL_GG > SET POS# = LM_POS#, > SPARE1 = LM_COLFLAGS, > SPARE2 = NULL, > SPARE3 = NULL > WHERE LOGMNR_UID = LM_LOGMNR_UID > AND OBJ# = LM_INDEX_OBJ# > AND INTCOL# = LM_INTCOL# > AND COMMIT_SCN = LM_COMMIT_SCN; > END IF; > 1335a1401,1409 > > > > > > > > > 1391c1465 < ORDER BY NAME, POSITION; --- > ORDER BY INDEX_OBJ#, POSITION; 1393,1394c1467,1468 < CURRENT_IND_NAME VARCHAR2(384); < LM_FLAGS NUMBER; --- > CURRENT_IND_OBJ# NUMBER; > LM_FLAGS NUMBER; 1396,1398c1470,1472 < LM_IND_NAME VARCHAR2(384); < LM_COMMIT_SCN NUMBER; < TRACE_LEVEL NUMBER; --- > LM_IND_OBJ# NUMBER; > LM_COMMIT_SCN NUMBER; > TRACE_LEVEL NUMBER; 1403c1477 < CURRENT_IND_NAME := NULL; --- > CURRENT_IND_OBJ# := NULL; 1414c1488 < LM_IND_NAME := SEL_REC.NAME; --- > LM_IND_OBJ# := SEL_REC.INDEX_OBJ#; 1417,1418c1491,1492 < 'save_indexes:old='||CURRENT_IND_NAME||':new='|| < LM_IND_NAME); --- > 'save_indexes:old obj#='||CURRENT_IND_OBJ# > ||':new obj#='||LM_IND_OBJ#); 1423,1424c1497,1498 < IF (CURRENT_IND_NAME <> LM_IND_NAME) OR < (CURRENT_IND_NAME IS NULL) THEN --- > IF (CURRENT_IND_OBJ# <> LM_IND_OBJ#) OR > (CURRENT_IND_OBJ# IS NULL) THEN 1426c1500 < SEL_REC.INDEX_OBJ#, --- > LM_IND_OBJ#, 1428c1502 < LM_IND_NAME, --- > SEL_REC.NAME, 1438c1512 < CURRENT_IND_NAME := LM_IND_NAME; --- > CURRENT_IND_OBJ# := LM_IND_OBJ#; 1441c1515,1516 < ':con_name='||CURRENT_IND_NAME|| --- > ':ind_name='||SEL_REC.NAME|| > ':ind_obj#='||CURRENT_IND_OBJ#||
41,48c41,48 < expr expr_cur%ROWTYPE; < c clob; < TYPE CurTyp IS REF CURSOR; < cur CurTyp; < idxname1 dbms_id; < uname1 dbms_id; < idxname2 dbms_quoted_id; < uname2 dbms_quoted_id; --- > expr expr_cur%ROWTYPE; > c clob; > TYPE CurTyp IS REF CURSOR; > cur CurTyp; > idxname1 dbms_id; > uname1 dbms_id; > idxname2 dbms_quoted_id; > uname2 dbms_quoted_id; 99,130c99,106 < execute immediate 'select max(num_rows) from dba_tables where < table_name in (select table_name < from dba_json_columns where owner not in < (select distinct username from all_users < where oracle_maintained = ''Y''))' < into num_max_rows; < < execute immediate 'select min(num_rows) from dba_tables where < table_name in (select table_name < from dba_json_columns where owner not in < (select distinct username from all_users < where oracle_maintained = ''Y''))' < into num_min_rows; < < execute immediate 'select avg(num_rows) from dba_tables where < table_name in (select table_name < from dba_json_columns where owner not in < (select distinct username from all_users < where oracle_maintained = ''Y''))' < into num_avg_rows; < < if num_max_rows is null then < num_max_rows := 0; < end if; < < if num_min_rows is null then < num_min_rows := 0; < end if; < < if num_avg_rows is null then < num_avg_rows := 0; < end if; --- > execute immediate 'select nvl(max(d.rowcnt),0), nvl(min(d.rowcnt), 0), > nvl(avg(d.rowcnt),0) from tab$ d, > int$dba_json_columns j where > d.obj# = j.object_id and > j.owner not in > (select distinct username from all_users > where oracle_maintained = ''Y'')' > into num_max_rows, num_min_rows, num_avg_rows; 139,150c115,118 < /* Average length in bytes */ < execute immediate 'select nvl(avg(avg_col_len),0) from dba_tab_columns t, < dba_json_columns j where t.owner not in < (select distinct username from all_users < where oracle_maintained = ''Y'') < and t.table_name = j.table_name < and t.column_name = j.column_name' < into avgsize_jsoncol; < < /* Max length in chars */ < execute immediate 'select nvl(max(char_length),0) from dba_tab_columns t, < dba_json_columns j where t.owner not in --- > /* Average length in bytes and max length in chars */ > execute immediate 'select nvl(avg(avg_col_len),0), nvl(max(char_length),0) > from dba_tab_columns t, dba_json_columns j > where t.owner not in 155c123 < into maxsize_jsoncol; --- > into avgsize_jsoncol, maxsize_jsoncol;
18.0.0.0
12c12 < bannerVersion CONSTANT VARCHAR2(15) := '18.09.00.00'; --- > bannerVersion CONSTANT VARCHAR2(15) := '18.09.01.00'; 24,26c24,26 < fsn CONSTANT NUMBER := instr('18.09.00.00', '.'); < msn CONSTANT NUMBER := instr('18.09.00.00', '.', fsn + 1); < psn CONSTANT NUMBER := instr('18.09.00.00', '.', msn + 1); --- > fsn CONSTANT NUMBER := instr('18.09.01.00', '.'); > msn CONSTANT NUMBER := instr('18.09.01.00', '.', fsn + 1); > psn CONSTANT NUMBER := instr('18.09.01.00', '.', msn + 1); 29c29 < to_number(substr('18.09.00.00', 1, fsn - 1)); --- > to_number(substr('18.09.01.00', 1, fsn - 1)); 31c31 < to_number(substr('18.09.00.00', fsn + 1, msn - fsn - 1)); --- > to_number(substr('18.09.01.00', fsn + 1, msn - fsn - 1)); 33c33 < to_number(substr('18.09.00.00', msn + 1, psn - msn - 1)); --- > to_number(substr('18.09.01.00', msn + 1, psn - msn - 1)); 35c35 < to_number(substr('18.09.00.00', psn + 1)); --- > to_number(substr('18.09.01.00', psn + 1));
12c12 < bannerVersion CONSTANT VARCHAR2(15) := '18.08.01.00'; --- > bannerVersion CONSTANT VARCHAR2(15) := '18.08.02.00'; 24,26c24,26 < fsn CONSTANT NUMBER := instr('18.08.01.00', '.'); < msn CONSTANT NUMBER := instr('18.08.01.00', '.', fsn + 1); < psn CONSTANT NUMBER := instr('18.08.01.00', '.', msn + 1); --- > fsn CONSTANT NUMBER := instr('18.08.02.00', '.'); > msn CONSTANT NUMBER := instr('18.08.02.00', '.', fsn + 1); > psn CONSTANT NUMBER := instr('18.08.02.00', '.', msn + 1); 29c29 < to_number(substr('18.08.01.00', 1, fsn - 1)); --- > to_number(substr('18.08.02.00', 1, fsn - 1)); 31c31 < to_number(substr('18.08.01.00', fsn + 1, msn - fsn - 1)); --- > to_number(substr('18.08.02.00', fsn + 1, msn - fsn - 1)); 33c33 < to_number(substr('18.08.01.00', msn + 1, psn - msn - 1)); --- > to_number(substr('18.08.02.00', msn + 1, psn - msn - 1)); 35c35 < to_number(substr('18.08.01.00', psn + 1)); --- > to_number(substr('18.08.02.00', psn + 1));
12c12 < bannerVersion CONSTANT VARCHAR2(15) := '18.09.00.00'; --- > bannerVersion CONSTANT VARCHAR2(15) := '18.10.00.00'; 24,26c24,26 < fsn CONSTANT NUMBER := instr('18.09.00.00', '.'); < msn CONSTANT NUMBER := instr('18.09.00.00', '.', fsn + 1); < psn CONSTANT NUMBER := instr('18.09.00.00', '.', msn + 1); --- > fsn CONSTANT NUMBER := instr('18.10.00.00', '.'); > msn CONSTANT NUMBER := instr('18.10.00.00', '.', fsn + 1); > psn CONSTANT NUMBER := instr('18.10.00.00', '.', msn + 1); 29c29 < to_number(substr('18.09.00.00', 1, fsn - 1)); --- > to_number(substr('18.10.00.00', 1, fsn - 1)); 31c31 < to_number(substr('18.09.00.00', fsn + 1, msn - fsn - 1)); --- > to_number(substr('18.10.00.00', fsn + 1, msn - fsn - 1)); 33c33 < to_number(substr('18.09.00.00', msn + 1, psn - msn - 1)); --- > to_number(substr('18.10.00.00', msn + 1, psn - msn - 1)); 35c35 < to_number(substr('18.09.00.00', psn + 1)); --- > to_number(substr('18.10.00.00', psn + 1));
13c13 < '18.9.0.0.0'; --- > '18.10.0.0.0';
13c13 < '18.8.1.0.0'; --- > '18.8.2.0.0';
13c13 < '18.9.0.0.0'; --- > '18.9.1.0.0';
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '18.08.01.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '18.08.02.00';
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '18.09.00.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '18.09.01.00';
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '18.09.00.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '18.10.00.00';
41,48c41,48 < expr expr_cur%ROWTYPE; < c clob; < TYPE CurTyp IS REF CURSOR; < cur CurTyp; < idxname1 dbms_id; < uname1 dbms_id; < idxname2 dbms_quoted_id; < uname2 dbms_quoted_id; --- > expr expr_cur%ROWTYPE; > c clob; > TYPE CurTyp IS REF CURSOR; > cur CurTyp; > idxname1 dbms_id; > uname1 dbms_id; > idxname2 dbms_quoted_id; > uname2 dbms_quoted_id; 99,130c99,106 < execute immediate 'select max(num_rows) from dba_tables where < table_name in (select table_name < from dba_json_columns where owner not in < (select distinct username from all_users < where oracle_maintained = ''Y''))' < into num_max_rows; < < execute immediate 'select min(num_rows) from dba_tables where < table_name in (select table_name < from dba_json_columns where owner not in < (select distinct username from all_users < where oracle_maintained = ''Y''))' < into num_min_rows; < < execute immediate 'select avg(num_rows) from dba_tables where < table_name in (select table_name < from dba_json_columns where owner not in < (select distinct username from all_users < where oracle_maintained = ''Y''))' < into num_avg_rows; < < if num_max_rows is null then < num_max_rows := 0; < end if; < < if num_min_rows is null then < num_min_rows := 0; < end if; < < if num_avg_rows is null then < num_avg_rows := 0; < end if; --- > execute immediate 'select nvl(max(d.rowcnt),0), nvl(min(d.rowcnt), 0), > nvl(avg(d.rowcnt),0) from tab$ d, > int$dba_json_columns j where > d.obj# = j.object_id and > j.owner not in > (select distinct username from all_users > where oracle_maintained = ''Y'')' > into num_max_rows, num_min_rows, num_avg_rows; 139,150c115,118 < /* Average length in bytes */ < execute immediate 'select nvl(avg(avg_col_len),0) from dba_tab_columns t, < dba_json_columns j where t.owner not in < (select distinct username from all_users < where oracle_maintained = ''Y'') < and t.table_name = j.table_name < and t.column_name = j.column_name' < into avgsize_jsoncol; < < /* Max length in chars */ < execute immediate 'select nvl(max(char_length),0) from dba_tab_columns t, < dba_json_columns j where t.owner not in --- > /* Average length in bytes and max length in chars */ > execute immediate 'select nvl(avg(avg_col_len),0), nvl(max(char_length),0) > from dba_tab_columns t, dba_json_columns j > where t.owner not in 155c123 < into maxsize_jsoncol; --- > into avgsize_jsoncol, maxsize_jsoncol;
1c1 < SELECT k."ID",k."NAME",k."DBID",k."DBNAME",k."DBVERSION",k."PARALLEL",k."DIRECTORY",k."STATUS",k."START_TIME",k."END_TIME",k."DURATION_SECS",k."START_SCN",k."END_SCN",k."DEFAULT_ACTION",k."FILTERS_USED",k."CAPTURE_SIZE",k."DBTIME",k."DBTIME_TOTAL",k."USER_CALLS",k."USER_CALLS_TOTAL",k."USER_CALLS_UNREPLAYABLE",k."PLSQL_SUBCALL_SIZE",k."PLSQL_CALLS",k."PLSQL_SUBCALLS",k."PLSQL_DBTIME",k."TRANSACTIONS",k."TRANSACTIONS_TOTAL",k."CONNECTS",k."CONNECTS_TOTAL",k."ERRORS",k."AWR_DBID",k."AWR_BEGIN_SNAP",k."AWR_END_SNAP",k."AWR_EXPORTED",k."ERROR_CODE",k."ERROR_MESSAGE",k."DIR_PATH",k."DIR_PATH_SHARED",k."LAST_PROCESSED_VERSION",k."SQLSET_OWNER",k."SQLSET_NAME",k."PLSQL_MODE",k."ENCRYPTION",k."CON_ID", k.CON$NAME, k.CDB$NAME, k.CON$ERRNUM, k.CON$ERRMSG FROM CONTAINERS("SYS"."DBA_WORKLOAD_CAPTURES") k --- > SELECT k."ID",k."NAME",k."DBID",k."DBNAME",k."DBVERSION",k."PARALLEL",k."DIRECTORY",k."STATUS",k."START_TIME",k."END_TIME",k."DURATION_SECS",k."START_SCN",k."END_SCN",k."DEFAULT_ACTION",k."FILTERS_USED",k."CAPTURE_SIZE",k."DBTIME",k."DBTIME_TOTAL",k."USER_CALLS",k."USER_CALLS_TOTAL",k."USER_CALLS_UNREPLAYABLE",k."PLSQL_SUBCALL_SIZE",k."PLSQL_CALLS",k."PLSQL_SUBCALLS",k."PLSQL_DBTIME",k."TRANSACTIONS",k."TRANSACTIONS_TOTAL",k."CONNECTS",k."CONNECTS_TOTAL",k."ERRORS",k."AWR_DBID",k."AWR_BEGIN_SNAP",k."AWR_END_SNAP",k."AWR_EXPORTED",k."ERROR_CODE",k."ERROR_MESSAGE",k."DIR_PATH",k."DIR_PATH_SHARED",k."LAST_PROCESSED_VERSION",k."SQLSET_OWNER",k."SQLSET_NAME",k."PLSQL_MODE",k."ENCRYPTION",k."ENCRYPTION_VERIFIER",k."CON_ID", k.CON$NAME, k.CDB$NAME, k.CON$ERRNUM, k.CON$ERRMSG FROM CONTAINERS("SYS"."DBA_WORKLOAD_CAPTURES") k
1c1 < SELECT k."CAPTURE_ID",k."SET_NAME",k."FILTER_NAME",k."ATTRIBUTE",k."VALUE",k."CON_ID", k.CON$NAME, k.CDB$NAME, k.CON$ERRNUM, k.CON$ERRMSG FROM CONTAINERS("SYS"."DBA_WORKLOAD_REPLAY_FILTER_SET") k --- > SELECT k."CAPTURE_ID",k."SET_NAME",k."FILTER_NAME",k."ATTRIBUTE",k."VALUE",k."DEFAULT_ACTION",k."CON_ID", k.CON$NAME, k.CDB$NAME, k.CON$ERRNUM, k.CON$ERRMSG FROM CONTAINERS("SYS"."DBA_WORKLOAD_REPLAY_FILTER_SET") k
30c30,31 < , decode(nvl(r.plsql_mode, 0), 0, 'TOP_LEVEL', 1, 'EXTENDED', 2, 'EXTENDED_SYS', 'INVALID') --- > , decode( nvl(r.plsql_mode, 0), 0,'TOP_LEVEL', 1,'EXTENDED', 2,'EXTENDED_SYS', > 'INVALID' ) 31a33 > , r.encryption_verifier
1,2c1,7 < select capture_id, set_name, filter_name, attribute, value < from WRR$_REPLAY_FILTER_SET --- > select capture_id, set_name, filter_name, attribute, value, default_action > from wrr$_replay_filter_set rfs > UNION ALL > select NULL, NULL, name, attribute, value, NULL > from wrr$_filters > where wrr_id = 0 > and filter_type = 'REPLAY'
19.0.0.0
970a971,972 > M_CURTIMESTAMP TIMESTAMP := SYSTIMESTAMP; > 975a978,990 > RAISE_ORA_ERROR(46250, 'LAST_ARCHIVE_TIME'); > END IF; > > IF AUDIT_TRAIL_TYPE = AUDIT_TRAIL_AUD_STD OR > AUDIT_TRAIL_TYPE = AUDIT_TRAIL_FGA_STD OR > AUDIT_TRAIL_TYPE = AUDIT_TRAIL_UNIFIED > THEN > M_CURTIMESTAMP := SYS_EXTRACT_UTC(SYSTIMESTAMP); > END IF; > > IF LAST_ARCHIVE_TIME > M_CURTIMESTAMP THEN > WRITE_TRACE_MESSAGE(TRACE_LEVEL_DEBUG, 'last_archive_time with future > timestamp value is not allowed');
11d10 < NO_R_MIN_COMP constant varchar2(30) := '12.2.0.2'; 19a19,27 > > -- FEATUREs protected by compatible check > FEATURE_NO_R constant number := 1; -- no $R > > /*------------------------------ ChkCompatible ------------------------------*/ > > function ChkCompatible( > feature_id number) > return boolean;
1478,1483c1478,1479 < < < < IF OPTS.NO_R AND NOT DRVUTL.CHKCOMPATIBLE(DRIXMD.NO_R_MIN_COMP) THEN < DRUE.PUSH(DRIG.GU_NOT_GENERALLY_AVAIL); < RAISE DR_DEF.TEXTILE_ERROR; --- > IF OPTS.NO_R AND NOT DRIXMD.CHKCOMPATIBLE(DRIXMD.FEATURE_NO_R) THEN > OPTS.NO_R := FALSE; 2501,2506c2497,2498 < < < < IF OPTS.NO_R AND NOT DRVUTL.CHKCOMPATIBLE(DRIXMD.NO_R_MIN_COMP) THEN < DRUE.PUSH(DRIG.GU_NOT_GENERALLY_AVAIL); < RAISE DR_DEF.TEXTILE_ERROR; --- > IF OPTS.NO_R AND NOT DRIXMD.CHKCOMPATIBLE(DRIXMD.FEATURE_NO_R) THEN > OPTS.NO_R := FALSE;
972a973,975 > IF (IDX.IDX_OPTION LIKE '%R%') THEN > DESCLN(0,'index option', 'no $R'); > END IF; 1369a1373,1379 > > IF (INSTR(IDX.IDX_OPTION, 'R') != 0) THEN > DRVIMR.WL(' fast_dml'); > ELSE > DRVIMR.WL(' fast_query'); > END IF; >
55a56,63 > NO_R_MIN_COMP CONSTANT VARCHAR2(30) := '12.2.0.2'; > NO_R_COMP_EVENT CONSTANT NUMBER := 30580; > NO_R_COMP_LEVEL CONSTANT NUMBER := 131072; > > > TYPE VER_ITAB_TYPE IS TABLE OF PLS_INTEGER INDEX BY PLS_INTEGER; > > 60a69,170 > FUNCTION CHKEVENT( > EVENT NUMBER, > EVENT_LEVEL NUMBER) > RETURN BOOLEAN > IS > LEV NUMBER; > STATUS BOOLEAN; > BEGIN > LEV := DRIDISP.EXECTRUST_RET1(NULL, NULL, NULL, DRILIST.CMD_ADMIN_ORAEVENT, > DRILIST.MS_ORAEVENT_GET, EVENT, 0); > > IF BITAND(LEV, EVENT_LEVEL) = EVENT_LEVEL THEN > STATUS := TRUE; > ELSE > STATUS := FALSE; > END IF; > > RETURN STATUS; > END CHKEVENT; > > > > FUNCTION GETCOMPATIBLE > RETURN VARCHAR2 > IS > BEGIN > RETURN DRIDISP.EXECTRUST_RET1(NULL, NULL, NULL, DRILIST.CMD_GET_COMPATIBLE); > END GETCOMPATIBLE; > > > > PROCEDURE PARSEVERSION( > VERSION_STR IN VARCHAR2, > VERSION_TAB OUT VER_ITAB_TYPE) > IS > VAL VARCHAR2(30) := VERSION_STR; > SUB VARCHAR2(30); > POS PLS_INTEGER; > BEGIN > FOR I IN 1..5 LOOP > POS := INSTR(VAL, '.'); > IF POS = 0 THEN > POS := LENGTH(VAL) + 1; > END IF; > SUB := SUBSTR(VAL, 1, POS - 1); > VAL := SUBSTR(VAL, POS + 1); > > VERSION_TAB(I) := NVL(TO_NUMBER(SUB), 0); > END LOOP; > END PARSEVERSION; > > > > FUNCTION CHKVERSION( > MIN_VERSION_STR VARCHAR2) > RETURN BOOLEAN > IS > RES BOOLEAN; > MIN_VERSION VER_ITAB_TYPE; > SYS_VERSION VER_ITAB_TYPE; > BEGIN > PARSEVERSION(MIN_VERSION_STR, MIN_VERSION); > PARSEVERSION(GETCOMPATIBLE, SYS_VERSION); > > RES := TRUE; > FOR I IN 1..5 LOOP > IF SYS_VERSION(I) < MIN_VERSION(I) THEN > RES := FALSE; > EXIT; > ELSIF SYS_VERSION(I) > MIN_VERSION(I) THEN > EXIT; > END IF; > END LOOP; > > RETURN RES; > END CHKVERSION; > > > > FUNCTION CHKCOMPATIBLE( > FEATURE_ID NUMBER) > RETURN BOOLEAN > IS > STATUS BOOLEAN := TRUE; > BEGIN > CASE FEATURE_ID > WHEN FEATURE_NO_R THEN > IF CHKEVENT(NO_R_COMP_EVENT, NO_R_COMP_LEVEL) THEN > STATUS := TRUE; > ELSE > STATUS := CHKVERSION(NO_R_MIN_COMP); > END IF; > > ELSE > STATUS := FALSE; > END CASE; > > RETURN STATUS; > END CHKCOMPATIBLE; > > > 2310c2420,2421 < L_NO_R BOOLEAN := NVL(P_NO_R, DRVUTL.CHKCOMPATIBLE(NO_R_MIN_COMP)); --- > L_NO_R BOOLEAN := NVL(P_NO_R, CHKCOMPATIBLE(FEATURE_NO_R)); >
2962a2963,2964 > REMOVE_R BOOLEAN := FALSE; > ADD_R BOOLEAN := FALSE; 3140,3145c3142 < IF (IDX.IDX_OPTION LIKE '%P%') THEN < DRIXMD.GETALLPARTITIONS(IDX.IDX_ID, IDX.IDX_TABLE#, L_IXP); < DRVXTAB.REMOVE_R(IDX, L_IXP); < ELSE < DRVXTAB.REMOVE_R(IDX, L_IXP); < END IF; --- > REMOVE_R := TRUE; 3148,3156d3144 < IF (STORAGE IS NOT NULL) THEN < L_PREFREC := DRIPREF.GET_PREF_INFO(STORAGE); < IF DRIPREF.GET_ATTRIBUTE_VALUE(L_PREFREC, 'SMALL_R_ROW') = '1' THEN < DRUE.PUSH(DRIG.GU_NOT_GENERALLY_AVAIL); < RAISE DR_DEF.TEXTILE_ERROR; < END IF; < END IF; < < 3160,3165c3148,3155 < IF (IDX.IDX_OPTION LIKE '%P%') THEN < DRIXMD.GETALLPARTITIONS(IDX.IDX_ID, IDX.IDX_TABLE#, L_IXP); < DRVXTAB.ADD_R(IDX, L_IXP); < ELSE < DRVXTAB.ADD_R(IDX, L_IXP); < END IF; --- > ADD_R := TRUE; > END IF; > > > IF BITAND(L_FLAGS, INDEXREPLACEDOINDEX) = INDEXREPLACEDOINDEX AND > METADATAONLY = FALSE THEN > REMOVE_R := FALSE; > ADD_R := FALSE; 3377a3368,3371 > IF (IDX.IDX_OPTION LIKE '%P%') THEN > DRIXMD.GETALLPARTITIONS(IDX.IDX_ID, IDX.IDX_TABLE#, L_IXP); > END IF; > 3396a3391,3400 > IF REMOVE_R THEN > DRVXTAB.REMOVE_R(IDX, L_IXP); > END IF; > > > IF ADD_R THEN > DRVXTAB.ADD_R(IDX, L_IXP); > END IF; > > 6432a6437,6439 > GOTOPTLOCK BOOLEAN := FALSE; > GOTDMLLOCK BOOLEAN := FALSE; > GOTRIOLOCK BOOLEAN := FALSE; 6442a6450 > GOTDMLLOCK := TRUE; 6443a6452 > GOTOPTLOCK := TRUE; 6444a6454 > GOTRIOLOCK := TRUE; 6455a6466 > GOTOPTLOCK := FALSE; 6456a6468 > GOTDMLLOCK := FALSE; 6457a6470 > GOTRIOLOCK := FALSE; 6479c6492 < RAISE DR_DEF.TEXTILE_ERROR; --- > GOTO CLEANUP; 6481a6495,6506 > <<CLEANUP>> > IF (IDX.IDX_ID > 0) THEN > IF (GOTOPTLOCK) THEN > DRIOPT.UNLOCK_OPT(DRIOPT.IGNORE_ERRORS); > END IF; > IF (GOTDMLLOCK) THEN > DRIDML.UNLOCK_DML(DRIDML.IGNORE_ERRORS); > END IF; > IF (GOTRIOLOCK) THEN > DRIRIO.UNLOCK_RIO(DRIRIO.IGNORE_ERRORS); > END IF; > END IF; 6488a6514,6516 > GOTOPTLOCK BOOLEAN := FALSE; > GOTDMLLOCK BOOLEAN := FALSE; > GOTRIOLOCK BOOLEAN := FALSE; 6498a6527 > GOTDMLLOCK := TRUE; 6499a6529 > GOTOPTLOCK := TRUE; 6500a6531 > GOTRIOLOCK := TRUE; 6510a6542 > GOTOPTLOCK := FALSE; 6511a6544 > GOTDMLLOCK := FALSE; 6512a6546 > GOTRIOLOCK := FALSE; 6535c6569 < RAISE DR_DEF.TEXTILE_ERROR; --- > GOTO CLEANUP; 6537a6572,6583 > <<CLEANUP>> > IF (IDX.IDX_ID > 0) THEN > IF (GOTOPTLOCK) THEN > DRIOPT.UNLOCK_OPT(DRIOPT.IGNORE_ERRORS); > END IF; > IF (GOTDMLLOCK) THEN > DRIDML.UNLOCK_DML(DRIDML.IGNORE_ERRORS); > END IF; > IF (GOTRIOLOCK) THEN > DRIRIO.UNLOCK_RIO(DRIRIO.IGNORE_ERRORS); > END IF; > END IF; 6544a6591,6593 > GOTOPTLOCK BOOLEAN := FALSE; > GOTDMLLOCK BOOLEAN := FALSE; > GOTRIOLOCK BOOLEAN := FALSE; 6554a6604 > GOTDMLLOCK := TRUE; 6555a6606 > GOTOPTLOCK := TRUE; 6556a6608 > GOTRIOLOCK := TRUE; 6569a6622 > GOTOPTLOCK := TRUE; 6570a6624 > GOTDMLLOCK := TRUE; 6571a6626 > GOTRIOLOCK := TRUE; 6591c6646 < RAISE DR_DEF.TEXTILE_ERROR; --- > GOTO CLEANUP; 6593a6649,6660 > <<CLEANUP>> > IF (IDX.IDX_ID > 0) THEN > IF (GOTOPTLOCK) THEN > DRIOPT.UNLOCK_OPT(DRIOPT.IGNORE_ERRORS); > END IF; > IF (GOTDMLLOCK) THEN > DRIDML.UNLOCK_DML(DRIDML.IGNORE_ERRORS); > END IF; > IF (GOTRIOLOCK) THEN > DRIRIO.UNLOCK_RIO(DRIRIO.IGNORE_ERRORS); > END IF; > END IF; 6661a6729,6731 > GOTOPTLOCK BOOLEAN := FALSE; > GOTDMLLOCK BOOLEAN := FALSE; > GOTRIOLOCK BOOLEAN := FALSE; 6675a6746 > GOTDMLLOCK := TRUE; 6676a6748 > GOTOPTLOCK := TRUE; 6677a6750 > GOTRIOLOCK := TRUE; 6688a6762 > GOTOPTLOCK := FALSE; 6689a6764 > GOTDMLLOCK := FALSE; 6690a6766 > GOTRIOLOCK := FALSE; 6698c6774 < RAISE DR_DEF.TEXTILE_ERROR; --- > GOTO CLEANUP; 6702a6779,6790 > <<CLEANUP>> > IF (IDX.IDX_ID > 0) THEN > IF (GOTOPTLOCK) THEN > DRIOPT.UNLOCK_OPT(DRIOPT.IGNORE_ERRORS); > END IF; > IF (GOTDMLLOCK) THEN > DRIDML.UNLOCK_DML(DRIDML.IGNORE_ERRORS); > END IF; > IF (GOTRIOLOCK) THEN > DRIRIO.UNLOCK_RIO(DRIRIO.IGNORE_ERRORS); > END IF; > END IF; 6708a6797,6799 > GOTOPTLOCK BOOLEAN := FALSE; > GOTDMLLOCK BOOLEAN := FALSE; > GOTRIOLOCK BOOLEAN := FALSE; 6718a6810 > GOTDMLLOCK := TRUE; 6719a6812 > GOTOPTLOCK := TRUE; 6720a6814 > GOTRIOLOCK := TRUE; 6731a6826 > GOTOPTLOCK := FALSE; 6732a6828 > GOTDMLLOCK := FALSE; 6733a6830 > GOTRIOLOCK := FALSE; 6741c6838 < RAISE DR_DEF.TEXTILE_ERROR; --- > GOTO CLEANUP; 6743a6841,6852 > <<CLEANUP>> > IF (IDX.IDX_ID > 0) THEN > IF (GOTOPTLOCK) THEN > DRIOPT.UNLOCK_OPT(DRIOPT.IGNORE_ERRORS); > END IF; > IF (GOTDMLLOCK) THEN > DRIDML.UNLOCK_DML(DRIDML.IGNORE_ERRORS); > END IF; > IF (GOTRIOLOCK) THEN > DRIRIO.UNLOCK_RIO(DRIRIO.IGNORE_ERRORS); > END IF; > END IF; 6787a6897,6899 > GOTOPTLOCK BOOLEAN := FALSE; > GOTDMLLOCK BOOLEAN := FALSE; > GOTRIOLOCK BOOLEAN := FALSE; 6801a6914 > GOTDMLLOCK := TRUE; 6802a6916 > GOTOPTLOCK := TRUE; 6803a6918 > GOTRIOLOCK := TRUE; 6809a6925 > GOTOPTLOCK := FALSE; 6815a6932 > GOTDMLLOCK := FALSE; 6816a6934 > GOTRIOLOCK := FALSE; 6821c6939 < RAISE DR_DEF.TEXTILE_ERROR; --- > GOTO CLEANUP; 6825a6944,6955 > <<CLEANUP>> > IF (IDX.IDX_ID > 0) THEN > IF (GOTOPTLOCK) THEN > DRIOPT.UNLOCK_OPT(DRIOPT.IGNORE_ERRORS); > END IF; > IF (GOTDMLLOCK) THEN > DRIDML.UNLOCK_DML(DRIDML.IGNORE_ERRORS); > END IF; > IF (GOTRIOLOCK) THEN > DRIRIO.UNLOCK_RIO(DRIRIO.IGNORE_ERRORS); > END IF; > END IF; 6831a6962,6964 > GOTOPTLOCK BOOLEAN := FALSE; > GOTDMLLOCK BOOLEAN := FALSE; > GOTRIOLOCK BOOLEAN := FALSE; 6841a6975 > GOTDMLLOCK := TRUE; 6842a6977 > GOTOPTLOCK := TRUE; 6843a6979 > GOTRIOLOCK := TRUE; 6849a6986 > GOTOPTLOCK := FALSE; 6855a6993 > GOTDMLLOCK := FALSE; 6856a6995 > GOTRIOLOCK := FALSE; 6861c7000 < RAISE DR_DEF.TEXTILE_ERROR; --- > GOTO CLEANUP; 6863a7003,7015 > <<CLEANUP>> > IF (IDX.IDX_ID > 0) THEN > IF (GOTOPTLOCK) THEN > DRIOPT.UNLOCK_OPT(DRIOPT.IGNORE_ERRORS); > END IF; > IF (GOTDMLLOCK) THEN > DRIDML.UNLOCK_DML(DRIDML.IGNORE_ERRORS); > END IF; > IF (GOTRIOLOCK) THEN > DRIRIO.UNLOCK_RIO(DRIRIO.IGNORE_ERRORS); > END IF; > END IF; >
2751c2751,2752 < (INSTR(TMP2, 'IDENTIFIED/*' ) > 0) OR --- > (INSTR(TMP2, 'NO AUTHENTICATION') > 0) OR > (INSTR(TMP2, 'ACCOUNT LOCK') > 0) OR
1c1 < PACKAGE lbac_policy_admin AS --- > PACKAGE lbac_policy_admin AUTHID CURRENT_USER AS 8a9,10 > PRAGMA SUPPLEMENTAL_LOG_DATA(DEFAULT, NONE); > 12d13 < PRAGMA SUPPLEMENTAL_LOG_DATA(APPLY_SCHEMA_POLICY, AUTO_WITH_COMMIT); 17d17 < PRAGMA SUPPLEMENTAL_LOG_DATA(REMOVE_SCHEMA_POLICY, AUTO_WITH_COMMIT); 21d20 < PRAGMA SUPPLEMENTAL_LOG_DATA(ENABLE_SCHEMA_POLICY, AUTO_WITH_COMMIT); 26d24 < PRAGMA SUPPLEMENTAL_LOG_DATA(ALTER_SCHEMA_POLICY, AUTO_WITH_COMMIT); 34,35c32 < PRAGMA SUPPLEMENTAL_LOG_DATA(APPLY_TABLE_POLICY, AUTO_WITH_COMMIT); < --- > 40d36 < PRAGMA SUPPLEMENTAL_LOG_DATA(REMOVE_TABLE_POLICY, AUTO_WITH_COMMIT); 43d38 < PRAGMA SUPPLEMENTAL_LOG_DATA(POLICY_SUBSCRIBE, AUTO_WITH_COMMIT); 46d40 < PRAGMA SUPPLEMENTAL_LOG_DATA(POLICY_UNSUBSCRIBE, AUTO_WITH_COMMIT); 51,52c45 < PRAGMA SUPPLEMENTAL_LOG_DATA(ENABLE_TABLE_POLICY, AUTO_WITH_COMMIT); < --- > 56d48 < PRAGMA SUPPLEMENTAL_LOG_DATA(DISABLE_TABLE_POLICY, AUTO_WITH_COMMIT); 60d51 < PRAGMA SUPPLEMENTAL_LOG_DATA(DISABLE_SCHEMA_POLICY, AUTO_WITH_COMMIT);
0a1,74 > PACKAGE lbac_policy_admin_int > ACCESSIBLE BY (LBACSYS.LBAC_POLICY_ADMIN) > AS > > > > > > > PROCEDURE APPLY_SCHEMA_POLICY (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > DEFAULT_OPTIONS IN VARCHAR2 DEFAULT NULL, > USERNAME IN VARCHAR2); > PRAGMA SUPPLEMENTAL_LOG_DATA(APPLY_SCHEMA_POLICY, AUTO_WITH_COMMIT); > > PROCEDURE REMOVE_SCHEMA_POLICY (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > DROP_COLUMN IN BOOLEAN DEFAULT FALSE, > USERNAME IN VARCHAR2); > PRAGMA SUPPLEMENTAL_LOG_DATA(REMOVE_SCHEMA_POLICY, AUTO_WITH_COMMIT); > > PROCEDURE ENABLE_SCHEMA_POLICY (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > USERNAME IN VARCHAR2); > PRAGMA SUPPLEMENTAL_LOG_DATA(ENABLE_SCHEMA_POLICY, AUTO_WITH_COMMIT); > > PROCEDURE ALTER_SCHEMA_POLICY (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > DEFAULT_OPTIONS IN VARCHAR2, > USERNAME IN VARCHAR2); > PRAGMA SUPPLEMENTAL_LOG_DATA(ALTER_SCHEMA_POLICY, AUTO_WITH_COMMIT); > > PROCEDURE APPLY_TABLE_POLICY (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > TABLE_NAME IN VARCHAR2, > TABLE_OPTIONS IN VARCHAR2 DEFAULT NULL, > LABEL_FUNCTION IN VARCHAR2 DEFAULT NULL, > PREDICATE IN VARCHAR2 DEFAULT NULL, > USERNAME IN VARCHAR2); > PRAGMA SUPPLEMENTAL_LOG_DATA(APPLY_TABLE_POLICY, AUTO_WITH_COMMIT); > > PROCEDURE REMOVE_TABLE_POLICY (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > TABLE_NAME IN VARCHAR2, > DROP_COLUMN IN BOOLEAN DEFAULT FALSE, > USERNAME IN VARCHAR2); > PRAGMA SUPPLEMENTAL_LOG_DATA(REMOVE_TABLE_POLICY, AUTO_WITH_COMMIT); > > PROCEDURE POLICY_SUBSCRIBE(POLICY_NAME IN VARCHAR2, > USERNAME IN VARCHAR2); > PRAGMA SUPPLEMENTAL_LOG_DATA(POLICY_SUBSCRIBE, AUTO_WITH_COMMIT); > > PROCEDURE POLICY_UNSUBSCRIBE(POLICY_NAME IN VARCHAR2, > USERNAME IN VARCHAR2); > PRAGMA SUPPLEMENTAL_LOG_DATA(POLICY_UNSUBSCRIBE, AUTO_WITH_COMMIT); > > PROCEDURE ENABLE_TABLE_POLICY (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > TABLE_NAME IN VARCHAR2, > USERNAME IN VARCHAR2); > PRAGMA SUPPLEMENTAL_LOG_DATA(ENABLE_TABLE_POLICY, AUTO_WITH_COMMIT); > > PROCEDURE DISABLE_TABLE_POLICY (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > TABLE_NAME IN VARCHAR2, > USERNAME IN VARCHAR2); > PRAGMA SUPPLEMENTAL_LOG_DATA(DISABLE_TABLE_POLICY, AUTO_WITH_COMMIT); > > PROCEDURE DISABLE_SCHEMA_POLICY (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > USERNAME IN VARCHAR2); > PRAGMA SUPPLEMENTAL_LOG_DATA(DISABLE_SCHEMA_POLICY, AUTO_WITH_COMMIT); > > END LBAC_POLICY_ADMIN_INT;
1c1,3 < PACKAGE sa_user_admin AS --- > PACKAGE sa_user_admin AUTHID CURRENT_USER AS > > PRAGMA SUPPLEMENTAL_LOG_DATA(DEFAULT, NONE); 90d91 < PRAGMA SUPPLEMENTAL_LOG_DATA(SET_USER_PRIVS, AUTO_WITH_COMMIT); 96d96 < PRAGMA SUPPLEMENTAL_LOG_DATA(SET_PROG_PRIVS, AUTO_WITH_COMMIT); 100,101d99 < PRAGMA SUPPLEMENTAL_LOG_DATA(DROP_USER_ACCESS, AUTO_WITH_COMMIT); <
0a1,122 > PACKAGE sa_user_admin_int > ACCESSIBLE BY (LBACSYS.SA_USER_ADMIN) > AS > > PROCEDURE SET_LEVELS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > MAX_LEVEL IN VARCHAR2, > MIN_LEVEL IN VARCHAR2 DEFAULT NULL, > DEF_LEVEL IN VARCHAR2 DEFAULT NULL, > ROW_LEVEL IN VARCHAR2 DEFAULT NULL, > INVOKER_USR IN VARCHAR2); > > PROCEDURE SET_COMPARTMENTS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > READ_COMPS IN VARCHAR2, > WRITE_COMPS IN VARCHAR2 DEFAULT NULL, > DEF_COMPS IN VARCHAR2 DEFAULT NULL, > ROW_COMPS IN VARCHAR2 DEFAULT NULL, > INVOKER_USR IN VARCHAR2); > > PROCEDURE ALTER_COMPARTMENTS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > COMPS IN VARCHAR2, > ACCESS_MODE IN VARCHAR2 DEFAULT NULL, > IN_DEF IN VARCHAR2 DEFAULT NULL, > IN_ROW IN VARCHAR2 DEFAULT NULL, > INVOKER_USR IN VARCHAR2); > > PROCEDURE SET_GROUPS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > READ_GROUPS IN VARCHAR2, > WRITE_GROUPS IN VARCHAR2 DEFAULT NULL, > DEF_GROUPS IN VARCHAR2 DEFAULT NULL, > ROW_GROUPS IN VARCHAR2 DEFAULT NULL, > INVOKER_USR IN VARCHAR2); > > PROCEDURE ALTER_GROUPS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > GROUPS IN VARCHAR2, > ACCESS_MODE IN VARCHAR2 DEFAULT NULL, > IN_DEF IN VARCHAR2 DEFAULT NULL, > IN_ROW IN VARCHAR2 DEFAULT NULL, > INVOKER_USR IN VARCHAR2); > > PROCEDURE ADD_COMPARTMENTS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > COMPS IN VARCHAR2, > ACCESS_MODE IN VARCHAR2 DEFAULT SA_UTL.READ_ONLY, > IN_DEF IN VARCHAR2 DEFAULT 'Y', > IN_ROW IN VARCHAR2 DEFAULT 'N', > INVOKER_USR IN VARCHAR2); > > PROCEDURE DROP_COMPARTMENTS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > COMPS IN VARCHAR2, > INVOKER_USR IN VARCHAR2); > > PROCEDURE DROP_ALL_COMPARTMENTS > (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > INVOKER_USR IN VARCHAR2); > > > PROCEDURE ADD_GROUPS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > GROUPS IN VARCHAR2, > ACCESS_MODE IN VARCHAR2 DEFAULT NULL, > IN_DEF IN VARCHAR2 DEFAULT NULL, > IN_ROW IN VARCHAR2 DEFAULT NULL, > INVOKER_USR IN VARCHAR2); > > PROCEDURE DROP_GROUPS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > GROUPS IN VARCHAR2, > INVOKER_USR IN VARCHAR2); > > PROCEDURE DROP_ALL_GROUPS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > INVOKER_USR IN VARCHAR2); > > PROCEDURE SET_USER_LABELS > (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > MAX_READ_LABEL IN VARCHAR2, > MAX_WRITE_LABEL IN VARCHAR2 DEFAULT NULL, > MIN_WRITE_LABEL IN VARCHAR2 DEFAULT NULL, > DEF_LABEL IN VARCHAR2 DEFAULT NULL, > ROW_LABEL IN VARCHAR2 DEFAULT NULL, > INVOKER_USR IN VARCHAR2); > > PROCEDURE SET_DEFAULT_LABEL > (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > DEF_LABEL IN VARCHAR2, > INVOKER_USR IN VARCHAR2); > > PROCEDURE SET_ROW_LABEL > (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > ROW_LABEL IN VARCHAR2, > INVOKER_USR IN VARCHAR2); > > PROCEDURE SET_USER_PRIVS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > PRIVILEGES IN VARCHAR2, > INVOKER_USR IN VARCHAR2); > PRAGMA SUPPLEMENTAL_LOG_DATA(SET_USER_PRIVS, AUTO_WITH_COMMIT); > > PROCEDURE SET_PROG_PRIVS (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > PROGRAM_UNIT_NAME IN VARCHAR2, > PRIVILEGES IN VARCHAR2, > INVOKER_USR IN VARCHAR2); > PRAGMA SUPPLEMENTAL_LOG_DATA(SET_PROG_PRIVS, AUTO_WITH_COMMIT); > > PROCEDURE DROP_USER_ACCESS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > INVOKER_USR IN VARCHAR2); > PRAGMA SUPPLEMENTAL_LOG_DATA(DROP_USER_ACCESS, AUTO_WITH_COMMIT); > > > END SA_USER_ADMIN_INT;
8,61c8,10 < < PRODUCT CONSTANT VARCHAR2(30) := 'TRUSTED'; < FACILITY CONSTANT VARCHAR2(30) := 'LBAC'; < NO_POLICY_EC CONSTANT PLS_INTEGER := 12416; < NO_PROG_EC CONSTANT PLS_INTEGER := 12417; < NO_USER_EC CONSTANT PLS_INTEGER := 12418; < INVALID_PARAMS_EC CONSTANT PLS_INTEGER := 12427; < STARTUP_FAILURE_EC CONSTANT PLS_INTEGER := 12409; < LBAC_ERROR_EC CONSTANT PLS_INTEGER := 12432; < UNAUTH_OPERATION CONSTANT PLS_INTEGER := 12407; < POLICY_ADMIN_EC CONSTANT PLS_INTEGER := 12446; < INVALID_SCHEMA_EC CONSTANT PLS_INTEGER := 12425; < ALTER_SCHEMA_EC CONSTANT PLS_INTEGER := 12448; < INTERNAL_ERROR_EC CONSTANT PLS_INTEGER := 12414; < < < APPLY_ACTION CONSTANT PLS_INTEGER := 1; < REMOVE_ACTION CONSTANT PLS_INTEGER := 2; < SET_ACTION CONSTANT PLS_INTEGER := 4; < GRANT_ACTION CONSTANT PLS_INTEGER := 8; < REVOKE_ACTION CONSTANT PLS_INTEGER := 16; < EXISTS_ACTION CONSTANT PLS_INTEGER := 32; < < < < APPLY_POLICY_ACTION CONSTANT PLS_INTEGER := 1; < REMOVE_POLICY_ACTION CONSTANT PLS_INTEGER := 2; < ENABLE_POLICY_ACTION CONSTANT PLS_INTEGER := 5; < DISABLE_POLICY_ACTION CONSTANT PLS_INTEGER := 6; < POLICY_SUB_ACTION CONSTANT PLS_INTEGER := 7; < POLICY_UNSUB_ACTION CONSTANT PLS_INTEGER := 8; < ALTER_POLICY_ACTION CONSTANT PLS_INTEGER := 13; < < < < AUDINFO_OBJOWNER CONSTANT PLS_INTEGER := 0; < AUDINFO_OBJNAME CONSTANT PLS_INTEGER := 1; < < PROCEDURE APPLY_SCHEMA_POLICY_INTERNAL (POLICY_NAME IN VARCHAR2, < SCHEMA_NAME IN VARCHAR2, < DEFAULT_OPTIONS IN VARCHAR2) < IS LANGUAGE C < NAME "zlluasp" < LIBRARY LBACSYS.LBAC$USER_LIBT < WITH CONTEXT < PARAMETERS ( < CONTEXT, < POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, < POLICY_NAME INDICATOR SB2, < SCHEMA_NAME STRING, SCHEMA_NAME LENGTH SIZE_T, < SCHEMA_NAME INDICATOR SB2, < DEFAULT_OPTIONS STRING, DEFAULT_OPTIONS LENGTH SIZE_T, < DEFAULT_OPTIONS INDICATOR SB2 < ); --- > NOT_ALLOWED_EC CONSTANT PLS_INTEGER := 42908; > PRODUCT CONSTANT VARCHAR2(12) := 'TRUSTED'; > LBAC_FACILITY CONSTANT VARCHAR2(12) := 'LBAC'; 67,69c16 < < SCH_NAME VARCHAR2(128); < --- > USERNAME VARCHAR2(128); 71,115c18,24 < < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', < SCH_NAME); < < IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN < IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < IF LBACSYS.LBAC_CACHE.CHECK_POLICYSUBSCRIBED(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, LBAC_ERROR_EC, 'Policy not OID subscribed'); < END IF; < ELSE < IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, APPLY_ACTION) = FALSE < THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < END IF; < < BEGIN < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(1); < APPLY_SCHEMA_POLICY_INTERNAL(POLICY_NAME, SCH_NAME, DEFAULT_OPTIONS); < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); < EXCEPTION < WHEN OTHERS THEN < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); < RAISE; < END; < < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(APPLY_POLICY_ACTION, 0)) THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < EXCEPTION < WHEN OTHERS THEN < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(APPLY_POLICY_ACTION, ABS(SQLCODE))) < THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < RAISE; --- > USERNAME := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (USERNAME = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.LBAC_POLICY_ADMIN_INT.APPLY_SCHEMA_POLICY(POLICY_NAME, SCHEMA_NAME, > DEFAULT_OPTIONS, USERNAME); 118,133d26 < PROCEDURE REMOVE_SCHEMA_POLICY_INTERNAL (POLICY_NAME IN VARCHAR2, < SCHEMA_NAME IN VARCHAR2, < DROP_COLUMN IN BOOLEAN) < IS LANGUAGE C < NAME "zllursp" < LIBRARY LBACSYS.LBAC$USER_LIBT < WITH CONTEXT < PARAMETERS ( < CONTEXT, < POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, < POLICY_NAME INDICATOR SB2, < SCHEMA_NAME STRING, SCHEMA_NAME LENGTH SIZE_T, < SCHEMA_NAME INDICATOR SB2, < DROP_COLUMN UB1 < ); < 138,140c31 < < SCH_NAME VARCHAR2(128); < --- > USERNAME VARCHAR2(128); 142,181c33,39 < < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', < SCH_NAME); < IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN < IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < ELSE < IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, REMOVE_ACTION) = FALSE < THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < END IF; < < BEGIN < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(1); < REMOVE_SCHEMA_POLICY_INTERNAL(POLICY_NAME, SCH_NAME, DROP_COLUMN); < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); < EXCEPTION < WHEN OTHERS THEN < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); < RAISE; < END; < < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(REMOVE_POLICY_ACTION, 0)) THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < EXCEPTION < WHEN OTHERS THEN < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(REMOVE_POLICY_ACTION, ABS(SQLCODE))) < THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < RAISE; --- > USERNAME := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (USERNAME = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.LBAC_POLICY_ADMIN_INT.REMOVE_SCHEMA_POLICY(POLICY_NAME, SCHEMA_NAME, > DROP_COLUMN, USERNAME); 184,197d41 < PROCEDURE ENABLE_SCHEMA_POLICY_INTERNAL (POLICY_NAME IN VARCHAR2, < SCHEMA_NAME IN VARCHAR2) < IS LANGUAGE C < NAME "zlluesp" < LIBRARY LBACSYS.LBAC$USER_LIBT < WITH CONTEXT < PARAMETERS ( < CONTEXT, < POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, < POLICY_NAME INDICATOR SB2, < SCHEMA_NAME STRING, SCHEMA_NAME LENGTH SIZE_T, < SCHEMA_NAME INDICATOR SB2 < ); < 200,201c44 < SCH_NAME VARCHAR2(128); < --- > USERNAME VARCHAR2(128); 203,241c46,52 < < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', < SCH_NAME); < IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN < IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < ELSE < IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, NULL) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < END IF; < < BEGIN < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(1); < ENABLE_SCHEMA_POLICY_INTERNAL(POLICY_NAME, SCH_NAME); < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); < EXCEPTION < WHEN OTHERS THEN < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); < RAISE; < END; < < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(ENABLE_POLICY_ACTION, 0)) THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < EXCEPTION < WHEN OTHERS THEN < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(ENABLE_POLICY_ACTION, ABS(SQLCODE))) < THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < RAISE; --- > USERNAME := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (USERNAME = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.LBAC_POLICY_ADMIN_INT.ENABLE_SCHEMA_POLICY(POLICY_NAME, SCHEMA_NAME, > USERNAME); 244d54 < 248,254c58,59 < IS < < POL_NUM PLS_INTEGER; < USR_CNT PLS_INTEGER; < NEW_OPTIONS PLS_INTEGER; < SCH_NAME VARCHAR2(128); < --- > IS > USERNAME VARCHAR2(128); 256,316c61,64 < < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', < SCH_NAME); < < IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN < IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < ELSE < IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, NULL) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < END IF; < < < IF SCH_NAME IS NULL THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, INVALID_PARAMS_EC, 'schema name'); < END IF; < IF SCH_NAME IN ('SYS', 'LBACSYS', 'SYSTEM') THEN < LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, FACILITY, INVALID_SCHEMA_EC); < END IF; < < < POL_NUM:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < < < SELECT COUNT(*) INTO USR_CNT < FROM SYS.ALL_USERS < WHERE USERNAME = SCH_NAME; < IF (USR_CNT != 1) THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, NO_PROG_EC, SCH_NAME); < END IF; < < IF DEFAULT_OPTIONS IS NULL THEN < NEW_OPTIONS := NULL; < ELSE < < IF INSTR(UPPER(DEFAULT_OPTIONS),'INVERSE_GROUP',1,1) > 0 THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, LBAC_ERROR_EC, ' invalid option string'); < END IF; < < NEW_OPTIONS := LBACSYS.LBAC_CACHE.OPTION_NUMBER(DEFAULT_OPTIONS); < END IF; < < < < UPDATE LBACSYS.OLS$POLS SET OPTIONS = NEW_OPTIONS < WHERE POL#=POL_NUM AND OWNER = SCH_NAME; < < < < < IF SQL%ROWCOUNT = 0 THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, FACILITY, < ALTER_SCHEMA_EC, POLICY_NAME, SCH_NAME); --- > USERNAME := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (USERNAME = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); 318,334c66,67 < < COMMIT; < < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(ALTER_POLICY_ACTION, 0)) THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < EXCEPTION < WHEN OTHERS THEN < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(ALTER_POLICY_ACTION, ABS(SQLCODE))) < THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < RAISE; --- > LBACSYS.LBAC_POLICY_ADMIN_INT.ALTER_SCHEMA_POLICY(POLICY_NAME, SCHEMA_NAME, > DEFAULT_OPTIONS, USERNAME); 337,363d69 < < PROCEDURE APPLY_TABLE_POLICY_INTERNAL (POLICY_NAME IN VARCHAR2, < SCHEMA_NAME IN VARCHAR2, < TABLE_NAME IN VARCHAR2, < TABLE_OPTIONS IN VARCHAR2, < LABEL_FUNCTION IN VARCHAR2, < PREDICATE IN VARCHAR2) < IS LANGUAGE C < NAME "zlluatp" < LIBRARY LBACSYS.LBAC$USER_LIBT < WITH CONTEXT < PARAMETERS ( < CONTEXT, < POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, < POLICY_NAME INDICATOR SB2, < SCHEMA_NAME STRING, SCHEMA_NAME LENGTH SIZE_T, < SCHEMA_NAME INDICATOR SB2, < TABLE_NAME STRING, TABLE_NAME LENGTH SIZE_T, < TABLE_NAME INDICATOR SB2, < TABLE_OPTIONS STRING, TABLE_OPTIONS LENGTH SIZE_T, < TABLE_OPTIONS INDICATOR SB2, < LABEL_FUNCTION STRING, LABEL_FUNCTION LENGTH SIZE_T, < LABEL_FUNCTION INDICATOR SB2, < PREDICATE STRING, PREDICATE LENGTH SIZE_T, < PREDICATE INDICATOR SB2 < ); < 371,373c77 < SCH_NAME VARCHAR2(128); < TAB_NAME VARCHAR2(128); < --- > USERNAME VARCHAR2(128); 375,424c79,87 < < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', < SCH_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(TABLE_NAME, 'table name', < TAB_NAME); < < IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN < IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < IF LBACSYS.LBAC_CACHE.CHECK_POLICYSUBSCRIBED(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, LBAC_ERROR_EC, 'Policy not OID subscribed'); < END IF; < ELSE < IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, APPLY_ACTION) = FALSE < THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < END IF; < < BEGIN < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(1); < APPLY_TABLE_POLICY_INTERNAL(POLICY_NAME, SCH_NAME, TAB_NAME, TABLE_OPTIONS, < LABEL_FUNCTION, PREDICATE ); < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); < EXCEPTION < WHEN OTHERS THEN < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); < RAISE; < END; < < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(APPLY_POLICY_ACTION, 0)) THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJNAME, TAB_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < EXCEPTION < WHEN OTHERS THEN < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(APPLY_POLICY_ACTION, ABS(SQLCODE))) < THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJNAME, TAB_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < RAISE; --- > USERNAME := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (USERNAME = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.LBAC_POLICY_ADMIN_INT.APPLY_TABLE_POLICY(POLICY_NAME, SCHEMA_NAME, > TABLE_NAME, TABLE_OPTIONS, > LABEL_FUNCTION, PREDICATE, > USERNAME); 427,443d89 < PROCEDURE ENABLE_TABLE_POLICY_INTERNAL (POLICY_NAME IN VARCHAR2, < SCHEMA_NAME IN VARCHAR2, < TABLE_NAME IN VARCHAR2) < IS LANGUAGE C < NAME "zlluetp" < LIBRARY LBACSYS.LBAC$USER_LIBT < WITH CONTEXT < PARAMETERS ( < CONTEXT, < POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, < POLICY_NAME INDICATOR SB2, < SCHEMA_NAME STRING, SCHEMA_NAME LENGTH SIZE_T, < SCHEMA_NAME INDICATOR SB2, < TABLE_NAME STRING, TABLE_NAME LENGTH SIZE_T, < TABLE_NAME INDICATOR SB2 < ); < 447,449c93 < SCH_NAME VARCHAR2(128); < TAB_NAME VARCHAR2(128); < --- > USERNAME VARCHAR2(128); 451,494c95,101 < < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', < SCH_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(TABLE_NAME, 'table name', < TAB_NAME); < < IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN < IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < ELSE < IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, NULL) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < END IF; < < BEGIN < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(1); < ENABLE_TABLE_POLICY_INTERNAL(POLICY_NAME, SCH_NAME, TAB_NAME); < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); < EXCEPTION < WHEN OTHERS THEN < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); < RAISE; < END; < < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(ENABLE_POLICY_ACTION, 0)) THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJNAME, TAB_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < EXCEPTION < WHEN OTHERS THEN < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(ENABLE_POLICY_ACTION, ABS(SQLCODE))) < THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJNAME, TAB_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < RAISE; --- > USERNAME := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (USERNAME = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.LBAC_POLICY_ADMIN_INT.ENABLE_TABLE_POLICY(POLICY_NAME, SCHEMA_NAME, > TABLE_NAME, USERNAME); 497,516d103 < < PROCEDURE REMOVE_TABLE_POLICY_INTERNAL (POLICY_NAME IN VARCHAR2, < SCHEMA_NAME IN VARCHAR2, < TABLE_NAME IN VARCHAR2, < DROP_COLUMN IN BOOLEAN) < IS LANGUAGE C < NAME "zllurtp" < LIBRARY LBACSYS.LBAC$USER_LIBT < WITH CONTEXT < PARAMETERS ( < CONTEXT, < POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, < POLICY_NAME INDICATOR SB2, < SCHEMA_NAME STRING, SCHEMA_NAME LENGTH SIZE_T, < SCHEMA_NAME INDICATOR SB2, < TABLE_NAME STRING, TABLE_NAME LENGTH SIZE_T, < TABLE_NAME INDICATOR SB2, < DROP_COLUMN UB1, DROP_COLUMN INDICATOR SB2 < ); < 522,525c109 < < SCH_NAME VARCHAR2(128); < TAB_NAME VARCHAR2(128); < --- > USERNAME VARCHAR2(128); 527,571c111,118 < < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', < SCH_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(TABLE_NAME, 'table name', < TAB_NAME); < < IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN < IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < ELSE < IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, REMOVE_ACTION) = FALSE < THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < END IF; < < BEGIN < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(1); < REMOVE_TABLE_POLICY_INTERNAL(POLICY_NAME, SCH_NAME, TAB_NAME, DROP_COLUMN); < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); < EXCEPTION < WHEN OTHERS THEN < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); < RAISE; < END; < < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(REMOVE_POLICY_ACTION, 0)) THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJNAME, TAB_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < EXCEPTION < WHEN OTHERS THEN < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(REMOVE_POLICY_ACTION, ABS(SQLCODE))) < THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJNAME, TAB_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < RAISE; --- > USERNAME := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (USERNAME = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.LBAC_POLICY_ADMIN_INT.REMOVE_TABLE_POLICY(POLICY_NAME, SCHEMA_NAME, > TABLE_NAME, DROP_COLUMN, > USERNAME); 576,587c123,128 < UNSUPPORTED_OP_EC CONSTANT PLS_INTEGER := 12408; < < BEGIN < IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN < IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < LBACSYS.LBAC_CACHE.OID_SUBSCRIBE(POLICY_NAME); < ELSE < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, UNSUPPORTED_OP_EC, 'OID not enabled'); --- > USERNAME VARCHAR2(128); > BEGIN > USERNAME := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (USERNAME = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); 589,601c130 < < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(POLICY_SUB_ACTION, 0)) THEN < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < EXCEPTION < WHEN OTHERS THEN < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(POLICY_SUB_ACTION, ABS(SQLCODE))) < THEN < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < RAISE; --- > LBACSYS.LBAC_POLICY_ADMIN_INT.POLICY_SUBSCRIBE(POLICY_NAME, USERNAME); 606,609c135 < UNSUPPORTED_OP_EC CONSTANT PLS_INTEGER := 12408; < POLICY_IN_USE_TABLE PLS_INTEGER; < POLICY_IN_USE_SCHEMA PLS_INTEGER; < --- > USERNAME VARCHAR2(128); 611,632c137,140 < IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN < IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < SELECT COUNT(*) INTO POLICY_IN_USE_SCHEMA < FROM LBACSYS.OLS$POL P, LBACSYS.OLS$POLS S < WHERE P.POL_NAME = UPPER(POLICY_NAME) < AND P.POL# = S.POL#; < SELECT COUNT(*) INTO POLICY_IN_USE_TABLE < FROM LBACSYS.OLS$POL P, LBACSYS.OLS$POLT PT < WHERE P.POL_NAME = UPPER(POLICY_NAME) < AND P.POL# = PT.POL#; < < IF POLICY_IN_USE_TABLE <> 0 OR POLICY_IN_USE_SCHEMA <> 0 THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, LBAC_ERROR_EC, 'Policy in use'); < END IF; < LBACSYS.LBAC_CACHE.OID_UNSUBSCRIBE(POLICY_NAME); < ELSE < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, UNSUPPORTED_OP_EC, 'OID not enabled'); --- > USERNAME := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (USERNAME = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); 634,646c142 < < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(POLICY_UNSUB_ACTION, 0)) THEN < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < EXCEPTION < WHEN OTHERS THEN < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(POLICY_UNSUB_ACTION, ABS(SQLCODE))) < THEN < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < RAISE; --- > LBACSYS.LBAC_POLICY_ADMIN_INT.POLICY_UNSUBSCRIBE(POLICY_NAME, USERNAME); 649,666d144 < < PROCEDURE DISABLE_TABLE_POLICY_INTERNAL (POLICY_NAME IN VARCHAR2, < SCHEMA_NAME IN VARCHAR2, < TABLE_NAME IN VARCHAR2) < IS LANGUAGE C < NAME "zlludtp" < LIBRARY LBACSYS.LBAC$USER_LIBT < WITH CONTEXT < PARAMETERS ( < CONTEXT, < POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, < POLICY_NAME INDICATOR SB2, < SCHEMA_NAME STRING, SCHEMA_NAME LENGTH SIZE_T, < SCHEMA_NAME INDICATOR SB2, < TABLE_NAME STRING, TABLE_NAME LENGTH SIZE_T, < TABLE_NAME INDICATOR SB2 < ); < 671,674c149 < < SCH_NAME VARCHAR2(128); < TAB_NAME VARCHAR2(128); < --- > USERNAME VARCHAR2(128); 676,719c151,157 < < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', < SCH_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(TABLE_NAME, 'table name', < TAB_NAME); < < IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN < IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < ELSE < IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, NULL) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < END IF; < < BEGIN < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(1); < DISABLE_TABLE_POLICY_INTERNAL(POLICY_NAME, SCH_NAME, TAB_NAME); < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); < EXCEPTION < WHEN OTHERS THEN < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); < RAISE; < END; < < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(DISABLE_POLICY_ACTION, 0)) THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJNAME, TAB_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < EXCEPTION < WHEN OTHERS THEN < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(DISABLE_POLICY_ACTION, ABS(SQLCODE))) < THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJNAME, TAB_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < RAISE; --- > USERNAME := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (USERNAME = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.LBAC_POLICY_ADMIN_INT.DISABLE_TABLE_POLICY(POLICY_NAME, SCHEMA_NAME, > TABLE_NAME, USERNAME); 722,735d159 < PROCEDURE DISABLE_SCHEMA_POLICY_INTERNAL (POLICY_NAME IN VARCHAR2, < SCHEMA_NAME IN VARCHAR2) < IS LANGUAGE C < NAME "zlludsp" < LIBRARY LBACSYS.LBAC$USER_LIBT < WITH CONTEXT < PARAMETERS ( < CONTEXT, < POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, < POLICY_NAME INDICATOR SB2, < SCHEMA_NAME STRING, SCHEMA_NAME LENGTH SIZE_T, < SCHEMA_NAME INDICATOR SB2 < ); < 739,741c163 < < SCH_NAME VARCHAR2(128); < --- > USERNAME VARCHAR2(128); 743,831c165,168 < < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', < SCH_NAME); < IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN < IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < ELSE < IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, NULL) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < END IF; < < BEGIN < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(1); < DISABLE_SCHEMA_POLICY_INTERNAL(POLICY_NAME, SCH_NAME); < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); < EXCEPTION < WHEN OTHERS THEN < LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); < RAISE; < END; < < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(DISABLE_POLICY_ACTION, 0)) THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < EXCEPTION < WHEN OTHERS THEN < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(DISABLE_POLICY_ACTION, ABS(SQLCODE))) < THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < RAISE; < END DISABLE_SCHEMA_POLICY; < < FUNCTION PRIV_NAMES (POLICY_NAME IN VARCHAR2) < RETURN LBACSYS.LBAC_NAME_LIST IS < < STR_NAME_LIST LBACSYS.LBAC_NAME_LIST; < < BEGIN < < IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, NULL) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < STR_NAME_LIST := NULL; < EXECUTE IMMEDIATE 'BEGIN lbacsys.' || < LBAC_CACHE.PACKAGE(POLICY_NAME) || < '.priv_names(:name_List); END;' < USING < OUT STR_NAME_LIST; < < IF STR_NAME_LIST IS NULL THEN < RETURN NULL; < END IF; < < RETURN STR_NAME_LIST; < < END PRIV_NAMES; < < FUNCTION LABEL_NAMES (POLICY_NAME IN VARCHAR2, < LABEL_TYPE IN PLS_INTEGER) < RETURN LBACSYS.LBAC_NAME_LIST IS < < STR_LABEL_LIST LBACSYS.LBAC_NAME_LIST; < < BEGIN < < IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, NULL) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); < END IF; < STR_LABEL_LIST := NULL; < EXECUTE IMMEDIATE 'BEGIN lbacsys.' || < LBAC_CACHE.PACKAGE(POLICY_NAME) || < '.label_names(:type,:label_List); END;' < USING < IN LABEL_TYPE, < OUT STR_LABEL_LIST; < < IF STR_LABEL_LIST IS NULL THEN < RETURN NULL; --- > USERNAME := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (USERNAME = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); 833,836c170,172 < < RETURN STR_LABEL_LIST; < < END LABEL_NAMES; --- > LBACSYS.LBAC_POLICY_ADMIN_INT.DISABLE_SCHEMA_POLICY(POLICY_NAME, SCHEMA_NAME, > USERNAME); > END DISABLE_SCHEMA_POLICY;
0a1,856 > PACKAGE BODY lbac_policy_admin_int AS > > > > > > > > PRODUCT CONSTANT VARCHAR2(30) := 'TRUSTED'; > FACILITY CONSTANT VARCHAR2(30) := 'LBAC'; > NO_POLICY_EC CONSTANT PLS_INTEGER := 12416; > NO_PROG_EC CONSTANT PLS_INTEGER := 12417; > NO_USER_EC CONSTANT PLS_INTEGER := 12418; > INVALID_PARAMS_EC CONSTANT PLS_INTEGER := 12427; > STARTUP_FAILURE_EC CONSTANT PLS_INTEGER := 12409; > LBAC_ERROR_EC CONSTANT PLS_INTEGER := 12432; > UNAUTH_OPERATION CONSTANT PLS_INTEGER := 12407; > POLICY_ADMIN_EC CONSTANT PLS_INTEGER := 12446; > INVALID_SCHEMA_EC CONSTANT PLS_INTEGER := 12425; > ALTER_SCHEMA_EC CONSTANT PLS_INTEGER := 12448; > INTERNAL_ERROR_EC CONSTANT PLS_INTEGER := 12414; > > > APPLY_ACTION CONSTANT PLS_INTEGER := 1; > REMOVE_ACTION CONSTANT PLS_INTEGER := 2; > SET_ACTION CONSTANT PLS_INTEGER := 4; > GRANT_ACTION CONSTANT PLS_INTEGER := 8; > REVOKE_ACTION CONSTANT PLS_INTEGER := 16; > EXISTS_ACTION CONSTANT PLS_INTEGER := 32; > > > > APPLY_POLICY_ACTION CONSTANT PLS_INTEGER := 1; > REMOVE_POLICY_ACTION CONSTANT PLS_INTEGER := 2; > ENABLE_POLICY_ACTION CONSTANT PLS_INTEGER := 5; > DISABLE_POLICY_ACTION CONSTANT PLS_INTEGER := 6; > POLICY_SUB_ACTION CONSTANT PLS_INTEGER := 7; > POLICY_UNSUB_ACTION CONSTANT PLS_INTEGER := 8; > ALTER_POLICY_ACTION CONSTANT PLS_INTEGER := 13; > > > > AUDINFO_OBJOWNER CONSTANT PLS_INTEGER := 0; > AUDINFO_OBJNAME CONSTANT PLS_INTEGER := 1; > > PROCEDURE APPLY_SCHEMA_POLICY_INTERNAL (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > DEFAULT_OPTIONS IN VARCHAR2, > USERNAME IN VARCHAR2) > IS LANGUAGE C > NAME "zlluasp1" > LIBRARY LBACSYS.LBAC$USER_LIBT > WITH CONTEXT > PARAMETERS ( > CONTEXT, > POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, > POLICY_NAME INDICATOR SB2, > SCHEMA_NAME STRING, SCHEMA_NAME LENGTH SIZE_T, > SCHEMA_NAME INDICATOR SB2, > DEFAULT_OPTIONS STRING, DEFAULT_OPTIONS LENGTH SIZE_T, > DEFAULT_OPTIONS INDICATOR SB2, > USERNAME STRING, USERNAME LENGTH SIZE_T, > USERNAME INDICATOR SB2 > ); > > PROCEDURE APPLY_SCHEMA_POLICY (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > DEFAULT_OPTIONS IN VARCHAR2 DEFAULT NULL, > USERNAME IN VARCHAR2) > IS > > SCH_NAME VARCHAR2(128); > > BEGIN > > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', > SCH_NAME); > > IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN > IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > IF LBACSYS.LBAC_CACHE.CHECK_POLICYSUBSCRIBED(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, LBAC_ERROR_EC, 'Policy not OID subscribed'); > END IF; > ELSE > IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, APPLY_ACTION) = FALSE > THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > END IF; > > BEGIN > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(1); > APPLY_SCHEMA_POLICY_INTERNAL(POLICY_NAME, SCH_NAME, > DEFAULT_OPTIONS, USERNAME); > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); > EXCEPTION > WHEN OTHERS THEN > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); > RAISE; > END; > > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(APPLY_POLICY_ACTION, 0)) THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > EXCEPTION > WHEN OTHERS THEN > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(APPLY_POLICY_ACTION, ABS(SQLCODE))) > THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > RAISE; > END APPLY_SCHEMA_POLICY; > > PROCEDURE REMOVE_SCHEMA_POLICY_INTERNAL (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > DROP_COLUMN IN BOOLEAN) > IS LANGUAGE C > NAME "zllursp" > LIBRARY LBACSYS.LBAC$USER_LIBT > WITH CONTEXT > PARAMETERS ( > CONTEXT, > POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, > POLICY_NAME INDICATOR SB2, > SCHEMA_NAME STRING, SCHEMA_NAME LENGTH SIZE_T, > SCHEMA_NAME INDICATOR SB2, > DROP_COLUMN UB1 > ); > > PROCEDURE REMOVE_SCHEMA_POLICY (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > DROP_COLUMN IN BOOLEAN DEFAULT FALSE, > USERNAME IN VARCHAR2) > IS > > SCH_NAME VARCHAR2(128); > > BEGIN > > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', > SCH_NAME); > IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN > IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > ELSE > IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, REMOVE_ACTION) = FALSE > THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > END IF; > > BEGIN > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(1); > REMOVE_SCHEMA_POLICY_INTERNAL(POLICY_NAME, SCH_NAME, DROP_COLUMN); > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); > EXCEPTION > WHEN OTHERS THEN > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); > RAISE; > END; > > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(REMOVE_POLICY_ACTION, 0)) THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > EXCEPTION > WHEN OTHERS THEN > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(REMOVE_POLICY_ACTION, ABS(SQLCODE))) > THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > RAISE; > END REMOVE_SCHEMA_POLICY; > > PROCEDURE ENABLE_SCHEMA_POLICY_INTERNAL (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2) > IS LANGUAGE C > NAME "zlluesp" > LIBRARY LBACSYS.LBAC$USER_LIBT > WITH CONTEXT > PARAMETERS ( > CONTEXT, > POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, > POLICY_NAME INDICATOR SB2, > SCHEMA_NAME STRING, SCHEMA_NAME LENGTH SIZE_T, > SCHEMA_NAME INDICATOR SB2 > ); > > PROCEDURE ENABLE_SCHEMA_POLICY(POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > USERNAME IN VARCHAR2) IS > SCH_NAME VARCHAR2(128); > > BEGIN > > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', > SCH_NAME); > IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN > IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > ELSE > IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, NULL) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > END IF; > > BEGIN > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(1); > ENABLE_SCHEMA_POLICY_INTERNAL(POLICY_NAME, SCH_NAME); > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); > EXCEPTION > WHEN OTHERS THEN > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); > RAISE; > END; > > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(ENABLE_POLICY_ACTION, 0)) THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > EXCEPTION > WHEN OTHERS THEN > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(ENABLE_POLICY_ACTION, ABS(SQLCODE))) > THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > RAISE; > END ENABLE_SCHEMA_POLICY; > > > PROCEDURE ALTER_SCHEMA_POLICY (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > DEFAULT_OPTIONS IN VARCHAR2, > USERNAME IN VARCHAR2) > IS > > POL_NUM PLS_INTEGER; > USR_CNT PLS_INTEGER; > NEW_OPTIONS PLS_INTEGER; > SCH_NAME VARCHAR2(128); > > BEGIN > > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', > SCH_NAME); > > IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN > IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > ELSE > IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, NULL) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > END IF; > > > IF SCH_NAME IS NULL THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, INVALID_PARAMS_EC, 'schema name'); > END IF; > IF SCH_NAME IN ('SYS', 'LBACSYS', 'SYSTEM') THEN > LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, FACILITY, INVALID_SCHEMA_EC); > END IF; > > > POL_NUM:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > > > SELECT COUNT(*) INTO USR_CNT > FROM SYS.ALL_USERS > WHERE USERNAME = SCH_NAME; > IF (USR_CNT != 1) THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, NO_PROG_EC, SCH_NAME); > END IF; > > IF DEFAULT_OPTIONS IS NULL THEN > NEW_OPTIONS := NULL; > ELSE > > IF INSTR(UPPER(DEFAULT_OPTIONS),'INVERSE_GROUP',1,1) > 0 THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, LBAC_ERROR_EC, ' invalid option string'); > END IF; > > NEW_OPTIONS := LBACSYS.LBAC_CACHE.OPTION_NUMBER(DEFAULT_OPTIONS); > END IF; > > > > UPDATE LBACSYS.OLS$POLS SET OPTIONS = NEW_OPTIONS > WHERE POL#=POL_NUM AND OWNER = SCH_NAME; > > > > > IF SQL%ROWCOUNT = 0 THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, FACILITY, > ALTER_SCHEMA_EC, POLICY_NAME, SCH_NAME); > END IF; > > COMMIT; > > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(ALTER_POLICY_ACTION, 0)) THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > EXCEPTION > WHEN OTHERS THEN > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(ALTER_POLICY_ACTION, ABS(SQLCODE))) > THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > RAISE; > END ALTER_SCHEMA_POLICY; > > > PROCEDURE APPLY_TABLE_POLICY_INTERNAL (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > TABLE_NAME IN VARCHAR2, > TABLE_OPTIONS IN VARCHAR2, > LABEL_FUNCTION IN VARCHAR2, > PREDICATE IN VARCHAR2, > INVOKER_USR IN VARCHAR2) > IS LANGUAGE C > NAME "zlluatp1" > LIBRARY LBACSYS.LBAC$USER_LIBT > WITH CONTEXT > PARAMETERS ( > CONTEXT, > POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, > POLICY_NAME INDICATOR SB2, > SCHEMA_NAME STRING, SCHEMA_NAME LENGTH SIZE_T, > SCHEMA_NAME INDICATOR SB2, > TABLE_NAME STRING, TABLE_NAME LENGTH SIZE_T, > TABLE_NAME INDICATOR SB2, > TABLE_OPTIONS STRING, TABLE_OPTIONS LENGTH SIZE_T, > TABLE_OPTIONS INDICATOR SB2, > LABEL_FUNCTION STRING, LABEL_FUNCTION LENGTH SIZE_T, > LABEL_FUNCTION INDICATOR SB2, > PREDICATE STRING, PREDICATE LENGTH SIZE_T, > PREDICATE INDICATOR SB2, > INVOKER_USR STRING, INVOKER_USR LENGTH SIZE_T, > INVOKER_USR INDICATOR SB2 > ); > > PROCEDURE APPLY_TABLE_POLICY (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > TABLE_NAME IN VARCHAR2, > TABLE_OPTIONS IN VARCHAR2 DEFAULT NULL, > LABEL_FUNCTION IN VARCHAR2 DEFAULT NULL, > PREDICATE IN VARCHAR2 DEFAULT NULL, > USERNAME IN VARCHAR2 > ) IS > SCH_NAME VARCHAR2(128); > TAB_NAME VARCHAR2(128); > > BEGIN > > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', > SCH_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(TABLE_NAME, 'table name', > TAB_NAME); > > IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN > IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > IF LBACSYS.LBAC_CACHE.CHECK_POLICYSUBSCRIBED(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, LBAC_ERROR_EC, 'Policy not OID subscribed'); > END IF; > ELSE > IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, APPLY_ACTION) = FALSE > THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > END IF; > > BEGIN > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(1); > APPLY_TABLE_POLICY_INTERNAL(POLICY_NAME, SCH_NAME, TAB_NAME, TABLE_OPTIONS, > LABEL_FUNCTION, PREDICATE, USERNAME); > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); > EXCEPTION > WHEN OTHERS THEN > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); > RAISE; > END; > > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(APPLY_POLICY_ACTION, 0)) THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJNAME, TAB_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > EXCEPTION > WHEN OTHERS THEN > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(APPLY_POLICY_ACTION, ABS(SQLCODE))) > THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJNAME, TAB_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > RAISE; > END APPLY_TABLE_POLICY; > > PROCEDURE ENABLE_TABLE_POLICY_INTERNAL (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > TABLE_NAME IN VARCHAR2) > IS LANGUAGE C > NAME "zlluetp" > LIBRARY LBACSYS.LBAC$USER_LIBT > WITH CONTEXT > PARAMETERS ( > CONTEXT, > POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, > POLICY_NAME INDICATOR SB2, > SCHEMA_NAME STRING, SCHEMA_NAME LENGTH SIZE_T, > SCHEMA_NAME INDICATOR SB2, > TABLE_NAME STRING, TABLE_NAME LENGTH SIZE_T, > TABLE_NAME INDICATOR SB2 > ); > > PROCEDURE ENABLE_TABLE_POLICY(POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > TABLE_NAME IN VARCHAR2, > USERNAME IN VARCHAR2) IS > SCH_NAME VARCHAR2(128); > TAB_NAME VARCHAR2(128); > > BEGIN > > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', > SCH_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(TABLE_NAME, 'table name', > TAB_NAME); > > IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN > IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > ELSE > IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, NULL) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > END IF; > > BEGIN > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(1); > ENABLE_TABLE_POLICY_INTERNAL(POLICY_NAME, SCH_NAME, TAB_NAME); > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); > EXCEPTION > WHEN OTHERS THEN > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); > RAISE; > END; > > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(ENABLE_POLICY_ACTION, 0)) THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJNAME, TAB_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > EXCEPTION > WHEN OTHERS THEN > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(ENABLE_POLICY_ACTION, ABS(SQLCODE))) > THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJNAME, TAB_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > RAISE; > END ENABLE_TABLE_POLICY; > > > PROCEDURE REMOVE_TABLE_POLICY_INTERNAL (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > TABLE_NAME IN VARCHAR2, > DROP_COLUMN IN BOOLEAN) > IS LANGUAGE C > NAME "zllurtp" > LIBRARY LBACSYS.LBAC$USER_LIBT > WITH CONTEXT > PARAMETERS ( > CONTEXT, > POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, > POLICY_NAME INDICATOR SB2, > SCHEMA_NAME STRING, SCHEMA_NAME LENGTH SIZE_T, > SCHEMA_NAME INDICATOR SB2, > TABLE_NAME STRING, TABLE_NAME LENGTH SIZE_T, > TABLE_NAME INDICATOR SB2, > DROP_COLUMN UB1, DROP_COLUMN INDICATOR SB2 > ); > > PROCEDURE REMOVE_TABLE_POLICY (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > TABLE_NAME IN VARCHAR2, > DROP_COLUMN IN BOOLEAN DEFAULT FALSE, > USERNAME IN VARCHAR2) > IS > > SCH_NAME VARCHAR2(128); > TAB_NAME VARCHAR2(128); > > BEGIN > > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', > SCH_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(TABLE_NAME, 'table name', > TAB_NAME); > > IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN > IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > ELSE > IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, REMOVE_ACTION) = FALSE > THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > END IF; > > BEGIN > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(1); > REMOVE_TABLE_POLICY_INTERNAL(POLICY_NAME, SCH_NAME, TAB_NAME, DROP_COLUMN); > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); > EXCEPTION > WHEN OTHERS THEN > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); > RAISE; > END; > > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(REMOVE_POLICY_ACTION, 0)) THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJNAME, TAB_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > EXCEPTION > WHEN OTHERS THEN > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(REMOVE_POLICY_ACTION, ABS(SQLCODE))) > THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJNAME, TAB_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > RAISE; > END REMOVE_TABLE_POLICY; > > > PROCEDURE POLICY_SUBSCRIBE(POLICY_NAME IN VARCHAR2, > USERNAME IN VARCHAR2) IS > UNSUPPORTED_OP_EC CONSTANT PLS_INTEGER := 12408; > > BEGIN > IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN > IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > LBACSYS.LBAC_CACHE.OID_SUBSCRIBE(POLICY_NAME); > ELSE > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, UNSUPPORTED_OP_EC, 'OID not enabled'); > END IF; > > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(POLICY_SUB_ACTION, 0)) THEN > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > EXCEPTION > WHEN OTHERS THEN > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(POLICY_SUB_ACTION, ABS(SQLCODE))) > THEN > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > RAISE; > END POLICY_SUBSCRIBE; > > > PROCEDURE POLICY_UNSUBSCRIBE(POLICY_NAME IN VARCHAR2, > USERNAME IN VARCHAR2) IS > UNSUPPORTED_OP_EC CONSTANT PLS_INTEGER := 12408; > POLICY_IN_USE_TABLE PLS_INTEGER; > POLICY_IN_USE_SCHEMA PLS_INTEGER; > > BEGIN > IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN > IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > SELECT COUNT(*) INTO POLICY_IN_USE_SCHEMA > FROM LBACSYS.OLS$POL P, LBACSYS.OLS$POLS S > WHERE P.POL_NAME = UPPER(POLICY_NAME) > AND P.POL# = S.POL#; > SELECT COUNT(*) INTO POLICY_IN_USE_TABLE > FROM LBACSYS.OLS$POL P, LBACSYS.OLS$POLT PT > WHERE P.POL_NAME = UPPER(POLICY_NAME) > AND P.POL# = PT.POL#; > > IF POLICY_IN_USE_TABLE <> 0 OR POLICY_IN_USE_SCHEMA <> 0 THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, LBAC_ERROR_EC, 'Policy in use'); > END IF; > LBACSYS.LBAC_CACHE.OID_UNSUBSCRIBE(POLICY_NAME); > ELSE > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, UNSUPPORTED_OP_EC, 'OID not enabled'); > END IF; > > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(POLICY_UNSUB_ACTION, 0)) THEN > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > EXCEPTION > WHEN OTHERS THEN > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(POLICY_UNSUB_ACTION, ABS(SQLCODE))) > THEN > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > RAISE; > END POLICY_UNSUBSCRIBE; > > > PROCEDURE DISABLE_TABLE_POLICY_INTERNAL (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > TABLE_NAME IN VARCHAR2) > IS LANGUAGE C > NAME "zlludtp" > LIBRARY LBACSYS.LBAC$USER_LIBT > WITH CONTEXT > PARAMETERS ( > CONTEXT, > POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, > POLICY_NAME INDICATOR SB2, > SCHEMA_NAME STRING, SCHEMA_NAME LENGTH SIZE_T, > SCHEMA_NAME INDICATOR SB2, > TABLE_NAME STRING, TABLE_NAME LENGTH SIZE_T, > TABLE_NAME INDICATOR SB2 > ); > > PROCEDURE DISABLE_TABLE_POLICY (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > TABLE_NAME IN VARCHAR2, > USERNAME IN VARCHAR2) > IS > > SCH_NAME VARCHAR2(128); > TAB_NAME VARCHAR2(128); > > BEGIN > > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', > SCH_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(TABLE_NAME, 'table name', > TAB_NAME); > > IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN > IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > ELSE > IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, NULL) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > END IF; > > BEGIN > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(1); > DISABLE_TABLE_POLICY_INTERNAL(POLICY_NAME, SCH_NAME, TAB_NAME); > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); > EXCEPTION > WHEN OTHERS THEN > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); > RAISE; > END; > > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(DISABLE_POLICY_ACTION, 0)) THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJNAME, TAB_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > EXCEPTION > WHEN OTHERS THEN > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(DISABLE_POLICY_ACTION, ABS(SQLCODE))) > THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJNAME, TAB_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > RAISE; > END DISABLE_TABLE_POLICY; > > PROCEDURE DISABLE_SCHEMA_POLICY_INTERNAL (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2) > IS LANGUAGE C > NAME "zlludsp" > LIBRARY LBACSYS.LBAC$USER_LIBT > WITH CONTEXT > PARAMETERS ( > CONTEXT, > POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, > POLICY_NAME INDICATOR SB2, > SCHEMA_NAME STRING, SCHEMA_NAME LENGTH SIZE_T, > SCHEMA_NAME INDICATOR SB2 > ); > > PROCEDURE DISABLE_SCHEMA_POLICY (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > USERNAME IN VARCHAR2) > IS > > SCH_NAME VARCHAR2(128); > > BEGIN > > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', > SCH_NAME); > IF (LBACSYS.LBAC_CACHE.OID_ENABLED) THEN > IF LBACSYS.LBAC_CACHE.CHECK_POLICYADMIN(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > ELSE > IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, NULL) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > END IF; > > BEGIN > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(1); > DISABLE_SCHEMA_POLICY_INTERNAL(POLICY_NAME, SCH_NAME); > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); > EXCEPTION > WHEN OTHERS THEN > LBACSYS.LBAC_CACHE.SET_ALTER_ALLOW(0); > RAISE; > END; > > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(DISABLE_POLICY_ACTION, 0)) THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > EXCEPTION > WHEN OTHERS THEN > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(DISABLE_POLICY_ACTION, ABS(SQLCODE))) > THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCH_NAME); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > RAISE; > END DISABLE_SCHEMA_POLICY; > > FUNCTION PRIV_NAMES (POLICY_NAME IN VARCHAR2) > RETURN LBACSYS.LBAC_NAME_LIST IS > > STR_NAME_LIST LBACSYS.LBAC_NAME_LIST; > > BEGIN > > IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, NULL) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > STR_NAME_LIST := NULL; > EXECUTE IMMEDIATE 'BEGIN lbacsys.' || > LBAC_CACHE.PACKAGE(POLICY_NAME) || > '.priv_names(:name_List); END;' > USING > OUT STR_NAME_LIST; > > IF STR_NAME_LIST IS NULL THEN > RETURN NULL; > END IF; > > RETURN STR_NAME_LIST; > > END PRIV_NAMES; > > FUNCTION LABEL_NAMES (POLICY_NAME IN VARCHAR2, > LABEL_TYPE IN PLS_INTEGER) > RETURN LBACSYS.LBAC_NAME_LIST IS > > STR_LABEL_LIST LBACSYS.LBAC_NAME_LIST; > > BEGIN > > IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, NULL) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, FACILITY, POLICY_ADMIN_EC, POLICY_NAME); > END IF; > STR_LABEL_LIST := NULL; > EXECUTE IMMEDIATE 'BEGIN lbacsys.' || > LBAC_CACHE.PACKAGE(POLICY_NAME) || > '.label_names(:type,:label_List); END;' > USING > IN LABEL_TYPE, > OUT STR_LABEL_LIST; > > IF STR_LABEL_LIST IS NULL THEN > RETURN NULL; > END IF; > > RETURN STR_LABEL_LIST; > > END LABEL_NAMES; > > END LBAC_POLICY_ADMIN_INT;
6a7,10 > NOT_ALLOWED_EC CONSTANT PLS_INTEGER := 42908; > PRODUCT CONSTANT VARCHAR2(12) := 'TRUSTED'; > LBAC_FACILITY CONSTANT VARCHAR2(12) := 'LBAC'; > 14,15c18,22 < SELECT SYS_CONTEXT('USERENV','CURRENT_USER') INTO USERNAME < FROM SYS.DUAL; --- > USERNAME := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (USERNAME = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; 27,28c34,38 < SELECT SYS_CONTEXT('USERENV','CURRENT_USER') INTO USERNAME < FROM SYS.DUAL; --- > USERNAME := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (USERNAME = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; 38,39c48,52 < SELECT SYS_CONTEXT('USERENV','CURRENT_USER') INTO USERNAME < FROM SYS.DUAL; --- > USERNAME := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (USERNAME = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; 44a58 > USERNAME VARCHAR2(128); 45a60,64 > USERNAME := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (USERNAME = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; 51a71 > USERNAME VARCHAR2(128); 52a73,77 > USERNAME := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (USERNAME = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF;
3,5c3,4 < < < PRODUCT CONSTANT VARCHAR2(12) := 'TRUSTED'; --- > NOT_ALLOWED_EC CONSTANT PLS_INTEGER := 42908; > PRODUCT CONSTANT VARCHAR2(12) := 'TRUSTED'; 7,311d5 < SA_FACILITY CONSTANT VARCHAR2(12) := 'SA'; < SA_PACKAGE CONSTANT VARCHAR2(12) := 'LBAC$SA'; < INV_BIT CONSTANT PLS_INTEGER := 4; < GRP_BIT CONSTANT PLS_INTEGER := 2; < < LVER CONSTANT PLS_INTEGER := 1; < LVL_BIT CONSTANT PLS_INTEGER := 0; < CMP_BIT CONSTANT PLS_INTEGER := 1; < LSEP CONSTANT VARCHAR2(1) := '.'; < < INVALID_LABEL_LIST_EC CONSTANT PLS_INTEGER := 12405; < UNAUTHORIZED_OP_EC CONSTANT PLS_INTEGER := 12407; < NO_POLICY_EC CONSTANT PLS_INTEGER := 12416; < NO_USER_EC CONSTANT PLS_INTEGER := 12418; < NO_OLS_EC CONSTANT PLS_INTEGER := 12458; < UNDEFINED_LEVEL_EC CONSTANT PLS_INTEGER := 12461; < INVALID_CLRN_RANGE_EC CONSTANT PLS_INTEGER := 12466; < UNDEFINED_COMP_EC CONSTANT PLS_INTEGER := 12462; < UNDEFINED_GROUP_EC CONSTANT PLS_INTEGER := 12463; < SYS_USER_EC CONSTANT PLS_INTEGER := 12432; < INVALID_SCHEMA_EC CONSTANT PLS_INTEGER := 12425; < INVALID_ARG_EC CONSTANT PLS_INTEGER := 12427; < NO_DEFINED_LEVELS_EC CONSTANT PLS_INTEGER := 12469; < INVALID_LABEL_EC CONSTANT PLS_INTEGER := 12470; < NO_PROG_EC CONSTANT PLS_INTEGER := 12417; < INVALID_COMPS_GRPS_EC CONSTANT PLS_INTEGER := 12465; < < INVALID_PARAMS_EC CONSTANT PLS_INTEGER := 12427; < STARTUP_FAILURE_EC CONSTANT PLS_INTEGER := 12409; < < SET_ACTION CONSTANT PLS_INTEGER := 4; < < < < SET_AUTH_ACTION CONSTANT PLS_INTEGER := 3; < < < < AUDINFO_OBJOWNER CONSTANT PLS_INTEGER := 0; < AUDINFO_GRANTEE CONSTANT PLS_INTEGER := 2; < AUDINFO_MAXRD CONSTANT PLS_INTEGER := 3; < AUDINFO_MAXWRT CONSTANT PLS_INTEGER := 4; < AUDINFO_MINWRT CONSTANT PLS_INTEGER := 5; < AUDINFO_PRIVGRNTED CONSTANT PLS_INTEGER := 6; < AUDINFO_PROGRAM CONSTANT PLS_INTEGER := 7; < < < INSERT_TYPE CONSTANT PLS_INTEGER := 2; < UPDATE_TYPE CONSTANT PLS_INTEGER := 6; < DELETE_TYPE CONSTANT PLS_INTEGER := 7; < < < TABLE_OBJ_TYPE CONSTANT PLS_INTEGER := 1; < PROC_OBJ_TYPE CONSTANT PLS_INTEGER := 2; < < USER_OBJ_TYPE CONSTANT PLS_INTEGER := 3; < < < < TYPE LAB_SORT_T IS TABLE OF INTEGER INDEX BY BINARY_INTEGER; < < < < < < < < PROCEDURE CHECK_POLICY(POLICY_NAME IN VARCHAR2) IS < BEGIN < < < IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, NULL) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, < UNAUTHORIZED_OP_EC, POLICY_NAME); < END IF; < < < IF LBACSYS.LBAC_CACHE.PACKAGE(POLICY_NAME) != SA_PACKAGE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, < NO_POLICY_EC, POLICY_NAME, TRUE); < END IF; < < END CHECK_POLICY; < < < < PROCEDURE CHECK_LEVELS(POLICY_NAME IN VARCHAR2, < USER_NAME IN VARCHAR2) IS < I_NULL CHAR(1); < POL_NUMBER LBACSYS.OLS$USER_LEVELS.POL#%TYPE; < < BEGIN < POL_NUMBER := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < < SELECT NULL INTO I_NULL < FROM LBACSYS.OLS$USER_LEVELS < WHERE POL# = POL_NUMBER AND USR_NAME = USER_NAME; < EXCEPTION < WHEN NO_DATA_FOUND THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, < NO_DEFINED_LEVELS_EC, USER_NAME, POLICY_NAME); < END CHECK_LEVELS; < < < < PROCEDURE CHECK_USER(UNAME IN VARCHAR2) IS < I_NULL CHAR(1); < < BEGIN < IF UNAME IN ('SYS','LBACSYS','SYSTEM') THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, < INVALID_SCHEMA_EC); < END IF; < END CHECK_USER; < < < < PROCEDURE CHECK_COMMON(UNAME IN VARCHAR2, < OBJECT IN VARCHAR2, < OBJTYP IN PLS_INTEGER) < IS LANGUAGE C < NAME "zllsesFedChk" < LIBRARY LBACSYS.OLS$SESSION_LIBT < PARAMETERS ( < UNAME STRING, UNAME LENGTH SIZE_T, UNAME INDICATOR SB2, < OBJECT STRING, OBJECT LENGTH SIZE_T, OBJECT INDICATOR SB2, < OBJTYP UB1, OBJTYP INDICATOR SB2 < ); < < < < FUNCTION GET_LEVEL (POL_ID IN PLS_INTEGER, < LEVEL_CODE IN VARCHAR2) < RETURN PLS_INTEGER IS < LEVEL_NUM LBACSYS.OLS$LEVELS.LEVEL#%TYPE; < BEGIN < IF LEVEL_CODE IS NULL THEN < RETURN NULL; < ELSE < SELECT LEVEL# INTO LEVEL_NUM < FROM LBACSYS.OLS$LEVELS < WHERE POL# = POL_ID AND CODE = LEVEL_CODE; < RETURN LEVEL_NUM; < END IF; < EXCEPTION < WHEN NO_DATA_FOUND THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, < UNDEFINED_LEVEL_EC, LEVEL_CODE, LBACSYS.LBAC_CACHE.POLICY_NAME(POL_ID)); < END GET_LEVEL; < < FUNCTION GET_LEVEL (POL_ID IN PLS_INTEGER, < LEVEL_NUM IN PLS_INTEGER) < RETURN VARCHAR2 IS < LEVEL_CODE LBACSYS.OLS$LEVELS.CODE%TYPE; < BEGIN < IF LEVEL_NUM IS NULL THEN < RETURN NULL; < ELSE < SELECT CODE INTO LEVEL_CODE < FROM LBACSYS.OLS$LEVELS < WHERE POL# = POL_ID AND LEVEL# = LEVEL_NUM; < RETURN LEVEL_CODE; < END IF; < EXCEPTION < WHEN NO_DATA_FOUND THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, < UNDEFINED_LEVEL_EC, LEVEL_NUM, LBACSYS.LBAC_CACHE.POLICY_NAME(POL_ID)); < END GET_LEVEL; < < < < FUNCTION GET_COMP (POL_ID IN PLS_INTEGER, < COMP_CODE IN VARCHAR2) < RETURN PLS_INTEGER IS < COMP_NUM LBACSYS.OLS$COMPARTMENTS.COMP#%TYPE; < BEGIN < IF COMP_CODE IS NULL THEN < RETURN NULL; < ELSE < SELECT COMP# INTO COMP_NUM < FROM LBACSYS.OLS$COMPARTMENTS < WHERE POL# = POL_ID AND CODE = COMP_CODE; < RETURN COMP_NUM; < END IF; < EXCEPTION < WHEN NO_DATA_FOUND THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, < UNDEFINED_COMP_EC, COMP_CODE, LBACSYS.LBAC_CACHE.POLICY_NAME(POL_ID)); < END GET_COMP; < < < < FUNCTION GET_GROUP (POL_ID IN PLS_INTEGER, < GROUP_CODE IN VARCHAR2) < RETURN PLS_INTEGER IS < GROUP_NUM LBACSYS.OLS$GROUPS.GROUP#%TYPE; < BEGIN < IF GROUP_CODE IS NULL THEN < RETURN NULL; < ELSE < SELECT GROUP# INTO GROUP_NUM < FROM LBACSYS.OLS$GROUPS < WHERE POL# = POL_ID AND CODE = GROUP_CODE; < RETURN GROUP_NUM; < END IF; < EXCEPTION < WHEN NO_DATA_FOUND THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, < UNDEFINED_GROUP_EC, GROUP_CODE, LBACSYS.LBAC_CACHE.POLICY_NAME(POL_ID)); < END GET_GROUP; < < < < FUNCTION SET_INVERSE_POLICY_BIT(POL_ID PLS_INTEGER) < RETURN PLS_INTEGER IS < BEGIN < < IF LBACSYS.LBAC_CACHE.INVERSE_GROUP(POL_ID) THEN < RETURN 4; < END IF; < < RETURN 0; < END SET_INVERSE_POLICY_BIT; < < FUNCTION TO_PRIVS ( POLICY_NAME VARCHAR2, < PRIVILEGES VARCHAR2) < RETURN NUMBER IS < PRIVS NUMBER := 0; < POS PLS_INTEGER; < REST VARCHAR2(255); < PRIV VARCHAR2(30); < PRIV_NUM PLS_INTEGER; < TYPE PRIV_IDX_TAB IS TABLE OF PLS_INTEGER < INDEX BY PLS_INTEGER; < PRIV_ARR PRIV_IDX_TAB; < I NUMBER; < < BEGIN < POS := 0; < REST := PRIVILEGES; < < WHILE REST IS NOT NULL LOOP < POS := INSTR(REST,','); < IF POS = 0 THEN < PRIV:=REST; < REST:=NULL; < ELSE < PRIV:=SUBSTR(REST,1,POS-1); < REST:=SUBSTR(REST,POS+1); < END IF; < < EXECUTE IMMEDIATE 'BEGIN LBACSYS.' || < LBACSYS.LBAC_CACHE.PACKAGE(POLICY_NAME) || < '.validate_priv(:priv, :priv_number); END;' < USING < IN PRIV, < OUT PRIV_NUM; < PRIV_ARR(PRIV_NUM) := 1; < < PRIVS := BITAND(PRIVS,PRIV_NUM); < < END LOOP; < < < < FOR I IN 1..7 LOOP < IF NOT (PRIV_ARR.EXISTS(I)) THEN < PRIV_ARR(I) :=0; < END IF; < END LOOP; < SELECT BIN_TO_NUM(PRIV_ARR(7), PRIV_ARR(6), PRIV_ARR(5), PRIV_ARR(4), < PRIV_ARR(3),PRIV_ARR(2),PRIV_ARR(1)) INTO PRIVS FROM SYS.DUAL; < < RETURN(PRIVS); < < END TO_PRIVS; < < PROCEDURE SET_USER_PRIVS_INTERNAL < (POLICY_NAME IN VARCHAR2, < USER_NAME IN VARCHAR2, < MR_LABEL IN VARCHAR2, < MW_LABEL IN VARCHAR2, < MIN_LABEL IN VARCHAR2, < READ_LABEL IN VARCHAR2, < WRITE_LABEL IN VARCHAR2, < ROW_LABEL IN VARCHAR2, < PRIVS IN PLS_INTEGER, < STMT_TYPE IN PLS_INTEGER) < IS LANGUAGE C < NAME "zllusr_sup" < LIBRARY LBACSYS.LBAC$USER_LIBT < WITH CONTEXT < PARAMETERS ( < CONTEXT, < POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, POLICY_NAME INDICATOR SB2, < USER_NAME STRING, USER_NAME LENGTH SIZE_T, USER_NAME INDICATOR SB2, < MR_LABEL STRING, MR_LABEL LENGTH SIZE_T, MR_LABEL INDICATOR SB2, < MW_LABEL STRING, MW_LABEL LENGTH SIZE_T, MW_LABEL INDICATOR SB2, < MIN_LABEL STRING, MIN_LABEL LENGTH SIZE_T, MIN_LABEL INDICATOR SB2, < READ_LABEL STRING, READ_LABEL LENGTH SIZE_T, READ_LABEL INDICATOR SB2, < WRITE_LABEL STRING, WRITE_LABEL LENGTH SIZE_T, WRITE_LABEL INDICATOR SB2, < ROW_LABEL STRING, ROW_LABEL LENGTH SIZE_T, ROW_LABEL INDICATOR SB2, < PRIVS UB4, STMT_TYPE UB1 < ); 322,333c16 < CUNAME VARCHAR2(1024); < MINLVL_CODE LBACSYS.OLS$LEVELS.CODE%TYPE := UPPER(MIN_LEVEL); < MAXLVL_CODE LBACSYS.OLS$LEVELS.CODE%TYPE := UPPER(MAX_LEVEL); < DLVL_CODE LBACSYS.OLS$LEVELS.CODE%TYPE := UPPER(DEF_LEVEL); < RLVL_CODE LBACSYS.OLS$LEVELS.CODE%TYPE := UPPER(ROW_LEVEL); < POLID LBACSYS.OLS$USER_LEVELS.POL#%TYPE; < MIN_NUM LBACSYS.OLS$LEVELS.LEVEL#%TYPE; < MAX_NUM LBACSYS.OLS$LEVELS.LEVEL#%TYPE; < DEF_NUM LBACSYS.OLS$LEVELS.LEVEL#%TYPE; < ROW_NUM LBACSYS.OLS$LEVELS.LEVEL#%TYPE; < I_NULL CHAR(1); < --- > INVOKER_USR VARCHAR2(1024); 335,390c18,26 < < CHECK_POLICY(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < < CHECK_USER(CUNAME); < < POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < MAX_NUM := GET_LEVEL(POLID, MAXLVL_CODE); < IF MINLVL_CODE IS NULL THEN < SELECT MIN(LEVEL#) INTO MIN_NUM < FROM LBACSYS.OLS$LEVELS < WHERE POL#=POLID; < ELSE < MIN_NUM := GET_LEVEL(POLID, MINLVL_CODE); < END IF; < IF DLVL_CODE IS NULL THEN < DEF_NUM := MAX_NUM; < ELSE < DEF_NUM := GET_LEVEL(POLID, DLVL_CODE); < END IF; < IF RLVL_CODE IS NULL THEN < ROW_NUM := DEF_NUM; < ELSE < ROW_NUM := GET_LEVEL(POLID, RLVL_CODE); < END IF; < < < IF DEF_NUM < MIN_NUM THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, < INVALID_ARG_EC, 'def_level'); < END IF; < < IF DEF_NUM > MAX_NUM THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, SA_FACILITY, INVALID_CLRN_RANGE_EC); < END IF; < < IF ROW_NUM < MIN_NUM OR ROW_NUM > DEF_NUM THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, < INVALID_ARG_EC, 'row_level'); < END IF; < < BEGIN < < LBACSYS.LBAC_LGSTNDBY_UTIL.SET_LEVELS(POLID, CUNAME, MAX_NUM, < MIN_NUM, DEF_NUM, ROW_NUM); < < LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); < EXCEPTION < WHEN OTHERS THEN < ROLLBACK; < RAISE; < END; < < COMMIT; --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.SA_USER_ADMIN_INT.SET_LEVELS(POLICY_NAME, USER_NAME, > MAX_LEVEL, MIN_LEVEL, > DEF_LEVEL, ROW_LEVEL, > INVOKER_USR); 400,402c36 < CUNAME VARCHAR2(1024); < POLID LBACSYS.OLS$USER_COMPARTMENTS.POL#%TYPE; < --- > INVOKER_USR VARCHAR2(1024); 404,426c38,46 < < CHECK_POLICY(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < CHECK_USER(CUNAME); < < < CHECK_LEVELS(POLICY_NAME, CUNAME); < < POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < BEGIN < < LBACSYS.LBAC_LGSTNDBY_UTIL.SET_COMPARTMENTS(POLID, CUNAME, READ_COMPS, < WRITE_COMPS, DEF_COMPS, ROW_COMPS); < < LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); < EXCEPTION < WHEN OTHERS THEN < ROLLBACK; < RAISE; < END; < < COMMIT; --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.SA_USER_ADMIN_INT.SET_COMPARTMENTS(POLICY_NAME, USER_NAME, > READ_COMPS, WRITE_COMPS, > DEF_COMPS, ROW_COMPS, > INVOKER_USR); 436,437c56 < CUNAME VARCHAR2(1024); < POLID LBACSYS.OLS$USER_COMPARTMENTS.POL#%TYPE; --- > INVOKER_USR VARCHAR2(1024); 439,461c58,66 < < CHECK_POLICY(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < CHECK_USER(CUNAME); < POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < IF (ACCESS_MODE IS NULL) AND (IN_DEF IS NULL) AND (IN_ROW IS NULL) THEN < RETURN; < END IF; < < BEGIN < < LBACSYS.LBAC_LGSTNDBY_UTIL.ALTER_COMPARTMENTS(POLID, CUNAME, COMPS, < ACCESS_MODE, IN_DEF, IN_ROW); < < LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); < EXCEPTION < WHEN OTHERS THEN < ROLLBACK; < RAISE; < END; < < COMMIT; --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.SA_USER_ADMIN_INT.ALTER_COMPARTMENTS(POLICY_NAME, USER_NAME, > COMPS, ACCESS_MODE, > IN_DEF, IN_ROW, > INVOKER_USR); 471,473c76 < CUNAME VARCHAR2(1024); < POLID LBACSYS.OLS$USER_GROUPS.POL#%TYPE; < --- > INVOKER_USR VARCHAR2(1024); 475,497c78,86 < < CHECK_POLICY(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < CHECK_USER(CUNAME); < < < CHECK_LEVELS(POLICY_NAME, CUNAME); < < POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < BEGIN < < LBACSYS.LBAC_LGSTNDBY_UTIL.SET_GROUPS(POLID, CUNAME, READ_GROUPS, < WRITE_GROUPS, DEF_GROUPS, ROW_GROUPS); < < LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); < EXCEPTION < WHEN OTHERS THEN < ROLLBACK; < RAISE; < END; < < COMMIT; --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.SA_USER_ADMIN_INT.SET_GROUPS(POLICY_NAME, USER_NAME, > READ_GROUPS, WRITE_GROUPS, > DEF_GROUPS, ROW_GROUPS, > INVOKER_USR); 507,509c96 < CUNAME VARCHAR2(1024); < POLID LBACSYS.OLS$USER_GROUPS.POL#%TYPE; < --- > INVOKER_USR VARCHAR2(1024); 511,533c98,106 < < CHECK_POLICY(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < CHECK_USER(CUNAME); < POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < IF (ACCESS_MODE IS NULL) AND (IN_DEF IS NULL) AND (IN_ROW IS NULL) THEN < RETURN; < END IF; < < < BEGIN < LBACSYS.LBAC_LGSTNDBY_UTIL.ALTER_GROUPS(POLID, CUNAME, GROUPS, < ACCESS_MODE, IN_DEF, IN_ROW); < < LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); < EXCEPTION < WHEN OTHERS THEN < ROLLBACK; < RAISE; < END; < < COMMIT; --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.SA_USER_ADMIN_INT.ALTER_GROUPS(POLICY_NAME, USER_NAME, > GROUPS, ACCESS_MODE, > IN_DEF, IN_ROW, > INVOKER_USR); 543,544c116 < CUNAME VARCHAR2(1024); < POLID LBACSYS.OLS$USER_COMPARTMENTS.POL#%TYPE; --- > INVOKER_USR VARCHAR2(1024); 546,564c118,126 < < CHECK_POLICY(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < CHECK_USER(CUNAME); < POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < BEGIN < < LBACSYS.LBAC_LGSTNDBY_UTIL.ADD_COMPARTMENTS(POLID, CUNAME, COMPS, < ACCESS_MODE, IN_DEF, IN_ROW); < < LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); < EXCEPTION < WHEN OTHERS THEN < ROLLBACK; < RAISE; < END; < < COMMIT; --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.SA_USER_ADMIN_INT.ADD_COMPARTMENTS(POLICY_NAME, USER_NAME, > COMPS, ACCESS_MODE, > IN_DEF, IN_ROW, > INVOKER_USR); 571,572c133 < CUNAME VARCHAR2(1024); < POLID LBACSYS.OLS$USER_COMPARTMENTS.POL#%TYPE; --- > INVOKER_USR VARCHAR2(1024); 574,577c135,138 < < IF COMPS IS NULL THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, < INVALID_ARG_EC, 'comps'); --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); 579,596c140,141 < < CHECK_POLICY(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < CHECK_USER(CUNAME); < POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < BEGIN < < LBACSYS.LBAC_LGSTNDBY_UTIL.DROP_COMPARTMENTS(POLID, CUNAME, COMPS); < < LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); < EXCEPTION < WHEN OTHERS THEN < ROLLBACK; < RAISE; < END; < < COMMIT; --- > LBACSYS.SA_USER_ADMIN_INT.DROP_COMPARTMENTS(POLICY_NAME, USER_NAME, > COMPS, INVOKER_USR); 603,604c148 < CUNAME VARCHAR2(1024); < POLID LBACSYS.OLS$USER_COMPARTMENTS.POL#%TYPE; --- > INVOKER_USR VARCHAR2(1024); 606,623c150,156 < < CHECK_POLICY(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < CHECK_USER(CUNAME); < POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < BEGIN < < LBACSYS.LBAC_LGSTNDBY_UTIL.DROP_ALL_COMPARTMENTS(POLID, CUNAME); < < LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); < EXCEPTION < WHEN OTHERS THEN < ROLLBACK; < RAISE; < END; < < COMMIT; --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.SA_USER_ADMIN_INT.DROP_ALL_COMPARTMENTS(POLICY_NAME, USER_NAME, > INVOKER_USR); 633,634c166 < CUNAME VARCHAR2(1024); < POLID LBACSYS.OLS$USER_GROUPS.POL#%TYPE; --- > INVOKER_USR VARCHAR2(1024); 636,654c168,176 < < CHECK_POLICY(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < CHECK_USER(CUNAME); < POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < BEGIN < < LBACSYS.LBAC_LGSTNDBY_UTIL.ADD_GROUPS(POLID, CUNAME, GROUPS, < ACCESS_MODE, IN_DEF, IN_ROW); < < LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); < EXCEPTION < WHEN OTHERS THEN < ROLLBACK; < RAISE; < END; < < COMMIT; --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.SA_USER_ADMIN_INT.ADD_GROUPS(POLICY_NAME, USER_NAME, > GROUPS, ACCESS_MODE, > IN_DEF, IN_ROW, > INVOKER_USR); 661,662c183 < CUNAME VARCHAR2(1024); < POLID LBACSYS.OLS$USER_GROUPS.POL#%TYPE; --- > INVOKER_USR VARCHAR2(1024); 664,667c185,188 < < IF GROUPS IS NULL THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, < INVALID_ARG_EC, 'groups'); --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); 669,686c190,191 < < CHECK_POLICY(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < CHECK_USER(CUNAME); < POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < BEGIN < < LBACSYS.LBAC_LGSTNDBY_UTIL.DROP_GROUPS(POLID, CUNAME, GROUPS); < < LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); < EXCEPTION < WHEN OTHERS THEN < ROLLBACK; < RAISE; < END; < < COMMIT; --- > LBACSYS.SA_USER_ADMIN_INT.DROP_GROUPS(POLICY_NAME, USER_NAME, > GROUPS, INVOKER_USR); 692,693c197 < CUNAME VARCHAR2(1024); < POLID LBACSYS.OLS$USER_GROUPS.POL#%TYPE; --- > INVOKER_USR VARCHAR2(1024); 695,711c199,205 < CHECK_POLICY(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < CHECK_USER(CUNAME); < POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < BEGIN < < LBACSYS.LBAC_LGSTNDBY_UTIL.DROP_ALL_GROUPS(POLID, CUNAME); < < LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); < EXCEPTION < WHEN OTHERS THEN < ROLLBACK; < RAISE; < END; < < COMMIT; --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.SA_USER_ADMIN_INT.DROP_ALL_GROUPS(POLICY_NAME, USER_NAME, > INVOKER_USR); 723,732c217 < CUNAME VARCHAR2(1024); < POLID LBACSYS.OLS$USER_LEVELS.POL#%TYPE; < MAX_RD_LAB LBACSYS.OLS$LAB.ILABEL%TYPE; < MAX_WT_LAB LBACSYS.OLS$LAB.ILABEL%TYPE; < MIN_WT_LAB LBACSYS.OLS$LAB.ILABEL%TYPE; < DF_LAB LBACSYS.OLS$LAB.ILABEL%TYPE; < RW_LAB LBACSYS.OLS$LAB.ILABEL%TYPE; < MIN_LVL PLS_INTEGER; < I_NULL VARCHAR2(1); < --- > INVOKER_USR VARCHAR2(1024); 734,810c219,227 < CHECK_POLICY(POLICY_NAME); < < IF (NOT LBACSYS.LBAC_CACHE.OID_ENABLED) THEN < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < ELSE < CUNAME := UPPER(USER_NAME); < END IF; < CHECK_USER(CUNAME); < < POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < < CHECK_COMMON(CUNAME, NULL, USER_OBJ_TYPE); < < < MAX_RD_LAB := LBACSYS.LBAC$SA_LABELS.TO_LABEL(POLID, MAX_READ_LABEL); < < < IF MAX_WRITE_LABEL IS NULL THEN < MAX_WT_LAB := LBACSYS.LBAC$SA_LABELS.TO_LABEL(POLID, MAX_READ_LABEL); < ELSE < MAX_WT_LAB := LBACSYS.LBAC$SA_LABELS.TO_LABEL(POLID, MAX_WRITE_LABEL); < END IF; < < < IF MIN_WRITE_LABEL IS NULL THEN < < < SELECT MIN(LEVEL#) INTO MIN_LVL < FROM LBACSYS.OLS$LEVELS < WHERE POL# = POLID; < < ELSE < MIN_WT_LAB := LBACSYS.LBAC$SA_LABELS.TO_LABEL(POLID, MIN_WRITE_LABEL); < MIN_LVL := LBACSYS.LBAC$SA_LABELS.LABEL_LEVEL_ONLY(MIN_WT_LAB); < END IF; < < < IF DEF_LABEL IS NULL THEN < DF_LAB := MAX_RD_LAB; < ELSE < DF_LAB := LBACSYS.LBAC$SA_LABELS.TO_LABEL(POLID, DEF_LABEL); < END IF; < < < IF ROW_LABEL IS NULL THEN < RW_LAB :=LBACSYS.LBAC$SA_LABELS.COMPUTE_WRITE_LABEL(POLID, MAX_WT_LAB, DF_LAB); < ELSE < RW_LAB := LBACSYS.LBAC$SA_LABELS.TO_LABEL(POLID, ROW_LABEL); < END IF; < < < LBACSYS.LBAC_LGSTNDBY_UTIL.SET_USER_LABELS(POLID, CUNAME, MAX_RD_LAB, < MAX_WT_LAB, < MIN_LVL, DF_LAB, RW_LAB); < LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); < COMMIT; < < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(SET_AUTH_ACTION, 0)) THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_GRANTEE, USER_NAME); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_MAXRD, MAX_READ_LABEL); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_MAXWRT, MAX_WRITE_LABEL); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_MINWRT, MIN_WRITE_LABEL); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < EXCEPTION < WHEN OTHERS THEN < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(SET_AUTH_ACTION, ABS(SQLCODE))) THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_GRANTEE, USER_NAME); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_MAXRD, MAX_READ_LABEL); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_MAXWRT, MAX_WRITE_LABEL); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_MINWRT, MIN_WRITE_LABEL); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < RAISE; --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.SA_USER_ADMIN_INT.SET_USER_LABELS(POLICY_NAME, USER_NAME, > MAX_READ_LABEL, MAX_WRITE_LABEL, > MIN_WRITE_LABEL, DEF_LABEL, > ROW_LABEL, INVOKER_USR); 814,941d230 < < FUNCTION MAX_READ_LABEL (POLICY_NAME IN VARCHAR2, USER_NAME IN VARCHAR2) < RETURN VARCHAR2 IS < POL_NUMBER PLS_INTEGER; < CUNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; < MAX_READ_LABEL LBACSYS.OLS$PROFILE.MAX_READ%TYPE; < BEGIN < IF LBACSYS.LBAC_CACHE.POLICYEXISTS(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, < NO_POLICY_EC,POLICY_NAME); < END IF; < POL_NUMBER:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < < SELECT MAX_READ INTO MAX_READ_LABEL < FROM LBACSYS.OLS$USER U, LBACSYS.OLS$PROFILE P < WHERE USR_NAME = CUNAME AND U.POL# = POL_NUMBER AND < U.POL# = P.POL# AND U.PROFID = P.PROFID; < < RETURN MAX_READ_LABEL; < END MAX_READ_LABEL; < < FUNCTION MAX_WRITE_LABEL (POLICY_NAME IN VARCHAR2, USER_NAME IN VARCHAR2) < RETURN VARCHAR2 IS < POL_NUMBER PLS_INTEGER; < CUNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; < MAX_WRITE_LABEL LBACSYS.OLS$PROFILE.MAX_WRITE%TYPE; < BEGIN < IF LBACSYS.LBAC_CACHE.POLICYEXISTS(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, < NO_POLICY_EC,POLICY_NAME); < END IF; < POL_NUMBER:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < < SELECT MAX_WRITE INTO MAX_WRITE_LABEL < FROM LBACSYS.OLS$USER U, LBACSYS.OLS$PROFILE P < WHERE USR_NAME = CUNAME AND U.POL# = POL_NUMBER AND < U.POL# = P.POL# AND U.PROFID = P.PROFID; < < RETURN MAX_WRITE_LABEL; < END MAX_WRITE_LABEL; < < FUNCTION MIN_WRITE_LABEL (POLICY_NAME IN VARCHAR2, USER_NAME IN VARCHAR2) < RETURN VARCHAR2 IS < POL_NUMBER PLS_INTEGER; < CUNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; < MIN_WRITE_LABEL LBACSYS.OLS$PROFILE.MIN_WRITE%TYPE; < BEGIN < IF LBACSYS.LBAC_CACHE.POLICYEXISTS(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, < NO_POLICY_EC,POLICY_NAME); < END IF; < POL_NUMBER:=LBAC_CACHE.POL_NUMBER(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < < SELECT MIN_WRITE INTO MIN_WRITE_LABEL < FROM LBACSYS.OLS$USER U, LBACSYS.OLS$PROFILE P < WHERE USR_NAME = CUNAME AND U.POL# = POL_NUMBER AND < U.POL# = P.POL# AND U.PROFID = P.PROFID; < < RETURN MIN_WRITE_LABEL; < END MIN_WRITE_LABEL; < < FUNCTION DEFAULT_READ_LABEL (POLICY_NAME IN VARCHAR2, USER_NAME IN VARCHAR2) < RETURN VARCHAR2 IS < POL_NUMBER PLS_INTEGER; < CUNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; < DEF_READ_LABEL LBACSYS.OLS$PROFILE.DEF_READ%TYPE; < BEGIN < IF LBACSYS.LBAC_CACHE.POLICYEXISTS(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, < NO_POLICY_EC,POLICY_NAME); < END IF; < POL_NUMBER:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < < SELECT DEF_READ INTO DEF_READ_LABEL < FROM LBACSYS.OLS$USER U, LBACSYS.OLS$PROFILE P < WHERE USR_NAME = CUNAME AND U.POL# = POL_NUMBER AND < U.POL# = P.POL# AND U.PROFID = P.PROFID; < < RETURN DEF_READ_LABEL; < END DEFAULT_READ_LABEL; < < FUNCTION DEFAULT_WRITE_LABEL (POLICY_NAME IN VARCHAR2, USER_NAME IN VARCHAR2) < RETURN VARCHAR2 IS < POL_NUMBER PLS_INTEGER; < CUNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; < DEF_WRITE_LABEL LBACSYS.OLS$PROFILE.DEF_WRITE%TYPE; < BEGIN < IF LBACSYS.LBAC_CACHE.POLICYEXISTS(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, < NO_POLICY_EC,POLICY_NAME); < END IF; < POL_NUMBER:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < < SELECT DEF_WRITE INTO DEF_WRITE_LABEL < FROM LBACSYS.OLS$USER U, LBACSYS.OLS$PROFILE P < WHERE USR_NAME = CUNAME AND U.POL# = POL_NUMBER AND < U.POL# = P.POL# AND U.PROFID = P.PROFID; < < RETURN DEF_WRITE_LABEL; < END DEFAULT_WRITE_LABEL; < < FUNCTION DEFAULT_ROW_LABEL (POLICY_NAME IN VARCHAR2, USER_NAME IN VARCHAR2) < RETURN VARCHAR2 IS < POL_NUMBER PLS_INTEGER; < CUNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; < DEF_ROW_LABEL LBACSYS.OLS$PROFILE.DEF_ROW%TYPE; < BEGIN < IF LBACSYS.LBAC_CACHE.POLICYEXISTS(POLICY_NAME) = FALSE THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, < NO_POLICY_EC,POLICY_NAME); < END IF; < POL_NUMBER:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < < SELECT DEF_ROW INTO DEF_ROW_LABEL < FROM LBACSYS.OLS$USER U, LBACSYS.OLS$PROFILE P < WHERE USR_NAME = CUNAME AND U.POL# = POL_NUMBER AND < U.POL# = P.POL# AND U.PROFID = P.PROFID; < < RETURN DEF_ROW_LABEL; < END DEFAULT_ROW_LABEL; < < 947,951c236,237 < IS < UNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; < POLID LBACSYS.OLS$POL.POL#%TYPE; < DEF_LAB LBACSYS.OLS$LAB.ILABEL%TYPE; < --- > IS > INVOKER_USR VARCHAR2(1024); 953,971c239,245 < CHECK_POLICY(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', UNAME); < CHECK_USER(UNAME); < POLID:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < DEF_LAB := LBACSYS.LBAC$SA_LABELS.TO_LABEL(POLID, DEF_LABEL); < < BEGIN < < LBACSYS.LBAC_LGSTNDBY_UTIL.SET_DEFAULT_LABEL(POLID, UNAME, DEF_LAB); < < LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, UNAME); < EXCEPTION < WHEN OTHERS THEN < ROLLBACK; < RAISE; < END; < < COMMIT; --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.SA_USER_ADMIN_INT.SET_DEFAULT_LABEL(POLICY_NAME, USER_NAME, > DEF_LABEL, INVOKER_USR); 980,983c254 < UNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; < POLID LBACSYS.OLS$POL.POL#%TYPE; < ROW_LAB LBACSYS.OLS$LAB.ILABEL%TYPE; < --- > INVOKER_USR VARCHAR2(1024); 985,1003c256,262 < CHECK_POLICY(POLICY_NAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', UNAME); < CHECK_USER(UNAME); < POLID:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < ROW_LAB := LBACSYS.LBAC$SA_LABELS.TO_LABEL(POLID, ROW_LABEL); < < BEGIN < < LBACSYS.LBAC_LGSTNDBY_UTIL.SET_ROW_LABEL(POLID, UNAME, ROW_LAB); < < LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, UNAME); < EXCEPTION < WHEN OTHERS THEN < ROLLBACK; < RAISE; < END; < < COMMIT; --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.SA_USER_ADMIN_INT.SET_ROW_LABEL(POLICY_NAME, USER_NAME, > ROW_LABEL, INVOKER_USR); 1008,1046d266 < PROCEDURE DROP_LABELS(POLICY_NAME IN VARCHAR2, < USER_NAME IN VARCHAR2) < IS < CURR_PRIVS PLS_INTEGER := 0 ; < POL_NUM PLS_INTEGER; < STMT_TYPE PLS_INTEGER; < BEGIN < CHECK_POLICY(POLICY_NAME); < CHECK_USER(USER_NAME); < POL_NUM := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < < DELETE FROM LBACSYS.OLS$USER_LEVELS < WHERE USR_NAME = USER_NAME AND POL#=POL_NUM; < < BEGIN < SELECT PRIVS INTO CURR_PRIVS < FROM LBACSYS.OLS$USER U, LBACSYS.OLS$PROFILE P < WHERE USR_NAME = USER_NAME AND U.POL# = POL_NUM < AND U.POL# = P.POL# AND U.PROFID = P.PROFID; < EXCEPTION < WHEN NO_DATA_FOUND THEN < RETURN; < END; < < < IF CURR_PRIVS = 0 THEN < STMT_TYPE := DELETE_TYPE; < ELSE < STMT_TYPE := UPDATE_TYPE; < END IF; < < LBACSYS.LBAC$SA_LABELS.STORE_USER(POLICY_NAME, USER_NAME, < NULL, NULL, NULL, NULL, < NULL, NULL, CURR_PRIVS, STMT_TYPE); < END DROP_LABELS; < < < 1050,1062c270 < UNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; < POL_NUM PLS_INTEGER; < OLD_MAX_READ LBACSYS.OLS$LAB.ILABEL%TYPE :=NULL; < OLD_MAX_WRITE LBACSYS.OLS$LAB.ILABEL%TYPE :=NULL; < OLD_MIN_WRITE LBACSYS.OLS$LAB.ILABEL%TYPE :=NULL; < OLD_DEF_READ LBACSYS.OLS$LAB.ILABEL%TYPE :=NULL; < OLD_DEF_WRITE LBACSYS.OLS$LAB.ILABEL%TYPE :=NULL; < OLD_DEF_ROW LBACSYS.OLS$LAB.ILABEL%TYPE :=NULL; < NO_OLD_PRIVS BOOLEAN; < OLD_PRIVS NUMBER; < NEW_PRIVS NUMBER; < PROFILE_ID NUMBER; < STMT_TYPE PLS_INTEGER; --- > INVOKER_USR VARCHAR2(1024); 1064,1068c272,275 < CHECK_POLICY(POLICY_NAME); < IF (NOT LBACSYS.LBAC_CACHE.OID_ENABLED) THEN < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', UNAME); < ELSE < UNAME := UPPER(USER_NAME); --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); 1070,1132c277,278 < < < < POL_NUM := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < < CHECK_COMMON(UNAME, NULL, USER_OBJ_TYPE); < < < NO_OLD_PRIVS := FALSE; < BEGIN < SELECT MAX_READ, MAX_WRITE, MIN_WRITE, DEF_READ, DEF_WRITE, < DEF_ROW, PRIVS < INTO OLD_MAX_READ, OLD_MAX_WRITE, OLD_MIN_WRITE, OLD_DEF_READ, < OLD_DEF_WRITE, OLD_DEF_ROW, OLD_PRIVS < FROM LBACSYS.OLS$USER U, LBACSYS.OLS$PROFILE P < WHERE USR_NAME = UNAME AND U.POL# = POL_NUM < AND U.POL# = P.POL# AND U.PROFID = P.PROFID; < EXCEPTION < WHEN NO_DATA_FOUND THEN < < IF PRIVILEGES IS NULL THEN < RETURN; < ELSE < NO_OLD_PRIVS := TRUE; < OLD_PRIVS := 0; < END IF; < END; < < < < NEW_PRIVS := TO_PRIVS(POLICY_NAME,PRIVILEGES); < < < < < IF NO_OLD_PRIVS THEN < STMT_TYPE := INSERT_TYPE; < ELSIF OLD_MAX_READ IS NULL AND PRIVILEGES IS NULL THEN < STMT_TYPE := DELETE_TYPE; < ELSE < STMT_TYPE := UPDATE_TYPE; < END IF; < < SET_USER_PRIVS_INTERNAL(POLICY_NAME, UNAME, OLD_MAX_READ, OLD_MAX_WRITE, < OLD_MIN_WRITE, OLD_DEF_READ, OLD_DEF_WRITE, < OLD_DEF_ROW, NEW_PRIVS, STMT_TYPE); < < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(SET_AUTH_ACTION, 0)) THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_GRANTEE, USER_NAME); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_PRIVGRNTED, PRIVILEGES); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < EXCEPTION < WHEN OTHERS THEN < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(SET_AUTH_ACTION, ABS(SQLCODE))) THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_GRANTEE, USER_NAME); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_PRIVGRNTED, PRIVILEGES); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < RAISE; --- > LBACSYS.SA_USER_ADMIN_INT.SET_USER_PRIVS(POLICY_NAME, USER_NAME, > PRIVILEGES, INVOKER_USR); 1141,1149c287 < POL_NUM PLS_INTEGER; < PGM_CNT PLS_INTEGER; < ROW_CNT PLS_INTEGER; < NO_OLD_PRIVS BOOLEAN; < OLD_PRIVS NUMBER; < NEW_PRIVS NUMBER; < CPNAME LBACSYS.OLS$PROG.PGM_NAME%TYPE; < CSNAME LBACSYS.OLS$PROG.OWNER%TYPE; < --- > INVOKER_USR VARCHAR2(1024); 1151,1257c289,296 < CHECK_POLICY(POLICY_NAME); < < IF SCHEMA_NAME IS NULL THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, SA_FACILITY, INVALID_PARAMS_EC, 'schema name'); < ELSIF PROGRAM_UNIT_NAME IS NULL THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, SA_FACILITY, INVALID_PARAMS_EC, 'program name'); < END IF; < < < IF (LBACSYS.LBAC_CACHE.FAILEDSTARTUP(POLICY_NAME)) THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, SA_FACILITY, STARTUP_FAILURE_EC, POLICY_NAME); < END IF; < POL_NUM:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', < CSNAME); < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(PROGRAM_UNIT_NAME, < 'program unit name', CPNAME); < < < CHECK_COMMON(CSNAME, CPNAME, PROC_OBJ_TYPE); < < < < < SELECT COUNT(*) INTO PGM_CNT < FROM SYS.OBJ$ O, SYS."_BASE_USER" U < WHERE O.NAME = CPNAME < AND U.NAME = CSNAME < AND O.OWNER# = U.USER# < AND O.TYPE# IN (7,8,9); < < IF (PGM_CNT != 1) THEN < LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( < PRODUCT, SA_FACILITY, NO_PROG_EC, < (SCHEMA_NAME || '.' || PROGRAM_UNIT_NAME)); < END IF; < < < NO_OLD_PRIVS := FALSE; < BEGIN < SELECT PRIVS INTO OLD_PRIVS < FROM LBACSYS.OLS$PROG < WHERE CPNAME = PGM_NAME AND < OWNER = CSNAME AND < POL# = POL_NUM; < EXCEPTION < WHEN NO_DATA_FOUND THEN < < IF PRIVILEGES IS NULL THEN < RETURN; < ELSE < NO_OLD_PRIVS := TRUE; < OLD_PRIVS := NULL; < END IF; < END; < < NEW_PRIVS := TO_PRIVS(POLICY_NAME,PRIVILEGES); < < < < < IF NO_OLD_PRIVS THEN < < LBACSYS.LBAC_STANDARD.SET_TRUSTED_PROG(CSNAME,CPNAME); < INSERT INTO LBACSYS.OLS$PROG VALUES (POL_NUM,CPNAME, < CSNAME, NEW_PRIVS); < ELSIF PRIVILEGES IS NULL THEN < LBACSYS.LBAC_STANDARD.RESET_TRUSTED_PROG(CSNAME,CPNAME); < DELETE FROM LBACSYS.OLS$PROG < WHERE POL#=POL_NUM AND PGM_NAME=CPNAME < AND OWNER=CSNAME; < ELSE < < LBACSYS.LBAC_STANDARD.SET_TRUSTED_PROG(CSNAME,CPNAME); < UPDATE LBACSYS.OLS$PROG SET PRIVS = NEW_PRIVS < WHERE POL#=POL_NUM AND < PGM_NAME=CPNAME AND < OWNER=CSNAME; < END IF; < < COMMIT; < < < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME, SET_ACTION, TRUE, < 'SET PROGRAM PRIVILEGES'); < < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(SET_AUTH_ACTION, 0)) THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCHEMA_NAME); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_PROGRAM, PROGRAM_UNIT_NAME); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_PRIVGRNTED, PRIVILEGES); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < EXCEPTION < WHEN OTHERS THEN < < IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(SET_AUTH_ACTION, ABS(SQLCODE))) THEN < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCHEMA_NAME); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_PROGRAM, PROGRAM_UNIT_NAME); < LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_PRIVGRNTED, PRIVILEGES); < LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); < END IF; < RAISE; --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); > END IF; > LBACSYS.SA_USER_ADMIN_INT.SET_PROG_PRIVS(POLICY_NAME, SCHEMA_NAME, > PROGRAM_UNIT_NAME, PRIVILEGES, > INVOKER_USR); 1263,1266c302,303 < USER_NAME IN VARCHAR2) IS < < POL_NUM PLS_INTEGER := 0; < CUNAME VARCHAR2(1024); --- > USER_NAME IN VARCHAR2) IS > INVOKER_USR VARCHAR2(1024); 1268,1271c305,308 < IF (NOT LBACSYS.LBAC_CACHE.OID_ENABLED) THEN < LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); < ELSE < CUNAME := UPPER(USER_NAME); --- > INVOKER_USR := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > IF (INVOKER_USR = 'XS$NULL') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NOT_ALLOWED_EC); 1273,1279c310,311 < < DROP_LABELS(POLICY_NAME, CUNAME); < POL_NUM := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); < < LBACSYS.LBAC$SA_LABELS.STORE_USER(POLICY_NAME, CUNAME, < NULL, NULL, NULL, NULL, < NULL, NULL, 0, DELETE_TYPE); --- > LBACSYS.SA_USER_ADMIN_INT.DROP_USER_ACCESS(POLICY_NAME, USER_NAME, > INVOKER_USR);
0a1,1302 > PACKAGE BODY sa_user_admin_int AS > > > > PRODUCT CONSTANT VARCHAR2(12) := 'TRUSTED'; > LBAC_FACILITY CONSTANT VARCHAR2(12) := 'LBAC'; > SA_FACILITY CONSTANT VARCHAR2(12) := 'SA'; > SA_PACKAGE CONSTANT VARCHAR2(12) := 'LBAC$SA'; > INV_BIT CONSTANT PLS_INTEGER := 4; > GRP_BIT CONSTANT PLS_INTEGER := 2; > > LVER CONSTANT PLS_INTEGER := 1; > LVL_BIT CONSTANT PLS_INTEGER := 0; > CMP_BIT CONSTANT PLS_INTEGER := 1; > LSEP CONSTANT VARCHAR2(1) := '.'; > > INVALID_LABEL_LIST_EC CONSTANT PLS_INTEGER := 12405; > UNAUTHORIZED_OP_EC CONSTANT PLS_INTEGER := 12407; > NO_POLICY_EC CONSTANT PLS_INTEGER := 12416; > NO_USER_EC CONSTANT PLS_INTEGER := 12418; > NO_OLS_EC CONSTANT PLS_INTEGER := 12458; > UNDEFINED_LEVEL_EC CONSTANT PLS_INTEGER := 12461; > INVALID_CLRN_RANGE_EC CONSTANT PLS_INTEGER := 12466; > UNDEFINED_COMP_EC CONSTANT PLS_INTEGER := 12462; > UNDEFINED_GROUP_EC CONSTANT PLS_INTEGER := 12463; > SYS_USER_EC CONSTANT PLS_INTEGER := 12432; > INVALID_SCHEMA_EC CONSTANT PLS_INTEGER := 12425; > INVALID_ARG_EC CONSTANT PLS_INTEGER := 12427; > NO_DEFINED_LEVELS_EC CONSTANT PLS_INTEGER := 12469; > INVALID_LABEL_EC CONSTANT PLS_INTEGER := 12470; > NO_PROG_EC CONSTANT PLS_INTEGER := 12417; > INVALID_COMPS_GRPS_EC CONSTANT PLS_INTEGER := 12465; > > INVALID_PARAMS_EC CONSTANT PLS_INTEGER := 12427; > STARTUP_FAILURE_EC CONSTANT PLS_INTEGER := 12409; > > SET_ACTION CONSTANT PLS_INTEGER := 4; > > > > SET_AUTH_ACTION CONSTANT PLS_INTEGER := 3; > > > > AUDINFO_OBJOWNER CONSTANT PLS_INTEGER := 0; > AUDINFO_GRANTEE CONSTANT PLS_INTEGER := 2; > AUDINFO_MAXRD CONSTANT PLS_INTEGER := 3; > AUDINFO_MAXWRT CONSTANT PLS_INTEGER := 4; > AUDINFO_MINWRT CONSTANT PLS_INTEGER := 5; > AUDINFO_PRIVGRNTED CONSTANT PLS_INTEGER := 6; > AUDINFO_PROGRAM CONSTANT PLS_INTEGER := 7; > > > INSERT_TYPE CONSTANT PLS_INTEGER := 2; > UPDATE_TYPE CONSTANT PLS_INTEGER := 6; > DELETE_TYPE CONSTANT PLS_INTEGER := 7; > > > TABLE_OBJ_TYPE CONSTANT PLS_INTEGER := 1; > PROC_OBJ_TYPE CONSTANT PLS_INTEGER := 2; > > USER_OBJ_TYPE CONSTANT PLS_INTEGER := 3; > > > > TYPE LAB_SORT_T IS TABLE OF INTEGER INDEX BY BINARY_INTEGER; > > > > > > > > PROCEDURE CHECK_POLICY(POLICY_NAME IN VARCHAR2) IS > BEGIN > > > IF LBACSYS.LBAC_CACHE.CHECK_POLICYROLE(POLICY_NAME, NULL) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, > UNAUTHORIZED_OP_EC, POLICY_NAME); > END IF; > > > IF LBACSYS.LBAC_CACHE.PACKAGE(POLICY_NAME) != SA_PACKAGE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, > NO_POLICY_EC, POLICY_NAME, TRUE); > END IF; > > END CHECK_POLICY; > > > > PROCEDURE CHECK_LEVELS(POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2) IS > I_NULL CHAR(1); > POL_NUMBER LBACSYS.OLS$USER_LEVELS.POL#%TYPE; > > BEGIN > POL_NUMBER := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > > SELECT NULL INTO I_NULL > FROM LBACSYS.OLS$USER_LEVELS > WHERE POL# = POL_NUMBER AND USR_NAME = USER_NAME; > EXCEPTION > WHEN NO_DATA_FOUND THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, > NO_DEFINED_LEVELS_EC, USER_NAME, POLICY_NAME); > END CHECK_LEVELS; > > > > PROCEDURE CHECK_USER(UNAME IN VARCHAR2) IS > I_NULL CHAR(1); > > BEGIN > IF UNAME IN ('SYS','LBACSYS','SYSTEM') THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, > INVALID_SCHEMA_EC); > END IF; > END CHECK_USER; > > > > PROCEDURE CHECK_COMMON(UNAME IN VARCHAR2, > OBJECT IN VARCHAR2, > OBJTYP IN PLS_INTEGER, > INVOKER_USR IN VARCHAR2) > IS LANGUAGE C > NAME "zllsesFedChk1" > LIBRARY LBACSYS.OLS$SESSION_LIBT > PARAMETERS ( > UNAME STRING, UNAME LENGTH SIZE_T, UNAME INDICATOR SB2, > OBJECT STRING, OBJECT LENGTH SIZE_T, OBJECT INDICATOR SB2, > OBJTYP UB1, OBJTYP INDICATOR SB2, > INVOKER_USR STRING, INVOKER_USR LENGTH SIZE_T, > INVOKER_USR INDICATOR SB2 > ); > > > > FUNCTION GET_LEVEL (POL_ID IN PLS_INTEGER, > LEVEL_CODE IN VARCHAR2) > RETURN PLS_INTEGER IS > LEVEL_NUM LBACSYS.OLS$LEVELS.LEVEL#%TYPE; > BEGIN > IF LEVEL_CODE IS NULL THEN > RETURN NULL; > ELSE > SELECT LEVEL# INTO LEVEL_NUM > FROM LBACSYS.OLS$LEVELS > WHERE POL# = POL_ID AND CODE = LEVEL_CODE; > RETURN LEVEL_NUM; > END IF; > EXCEPTION > WHEN NO_DATA_FOUND THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, > UNDEFINED_LEVEL_EC, LEVEL_CODE, LBACSYS.LBAC_CACHE.POLICY_NAME(POL_ID)); > END GET_LEVEL; > > FUNCTION GET_LEVEL (POL_ID IN PLS_INTEGER, > LEVEL_NUM IN PLS_INTEGER) > RETURN VARCHAR2 IS > LEVEL_CODE LBACSYS.OLS$LEVELS.CODE%TYPE; > BEGIN > IF LEVEL_NUM IS NULL THEN > RETURN NULL; > ELSE > SELECT CODE INTO LEVEL_CODE > FROM LBACSYS.OLS$LEVELS > WHERE POL# = POL_ID AND LEVEL# = LEVEL_NUM; > RETURN LEVEL_CODE; > END IF; > EXCEPTION > WHEN NO_DATA_FOUND THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, > UNDEFINED_LEVEL_EC, LEVEL_NUM, LBACSYS.LBAC_CACHE.POLICY_NAME(POL_ID)); > END GET_LEVEL; > > > > FUNCTION GET_COMP (POL_ID IN PLS_INTEGER, > COMP_CODE IN VARCHAR2) > RETURN PLS_INTEGER IS > COMP_NUM LBACSYS.OLS$COMPARTMENTS.COMP#%TYPE; > BEGIN > IF COMP_CODE IS NULL THEN > RETURN NULL; > ELSE > SELECT COMP# INTO COMP_NUM > FROM LBACSYS.OLS$COMPARTMENTS > WHERE POL# = POL_ID AND CODE = COMP_CODE; > RETURN COMP_NUM; > END IF; > EXCEPTION > WHEN NO_DATA_FOUND THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, > UNDEFINED_COMP_EC, COMP_CODE, LBACSYS.LBAC_CACHE.POLICY_NAME(POL_ID)); > END GET_COMP; > > > > FUNCTION GET_GROUP (POL_ID IN PLS_INTEGER, > GROUP_CODE IN VARCHAR2) > RETURN PLS_INTEGER IS > GROUP_NUM LBACSYS.OLS$GROUPS.GROUP#%TYPE; > BEGIN > IF GROUP_CODE IS NULL THEN > RETURN NULL; > ELSE > SELECT GROUP# INTO GROUP_NUM > FROM LBACSYS.OLS$GROUPS > WHERE POL# = POL_ID AND CODE = GROUP_CODE; > RETURN GROUP_NUM; > END IF; > EXCEPTION > WHEN NO_DATA_FOUND THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, > UNDEFINED_GROUP_EC, GROUP_CODE, LBACSYS.LBAC_CACHE.POLICY_NAME(POL_ID)); > END GET_GROUP; > > > > FUNCTION SET_INVERSE_POLICY_BIT(POL_ID PLS_INTEGER) > RETURN PLS_INTEGER IS > BEGIN > > IF LBACSYS.LBAC_CACHE.INVERSE_GROUP(POL_ID) THEN > RETURN 4; > END IF; > > RETURN 0; > END SET_INVERSE_POLICY_BIT; > > FUNCTION TO_PRIVS ( POLICY_NAME VARCHAR2, > PRIVILEGES VARCHAR2) > RETURN NUMBER IS > PRIVS NUMBER := 0; > POS PLS_INTEGER; > REST VARCHAR2(255); > PRIV VARCHAR2(30); > PRIV_NUM PLS_INTEGER; > TYPE PRIV_IDX_TAB IS TABLE OF PLS_INTEGER > INDEX BY PLS_INTEGER; > PRIV_ARR PRIV_IDX_TAB; > I NUMBER; > > BEGIN > POS := 0; > REST := PRIVILEGES; > > WHILE REST IS NOT NULL LOOP > POS := INSTR(REST,','); > IF POS = 0 THEN > PRIV:=REST; > REST:=NULL; > ELSE > PRIV:=SUBSTR(REST,1,POS-1); > REST:=SUBSTR(REST,POS+1); > END IF; > > EXECUTE IMMEDIATE 'BEGIN LBACSYS.' || > LBACSYS.LBAC_CACHE.PACKAGE(POLICY_NAME) || > '.validate_priv(:priv, :priv_number); END;' > USING > IN PRIV, > OUT PRIV_NUM; > PRIV_ARR(PRIV_NUM) := 1; > > PRIVS := BITAND(PRIVS,PRIV_NUM); > > END LOOP; > > > > FOR I IN 1..7 LOOP > IF NOT (PRIV_ARR.EXISTS(I)) THEN > PRIV_ARR(I) :=0; > END IF; > END LOOP; > SELECT BIN_TO_NUM(PRIV_ARR(7), PRIV_ARR(6), PRIV_ARR(5), PRIV_ARR(4), > PRIV_ARR(3),PRIV_ARR(2),PRIV_ARR(1)) INTO PRIVS FROM SYS.DUAL; > > RETURN(PRIVS); > > END TO_PRIVS; > > PROCEDURE SET_USER_PRIVS_INTERNAL > (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > MR_LABEL IN VARCHAR2, > MW_LABEL IN VARCHAR2, > MIN_LABEL IN VARCHAR2, > READ_LABEL IN VARCHAR2, > WRITE_LABEL IN VARCHAR2, > ROW_LABEL IN VARCHAR2, > PRIVS IN PLS_INTEGER, > STMT_TYPE IN PLS_INTEGER) > IS LANGUAGE C > NAME "zllusr_sup" > LIBRARY LBACSYS.LBAC$USER_LIBT > WITH CONTEXT > PARAMETERS ( > CONTEXT, > POLICY_NAME STRING, POLICY_NAME LENGTH SIZE_T, POLICY_NAME INDICATOR SB2, > USER_NAME STRING, USER_NAME LENGTH SIZE_T, USER_NAME INDICATOR SB2, > MR_LABEL STRING, MR_LABEL LENGTH SIZE_T, MR_LABEL INDICATOR SB2, > MW_LABEL STRING, MW_LABEL LENGTH SIZE_T, MW_LABEL INDICATOR SB2, > MIN_LABEL STRING, MIN_LABEL LENGTH SIZE_T, MIN_LABEL INDICATOR SB2, > READ_LABEL STRING, READ_LABEL LENGTH SIZE_T, READ_LABEL INDICATOR SB2, > WRITE_LABEL STRING, WRITE_LABEL LENGTH SIZE_T, WRITE_LABEL INDICATOR SB2, > ROW_LABEL STRING, ROW_LABEL LENGTH SIZE_T, ROW_LABEL INDICATOR SB2, > PRIVS UB4, STMT_TYPE UB1 > ); > > > > > PROCEDURE SET_LEVELS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > MAX_LEVEL IN VARCHAR2, > MIN_LEVEL IN VARCHAR2 DEFAULT NULL, > DEF_LEVEL IN VARCHAR2 DEFAULT NULL, > ROW_LEVEL IN VARCHAR2 DEFAULT NULL, > INVOKER_USR IN VARCHAR2) IS > CUNAME VARCHAR2(1024); > MINLVL_CODE LBACSYS.OLS$LEVELS.CODE%TYPE := UPPER(MIN_LEVEL); > MAXLVL_CODE LBACSYS.OLS$LEVELS.CODE%TYPE := UPPER(MAX_LEVEL); > DLVL_CODE LBACSYS.OLS$LEVELS.CODE%TYPE := UPPER(DEF_LEVEL); > RLVL_CODE LBACSYS.OLS$LEVELS.CODE%TYPE := UPPER(ROW_LEVEL); > POLID LBACSYS.OLS$USER_LEVELS.POL#%TYPE; > MIN_NUM LBACSYS.OLS$LEVELS.LEVEL#%TYPE; > MAX_NUM LBACSYS.OLS$LEVELS.LEVEL#%TYPE; > DEF_NUM LBACSYS.OLS$LEVELS.LEVEL#%TYPE; > ROW_NUM LBACSYS.OLS$LEVELS.LEVEL#%TYPE; > I_NULL CHAR(1); > > BEGIN > > CHECK_POLICY(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > > CHECK_USER(CUNAME); > > POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > MAX_NUM := GET_LEVEL(POLID, MAXLVL_CODE); > IF MINLVL_CODE IS NULL THEN > SELECT MIN(LEVEL#) INTO MIN_NUM > FROM LBACSYS.OLS$LEVELS > WHERE POL#=POLID; > ELSE > MIN_NUM := GET_LEVEL(POLID, MINLVL_CODE); > END IF; > IF DLVL_CODE IS NULL THEN > DEF_NUM := MAX_NUM; > ELSE > DEF_NUM := GET_LEVEL(POLID, DLVL_CODE); > END IF; > IF RLVL_CODE IS NULL THEN > ROW_NUM := DEF_NUM; > ELSE > ROW_NUM := GET_LEVEL(POLID, RLVL_CODE); > END IF; > > > IF DEF_NUM < MIN_NUM THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, > INVALID_ARG_EC, 'def_level'); > END IF; > > IF DEF_NUM > MAX_NUM THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, SA_FACILITY, INVALID_CLRN_RANGE_EC); > END IF; > > IF ROW_NUM < MIN_NUM OR ROW_NUM > DEF_NUM THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, > INVALID_ARG_EC, 'row_level'); > END IF; > > BEGIN > > LBACSYS.LBAC_LGSTNDBY_UTIL.SET_LEVELS(POLID, CUNAME, MAX_NUM, > MIN_NUM, DEF_NUM, ROW_NUM); > > LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); > EXCEPTION > WHEN OTHERS THEN > ROLLBACK; > RAISE; > END; > > COMMIT; > END SET_LEVELS; > > > PROCEDURE SET_COMPARTMENTS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > READ_COMPS IN VARCHAR2, > WRITE_COMPS IN VARCHAR2 DEFAULT NULL, > DEF_COMPS IN VARCHAR2 DEFAULT NULL, > ROW_COMPS IN VARCHAR2 DEFAULT NULL, > INVOKER_USR IN VARCHAR2) IS > CUNAME VARCHAR2(1024); > POLID LBACSYS.OLS$USER_COMPARTMENTS.POL#%TYPE; > > BEGIN > > CHECK_POLICY(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > CHECK_USER(CUNAME); > > > CHECK_LEVELS(POLICY_NAME, CUNAME); > > POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > BEGIN > > LBACSYS.LBAC_LGSTNDBY_UTIL.SET_COMPARTMENTS(POLID, CUNAME, READ_COMPS, > WRITE_COMPS, DEF_COMPS, ROW_COMPS); > > LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); > EXCEPTION > WHEN OTHERS THEN > ROLLBACK; > RAISE; > END; > > COMMIT; > END SET_COMPARTMENTS; > > > PROCEDURE ALTER_COMPARTMENTS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > COMPS IN VARCHAR2, > ACCESS_MODE IN VARCHAR2 DEFAULT NULL, > IN_DEF IN VARCHAR2 DEFAULT NULL, > IN_ROW IN VARCHAR2 DEFAULT NULL, > INVOKER_USR IN VARCHAR2) IS > CUNAME VARCHAR2(1024); > POLID LBACSYS.OLS$USER_COMPARTMENTS.POL#%TYPE; > BEGIN > > CHECK_POLICY(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > CHECK_USER(CUNAME); > POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > IF (ACCESS_MODE IS NULL) AND (IN_DEF IS NULL) AND (IN_ROW IS NULL) THEN > RETURN; > END IF; > > BEGIN > > LBACSYS.LBAC_LGSTNDBY_UTIL.ALTER_COMPARTMENTS(POLID, CUNAME, COMPS, > ACCESS_MODE, IN_DEF, IN_ROW); > > LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); > EXCEPTION > WHEN OTHERS THEN > ROLLBACK; > RAISE; > END; > > COMMIT; > END ALTER_COMPARTMENTS; > > > PROCEDURE SET_GROUPS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > READ_GROUPS IN VARCHAR2, > WRITE_GROUPS IN VARCHAR2 DEFAULT NULL, > DEF_GROUPS IN VARCHAR2 DEFAULT NULL, > ROW_GROUPS IN VARCHAR2 DEFAULT NULL, > INVOKER_USR IN VARCHAR2) IS > CUNAME VARCHAR2(1024); > POLID LBACSYS.OLS$USER_GROUPS.POL#%TYPE; > > BEGIN > > CHECK_POLICY(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > CHECK_USER(CUNAME); > > > CHECK_LEVELS(POLICY_NAME, CUNAME); > > POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > BEGIN > > LBACSYS.LBAC_LGSTNDBY_UTIL.SET_GROUPS(POLID, CUNAME, READ_GROUPS, > WRITE_GROUPS, DEF_GROUPS, ROW_GROUPS); > > LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); > EXCEPTION > WHEN OTHERS THEN > ROLLBACK; > RAISE; > END; > > COMMIT; > END SET_GROUPS; > > > PROCEDURE ALTER_GROUPS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > GROUPS IN VARCHAR2, > ACCESS_MODE IN VARCHAR2 DEFAULT NULL, > IN_DEF IN VARCHAR2 DEFAULT NULL, > IN_ROW IN VARCHAR2 DEFAULT NULL, > INVOKER_USR IN VARCHAR2) IS > CUNAME VARCHAR2(1024); > POLID LBACSYS.OLS$USER_GROUPS.POL#%TYPE; > > BEGIN > > CHECK_POLICY(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > CHECK_USER(CUNAME); > POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > IF (ACCESS_MODE IS NULL) AND (IN_DEF IS NULL) AND (IN_ROW IS NULL) THEN > RETURN; > END IF; > > > BEGIN > LBACSYS.LBAC_LGSTNDBY_UTIL.ALTER_GROUPS(POLID, CUNAME, GROUPS, > ACCESS_MODE, IN_DEF, IN_ROW); > > LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); > EXCEPTION > WHEN OTHERS THEN > ROLLBACK; > RAISE; > END; > > COMMIT; > END ALTER_GROUPS; > > > PROCEDURE ADD_COMPARTMENTS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > COMPS IN VARCHAR2, > ACCESS_MODE IN VARCHAR2 DEFAULT SA_UTL.READ_ONLY, > IN_DEF IN VARCHAR2 DEFAULT 'Y', > IN_ROW IN VARCHAR2 DEFAULT 'N', > INVOKER_USR IN VARCHAR2) IS > CUNAME VARCHAR2(1024); > POLID LBACSYS.OLS$USER_COMPARTMENTS.POL#%TYPE; > BEGIN > > CHECK_POLICY(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > CHECK_USER(CUNAME); > POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > BEGIN > > LBACSYS.LBAC_LGSTNDBY_UTIL.ADD_COMPARTMENTS(POLID, CUNAME, COMPS, > ACCESS_MODE, IN_DEF, IN_ROW); > > LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); > EXCEPTION > WHEN OTHERS THEN > ROLLBACK; > RAISE; > END; > > COMMIT; > END ADD_COMPARTMENTS; > > > PROCEDURE DROP_COMPARTMENTS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > COMPS IN VARCHAR2, > INVOKER_USR IN VARCHAR2) IS > CUNAME VARCHAR2(1024); > POLID LBACSYS.OLS$USER_COMPARTMENTS.POL#%TYPE; > BEGIN > > IF COMPS IS NULL THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, > INVALID_ARG_EC, 'comps'); > END IF; > > CHECK_POLICY(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > CHECK_USER(CUNAME); > POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > BEGIN > > LBACSYS.LBAC_LGSTNDBY_UTIL.DROP_COMPARTMENTS(POLID, CUNAME, COMPS); > > LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); > EXCEPTION > WHEN OTHERS THEN > ROLLBACK; > RAISE; > END; > > COMMIT; > END DROP_COMPARTMENTS; > > > PROCEDURE DROP_ALL_COMPARTMENTS > (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > INVOKER_USR IN VARCHAR2) IS > CUNAME VARCHAR2(1024); > POLID LBACSYS.OLS$USER_COMPARTMENTS.POL#%TYPE; > BEGIN > > CHECK_POLICY(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > CHECK_USER(CUNAME); > POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > BEGIN > > LBACSYS.LBAC_LGSTNDBY_UTIL.DROP_ALL_COMPARTMENTS(POLID, CUNAME); > > LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); > EXCEPTION > WHEN OTHERS THEN > ROLLBACK; > RAISE; > END; > > COMMIT; > END DROP_ALL_COMPARTMENTS; > > > PROCEDURE ADD_GROUPS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > GROUPS IN VARCHAR2, > ACCESS_MODE IN VARCHAR2 DEFAULT NULL, > IN_DEF IN VARCHAR2 DEFAULT NULL, > IN_ROW IN VARCHAR2 DEFAULT NULL, > INVOKER_USR IN VARCHAR2) IS > CUNAME VARCHAR2(1024); > POLID LBACSYS.OLS$USER_GROUPS.POL#%TYPE; > BEGIN > > CHECK_POLICY(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > CHECK_USER(CUNAME); > POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > BEGIN > > LBACSYS.LBAC_LGSTNDBY_UTIL.ADD_GROUPS(POLID, CUNAME, GROUPS, > ACCESS_MODE, IN_DEF, IN_ROW); > > LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); > EXCEPTION > WHEN OTHERS THEN > ROLLBACK; > RAISE; > END; > > COMMIT; > END ADD_GROUPS; > > > PROCEDURE DROP_GROUPS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > GROUPS IN VARCHAR2, > INVOKER_USR IN VARCHAR2) IS > CUNAME VARCHAR2(1024); > POLID LBACSYS.OLS$USER_GROUPS.POL#%TYPE; > BEGIN > > IF GROUPS IS NULL THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, SA_FACILITY, > INVALID_ARG_EC, 'groups'); > END IF; > > CHECK_POLICY(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > CHECK_USER(CUNAME); > POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > BEGIN > > LBACSYS.LBAC_LGSTNDBY_UTIL.DROP_GROUPS(POLID, CUNAME, GROUPS); > > LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); > EXCEPTION > WHEN OTHERS THEN > ROLLBACK; > RAISE; > END; > > COMMIT; > END DROP_GROUPS; > > > PROCEDURE DROP_ALL_GROUPS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > INVOKER_USR IN VARCHAR2) IS > CUNAME VARCHAR2(1024); > POLID LBACSYS.OLS$USER_GROUPS.POL#%TYPE; > BEGIN > CHECK_POLICY(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > CHECK_USER(CUNAME); > POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > BEGIN > > LBACSYS.LBAC_LGSTNDBY_UTIL.DROP_ALL_GROUPS(POLID, CUNAME); > > LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); > EXCEPTION > WHEN OTHERS THEN > ROLLBACK; > RAISE; > END; > > COMMIT; > END DROP_ALL_GROUPS; > > > > PROCEDURE SET_USER_LABELS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > MAX_READ_LABEL IN VARCHAR2, > MAX_WRITE_LABEL IN VARCHAR2 DEFAULT NULL, > MIN_WRITE_LABEL IN VARCHAR2 DEFAULT NULL, > DEF_LABEL IN VARCHAR2 DEFAULT NULL, > ROW_LABEL IN VARCHAR2 DEFAULT NULL, > INVOKER_USR IN VARCHAR2) IS > CUNAME VARCHAR2(1024); > POLID LBACSYS.OLS$USER_LEVELS.POL#%TYPE; > MAX_RD_LAB LBACSYS.OLS$LAB.ILABEL%TYPE; > MAX_WT_LAB LBACSYS.OLS$LAB.ILABEL%TYPE; > MIN_WT_LAB LBACSYS.OLS$LAB.ILABEL%TYPE; > DF_LAB LBACSYS.OLS$LAB.ILABEL%TYPE; > RW_LAB LBACSYS.OLS$LAB.ILABEL%TYPE; > MIN_LVL PLS_INTEGER; > I_NULL VARCHAR2(1); > > BEGIN > CHECK_POLICY(POLICY_NAME); > > IF (NOT LBACSYS.LBAC_CACHE.OID_ENABLED) THEN > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > ELSE > CUNAME := UPPER(USER_NAME); > END IF; > CHECK_USER(CUNAME); > > POLID := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > > CHECK_COMMON(CUNAME, NULL, USER_OBJ_TYPE, INVOKER_USR); > > > MAX_RD_LAB := LBACSYS.LBAC$SA_LABELS.TO_LABEL(POLID, MAX_READ_LABEL); > > > IF MAX_WRITE_LABEL IS NULL THEN > MAX_WT_LAB := LBACSYS.LBAC$SA_LABELS.TO_LABEL(POLID, MAX_READ_LABEL); > ELSE > MAX_WT_LAB := LBACSYS.LBAC$SA_LABELS.TO_LABEL(POLID, MAX_WRITE_LABEL); > END IF; > > > IF MIN_WRITE_LABEL IS NULL THEN > > > SELECT MIN(LEVEL#) INTO MIN_LVL > FROM LBACSYS.OLS$LEVELS > WHERE POL# = POLID; > > ELSE > MIN_WT_LAB := LBACSYS.LBAC$SA_LABELS.TO_LABEL(POLID, MIN_WRITE_LABEL); > MIN_LVL := LBACSYS.LBAC$SA_LABELS.LABEL_LEVEL_ONLY(MIN_WT_LAB); > END IF; > > > IF DEF_LABEL IS NULL THEN > DF_LAB := MAX_RD_LAB; > ELSE > DF_LAB := LBACSYS.LBAC$SA_LABELS.TO_LABEL(POLID, DEF_LABEL); > END IF; > > > IF ROW_LABEL IS NULL THEN > RW_LAB :=LBACSYS.LBAC$SA_LABELS.COMPUTE_WRITE_LABEL(POLID, MAX_WT_LAB, DF_LAB); > ELSE > RW_LAB := LBACSYS.LBAC$SA_LABELS.TO_LABEL(POLID, ROW_LABEL); > END IF; > > > LBACSYS.LBAC_LGSTNDBY_UTIL.SET_USER_LABELS(POLID, CUNAME, MAX_RD_LAB, > MAX_WT_LAB, > MIN_LVL, DF_LAB, RW_LAB); > LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, CUNAME); > COMMIT; > > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(SET_AUTH_ACTION, 0)) THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_GRANTEE, USER_NAME); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_MAXRD, MAX_READ_LABEL); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_MAXWRT, MAX_WRITE_LABEL); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_MINWRT, MIN_WRITE_LABEL); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > EXCEPTION > WHEN OTHERS THEN > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(SET_AUTH_ACTION, ABS(SQLCODE))) THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_GRANTEE, USER_NAME); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_MAXRD, MAX_READ_LABEL); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_MAXWRT, MAX_WRITE_LABEL); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_MINWRT, MIN_WRITE_LABEL); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > RAISE; > END SET_USER_LABELS; > > > > FUNCTION MAX_READ_LABEL (POLICY_NAME IN VARCHAR2, USER_NAME IN VARCHAR2) > RETURN VARCHAR2 IS > POL_NUMBER PLS_INTEGER; > CUNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; > MAX_READ_LABEL LBACSYS.OLS$PROFILE.MAX_READ%TYPE; > BEGIN > IF LBACSYS.LBAC_CACHE.POLICYEXISTS(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NO_POLICY_EC,POLICY_NAME); > END IF; > POL_NUMBER:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > > SELECT MAX_READ INTO MAX_READ_LABEL > FROM LBACSYS.OLS$USER U, LBACSYS.OLS$PROFILE P > WHERE USR_NAME = CUNAME AND U.POL# = POL_NUMBER AND > U.POL# = P.POL# AND U.PROFID = P.PROFID; > > RETURN MAX_READ_LABEL; > END MAX_READ_LABEL; > > FUNCTION MAX_WRITE_LABEL (POLICY_NAME IN VARCHAR2, USER_NAME IN VARCHAR2) > RETURN VARCHAR2 IS > POL_NUMBER PLS_INTEGER; > CUNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; > MAX_WRITE_LABEL LBACSYS.OLS$PROFILE.MAX_WRITE%TYPE; > BEGIN > IF LBACSYS.LBAC_CACHE.POLICYEXISTS(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NO_POLICY_EC,POLICY_NAME); > END IF; > POL_NUMBER:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > > SELECT MAX_WRITE INTO MAX_WRITE_LABEL > FROM LBACSYS.OLS$USER U, LBACSYS.OLS$PROFILE P > WHERE USR_NAME = CUNAME AND U.POL# = POL_NUMBER AND > U.POL# = P.POL# AND U.PROFID = P.PROFID; > > RETURN MAX_WRITE_LABEL; > END MAX_WRITE_LABEL; > > FUNCTION MIN_WRITE_LABEL (POLICY_NAME IN VARCHAR2, USER_NAME IN VARCHAR2) > RETURN VARCHAR2 IS > POL_NUMBER PLS_INTEGER; > CUNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; > MIN_WRITE_LABEL LBACSYS.OLS$PROFILE.MIN_WRITE%TYPE; > BEGIN > IF LBACSYS.LBAC_CACHE.POLICYEXISTS(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NO_POLICY_EC,POLICY_NAME); > END IF; > POL_NUMBER:=LBAC_CACHE.POL_NUMBER(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > > SELECT MIN_WRITE INTO MIN_WRITE_LABEL > FROM LBACSYS.OLS$USER U, LBACSYS.OLS$PROFILE P > WHERE USR_NAME = CUNAME AND U.POL# = POL_NUMBER AND > U.POL# = P.POL# AND U.PROFID = P.PROFID; > > RETURN MIN_WRITE_LABEL; > END MIN_WRITE_LABEL; > > FUNCTION DEFAULT_READ_LABEL (POLICY_NAME IN VARCHAR2, USER_NAME IN VARCHAR2) > RETURN VARCHAR2 IS > POL_NUMBER PLS_INTEGER; > CUNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; > DEF_READ_LABEL LBACSYS.OLS$PROFILE.DEF_READ%TYPE; > BEGIN > IF LBACSYS.LBAC_CACHE.POLICYEXISTS(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NO_POLICY_EC,POLICY_NAME); > END IF; > POL_NUMBER:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > > SELECT DEF_READ INTO DEF_READ_LABEL > FROM LBACSYS.OLS$USER U, LBACSYS.OLS$PROFILE P > WHERE USR_NAME = CUNAME AND U.POL# = POL_NUMBER AND > U.POL# = P.POL# AND U.PROFID = P.PROFID; > > RETURN DEF_READ_LABEL; > END DEFAULT_READ_LABEL; > > FUNCTION DEFAULT_WRITE_LABEL (POLICY_NAME IN VARCHAR2, USER_NAME IN VARCHAR2) > RETURN VARCHAR2 IS > POL_NUMBER PLS_INTEGER; > CUNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; > DEF_WRITE_LABEL LBACSYS.OLS$PROFILE.DEF_WRITE%TYPE; > BEGIN > IF LBACSYS.LBAC_CACHE.POLICYEXISTS(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NO_POLICY_EC,POLICY_NAME); > END IF; > POL_NUMBER:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > > SELECT DEF_WRITE INTO DEF_WRITE_LABEL > FROM LBACSYS.OLS$USER U, LBACSYS.OLS$PROFILE P > WHERE USR_NAME = CUNAME AND U.POL# = POL_NUMBER AND > U.POL# = P.POL# AND U.PROFID = P.PROFID; > > RETURN DEF_WRITE_LABEL; > END DEFAULT_WRITE_LABEL; > > FUNCTION DEFAULT_ROW_LABEL (POLICY_NAME IN VARCHAR2, USER_NAME IN VARCHAR2) > RETURN VARCHAR2 IS > POL_NUMBER PLS_INTEGER; > CUNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; > DEF_ROW_LABEL LBACSYS.OLS$PROFILE.DEF_ROW%TYPE; > BEGIN > IF LBACSYS.LBAC_CACHE.POLICYEXISTS(POLICY_NAME) = FALSE THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR(PRODUCT, LBAC_FACILITY, > NO_POLICY_EC,POLICY_NAME); > END IF; > POL_NUMBER:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > > SELECT DEF_ROW INTO DEF_ROW_LABEL > FROM LBACSYS.OLS$USER U, LBACSYS.OLS$PROFILE P > WHERE USR_NAME = CUNAME AND U.POL# = POL_NUMBER AND > U.POL# = P.POL# AND U.PROFID = P.PROFID; > > RETURN DEF_ROW_LABEL; > END DEFAULT_ROW_LABEL; > > > > PROCEDURE SET_DEFAULT_LABEL > (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > DEF_LABEL IN VARCHAR2, > INVOKER_USR IN VARCHAR2) > IS > UNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; > POLID LBACSYS.OLS$POL.POL#%TYPE; > DEF_LAB LBACSYS.OLS$LAB.ILABEL%TYPE; > > BEGIN > CHECK_POLICY(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', UNAME); > CHECK_USER(UNAME); > POLID:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > DEF_LAB := LBACSYS.LBAC$SA_LABELS.TO_LABEL(POLID, DEF_LABEL); > > BEGIN > > LBACSYS.LBAC_LGSTNDBY_UTIL.SET_DEFAULT_LABEL(POLID, UNAME, DEF_LAB); > > LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, UNAME); > EXCEPTION > WHEN OTHERS THEN > ROLLBACK; > RAISE; > END; > > COMMIT; > END SET_DEFAULT_LABEL; > > > > PROCEDURE SET_ROW_LABEL > (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > ROW_LABEL IN VARCHAR2, > INVOKER_USR IN VARCHAR2) IS > UNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; > POLID LBACSYS.OLS$POL.POL#%TYPE; > ROW_LAB LBACSYS.OLS$LAB.ILABEL%TYPE; > > BEGIN > CHECK_POLICY(POLICY_NAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', UNAME); > CHECK_USER(UNAME); > POLID:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > ROW_LAB := LBACSYS.LBAC$SA_LABELS.TO_LABEL(POLID, ROW_LABEL); > > BEGIN > > LBACSYS.LBAC_LGSTNDBY_UTIL.SET_ROW_LABEL(POLID, UNAME, ROW_LAB); > > LBACSYS.LBAC$SA_LABELS.STORE_USER_LABEL_LIST (POLID, UNAME); > EXCEPTION > WHEN OTHERS THEN > ROLLBACK; > RAISE; > END; > > COMMIT; > END SET_ROW_LABEL; > > > > PROCEDURE DROP_LABELS(POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2) > IS > CURR_PRIVS PLS_INTEGER := 0 ; > POL_NUM PLS_INTEGER; > STMT_TYPE PLS_INTEGER; > BEGIN > CHECK_POLICY(POLICY_NAME); > CHECK_USER(USER_NAME); > POL_NUM := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > > DELETE FROM LBACSYS.OLS$USER_LEVELS > WHERE USR_NAME = USER_NAME AND POL#=POL_NUM; > > BEGIN > SELECT PRIVS INTO CURR_PRIVS > FROM LBACSYS.OLS$USER U, LBACSYS.OLS$PROFILE P > WHERE USR_NAME = USER_NAME AND U.POL# = POL_NUM > AND U.POL# = P.POL# AND U.PROFID = P.PROFID; > EXCEPTION > WHEN NO_DATA_FOUND THEN > RETURN; > END; > > > IF CURR_PRIVS = 0 THEN > STMT_TYPE := DELETE_TYPE; > ELSE > STMT_TYPE := UPDATE_TYPE; > END IF; > > LBACSYS.LBAC$SA_LABELS.STORE_USER(POLICY_NAME, USER_NAME, > NULL, NULL, NULL, NULL, > NULL, NULL, CURR_PRIVS, STMT_TYPE); > END DROP_LABELS; > > > > PROCEDURE SET_USER_PRIVS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > PRIVILEGES IN VARCHAR2, > INVOKER_USR IN VARCHAR2) IS > UNAME LBACSYS.OLS$USER_LEVELS.USR_NAME%TYPE; > POL_NUM PLS_INTEGER; > OLD_MAX_READ LBACSYS.OLS$LAB.ILABEL%TYPE :=NULL; > OLD_MAX_WRITE LBACSYS.OLS$LAB.ILABEL%TYPE :=NULL; > OLD_MIN_WRITE LBACSYS.OLS$LAB.ILABEL%TYPE :=NULL; > OLD_DEF_READ LBACSYS.OLS$LAB.ILABEL%TYPE :=NULL; > OLD_DEF_WRITE LBACSYS.OLS$LAB.ILABEL%TYPE :=NULL; > OLD_DEF_ROW LBACSYS.OLS$LAB.ILABEL%TYPE :=NULL; > NO_OLD_PRIVS BOOLEAN; > OLD_PRIVS NUMBER; > NEW_PRIVS NUMBER; > PROFILE_ID NUMBER; > STMT_TYPE PLS_INTEGER; > BEGIN > CHECK_POLICY(POLICY_NAME); > IF (NOT LBACSYS.LBAC_CACHE.OID_ENABLED) THEN > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', UNAME); > ELSE > UNAME := UPPER(USER_NAME); > END IF; > > > > POL_NUM := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > > CHECK_COMMON(UNAME, NULL, USER_OBJ_TYPE, INVOKER_USR); > > > NO_OLD_PRIVS := FALSE; > BEGIN > SELECT MAX_READ, MAX_WRITE, MIN_WRITE, DEF_READ, DEF_WRITE, > DEF_ROW, PRIVS > INTO OLD_MAX_READ, OLD_MAX_WRITE, OLD_MIN_WRITE, OLD_DEF_READ, > OLD_DEF_WRITE, OLD_DEF_ROW, OLD_PRIVS > FROM LBACSYS.OLS$USER U, LBACSYS.OLS$PROFILE P > WHERE USR_NAME = UNAME AND U.POL# = POL_NUM > AND U.POL# = P.POL# AND U.PROFID = P.PROFID; > EXCEPTION > WHEN NO_DATA_FOUND THEN > > IF PRIVILEGES IS NULL THEN > RETURN; > ELSE > NO_OLD_PRIVS := TRUE; > OLD_PRIVS := 0; > END IF; > END; > > > > NEW_PRIVS := TO_PRIVS(POLICY_NAME,PRIVILEGES); > > > > > IF NO_OLD_PRIVS THEN > STMT_TYPE := INSERT_TYPE; > ELSIF OLD_MAX_READ IS NULL AND PRIVILEGES IS NULL THEN > STMT_TYPE := DELETE_TYPE; > ELSE > STMT_TYPE := UPDATE_TYPE; > END IF; > > SET_USER_PRIVS_INTERNAL(POLICY_NAME, UNAME, OLD_MAX_READ, OLD_MAX_WRITE, > OLD_MIN_WRITE, OLD_DEF_READ, OLD_DEF_WRITE, > OLD_DEF_ROW, NEW_PRIVS, STMT_TYPE); > > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(SET_AUTH_ACTION, 0)) THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_GRANTEE, USER_NAME); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_PRIVGRNTED, PRIVILEGES); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > EXCEPTION > WHEN OTHERS THEN > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(SET_AUTH_ACTION, ABS(SQLCODE))) THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_GRANTEE, USER_NAME); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_PRIVGRNTED, PRIVILEGES); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > RAISE; > END SET_USER_PRIVS; > > > > PROCEDURE SET_PROG_PRIVS (POLICY_NAME IN VARCHAR2, > SCHEMA_NAME IN VARCHAR2, > PROGRAM_UNIT_NAME IN VARCHAR2, > PRIVILEGES IN VARCHAR2, > INVOKER_USR IN VARCHAR2) IS > POL_NUM PLS_INTEGER; > PGM_CNT PLS_INTEGER; > ROW_CNT PLS_INTEGER; > NO_OLD_PRIVS BOOLEAN; > OLD_PRIVS NUMBER; > NEW_PRIVS NUMBER; > CPNAME LBACSYS.OLS$PROG.PGM_NAME%TYPE; > CSNAME LBACSYS.OLS$PROG.OWNER%TYPE; > > BEGIN > CHECK_POLICY(POLICY_NAME); > > IF SCHEMA_NAME IS NULL THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, SA_FACILITY, INVALID_PARAMS_EC, 'schema name'); > ELSIF PROGRAM_UNIT_NAME IS NULL THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, SA_FACILITY, INVALID_PARAMS_EC, 'program name'); > END IF; > > > IF (LBACSYS.LBAC_CACHE.FAILEDSTARTUP(POLICY_NAME)) THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, SA_FACILITY, STARTUP_FAILURE_EC, POLICY_NAME); > END IF; > POL_NUM:=LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(SCHEMA_NAME, 'schema name', > CSNAME); > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(PROGRAM_UNIT_NAME, > 'program unit name', CPNAME); > > > CHECK_COMMON(CSNAME, CPNAME, PROC_OBJ_TYPE, INVOKER_USR); > > > > > SELECT COUNT(*) INTO PGM_CNT > FROM SYS.OBJ$ O, SYS."_BASE_USER" U > WHERE O.NAME = CPNAME > AND U.NAME = CSNAME > AND O.OWNER# = U.USER# > AND O.TYPE# IN (7,8,9); > > IF (PGM_CNT != 1) THEN > LBACSYS.LBAC_STANDARD.RAISE_FACILITY_ERROR( > PRODUCT, SA_FACILITY, NO_PROG_EC, > (SCHEMA_NAME || '.' || PROGRAM_UNIT_NAME)); > END IF; > > > NO_OLD_PRIVS := FALSE; > BEGIN > SELECT PRIVS INTO OLD_PRIVS > FROM LBACSYS.OLS$PROG > WHERE CPNAME = PGM_NAME AND > OWNER = CSNAME AND > POL# = POL_NUM; > EXCEPTION > WHEN NO_DATA_FOUND THEN > > IF PRIVILEGES IS NULL THEN > RETURN; > ELSE > NO_OLD_PRIVS := TRUE; > OLD_PRIVS := NULL; > END IF; > END; > > NEW_PRIVS := TO_PRIVS(POLICY_NAME,PRIVILEGES); > > > > > IF NO_OLD_PRIVS THEN > > LBACSYS.LBAC_STANDARD.SET_TRUSTED_PROG(CSNAME,CPNAME); > INSERT INTO LBACSYS.OLS$PROG VALUES (POL_NUM,CPNAME, > CSNAME, NEW_PRIVS); > ELSIF PRIVILEGES IS NULL THEN > LBACSYS.LBAC_STANDARD.RESET_TRUSTED_PROG(CSNAME,CPNAME); > DELETE FROM LBACSYS.OLS$PROG > WHERE POL#=POL_NUM AND PGM_NAME=CPNAME > AND OWNER=CSNAME; > ELSE > > LBACSYS.LBAC_STANDARD.SET_TRUSTED_PROG(CSNAME,CPNAME); > UPDATE LBACSYS.OLS$PROG SET PRIVS = NEW_PRIVS > WHERE POL#=POL_NUM AND > PGM_NAME=CPNAME AND > OWNER=CSNAME; > END IF; > > COMMIT; > > > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME, SET_ACTION, TRUE, > 'SET PROGRAM PRIVILEGES'); > > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(SET_AUTH_ACTION, 0)) THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCHEMA_NAME); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_PROGRAM, PROGRAM_UNIT_NAME); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_PRIVGRNTED, PRIVILEGES); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > EXCEPTION > WHEN OTHERS THEN > > IF (LBACSYS.LBAC_SERVICES.CHECK_AUDIT(SET_AUTH_ACTION, ABS(SQLCODE))) THEN > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_OBJOWNER, SCHEMA_NAME); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_PROGRAM, PROGRAM_UNIT_NAME); > LBACSYS.LBAC_SERVICES.SET_UGA(AUDINFO_PRIVGRNTED, PRIVILEGES); > LBACSYS.LBAC_SERVICES.AUDIT_ACTION(POLICY_NAME); > END IF; > RAISE; > END SET_PROG_PRIVS; > > > > PROCEDURE DROP_USER_ACCESS (POLICY_NAME IN VARCHAR2, > USER_NAME IN VARCHAR2, > INVOKER_USR IN VARCHAR2) IS > > POL_NUM PLS_INTEGER := 0; > CUNAME VARCHAR2(1024); > BEGIN > IF (NOT LBACSYS.LBAC_CACHE.OID_ENABLED) THEN > LBACSYS.LBAC_CACHE.CANONICALIZE_IDENTIFIER(USER_NAME, 'user name', CUNAME); > ELSE > CUNAME := UPPER(USER_NAME); > END IF; > > DROP_LABELS(POLICY_NAME, CUNAME); > POL_NUM := LBACSYS.LBAC_CACHE.POL_NUMBER(POLICY_NAME); > > LBACSYS.LBAC$SA_LABELS.STORE_USER(POLICY_NAME, CUNAME, > NULL, NULL, NULL, NULL, > NULL, NULL, 0, DELETE_TYPE); > END DROP_USER_ACCESS; > > END SA_USER_ADMIN_INT;
485a486,491 > FUNCTION GENERATE_BUFFER_C(DIMOBJ IN MDSYS.SDO_DIM_ARRAY, > GEOMOBJ IN MDSYS.SDO_GEOMETRY, > DIST IN NUMBER) > RETURN MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE; > >
2554c2554 < GRANT_MODEL_ACCESS_PRIVS(MODEL_NAME, USER_NAME, SYS.ODCIVARCHAR2LIST(PRIVILEGE), USER_VIEW, OPTIONS); --- > GRANT_MODEL_ACCESS_PRIVS(MODEL_NAME, USER_NAME, SYS.ODCIVARCHAR2LIST(PRIVILEGE), USER_VIEW, OPTIONS, NETWORK_OWNER, NETWORK_NAME); 2582c2582 < REVOKE_MODEL_ACCESS_PRIVS(MODEL_NAME, USER_NAME, SYS.ODCIVARCHAR2LIST(PRIVILEGE), USER_VIEW, OPTIONS); --- > REVOKE_MODEL_ACCESS_PRIVS(MODEL_NAME, USER_NAME, SYS.ODCIVARCHAR2LIST(PRIVILEGE), USER_VIEW, OPTIONS, NETWORK_OWNER, NETWORK_NAME); 5348c5348,5349 < ' || OBJ_COL_NAME || ') --- > ' || OBJ_COL_NAME || ', > :3, :4) 5350c5351 < USING V_MODEL_NAME_COLON,V_MODEL_NAME; --- > USING V_MODEL_NAME_COLON,V_MODEL_NAME,NETWORK_OWNER,NETWORK_NAME;
2183c2183 < IDS := W_FETCHIDLIST(NAMES, 'MODEL_ID','RDF_MODEL_INTERNAL$','MODEL_NAME'); --- > IDS := W_FETCHIDLIST(NAMES, 'MODEL_ID',(CASE SYS_CONTEXT('USERENV','CURRENT_USER') WHEN NETWORK_OWNER THEN 'RDF_MODEL_INTERNAL$' ELSE 'RDF_MODEL$' END),'MODEL_NAME'); 2195a2196 > IF (SYS_CONTEXT('USERENV','CURRENT_USER') = NETWORK_OWNER) THEN 2200a2202,2208 > ELSE > EXECUTE IMMEDIATE > 'select model_name from ' || V_PFX_FOR_RDF_OBJ_NAME || 'RDF_MODEL$ > where model_id=:1 model_type=:2' > INTO MODEL_NAME > USING IDS(IDX),SDO_RDF_INTERNAL.MODEL_TYPE_RDB2RDF; > END IF; 7413a7422 > CLIQUE_VIEW_EXISTS PLS_INTEGER; 7475a7485,7490 > ELSE > SELECT COUNT(*) INTO CLIQUE_VIEW_EXISTS FROM SYS.ALL_VIEWS WHERE OWNER=NETWORK_OWNER AND VIEW_NAME=NETWORK_NAME || 'RDFC_' || PRECOMPIDX; > IF (CLIQUE_VIEW_EXISTS > 0) THEN > VCSAMEASOPTION := ',OPT_SAMEAS=T,INF_ONLY=T,'; > END IF; > 8726a8742 > BEGIN 8727a8744,8748 > EXCEPTION WHEN OTHERS THEN > RAISE_APPLICATION_ERROR(-20000, 'Unable to read model ' || NAME || ' info from '|| V_PFX_FOR_RDF_OBJ_NAME || 'rdf_model$' || > CHR(10) || SYS.DBMS_UTILITY.FORMAT_ERROR_STACK > ); > END;
4238a4239,4240 > > COMMIT;
17275c17275,17278 < IF (PKG_LIST(I) = 'S_SDO_RDF_INFO') THEN --- > IF (INSTR(U_OPTIONS, ' QUERY_ONLY=T ') > 0) THEN > CONTINUE; > > ELSIF (PKG_LIST(I) = 'S_SDO_RDF_INFO') THEN 17407a17411,17417 > > TYPE CUR_TYPE IS REF CURSOR; > RC CUR_TYPE; > RELTABNAME VARCHAR2(261); > > ENTAILMENT_TYPE CONSTANT VARCHAR2(30) := 'ENTAILMENT'; > ENT_EXISTS PLS_INTEGER; 17409a17420,17421 > E_NO_TABLE EXCEPTION; > PRAGMA EXCEPTION_INIT (E_NO_TABLE, -942); 17423,17424c17435,17445 < < DYN_SQL_STMT := --- > IF (INSTR(' ' || NLS_UPPER(OPTIONS) || ' ',' ' || ENTAILMENT_TYPE || ' ') > 0) THEN > > DYN_SQL_STMT := > 'select /*+ dynamic_sampling(0) result_cache */ 1 ' || > ' from ' || V_PFX_FOR_RDF_OBJ_NAME || 'RDF_RULES_INDEX_INFO' || > ' where index_name = :ent'; > EXECUTE IMMEDIATE DYN_SQL_STMT INTO ENT_EXISTS USING MODEL; > MODEL_TYPE := ENTAILMENT_TYPE; > ELSE > > DYN_SQL_STMT := 17426,17428c17447,17450 < ' from ' || V_PFX_FOR_RDF_OBJ_NAME || 'RDF_MODEL$' || < ' where model_name = :mod'; < EXECUTE IMMEDIATE DYN_SQL_STMT INTO MODEL_ID, MODEL_TYPE, OWNER_NAME, APPTAB_NAME USING MODEL; --- > ' from ' || V_PFX_FOR_RDF_OBJ_NAME || 'RDF_MODEL$' || > ' where model_name = :mod'; > EXECUTE IMMEDIATE DYN_SQL_STMT INTO MODEL_ID, MODEL_TYPE, OWNER_NAME, APPTAB_NAME USING MODEL; > END IF; 17441c17463,17487 < IF (MODEL_TYPE = SDO_RDF_INTERNAL.MODEL_TYPE_VIRTUAL) THEN --- > IF (MODEL_TYPE = ENTAILMENT_TYPE) THEN > PRIV := 'READ'; > DYN_SQL_STMT := OPCODE || ' ' || PRIV || ' on ' || V_PFX_FOR_RDF_OBJ_NAME || 'RDFI_' || MODEL || DIR || Q_UNAME; > BEGIN > EXECUTE IMMEDIATE DYN_SQL_STMT; > EXCEPTION WHEN NO_REVOKE_FOR_NOT_GRANTED THEN NULL; > END; > DYN_SQL_STMT := OPCODE || ' ' || PRIV || ' on ' || V_PFX_FOR_RDF_OBJ_NAME || 'SEMI_' || MODEL || DIR || Q_UNAME; > BEGIN > EXECUTE IMMEDIATE DYN_SQL_STMT; > EXCEPTION WHEN NO_REVOKE_FOR_NOT_GRANTED THEN NULL; > END; > DYN_SQL_STMT := OPCODE || ' ' || PRIV || ' on ' || V_PFX_FOR_RDF_OBJ_NAME || 'RDFC_' || MODEL || DIR || Q_UNAME; > BEGIN > EXECUTE IMMEDIATE DYN_SQL_STMT; > EXCEPTION WHEN NO_REVOKE_FOR_NOT_GRANTED OR E_NO_TABLE THEN NULL; > END; > DYN_SQL_STMT := OPCODE || ' ' || PRIV || ' on ' || V_PFX_FOR_RDF_OBJ_NAME || 'SEMC_' || MODEL || DIR || Q_UNAME; > BEGIN > EXECUTE IMMEDIATE DYN_SQL_STMT; > EXCEPTION WHEN NO_REVOKE_FOR_NOT_GRANTED OR E_NO_TABLE THEN NULL; > END; > > RETURN; > ELSIF (MODEL_TYPE = SDO_RDF_INTERNAL.MODEL_TYPE_VIRTUAL) THEN 17487a17534,17554 > > IF (INSTR(' ' || NLS_UPPER(OPTIONS) || ' ',' READ_PRIV_ON_TABLES=T ') > 0) THEN > BEGIN > OPEN RC FOR 'select distinct tabName from ' || V_PFX_FOR_RDF_OBJ_NAME || RRTABNAME || ' where tabName is NOT NULL'; > LOOP > FETCH RC INTO RELTABNAME; > EXIT WHEN RC%NOTFOUND; > DYN_SQL_STMT := OPCODE || ' READ on ' || SYS.DBMS_ASSERT.QUALIFIED_SQL_NAME(RELTABNAME) || DIR || Q_UNAME; > EXECUTE IMMEDIATE DYN_SQL_STMT; > END LOOP; > CLOSE RC; > EXCEPTION > WHEN NO_REVOKE_FOR_NOT_GRANTED THEN > NULL; > WHEN OTHERS THEN > CLOSE RC; > RAISE_APPLICATION_ERROR(-20000, 'Failed: ' || DYN_SQL_STMT || > CHR(10) || '[' || CHR(10) || DBMS_UTILITY.FORMAT_ERROR_STACK || CHR(10) || ']' > ); > END; > END IF; 17514a17582 > BEGIN 17521a17590,17593 > EXCEPTION > WHEN NO_DATA_FOUND THEN > NULL; > END;
1176a1177 > EXCEPTION WHEN OTHERS THEN ROLLBACK; 1198a1200 > EXCEPTION WHEN OTHERS THEN ROLLBACK; 1543c1545 < OPTION_LIST VARCHAR2(32767); --- > OPTION_LIST VARCHAR2(32767) := TRIM(TRANSLATE(FLAGS, CHR(8) || CHR(9) || CHR(10) || CHR(11) || CHR(12), ' ')); 1567c1569 < IF (FLAGS IS NULL) THEN RETURN OPTION_CNT; END IF; --- > IF (OPTION_LIST IS NULL) THEN RETURN OPTION_CNT; END IF; 1570c1572 < OPTION_LIST := NLS_UPPER(TRIM(FLAGS))||' '; --- > OPTION_LIST := NLS_UPPER(OPTION_LIST)||' '; 4804a4807,4810 > IF (INSTR(U_OPTIONS,' QUERY_ONLY=T ') > 0) THEN > > CHOSEN_ROUTE := SDO_RDF.ROUTE_DIRECT_IR; > ELSE 4809a4816 > END IF; 4828a4836 > DYN_SQL_STMT LONG; 5001c5009 < CALLCONTEXT.MODEL_ID := MDSYS.SDO_RDF_INTERNAL.GET_MODEL_ID(CALLCONTEXT.MODEL_NAME,FLAGS=>OPTIONS); --- > CALLCONTEXT.MODEL_ID := MDSYS.SDO_RDF_INTERNAL.W_GET_MODEL_ID(CALLCONTEXT.MODEL_NAME,FLAGS=>OPTIONS); 5004c5012 < M_G_ID := MDSYS.SDO_RDF_INTERNAL.GET_MODEL_ID(CALLCONTEXT.M_G_NAME,FLAGS=>OPTIONS); --- > M_G_ID := MDSYS.SDO_RDF_INTERNAL.W_GET_MODEL_ID(CALLCONTEXT.M_G_NAME,FLAGS=>OPTIONS); 14674c14682 < IF (MDSYS.RDF_APIS_INTERNAL.HAS_VERSION_ENABLED_MODEL(SYS.ODCINUMBERLIST(MOD_ID)) > 0) THEN --- > IF (MDSYS.RDF_APIS_INTERNAL.W_HAS_VERSION_ENABLED_MODEL(SYS.ODCINUMBERLIST(MOD_ID)) > 0) THEN 14876c14884 < GET_VALUE$_TYPE$(M_ID, --- > W_GET_VALUE$_TYPE$(M_ID, 14900c14908 < PARSE_SUBJECT_NODE(V_SUBJECT,SV_TYPE,SV_ID,NEW_SV); --- > W_PARSE_SUBJECT_NODE(V_SUBJECT,SV_TYPE,SV_ID,NEW_SV); 14909c14917 < PARSE_OBJECT_NODE(V_OBJECT,LIT_TYPE,LIT_LANG,OV_TYPE,OV_ID,COV_ID,NEW_OV); --- > W_PARSE_OBJECT_NODE(V_OBJECT,LIT_TYPE,LIT_LANG,OV_TYPE,OV_ID,COV_ID,NEW_OV); 14917c14925 < PARSE_PROPERTY_VALUE(V_PROPERTY,PV_TYPE,PV_ID,NEW_PV); --- > W_PARSE_PROPERTY_VALUE(V_PROPERTY,PV_TYPE,PV_ID,NEW_PV); 15008c15016 < GET_VALUE$_TYPE$(M_ID, --- > GET_VALUE$_TYPE$(M_ID, 15033c15041 < PARSE_SUBJECT_NODE(V_SUBJECT,SV_TYPE,SV_ID,NEW_SV); --- > W_PARSE_SUBJECT_NODE(V_SUBJECT,SV_TYPE,SV_ID,NEW_SV); 15041c15049 < PARSE_OBJECT_NODE(V_OBJECT,LIT_TYPE,LIT_LANG,OV_TYPE,OV_ID,COV_ID,NEW_OV); --- > W_PARSE_OBJECT_NODE(V_OBJECT,LIT_TYPE,LIT_LANG,OV_TYPE,OV_ID,COV_ID,NEW_OV); 15049c15057 < PARSE_PROPERTY_VALUE(V_PROPERTY,PV_TYPE,PV_ID,NEW_PV); --- > W_PARSE_PROPERTY_VALUE(V_PROPERTY,PV_TYPE,PV_ID,NEW_PV); 15677c15685 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE); 15689c15697 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE); 15702c15710 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE); 15730c15738 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE); 15989c15997 < RDF_APIS_INTERNAL.KSDWRF('gmi: model_name=' || MODEL_NAME || ' sep_pos=' || SEP_POS, DEBUG_TRACE); --- > 15991,15992c15999,16000 < MODEL := SYS.DBMS_ASSERT.SIMPLE_SQL_NAME(VAL_CVT_RDF_NAME(SUBSTR(MODEL_NAME,1,SEP_POS-1))); < SEL_MODEL :='SELECT model_id FROM ' || V_PFX_FOR_RDF_OBJ_NAME || 'rdf_model$ WHERE model_name=:1'; --- > MODEL := SYS.DBMS_ASSERT.SIMPLE_SQL_NAME(SDO_RDF_INTERNAL.VAL_CVT_RDF_NAME(SUBSTR(MODEL_NAME,1,SEP_POS-1))); > SEL_MODEL :='SELECT /*+ dynamic_sampling(0) result_cache */ model_id FROM ' || V_PFX_FOR_RDF_OBJ_NAME || 'rdf_model_internal$ WHERE model_name=:1'; 15994c16002 < RDF_APIS_INTERNAL.KSDWRF('gmi: model_name=' || MODEL_NAME || ' m_id=' || M_ID, DEBUG_TRACE); --- > 16001c16009 < PARSE_PROPERTY_VALUE( --- > W_PARSE_PROPERTY_VALUE( 18529d18536 < DYN_SQL_STMT VARCHAR2(4000); 18530a18538,18546 > > TRUNCATE_STMT LONG; > SELECT_STMT LONG; > INSERT_STMT LONG; > ROWS_PRESENT NUMBER := 0; > RETRY_CNT NUMBER := 0; > MAX_RETRY_CNT CONSTANT NUMBER := 10; > E_RESOURCE_BUSY EXCEPTION; > PRAGMA EXCEPTION_INIT (E_RESOURCE_BUSY, -54); 18548,18549c18564 < < DYN_SQL_STMT := --- > TRUNCATE_STMT := 18551d18565 < EXECUTE IMMEDIATE DYN_SQL_STMT; 18553,18554c18567,18570 < < DYN_SQL_STMT := --- > SELECT_STMT := > 'SELECT COUNT(*) FROM ' || V_PFX_FOR_RDF_OBJ_NAME || 'RDF_MODEL$_TBL WHERE ROWNUM < 2'; > > INSERT_STMT := 18562c18578,18604 < EXECUTE IMMEDIATE DYN_SQL_STMT; --- > > > <<RETRY_REFRESH>> > > > BEGIN > EXECUTE IMMEDIATE TRUNCATE_STMT; > EXCEPTION > WHEN E_RESOURCE_BUSY THEN > IF (RETRY_CNT < MAX_RETRY_CNT) THEN > RETRY_CNT := RETRY_CNT + 1; > DBMS_LOCK.SLEEP(1); > GOTO RETRY_REFRESH; > END IF; > END; > > > EXECUTE IMMEDIATE SELECT_STMT INTO ROWS_PRESENT; > IF (ROWS_PRESENT > 0 AND RETRY_CNT < MAX_RETRY_CNT) THEN > RETRY_CNT := RETRY_CNT + 1; > DBMS_LOCK.SLEEP(1); > GOTO RETRY_REFRESH; > END IF; > > > EXECUTE IMMEDIATE INSERT_STMT; > 18564a18607 > 18565a18609,18619 > IF (ROWS_PRESENT > 0) THEN > RDF_APIS_INTERNAL.KSDWRF('W_refresh_rdf_model_tbl: RDF_MODEL$_TBL may need manual cleanup to eliminate duplicate rows.' || > NL || DBMS_UTILITY.FORMAT_CALL_STACK); > END IF; > EXCEPTION > WHEN OTHERS THEN > ROLLBACK; > RDF_APIS_INTERNAL.KSDWRF('W_refresh_rdf_model_tbl: IGNORING: RDF_MODEL$_TBL may need manual refresh.' || > NL || DBMS_UTILITY.FORMAT_ERROR_STACK || > NL || '[' || NL || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE || NL || ']' || > NL || DBMS_UTILITY.FORMAT_CALL_STACK); 19339c19393,19397 < EXECUTE IMMEDIATE DYN_SQL_STMT; --- > BEGIN > EXECUTE IMMEDIATE DYN_SQL_STMT; > EXCEPTION WHEN E_PART_NX THEN NULL; > WHEN TABLE_NX THEN NULL; > END; 19365a19424 > 20674c20733 < MDSYS.RDF_APIS_INTERNAL.KSDWRF('RDFCTX vmId ='|| VMID || 'vID_beg vID_end:' || VID_BEG || ' ' || VID_END); --- > MDSYS.RDF_APIS_INTERNAL.KSDWRF('RDFCTX vmId ='|| VMID || 'vID_beg vID_end:' || VID_BEG || ' ' || VID_END, DEBUG_TRACE); 25368a25428 > , 'rdf_rulebase$', 'rdf_precomp$' , 'rdf_precomp_dep$', 'rdf_delta$', 'rdf_ts$', 'rdf_hist$' 26042c26102 < select m.model_id, au.user_id, ao.object_id --- > select DISTINCT m.model_id, au.user_id, ao.object_id 26330c26390 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26339c26399 < '... skipping drop'); --- > '... skipping drop', DEBUG_TRACE OR IMPORT_MODE); 26358c26418 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26393c26453 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26406c26466 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26418c26478 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26430c26490 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26440c26500 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26450c26510 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26471c26531 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26484c26544 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26496c26556 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26508c26568 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26520c26580 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26541c26601 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26554c26614 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26567c26627 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26583c26643 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26602c26662 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26614c26674 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26633c26693 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26647c26707 < '... skipping populate'); --- > '... skipping populate', DEBUG_TRACE OR IMPORT_MODE); 26691c26751 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26704c26764 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26716c26776 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26725c26785 < '... skipping drop'); --- > '... skipping drop', DEBUG_TRACE OR IMPORT_MODE); 26737c26797 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26787c26847 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26805c26865 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26819c26879 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26844c26904 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26855c26915 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26866c26926 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26877c26937 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26938c26998 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26952c27012 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26966c27026 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 26995c27055 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27032c27092 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27047c27107 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27061c27121 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27075c27135 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27106c27166 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27126c27186 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27140c27200 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27154c27214 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27167c27227 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27185c27245 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27200c27260 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27217c27277 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27232c27292 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27259c27319 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27280c27340 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27294c27354 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27315c27375 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27384c27444 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27402c27462 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27423c27483 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 27441c27501 < '... skipping creation'); --- > '... skipping creation', DEBUG_TRACE OR IMPORT_MODE); 31384c31444 < V_COMMAND := NLS_UPPER(TRIM(COMMAND)); --- > V_COMMAND := ' ' || NLS_UPPER(TRIM(COMMAND)) || ' ';
2207a2208 > IS_G3D VARCHAR2(10) := 'FALSE'; 2228a2230,2237 > > > BEGIN > SDO_GEOM.G3D_PARAMETERS(GEOMETRY.SDO_SRID, SM_MJR_AXIS,INV_FLTN,UOM_FACTOR); > EXCEPTION WHEN OTHERS THEN > SM_MJR_AXIS := NULL; > INV_FLTN := NULL; > END; 2230d2238 < SDO_GEOM.G3D_PARAMETERS(GEOMETRY.SDO_SRID, SM_MJR_AXIS,INV_FLTN,UOM_FACTOR);
29a30,31 > CLN_NETWORK_OWNER DBMS_QUOTED_ID; > CLN_NETWORK_NAME VARCHAR2(30); 39c41,58 < RDF_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NETWORK_OWNER, NETWORK_NAME); --- > > > > IF (NETWORK_OWNER IS NOT NULL) THEN > CLN_NETWORK_OWNER := SDO_RDF_INTERNAL.VALIDATE_AND_CONVERT_NAME(NETWORK_OWNER); > ELSE > CLN_NETWORK_OWNER := 'MDSYS'; > END IF; > IF (NETWORK_NAME IS NOT NULL) THEN > CLN_NETWORK_NAME := SDO_RDF_INTERNAL.VAL_CVT_RDF_NAME(NETWORK_NAME)||'#'; > ELSE > CLN_NETWORK_NAME := 'ORA$NULL'; > END IF; > > IF (NOT(COALESCE(SDO_RDF_INTERNAL.GET_NETWORK_OWNER(),'ORA$NULL') = CLN_NETWORK_OWNER AND > COALESCE(SDO_RDF_INTERNAL.GET_NETWORK_NAME(),'ORA$NULL') = CLN_NETWORK_NAME)) THEN > RDF_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NETWORK_OWNER, NETWORK_NAME); > END IF; 134a154,155 > CLN_NETWORK_OWNER DBMS_QUOTED_ID; > CLN_NETWORK_NAME VARCHAR2(30); 159c180,196 < RDF_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NETWORK_OWNER, NETWORK_NAME); --- > > > > IF (NETWORK_OWNER IS NOT NULL) THEN > CLN_NETWORK_OWNER := SDO_RDF_INTERNAL.VALIDATE_AND_CONVERT_NAME(NETWORK_OWNER); > ELSE > CLN_NETWORK_OWNER := 'MDSYS'; > END IF; > IF (NETWORK_NAME IS NOT NULL) THEN > CLN_NETWORK_NAME := SDO_RDF_INTERNAL.VAL_CVT_RDF_NAME(NETWORK_NAME)||'#'; > ELSE > CLN_NETWORK_NAME := 'ORA$NULL'; > END IF; > IF (NOT(COALESCE(SDO_RDF_INTERNAL.GET_NETWORK_OWNER(),'ORA$NULL') = CLN_NETWORK_OWNER AND > COALESCE(SDO_RDF_INTERNAL.GET_NETWORK_NAME(),'ORA$NULL') = CLN_NETWORK_NAME)) THEN > RDF_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NETWORK_OWNER, NETWORK_NAME); > END IF; 309c346,349 < RDF_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NULL, NULL); --- > IF (NOT(COALESCE(SDO_RDF_INTERNAL.GET_NETWORK_OWNER(),'ORA$NULL') = 'MDSYS' AND > SDO_RDF_INTERNAL.GET_NETWORK_NAME() IS NULL)) THEN > RDF_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NULL, NULL); > END IF; 411c451,454 < RDF_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NULL, NULL); --- > IF (NOT(COALESCE(SDO_RDF_INTERNAL.GET_NETWORK_OWNER(),'ORA$NULL') = 'MDSYS' AND > SDO_RDF_INTERNAL.GET_NETWORK_NAME() IS NULL)) THEN > RDF_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NULL, NULL); > END IF; 486c529,532 < RDF_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NULL, NULL); --- > IF (NOT(COALESCE(SDO_RDF_INTERNAL.GET_NETWORK_OWNER(),'ORA$NULL') = 'MDSYS' AND > SDO_RDF_INTERNAL.GET_NETWORK_NAME() IS NULL)) THEN > RDF_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NULL, NULL); > END IF; 542c588,591 < RDF_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NULL, NULL); --- > IF (NOT(COALESCE(SDO_RDF_INTERNAL.GET_NETWORK_OWNER(),'ORA$NULL') = 'MDSYS' AND > SDO_RDF_INTERNAL.GET_NETWORK_NAME() IS NULL)) THEN > RDF_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NULL, NULL); > END IF; 583c632,635 < RDF_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NULL, NULL); --- > IF (NOT(COALESCE(SDO_RDF_INTERNAL.GET_NETWORK_OWNER(),'ORA$NULL') = 'MDSYS' AND > SDO_RDF_INTERNAL.GET_NETWORK_NAME() IS NULL)) THEN > RDF_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NULL, NULL); > END IF; 648c700,703 < RDF_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NULL, NULL); --- > IF (NOT(COALESCE(SDO_RDF_INTERNAL.GET_NETWORK_OWNER(),'ORA$NULL') = 'MDSYS' AND > SDO_RDF_INTERNAL.GET_NETWORK_NAME() IS NULL)) THEN > RDF_APIS.SET_NETWORK_INFO_CP_TO_PKGS(NULL, NULL); > END IF;
79c79,80 < failover_restore IN VARCHAR2 DEFAULT 'LEVEL1'); --- > failover_restore IN VARCHAR2 DEFAULT 'LEVEL1', > replay_initiation_timeout IN BINARY_INTEGER DEFAULT NULL); 84a86 > -- replay_initiation_timeout - replay initiation timeout 90c92,94 < failover_restore IN VARCHAR2 DEFAULT 'AUTO'); --- > failover_restore IN VARCHAR2 DEFAULT 'AUTO', > replay_initiation_timeout IN BINARY_INTEGER > DEFAULT NULL); 96a101 > -- replay_initiation_timeout - replay initiation timeout 144a150,163 > -- > -- error > -- Appropriate error raised by server. > > PROCEDURE set_draining(service_name IN VARCHAR2, > drain_timeout IN BINARY_INTEGER DEFAULT NULL, > stop_option IN VARCHAR2 DEFAULT NULL); > -- This procedure sets session drain timeout and stop_option for the given > -- service > -- > -- Input Parameter(s): > -- service_name - Service name > -- drain_timeout - Integer in second for session drain timeout > -- Service stop_option: NONE, TRANSACTIONAL, IMMEDIATE
50c50,51 < PROCEDURE RUN_AUTOTASK(TASK_ID IN PLS_INTEGER); --- > PROCEDURE RUN_AUTOTASK(TASK_ID IN PLS_INTEGER, > MAGIC_NUM IN NUMBER);
12c12 < bannerVersion CONSTANT VARCHAR2(15) := '19.06.00.00'; --- > bannerVersion CONSTANT VARCHAR2(15) := '19.06.01.00'; 24,26c24,26 < fsn CONSTANT NUMBER := instr('19.06.00.00', '.'); < msn CONSTANT NUMBER := instr('19.06.00.00', '.', fsn + 1); < psn CONSTANT NUMBER := instr('19.06.00.00', '.', msn + 1); --- > fsn CONSTANT NUMBER := instr('19.06.01.00', '.'); > msn CONSTANT NUMBER := instr('19.06.01.00', '.', fsn + 1); > psn CONSTANT NUMBER := instr('19.06.01.00', '.', msn + 1); 29c29 < to_number(substr('19.06.00.00', 1, fsn - 1)); --- > to_number(substr('19.06.01.00', 1, fsn - 1)); 31c31 < to_number(substr('19.06.00.00', fsn + 1, msn - fsn - 1)); --- > to_number(substr('19.06.01.00', fsn + 1, msn - fsn - 1)); 33c33 < to_number(substr('19.06.00.00', msn + 1, psn - msn - 1)); --- > to_number(substr('19.06.01.00', msn + 1, psn - msn - 1)); 35c35 < to_number(substr('19.06.00.00', psn + 1)); --- > to_number(substr('19.06.01.00', psn + 1));
12c12 < bannerVersion CONSTANT VARCHAR2(15) := '19.05.01.00'; --- > bannerVersion CONSTANT VARCHAR2(15) := '19.05.02.00'; 24,26c24,26 < fsn CONSTANT NUMBER := instr('19.05.01.00', '.'); < msn CONSTANT NUMBER := instr('19.05.01.00', '.', fsn + 1); < psn CONSTANT NUMBER := instr('19.05.01.00', '.', msn + 1); --- > fsn CONSTANT NUMBER := instr('19.05.02.00', '.'); > msn CONSTANT NUMBER := instr('19.05.02.00', '.', fsn + 1); > psn CONSTANT NUMBER := instr('19.05.02.00', '.', msn + 1); 29c29 < to_number(substr('19.05.01.00', 1, fsn - 1)); --- > to_number(substr('19.05.02.00', 1, fsn - 1)); 31c31 < to_number(substr('19.05.01.00', fsn + 1, msn - fsn - 1)); --- > to_number(substr('19.05.02.00', fsn + 1, msn - fsn - 1)); 33c33 < to_number(substr('19.05.01.00', msn + 1, psn - msn - 1)); --- > to_number(substr('19.05.02.00', msn + 1, psn - msn - 1)); 35c35 < to_number(substr('19.05.01.00', psn + 1)); --- > to_number(substr('19.05.02.00', psn + 1));
12c12 < bannerVersion CONSTANT VARCHAR2(15) := '19.06.00.00'; --- > bannerVersion CONSTANT VARCHAR2(15) := '19.07.00.00'; 24,26c24,26 < fsn CONSTANT NUMBER := instr('19.06.00.00', '.'); < msn CONSTANT NUMBER := instr('19.06.00.00', '.', fsn + 1); < psn CONSTANT NUMBER := instr('19.06.00.00', '.', msn + 1); --- > fsn CONSTANT NUMBER := instr('19.07.00.00', '.'); > msn CONSTANT NUMBER := instr('19.07.00.00', '.', fsn + 1); > psn CONSTANT NUMBER := instr('19.07.00.00', '.', msn + 1); 29c29 < to_number(substr('19.06.00.00', 1, fsn - 1)); --- > to_number(substr('19.07.00.00', 1, fsn - 1)); 31c31 < to_number(substr('19.06.00.00', fsn + 1, msn - fsn - 1)); --- > to_number(substr('19.07.00.00', fsn + 1, msn - fsn - 1)); 33c33 < to_number(substr('19.06.00.00', msn + 1, psn - msn - 1)); --- > to_number(substr('19.07.00.00', msn + 1, psn - msn - 1)); 35c35 < to_number(substr('19.06.00.00', psn + 1)); --- > to_number(substr('19.07.00.00', psn + 1));
291,318d290 < -- NAME: MERGE_PARTITIONS < -- < -- DESCRIPTION: Given a local list partitioned Oracle table and details about a < -- partitioned Hive table, merge the Hive partitions onto the local < -- Oracle table. < -- < -- PARAMETERS: partnList - partnList to be added, if any < -- CLUSTER_ID - Hadoop cluster id < -- DB_NAME - database name < -- HIVE_TABLE_NAME - Hive table name < -- HYPT_TAB_NAME - Hybrid table name < -- HYPT_TAB_OWNER - Hybrid table owner < -- PERFORM_DDL - If TRUE, merge the Hive partitions to local table < -- RETURNS: < -- Any newly added hive partitions since the last sync or < -- hybrid table creation. < -- < FUNCTION MERGE_PARTITIONS( < PARTNLIST IN CLOB, < CLUSTER_ID IN VARCHAR2, < DB_NAME IN VARCHAR2, < HIVE_TABLE_NAME IN VARCHAR2, < HYPT_TAB_NAME IN VARCHAR2, < HYPT_TAB_OWNER IN VARCHAR2, < PERFORM_DDL IN BOOLEAN < ) RETURN CLOB; < <
25a26,27 > FUNCTION CHECKPK(OWNER VARCHAR2, > TABLENAME VARCHAR2) RETURN BOOLEAN;
1c1,3 < PACKAGE dbms_redact_int AS --- > PACKAGE dbms_redact_int > ACCESSIBLE BY (SYS.DBMS_REDACT) > AS
13c13 < '19.6.0.0.0'; --- > '19.7.0.0.0';
13c13 < '19.5.1.0.0'; --- > '19.5.2.0.0';
13c13 < '19.6.0.0.0'; --- > '19.6.1.0.0';
667c667,672 < -- --- > -- p_cloud_service_type > -- (OUT) - 0 NONE > -- 1 DWCS (Autonomous Data Warehouse) > -- 2 EECS (Exadata Express Cloud Service) > -- 3 PAAS (Platform As A Service (MDBCS)) > -- 4 OLTP (ATP) 678c683,684 < p_packs OUT NUMBER --- > p_packs OUT NUMBER, > p_cloud_service_type OUT NUMBER
1c1,3 < PACKAGE dbms_rls_int AS --- > PACKAGE dbms_rls_int > ACCESSIBLE BY (SYS.DBMS_RLS) > AS 21c23,24 < CPS IN BOOLEAN := FALSE); --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2 := NULL); 29c32,33 < CPS IN BOOLEAN := FALSE); --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2 := NULL); 38c42,43 < CPS IN BOOLEAN := FALSE); --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2 := NULL); 43c48,49 < CPS IN BOOLEAN := FALSE); --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2 := NULL); 48c54,55 < CPS IN BOOLEAN := FALSE); --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2 := NULL); 54c61,62 < CPS IN BOOLEAN := FALSE); --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2 := NULL); 59c67,68 < CPS IN BOOLEAN := FALSE); --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2 := NULL); 77c86,87 < CPS IN BOOLEAN := FALSE); --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2 := NULL); 83c93,94 < CPS IN BOOLEAN := FALSE); --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2 := NULL); 88c99,100 < CPS IN BOOLEAN := FALSE); --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2 := NULL); 94c106,107 < CPS IN BOOLEAN := FALSE); --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2 := NULL); 100c113,114 < CPS IN BOOLEAN := FALSE); --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2 := NULL); 106c120,121 < CPS IN BOOLEAN := FALSE); --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2 := NULL); 113c128,129 < CPS IN BOOLEAN := FALSE); --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2 := NULL); 120c136,137 < CPS IN BOOLEAN := FALSE); --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2 := NULL);
15a16,22 > -- Cloud Service Type Constants > CLOUD_SERVICE_TYPE_NONE CONSTANT VARCHAR2(30) := 'NONE'; > CLOUD_SERVICE_TYPE_ADW CONSTANT VARCHAR2(30) := 'DWCS'; > CLOUD_SERVICE_TYPE_EXADATA CONSTANT VARCHAR2(30) := 'EECS'; > CLOUD_SERVICE_TYPE_PAAS CONSTANT VARCHAR2(30) := 'PAAS'; > CLOUD_SERVICE_TYPE_ATP CONSTANT VARCHAR2(30) := 'OLTP'; > 351a359,389 > RETURN BOOLEAN; > > -------------------------- get_cloud_service_type -------------------------- > -- NAME: > -- get_cloud_service_type > -- > -- DESCRIPTION: > -- return value of _cloud_service_type parameter for cloud service type > -- > -- RETURN: > -- NONE: None > -- DWCS: Autonomous Data Warehouse > -- EECS: Exadata Express Cloud Service > -- PAAS: Platform As A Service (MDBCS) > -- OLTP: ATP > ----------------------------------------------------------------------------- > FUNCTION get_cloud_service_type > RETURN varchar2; > > --------------------------------- is_adw ----------------------------------- > -- NAME: > -- is_adw > -- > -- DESCRIPTION: > -- check if current DB is Autonomous Data Warehouse > -- > -- RETURN: > -- TRUE is current DB is Autonomous Data Warehouse > -- FALSE otherwise > ----------------------------------------------------------------------------- > FUNCTION is_adw
519,520c519,520 < STAT_SGA_PARAM CONSTANT BINARY_INTEGER := 160; < STAT_PGA_PARAM CONSTANT BINARY_INTEGER := 161; --- > STAT_SGA_TARGET_PARAM_E CONSTANT BINARY_INTEGER := 160; > STAT_PGA_TARGET_PARAM_E CONSTANT BINARY_INTEGER := 161; 664a665,670 > STAT_CPU_COUNT_B CONSTANT BINARY_INTEGER := 310; > STAT_CPU_COUNT_E CONSTANT BINARY_INTEGER := 311; > STAT_SGA_TARGET_PARAM_B CONSTANT BINARY_INTEGER := 312; > STAT_PGA_TARGET_PARAM_B CONSTANT BINARY_INTEGER := 313; > STAT_MEMORY_TARGET_B CONSTANT BINARY_INTEGER := 314; > STAT_MEMORY_TARGET_E CONSTANT BINARY_INTEGER := 315;
967a968,983 > > > > > > > > > > > > > PROCEDURE SET_KGL_TIME_TO_WAIT_FOR_LOCKS ( > LWAIT_TIME IN NUMBER) > ACCESSIBLE BY (PACKAGE SYS.KUPW$WORKER); >
71a72,97 > > > > > > > > > > > > > > > > > > > > FUNCTION ACTION_CANCEL_SQL_XML( > P_SID IN NUMBER, > P_SERIAL_NUM IN NUMBER, > P_INST_ID IN NUMBER DEFAULT NULL, > P_SQL_ID IN VARCHAR2, > P_SHOW_SQL IN NUMBER DEFAULT 0) > RETURN XMLTYPE;
42,44d41 < < < 56d52 < FILTERED IN NUMBER := NULL, 95,97d90 < < < 110d102 < FILTERED IN NUMBER := NULL,
421a422,423 > > 433a436 > INCLUDE_SQLS IN NUMBER DEFAULT NULL, 887a891,909 > PROCEDURE CREATE_CONSUMER_GROUP_MAP( > P_CON_ID IN NUMBER, > P_AWR_PERIOD IN OUT NOCOPY PRVT_AWRV_METADATA, > P_CGRP_MAP IN OUT NOCOPY PRVT_AWRV_INSTTAB); > > > > > > > > > > > > > > > 917a940,1001 > > > > > > > > > > > > > > > > > > > > > > > > > FUNCTION REPORT_ADW_WORKLOAD_REALTIME( > START_TIME IN DATE DEFAULT NULL, > END_TIME IN DATE DEFAULT NULL, > INST_ID_LOW IN NUMBER DEFAULT NULL, > INST_ID_HIGH IN NUMBER DEFAULT NULL, > SHOW_SQL IN NUMBER DEFAULT 0) > RETURN XMLTYPE; > > > > > > > > > > > > > > > > > > > > > > > > FUNCTION REPORT_ADW_WORKLOAD_HISTORICAL( > START_TIME IN DATE DEFAULT NULL, > END_TIME IN DATE DEFAULT NULL, > DBID IN NUMBER DEFAULT NULL, > INST_ID IN NUMBER DEFAULT NULL, > SHOW_SQL IN NUMBER DEFAULT 0) > RETURN XMLTYPE; >
1c1,3 < PACKAGE XS_DATA_SECURITY_INT AS --- > PACKAGE XS_DATA_SECURITY_INT > ACCESSIBLE BY (SYS.XS_DATA_SECURITY) > AS 79c81,82 < ACLMV IN VARCHAR2 := NULL --- > ACLMV IN VARCHAR2 := NULL, > INVOKER IN VARCHAR2 := NULL 84,87c87,91 < POLICY IN VARCHAR2, < SCHEMA IN VARCHAR2, < OBJECT IN VARCHAR2, < ENABLE IN BOOLEAN --- > POLICY IN VARCHAR2, > SCHEMA IN VARCHAR2, > OBJECT IN VARCHAR2, > ENABLE IN BOOLEAN, > INVOKER IN VARCHAR2 92,94c96,99 < POLICY IN VARCHAR2, < SCHEMA IN VARCHAR2, < OBJECT IN VARCHAR2 --- > POLICY IN VARCHAR2, > SCHEMA IN VARCHAR2, > OBJECT IN VARCHAR2, > INVOKER IN VARCHAR2
1c1,3 < PACKAGE XS_DIAG_INT AS --- > PACKAGE XS_DIAG_INT > ACCESSIBLE BY (SYS.XS_DIAG) > AS 14c16,17 < FUNCTION VALIDATE_WORKSPACE(MSG_MAX IN PLS_INTEGER := 1) --- > FUNCTION VALIDATE_WORKSPACE(MSG_MAX IN PLS_INTEGER := 1, > INVOKER IN VARCHAR2) 20a24 > I_INVOKER IN VARCHAR2,
9a10,12 > > MAX_DRAIN_TIMEOUT CONSTANT NUMBER := 28800; > 202a206,207 > > 204c209,210 < FAILOVER_RESTORE IN VARCHAR2 DEFAULT 'LEVEL1') --- > FAILOVER_RESTORE IN VARCHAR2 DEFAULT 'LEVEL1', > REPLAY_INITIATION_TIMEOUT IN BINARY_INTEGER DEFAULT NULL) 222c228,234 < L_PARAMS('REPLAY_INITIATION_TIMEOUT') := REPLAY_INIT_TIMEOUT_DEFAULT; --- > L_PARAMS('SESSION_STATE_CONSISTENCY') := 'DYNAMIC'; > > IF REPLAY_INITIATION_TIMEOUT IS NULL THEN > L_PARAMS('REPLAY_INITIATION_TIMEOUT') := REPLAY_INIT_TIMEOUT_DEFAULT; > ELSE > L_PARAMS('REPLAY_INITIATION_TIMEOUT') := REPLAY_INITIATION_TIMEOUT; > END IF; 237a250,251 > > 239c253,254 < FAILOVER_RESTORE IN VARCHAR2 DEFAULT 'AUTO') --- > FAILOVER_RESTORE IN VARCHAR2 DEFAULT 'AUTO', > REPLAY_INITIATION_TIMEOUT IN BINARY_INTEGER DEFAULT NULL) 257c272,278 < L_PARAMS('REPLAY_INITIATION_TIMEOUT') := REPLAY_INIT_TIMEOUT_DEFAULT; --- > L_PARAMS('SESSION_STATE_CONSISTENCY') := 'AUTO'; > > IF REPLAY_INITIATION_TIMEOUT IS NULL THEN > L_PARAMS('REPLAY_INITIATION_TIMEOUT') := REPLAY_INIT_TIMEOUT_DEFAULT; > ELSE > L_PARAMS('REPLAY_INITIATION_TIMEOUT') := REPLAY_INITIATION_TIMEOUT; > END IF; 300a322 > L_PARAMS('SESSION_STATE_CONSISTENCY') := NULL; 379a402,443 > > > > > > > > > > > > PROCEDURE SET_DRAINING(SERVICE_NAME IN VARCHAR2, > DRAIN_TIMEOUT IN BINARY_INTEGER DEFAULT NULL, > STOP_OPTION IN VARCHAR2 DEFAULT NULL) > IS > L_PARAMS DBMS_SERVICE.SVC_PARAMETER_ARRAY; > BEGIN > > IF (DRAIN_TIMEOUT IS NULL AND STOP_OPTION IS NULL) THEN > RAISE_APPLICATION_ERROR(-20000, 'Draining parameter(s) unspecified'); > END IF; > > IF (DRAIN_TIMEOUT IS NOT NULL) THEN > > > > L_PARAMS('DRAIN_TIMEOUT') := LEAST(DRAIN_TIMEOUT, MAX_DRAIN_TIMEOUT); > END IF; > > IF (STOP_OPTION IS NOT NULL) THEN > IF ((UPPER(STOP_OPTION) <> 'NONE') AND > (UPPER(STOP_OPTION) <> 'IMMEDIATE') AND > (UPPER(STOP_OPTION) <> 'TRANSACTIONAL')) THEN > RAISE_APPLICATION_ERROR(-20000, 'Invalid stop_option parameter'); > ELSE > L_PARAMS('STOP_OPTION') := UPPER(STOP_OPTION); > END IF; > END IF; > > > MODIFY_SERVICE(SERVICE_NAME, L_PARAMS); > END SET_DRAINING;
176c176,177 < TASK_ID IN PLS_INTEGER --- > TASK_ID IN PLS_INTEGER, > MAGIC_NUM IN NUMBER 184,185c185,188 < TASK_ID SB4, < TASK_ID INDICATOR SB2 --- > TASK_ID SB4, > TASK_ID INDICATOR SB2, > MAGIC_NUM OCINUMBER, > MAGIC_NUM INDICATOR SB2
33,35c33,37 < AI_TRC_PREFIX VARCHAR2(4) := 'AI: '; < AI_TRC_DBMS_OUTPUT NUMBER := 1; < AI_TRC_FILE NUMBER := 2; --- > AI_TRC_PREFIX CONSTANT VARCHAR2(4) := 'AI: '; > AI_TRC_DBMS_OUTPUT CONSTANT NUMBER := 1; > AI_TRC_FILE CONSTANT NUMBER := 2; > > AI_TRC_DEFAULT CONSTANT NUMBER := 0; 48a51,52 > > AI_CTRL_DEFAULT CONSTANT NUMBER := 0; 300,302d303 < AI_TRACE_DEFAULT CONSTANT NUMBER := 0; < < 326,329c327 < AI_STS_CAPTURE_TASK_OFF; < < < AI_CONTROL_DEFAULT CONSTANT NUMBER := 0; --- > AI_STS_CAPTURE_TASK_ON; 433a432 > AI_TABLE_SKIP_NONINTTAB CONSTANT NUMBER := 6; 826c825 < TO_CLOB(AI_TRACE_DEFAULT)), --- > TO_CLOB(AI_TRC_DEFAULT)), 847c846 < TO_CLOB(AI_CONTROL_DEFAULT)), --- > TO_CLOB(AI_CTRL_DEFAULT)), 877c876 < TRACE_LEVEL NUMBER := AI_CONTROL_DEFAULT; --- > TRACE_LEVEL NUMBER := AI_TRC_DEFAULT; 3371a3371 > INT_TAB VARCHAR2(8); 3384,3387c3384,3392 < MIN(OWNER), MIN(OBJECT_NAME), MIN(TEMPORARY), COUNT(*) < INTO OWN, TAB, TEMP_TAB, NUM_TAB < FROM DBA_OBJECTS O < WHERE OBJECT_ID = OBJN AND OBJECT_TYPE = 'TABLE'; --- > MIN(O.OWNER), MIN(O.OBJECT_NAME), MIN(O.TEMPORARY), COUNT(*), > MIN(CASE WHEN (BITAND(T.PROPERTY, POWER(2,90)) = POWER(2,90) OR > BITAND(T.PROPERTY, 2147483648) = 2147483648) > THEN 'N' ELSE 'Y' END) > INTO OWN, TAB, TEMP_TAB, NUM_TAB, INT_TAB > FROM DBA_OBJECTS O, SYS.TAB$ T > WHERE O.OBJECT_ID = OBJN > AND O.OBJECT_TYPE = 'TABLE' > AND O.OBJECT_ID = T.OBJ#; 3396a3402,3408 > IF (INT_TAB = 'N') THEN > LOG_TABLE_SKIPPED(AI_CTX, OBJ_ID, AI_TABLE_SKIP_NONINTTAB, OWN, TAB); > RETURN AI_TABLE_SKIP_NONINTTAB; > END IF; > > > 4575c4587,4588 < AI_TABLE_SKIP_SMALLTAB, AI_TABLE_SKIP_TEMPTAB)) THEN --- > AI_TABLE_SKIP_SMALLTAB, AI_TABLE_SKIP_TEMPTAB, > AI_TABLE_SKIP_NONINTTAB)) THEN 6431a6445,6446 > STS_COUNT NUMBER; > STS_COUNT_STATS NUMBER; 6442c6457 < CHECK_AUTO_INDEX_ENABLED; --- > 6449c6464 < SELECT COUNT(*) INTO VALID_STS --- > SELECT COUNT(*) INTO STS_COUNT 6458c6473 < IF (VALID_STS = 0) THEN --- > IF (STS_COUNT = 0) THEN 6468a6484,6492 > SELECT SUM(STATEMENT_COUNT) INTO STS_COUNT > FROM DBA_SQLSET > WHERE CON_DBID = SYS_CONTEXT('userenv','con_dbid'); > > SELECT SUM(NUM_ROWS) INTO STS_COUNT_STATS > FROM DBA_TABLES > WHERE OWNER = 'SYS' AND TABLE_NAME = 'WRI$_SQLSET_STATEMENTS'; > > 6472c6496,6504 < IF (BITAND(AI_CTRL, AI_CTRL_DIS_OPT_STATS) = 0) THEN --- > IF (BITAND(AI_CTRL, AI_CTRL_DIS_OPT_STATS) = 0 AND > > > > > (STS_COUNT_STATS IS NULL OR > (STS_COUNT IS NOT NULL AND > ABS(STS_COUNT_STATS - STS_COUNT)/(STS_COUNT_STATS+1) > .1))) THEN > 6488a6521,6527 > > > > > > > 6503c6542,6554 < and plan_hash_value > 0 #')) P; --- > and plan_hash_value > 0 > and (con_dbid, force_matching_signature) not in > (select /*+ unnest no_merge */ > sss.con_dbid, sss.force_matching_signature > from wri$_sqlset_definitions ssf, wri$_sqlset_statements sss > where ssf.id = sss.sqlset_id > and ssf.con_dbid = sss.con_dbid > and ssf.owner = '#' || AI_STS_OWN || > q'#' and ssf.name = '#' || AI_STS_NAME || > q'#' and ssf.con_dbid = sys_context('userenv','con_dbid') > and force_matching_signature > 0 > group by sss.con_dbid, sss.sqlset_id, sss.force_matching_signature > having count(*) > 1000) #')) P; 6517c6568,6572 < COMMIT_ROWS => 100); --- > UPDATE_CONDITION => > q'# old.executions != new.executions or > old.last_exec_start_time != > new.last_exec_start_time #', > COMMIT_ROWS => 100); 8794c8849 < P_VALUE := AI_TRACE_DEFAULT; --- > P_VALUE := AI_TRC_DEFAULT; 8854c8909 < P_VALUE := AI_CONTROL_DEFAULT; --- > P_VALUE := AI_CTRL_DEFAULT; 9421a9477,9480 > > CONFIGURE(AI_PARAM_STS_CAPTURE_TASK, AI_STS_CAPTURE_TASK_DEFAULT, > TRUE, TRUE); > 10252,10287c10311,10420 < SELECT < NVL(SUM(CASE WHEN V.VISIBILITY = 'VISIBLE' THEN 1 ELSE 0 END), 0), < NVL(SUM(CASE WHEN V.VISIBILITY = 'INVISIBLE' THEN 1 ELSE 0 END), 0), < NVL(SUM(CASE WHEN V.STATUS = 'UNUSABLE' THEN 1 ELSE 0 END), 0), < NVL(SUM(CASE WHEN V.VISIBILITY = 'VISIBLE' THEN V.BYTES < ELSE 0 END), 0), < NVL(SUM(CASE WHEN V.VISIBILITY = 'INVISIBLE' THEN V.BYTES < ELSE 0 END), 0) < INTO UNUSED_VIS_IDX, UNUSED_INVIS_IDX, UNUSED_UNUSABLE_IDX, < UNUSED_SPACE_USED_VIS, UNUSED_SPACE_USED_INVIS < FROM SYS.OBJ$ O, SYS.USER$ USR, < (SELECT I.OWNER, I.INDEX_NAME, I.VISIBILITY, I.STATUS, S.BYTES < FROM DBA_INDEXES I, DBA_INDEX_USAGE U, DBA_SEGMENTS S, < DBA_OBJECTS DO < WHERE U.NAME (+)= I.INDEX_NAME AND < U.OWNER (+)= I.OWNER AND < I.AUTO = 'NO' AND < I.INDEX_NAME = DO.OBJECT_NAME AND < I.OWNER = DO.OWNER AND < DO.OBJECT_TYPE = 'INDEX' AND < < < ( < (U.LAST_USED IS NULL AND DO.CREATED < IDX_RETENTION_TIME) < OR < U.LAST_USED < IDX_RETENTION_TIME < ) AND < I.INDEX_NAME = S.SEGMENT_NAME AND < I.OWNER=S.OWNER AND < S.SEGMENT_TYPE LIKE 'INDEX%' < GROUP BY I.OWNER, I.INDEX_NAME, I.VISIBILITY, I.STATUS, < S.BYTES) V < WHERE V.OWNER = USR.NAME AND < V.INDEX_NAME = O.NAME AND < USR.USER# = O.OWNER# AND < BITAND(O.FLAGS, DBMS_STATS_INTERNAL.DSC_ORACLE_OWNED_OBJ) = 0; --- > > > > > > > > > > > > > > > > > > > > > > > > SELECT > NVL(SUM(CASE WHEN IX.VISIBILITY = 'VISIBLE' THEN 1 ELSE 0 END), > 0), > NVL(SUM(CASE WHEN IX.VISIBILITY = 'INVISIBLE' THEN 1 ELSE 0 END), > 0), > > > > NVL(SUM(CASE WHEN IX.STATUS = 'UNUSABLE' > OR (IX.STATUS = 'N/A' > AND (IX.UNUS_PART_CNT > 0 > OR IX.UNUS_SUBPART_CNT > 0)) THEN 1 > ELSE 0 END), > 0), > NVL(SUM(CASE WHEN IX.VISIBILITY = 'VISIBLE' THEN IX.BYTES > ELSE 0 END), 0), > NVL(SUM(CASE WHEN IX.VISIBILITY = 'INVISIBLE' THEN IX.BYTES > ELSE 0 END), 0) > INTO UNUSED_VIS_IDX, > UNUSED_INVIS_IDX, > UNUSED_UNUSABLE_IDX, > UNUSED_SPACE_USED_VIS, > UNUSED_SPACE_USED_INVIS > FROM (SELECT IXPAR.OWNER "OWNER", > IXPAR.NAME "NAME", > IXPAR.STATUS "STATUS", > IXPAR.VISIBILITY "VISIBILITY", > SUM(IXPAR.BYTES) "BYTES", > > > SUM(DECODE(NVL(IXPAR.PARTITION_STATUS, 'N/A'), 'UNUSABLE', > 1, 0)) "UNUS_PART_CNT", > SUM(DECODE(NVL(IXPAR.SUBPARTITION_STATUS, 'N/A'), 'UNUSABLE', > 1, 0)) "UNUS_SUBPART_CNT" > FROM (SELECT UMIX.OWNER "OWNER", > UMIX.NAME "NAME", > UMIX.STATUS "STATUS", > UMIX.VISIBILITY "VISIBILITY", > SDBSEGS.BYTES "BYTES", > DBIXP.STATUS "PARTITION_STATUS", > DBIXSP.STATUS "SUBPARTITION_STATUS" > FROM (SELECT /*+ NO_MERGE */ > DBIX.OWNER "OWNER", > DBIX.INDEX_NAME "NAME", > DBIX.STATUS "STATUS", > DBIX.VISIBILITY "VISIBILITY" > FROM DBA_INDEXES "DBIX", > SYS.USER$ "USR", > SYS.OBJ$ "OBJ", > SYS.WRI$_INDEX_USAGE "IXUS" > WHERE DBIX.OWNER = USR.NAME > AND DBIX.INDEX_NAME = OBJ.NAME > AND USR.USER# = OBJ.OWNER# > AND OBJ.OBJ# = IXUS.OBJ#(+) > AND DBIX.AUTO = 'NO' > AND OBJ.TYPE# = 1 > AND OBJ.NAMESPACE = 4 > AND BITAND(OBJ.FLAGS, > DBMS_STATS_INTERNAL.DSC_ORACLE_OWNED_OBJ) > = 0 > AND OBJ.REMOTEOWNER IS NULL > AND OBJ.LINKNAME IS NULL > AND OBJ.SUBNAME IS NULL > AND ((IXUS.LAST_USED IS NULL > AND OBJ.CTIME < IDX_RETENTION_TIME) > OR IXUS.LAST_USED < IDX_RETENTION_TIME) > ) "UMIX", > DBA_IND_PARTITIONS "DBIXP", > DBA_IND_SUBPARTITIONS "DBIXSP", > SYS_DBA_SEGS "SDBSEGS" > WHERE UMIX.NAME = DBIXP.INDEX_NAME(+) > AND UMIX.OWNER = DBIXP.INDEX_OWNER(+) > AND DBIXP.INDEX_NAME = DBIXSP.INDEX_NAME(+) > AND DBIXP.INDEX_OWNER = DBIXSP.INDEX_OWNER(+) > AND DBIXP.PARTITION_NAME = DBIXSP.PARTITION_NAME(+) > AND UMIX.NAME = SDBSEGS.SEGMENT_NAME(+) > AND UMIX.OWNER = SDBSEGS.OWNER(+) > AND NVL(DBIXSP.SUBPARTITION_NAME, > NVL(DBIXP.PARTITION_NAME, 'NON-PARTITIONED')) > = > NVL(SDBSEGS.PARTITION_NAME, 'NON-PARTITIONED') > ) "IXPAR" > GROUP BY IXPAR.OWNER, > IXPAR.NAME, > IXPAR.STATUS, > IXPAR.VISIBILITY > ) "IX";
3c3,60 < --- > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > FUNCTION I_ADD_LOCKDOWN_PREDICATES > RETURN VARCHAR2 > IS > RETVAL VARCHAR2(4000); > BEGIN > > > IF (SYS.DBMS_SQLTUNE_UTIL2.IS_SYSTEM_DATA_LOCKED = 'YES' AND > SYS.DBMS_SQLTUNE_UTIL2.IS_PDB) THEN > > RETVAL := > q'[ report_summary is not NULL > AND REGEXP_INSTR(report_summary,]' || q'['(\w*<user>C##)']' > || q'[, 1, 1, 0, 'i') = 0 > AND REGEXP_INSTR(report_summary,]' || q'['(\w*<user>SYS</user>)']' > || q'[, 1, 1, 0, 'i') = 0 > AND REGEXP_INSTR(report_summary,]' || q'['(\w*<user>SYSTEM</user>)']' > || q'[, 1, 1, 0, 'i') = 0 > AND REGEXP_INSTR(report_summary,]' || q'['(\w*<service>SYS[$])']' > || q'[, 1, 1, 0, 'i') = 0 ]'; > > ELSE > RETVAL := '1=1'; > END IF; > > RETURN RETVAL; > > END I_ADD_LOCKDOWN_PREDICATES; > 406c463,464 < where :dt1 <= pe and :dt2 >= ps and v2.rid = r.report_id) v --- > where :dt1 <= pe and :dt2 >= ps and v2.rid = r.report_id > AND #ADW_FILTER_PREDICATE#) v 479a538,541 > > > SUB_QRY := REPLACE(SUB_QRY, '#ADW_FILTER_PREDICATE#', > DBMS_AUTO_REPORT.I_ADD_LOCKDOWN_PREDICATES());
214a215,369 > > > > > FUNCTION MERGE_PARTITIONS( > PARTNLIST IN CLOB, > CLUSTER_ID IN VARCHAR2, > DB_NAME IN VARCHAR2, > HIVE_TABLE_NAME IN VARCHAR2, > HYPT_TAB_NAME IN VARCHAR2, > HYPT_TAB_OWNER IN VARCHAR2, > PERFORM_DDL IN BOOLEAN > ) RETURN CLOB > IS > KEYPOS1 NUMBER := 0; > PARTNCNT NUMBER := 0; > PARTKEYCNT NUMBER := 0; > CNT NUMBER := 0; > CURKEY VARCHAR2(42) := NULL; > ORIGKEY VARCHAR2(4000) := NULL; > PARTKEYVALS CLOB := NULL; > PARTKEY VARCHAR2(ORA_MAX_NAME_LEN); > PARTKEYTYPE VARCHAR2(ORA_MAX_NAME_LEN); > PARTKEYCHAR BOOLEAN := FALSE; > SYNCPARTITIONDDL VARCHAR2(4000) := ''; > MAX_BUCKETS NUMBER := 999999999; > CUR INTEGER; > FDBK INTEGER; > SECURE_PARTNLIST CLOB := NULL; > HYPT_TAB_NAME_DQR VARCHAR2(ORA_MAX_NAME_LEN); > HYPT_TAB_OWNER_DQR VARCHAR2(ORA_MAX_NAME_LEN); > SEC_HYPT_TAB_NAME VARCHAR2(ORA_MAX_NAME_LEN+2); > SEC_HYPT_TAB_OWNER VARCHAR2(ORA_MAX_NAME_LEN+2); > PARTNINFO CLOB := NULL; > BEGIN > SECURE_PARTNLIST := SYS.DBMS_ASSERT.ENQUOTE_NAME(PARTNLIST, FALSE); > SEC_HYPT_TAB_NAME := SYS.DBMS_ASSERT.SIMPLE_SQL_NAME(HYPT_TAB_NAME); > SEC_HYPT_TAB_OWNER := SYS.DBMS_ASSERT.SIMPLE_SQL_NAME(HYPT_TAB_OWNER); > > PARTNINFO := NULL; > KEYPOS1 := 2; > PARTNCNT := DBMS_HADOOP_INTERNAL.GETNUMBEROFITEMS(PARTNLIST, ','); > > WHILE (CNT < PARTNCNT) > LOOP > IF (CNT < PARTNCNT - 1) THEN > CURKEY := SUBSTR(SECURE_PARTNLIST, KEYPOS1, INSTR(SECURE_PARTNLIST, ',', KEYPOS1, 1)-KEYPOS1); > ELSE > CURKEY := SUBSTR(SECURE_PARTNLIST, KEYPOS1); > CURKEY := REPLACE(CURKEY, '"', ''); > END IF; > > > HYPT_TAB_NAME_DQR := DBMS_HADOOP_INTERNAL.REMOVE_DOUBLE_QUOTE(HYPT_TAB_NAME); > HYPT_TAB_OWNER_DQR := DBMS_HADOOP_INTERNAL.REMOVE_DOUBLE_QUOTE(HYPT_TAB_OWNER); > > > SELECT HP.PARTITION_SPECS INTO ORIGKEY > FROM USER_HIVE_TAB_PARTITIONS HP > WHERE CONCAT('P_', ORA_HASH(HP.PARTITION_SPECS, MAX_BUCKETS, 100)) = CURKEY AND > HP.TABLE_NAME = HIVE_TABLE_NAME AND > HP.CLUSTER_ID = CLUSTER_ID AND > HP.DATABASE_NAME= DB_NAME; > > PARTKEY := SUBSTR(ORIGKEY, 1, INSTR(ORIGKEY, '=') - 1); > > PARTKEYCNT := DBMS_HADOOP_INTERNAL.GETNUMBEROFITEMS(ORIGKEY, '/'); > PARTKEYVALS := DBMS_HADOOP_INTERNAL.GETPARTKEYVALUES(ORIGKEY, PARTKEYCNT); > > CURKEY := SYS.DBMS_ASSERT.ENQUOTE_NAME(CURKEY, FALSE); > > SELECT COLUMN_TYPE INTO PARTKEYTYPE > FROM USER_HIVE_PART_KEY_COLUMNS PK > WHERE PK.TABLE_NAME = HIVE_TABLE_NAME AND > PK.CLUSTER_ID = CLUSTER_ID AND > PK.DATABASE_NAME = DB_NAME AND > PK.COLUMN_NAME = PARTKEY; > > IF (INSTR(UPPER(PARTKEYTYPE), 'CHAR') > 0) THEN > PARTKEYCHAR := TRUE; > END IF; > > SYNCPARTITIONDDL := 'ALTER TABLE ' || SEC_HYPT_TAB_OWNER || '.' || SEC_HYPT_TAB_NAME || > ' ADD PARTITION '; > SYNCPARTITIONDDL := SYNCPARTITIONDDL || CURKEY; > > SYNCPARTITIONDDL := SYNCPARTITIONDDL || ' VALUES ('; > > IF (PARTKEYCHAR = TRUE) THEN > SYNCPARTITIONDDL := SYNCPARTITIONDDL || '''' || PARTKEYVALS || ''')'; > ELSE > SYNCPARTITIONDDL := SYNCPARTITIONDDL || PARTKEYVALS || ')'; > END IF; > > IF (DBMS_HADOOP_INTERNAL.IS_HYPT(SEC_HYPT_TAB_NAME, SEC_HYPT_TAB_OWNER) = 1) THEN > SYNCPARTITIONDDL := SYNCPARTITIONDDL || ' EXTERNAL DEFAULT DIRECTORY DEFAULT_DIR'; > ELSE > SYNCPARTITIONDDL := SYNCPARTITIONDDL || ' DEFAULT DIRECTORY DEFAULT_DIR'; > END IF; > > PARTNINFO := PARTNINFO || 'PARTITION ' || CURKEY || ' VALUES ('; > > IF (PARTKEYCHAR = TRUE) THEN > PARTNINFO := PARTNINFO || '''' || PARTKEYVALS || ''')'; > ELSE > PARTNINFO := PARTNINFO || PARTKEYVALS || ')'; > END IF; > > PARTNINFO := PARTNINFO || ' EXTERNAL DEFAULT DIRECTORY DEFAULT_DIR'; > > IF (CNT < PARTNCNT - 1) THEN > PARTNINFO := PARTNINFO || ',' || CHR(10); > ELSE > PARTNINFO := PARTNINFO || ')'; > END IF; > > IF (PERFORM_DDL = TRUE) THEN > BEGIN > CUR := DBMS_SQL.OPEN_CURSOR; > DBMS_SQL.PARSE(CUR, SYNCPARTITIONDDL, DBMS_SQL.NATIVE); > FDBK := DBMS_SQL.EXECUTE(CUR); > DBMS_SQL.CLOSE_CURSOR(CUR); > > EXCEPTION WHEN OTHERS THEN > IF DBMS_SQL.IS_OPEN(CUR) THEN > DBMS_SQL.CLOSE_CURSOR(CUR); > END IF; > RAISE; > END; > END IF; > > KEYPOS1 := KEYPOS1 + LENGTH(CURKEY) - 1; > > CNT := CNT +1; > END LOOP; > > RETURN PARTNINFO; > > END MERGE_PARTITIONS; > > > > > > > > > > > > > > > > 367c522 < PARTNINFO := DBMS_HADOOP_INTERNAL.MERGE_PARTITIONS(HIVE_PARTITIONS, --- > PARTNINFO := MERGE_PARTITIONS(HIVE_PARTITIONS, 383c538 < PARTNINFO := DBMS_HADOOP_INTERNAL.MERGE_PARTITIONS(OTHER_HIVE_PARTNS, --- > PARTNINFO := MERGE_PARTITIONS(OTHER_HIVE_PARTNS, 397c552 < PARTNINFO := DBMS_HADOOP_INTERNAL.MERGE_PARTITIONS(FIRST_HIVE_PARTN, --- > PARTNINFO := MERGE_PARTITIONS(FIRST_HIVE_PARTN, 409c564 < PARTNINFO := DBMS_HADOOP_INTERNAL.MERGE_PARTITIONS(OTHER_HIVE_PARTNS, --- > PARTNINFO := MERGE_PARTITIONS(OTHER_HIVE_PARTNS, 763c918 < PARTNINFO := DBMS_HADOOP_INTERNAL.MERGE_PARTITIONS(PARTNS_ADDED, --- > PARTNINFO := MERGE_PARTITIONS(PARTNS_ADDED,
629d628 < 646a646,648 > PARTKEY VARCHAR2(ORA_MAX_NAME_LEN); > PARTKEYTYPE VARCHAR2(ORA_MAX_NAME_LEN); > PARTKEYCHAR BOOLEAN := FALSE; 686a689,690 > PARTKEY := SUBSTR(ORIGKEY, 1, INSTR(ORIGKEY, '=') - 1); > 691a696,706 > SELECT COLUMN_TYPE INTO PARTKEYTYPE > FROM DBA_HIVE_PART_KEY_COLUMNS PK > WHERE PK.TABLE_NAME = HIVE_TABLE_NAME AND > PK.CLUSTER_ID = CLUSTER_ID AND > PK.DATABASE_NAME = DB_NAME AND > PK.COLUMN_NAME = PARTKEY; > > IF (INSTR(UPPER(PARTKEYTYPE), 'CHAR') > 0) THEN > PARTKEYCHAR := TRUE; > END IF; > 694,695c709,717 < SYNCPARTITIONDDL := SYNCPARTITIONDDL || CURKEY ; < SYNCPARTITIONDDL := SYNCPARTITIONDDL || ' VALUES (' || PARTKEYVALS || ')'; --- > SYNCPARTITIONDDL := SYNCPARTITIONDDL || CURKEY; > > SYNCPARTITIONDDL := SYNCPARTITIONDDL || ' VALUES ('; > > IF (PARTKEYCHAR = TRUE) THEN > SYNCPARTITIONDDL := SYNCPARTITIONDDL || '''' || PARTKEYVALS || ''')'; > ELSE > SYNCPARTITIONDDL := SYNCPARTITIONDDL || PARTKEYVALS || ')'; > END IF; 703c725,732 < PARTNINFO := PARTNINFO || 'PARTITION ' || CURKEY || ' VALUES (' || PARTKEYVALS || ')'; --- > PARTNINFO := PARTNINFO || 'PARTITION ' || CURKEY || ' VALUES ('; > > IF (PARTKEYCHAR = TRUE) THEN > PARTNINFO := PARTNINFO || '''' || PARTKEYVALS || ''')'; > ELSE > PARTNINFO := PARTNINFO || PARTKEYVALS || ')'; > END IF; >
64,65d63 < JCNM VARCHAR2(130) := JCOLNAME; < TBNM VARCHAR2(130) := TABLENAME; 69c67 < IF (JCNM IS NULL OR TBNM IS NULL) THEN --- > IF (JCOLNAME IS NULL OR TABLENAME IS NULL) THEN 92c90 < USING JCNM, TBNM, OWNER; --- > USING JCOLNAME, TABLENAME, OWNER; 205a204,230 > END IF; > > RETURN RET; > END; > > > > > FUNCTION CHECKPK(OWNER VARCHAR2, > TABLENAME VARCHAR2) RETURN BOOLEAN > IS > RET BOOLEAN := FALSE; > CNT NUMBER; > BEGIN > EXECUTE IMMEDIATE > 'select count(1) > from DBA_CONS_COLUMNS COL, DBA_CONSTRAINTS CONS > where CONS.OWNER = COL.OWNER AND > CONS.TABLE_NAME = COL.TABLE_NAME AND > CONS.CONSTRAINT_NAME = COL.CONSTRAINT_NAME AND > CONS.CONSTRAINT_TYPE = ''P'' AND > COL.OWNER = :1 AND COL.TABLE_NAME = :2' > INTO CNT > USING OWNER, TABLENAME; > > IF (CNT > 0) THEN > RET := TRUE;
58,62c58,72 < CURSOR DIRTY_INDEX_CUR(SCH VARCHAR2, TBL VARCHAR2, ORPH_ONLY INT) IS < SELECT IOE.INDEX_OBJECT_ID IDX_OBJ#, < IOE.INDEX_OWNER IDX_OWNER, < IOE.INDEX_NAME IDX_NAME, < IOE.INDEX_SUBNAME IDX_SUBNAME --- > TYPE OBJNTABLE IS TABLE OF INTEGER; > > CURSOR DIRTY_INDEX_CUR_ALL IS > SELECT DISTINCT IOE.INDEX_OBJECT_ID IDX_OBJ# > FROM SYS.INDEX_ORPHANED_ENTRY_V$ IOE > WHERE IOE.TYPE != 'H'; > > CURSOR DIRTY_INDEX_CUR_SCHEMA(SCH VARCHAR2) IS > SELECT DISTINCT IOE.INDEX_OBJECT_ID IDX_OBJ# > FROM SYS.INDEX_ORPHANED_ENTRY_V$ IOE > WHERE IOE.TYPE != 'H' > AND IOE.TABLE_OWNER = SCH; > > CURSOR DIRTY_INDEX_CUR_TABLE(SCH VARCHAR2, TBL VARCHAR2) IS > SELECT DISTINCT IOE.INDEX_OBJECT_ID IDX_OBJ# 64,74c74,76 < WHERE (SCH IS NULL OR IOE.TABLE_OWNER = SCH) < AND (TBL IS NULL OR IOE.TABLE_NAME = TBL) < < AND IOE.TYPE != 'H' < < AND NOT (ORPH_ONLY = 0 AND IOE.TYPE = 'O') < < AND NOT (ORPH_ONLY != 0 AND < EXISTS (SELECT * FROM SYS.INDEX_ORPHANED_ENTRY_V$ IOE2 < WHERE IOE.INDEX_OBJECT_ID = IOE2.INDEX_OBJECT_ID < AND IOE2.TYPE = 'R')); --- > WHERE IOE.TYPE != 'H' > AND IOE.TABLE_OWNER = SCH > AND IOE.TABLE_NAME = TBL; 80,85c82,85 < ORPHANS_ONLY INT; < IDX_OWNER VARCHAR2(512); < IDX_NAME VARCHAR2(512); < IDX_SUBNAME VARCHAR2(512); < TMPSTR VARCHAR2(512); < SQLSTR VARCHAR2(32767); --- > INDOBJNTBL OBJNTABLE; > ORPHANS_ONLY BOOLEAN; > HASR BOOLEAN; > HASO BOOLEAN; 131c131 < ORPHANS_ONLY := NVL(ORPHANS_ONLY_IN, 0); --- > ORPHANS_ONLY := (NVL(ORPHANS_ONLY_IN, 0) != 0); 158c158,179 < FOR INDEX_REC IN DIRTY_INDEX_CUR(SCHEMA_NAME, TABLE_NAME, ORPHANS_ONLY) LOOP --- > IF SCHEMA_NAME IS NULL AND TABLE_NAME IS NULL THEN > OPEN DIRTY_INDEX_CUR_ALL; > FETCH DIRTY_INDEX_CUR_ALL > BULK COLLECT INTO INDOBJNTBL; > CLOSE DIRTY_INDEX_CUR_ALL; > ELSIF TABLE_NAME IS NULL THEN > OPEN DIRTY_INDEX_CUR_SCHEMA(SCHEMA_NAME); > FETCH DIRTY_INDEX_CUR_SCHEMA > BULK COLLECT INTO INDOBJNTBL; > CLOSE DIRTY_INDEX_CUR_SCHEMA; > ELSE > OPEN DIRTY_INDEX_CUR_TABLE(SCHEMA_NAME, TABLE_NAME); > FETCH DIRTY_INDEX_CUR_TABLE > BULK COLLECT INTO INDOBJNTBL; > CLOSE DIRTY_INDEX_CUR_TABLE; > END IF; > > IF INDOBJNTBL IS NULL OR INDOBJNTBL.COUNT = 0 THEN > GOTO DONE; > END IF; > > FOR I IN INDOBJNTBL.FIRST .. INDOBJNTBL.LAST LOOP 163,174c184,199 < SQLSTR := 'select count(*) from SYS.INDEX_ORPHANED_ENTRY_V$ ioe < where ioe.index_object_id = :1 and ioe.type != ''H'' and '; < < IF (ORPHANS_ONLY = 0) THEN < SQLSTR := SQLSTR || 'ioe.type != ''O'''; < ELSE < SQLSTR := SQLSTR < || 'NOT EXISTS ' < || '(select * from SYS.INDEX_ORPHANED_ENTRY_V$ ioe2 < where ioe.index_object_id = ioe2.index_object_id < and ioe2.type = ''R'' < )'; --- > > HASR := FALSE; > HASO := FALSE; > FOR TYP IN (SELECT DISTINCT IOE.TYPE FROM SYS.INDEX_ORPHANED_ENTRY_V$ IOE > WHERE IOE.INDEX_OBJECT_ID = INDOBJNTBL(I) > AND IOE.TYPE != 'H') LOOP > HASR := HASR OR TYP.TYPE = 'R'; > HASO := HASO OR TYP.TYPE = 'O'; > END LOOP; > > IF ORPHANS_ONLY AND NOT (HASO AND NOT HASR) THEN > > CONTINUE; > ELSIF NOT ORPHANS_ONLY AND NOT HASR THEN > > CONTINUE; 176,178d200 < SQLSTR := SQLSTR || ' and rownum < 2'; < < EXECUTE IMMEDIATE SQLSTR INTO CNT USING INDEX_REC.IDX_OBJ#; 181,186c203,206 < IF CNT > 0 THEN < BEGIN < EXEC_ALTER_INDEX_COALESCE(INDEX_REC.IDX_OBJ#, PARALLEL, < OPTIONS != 'COALESCE'); < < COMPLETED := COMPLETED + 1; --- > BEGIN > EXEC_ALTER_INDEX_COALESCE(INDOBJNTBL(I), PARALLEL, > OPTIONS != 'COALESCE'); > COMPLETED := COMPLETED + 1; 188c208 < EXCEPTION WHEN OTHERS THEN --- > EXCEPTION WHEN OTHERS THEN 190,197c210,217 < IF SQLCODE = -1418 OR < SQLCODE = -2149 OR < SQLCODE = -8111 OR < SQLCODE = -14075 THEN < NULL; < ELSE < RAISE; < END IF; --- > IF SQLCODE = -1418 OR > SQLCODE = -2149 OR > SQLCODE = -8111 OR > SQLCODE = -14075 THEN > NULL; > ELSE > RAISE; > END IF; 199,201c219 < END; < END IF; < --- > END; 203a222 > <<DONE>>
1136a1137,1145 > PROCEDURE INIT_OMX_REPORT_LEVEL > IS > BEGIN > > > P_SUMMARY := 0; > P_EXADATA := 0; > END INIT_OMX_REPORT_LEVEL; > 1163a1173,1179 > > > > IF (IS_OMX = 1) THEN > INIT_OMX_REPORT_LEVEL(); > END IF; > 1283a1300,1304 > > IF (IS_OMX = 1) THEN > INIT_OMX_REPORT_LEVEL(); > END IF; > 1499,1529c1520,1521 < < IF (L_IS_REALTIME = 1) THEN < < IF (L_SUMMARY = 1) THEN < < < L_SUMMARY_XML := DBMS_REPORT.TRANSFORM_REPORT_XML( < SYS.PRVT_AWR_VIEWER.REPORT_METRICS_XML( < START_TIME => NULL, < END_TIME => L_OUTER_END_TIME, < INST_ID => INST_ID, < DBID => L_DBID, < BUCKET_MAX_COUNT => NULL, < BUCKET_INTERVAL => NULL, < INST_DETAIL => NULL, < REPORT_LEVEL => NULL, < SHOW_SQL => NULL), < ZLIB2BASE64 => L_COMPRESS_XML); < ELSIF ( (L_SUMMARY = 0) < < < < < ) THEN < < < < < < < --- > IF (IS_OMX != 1) THEN > IF (L_IS_REALTIME = 1) THEN 1530a1523,1551 > IF (L_SUMMARY = 1) THEN > > > L_SUMMARY_XML := DBMS_REPORT.TRANSFORM_REPORT_XML( > SYS.PRVT_AWR_VIEWER.REPORT_METRICS_XML( > START_TIME => NULL, > END_TIME => L_OUTER_END_TIME, > INST_ID => INST_ID, > DBID => L_DBID, > BUCKET_MAX_COUNT => NULL, > BUCKET_INTERVAL => NULL, > INST_DETAIL => NULL, > REPORT_LEVEL => NULL, > SHOW_SQL => NULL), > ZLIB2BASE64 => L_COMPRESS_XML); > ELSIF ( (L_SUMMARY = 0) > > > > > ) THEN > > > > > > > > 1531a1553,1565 > L_SUMMARY_XML := DBMS_REPORT.TRANSFORM_REPORT_XML( > SYS.PRVT_AWR_VIEWER.REPORT_AWR_XML( > START_TIME => L_SELECTED_START_TIME, > END_TIME => L_SELECTED_END_TIME, > INSTANCE_LIST => TO_CHAR(INST_ID), > DBID => L_DBID, > BUCKET_MAX_COUNT => NULL, > DATA_DETAIL => 1, > SHOW_SQL => NULL), > ZLIB2BASE64 => L_COMPRESS_XML); > END IF; > > ELSE 1533,1541c1567,1575 < SYS.PRVT_AWR_VIEWER.REPORT_AWR_XML( < START_TIME => L_SELECTED_START_TIME, < END_TIME => L_SELECTED_END_TIME, < INSTANCE_LIST => TO_CHAR(INST_ID), < DBID => L_DBID, < BUCKET_MAX_COUNT => NULL, < DATA_DETAIL => 1, < SHOW_SQL => NULL), < ZLIB2BASE64 => L_COMPRESS_XML); --- > SYS.PRVT_AWR_VIEWER.REPORT_AWR_XML( > START_TIME => L_SELECTED_START_TIME, > END_TIME => L_SELECTED_END_TIME, > INSTANCE_LIST => TO_CHAR(INST_ID), > DBID => L_DBID, > BUCKET_MAX_COUNT => NULL, > DATA_DETAIL => 1, > SHOW_SQL => NULL), > ZLIB2BASE64 => L_COMPRESS_XML); 1543,1575d1576 < < ELSE < L_SUMMARY_XML := DBMS_REPORT.TRANSFORM_REPORT_XML( < SYS.PRVT_AWR_VIEWER.REPORT_AWR_XML( < START_TIME => L_SELECTED_START_TIME, < END_TIME => L_SELECTED_END_TIME, < INSTANCE_LIST => TO_CHAR(INST_ID), < DBID => L_DBID, < BUCKET_MAX_COUNT => NULL, < DATA_DETAIL => 1, < SHOW_SQL => NULL), < ZLIB2BASE64 => L_COMPRESS_XML); < END IF; < < < IF (SYS_CONTEXT('USERENV','CON_ID') = 1) THEN < < L_CONTAINERS_XML := DBMS_REPORT.TRANSFORM_REPORT_XML( < SYS.PRVT_AWR_VIEWER.REPORT_CONTAINERS_XML( < P_IS_REALTIME => L_IS_REALTIME, < P_START_TIME => L_SELECTED_START_TIME, < P_END_TIME => L_SELECTED_END_TIME, < P_DBID => L_DBID, < P_INST_ID => INST_ID), < ZLIB2BASE64 => L_COMPRESS_XML); < < ELSIF ( (DBMS_SQLTUNE_UTIL2.IS_IMPORTED_CDB(L_DBID) = < DBMS_SQLTUNE_UTIL2.STR_YES) < AND < (DBMS_SQLTUNE_UTIL2.IS_IMPORTED_PDB(L_DBID) = < DBMS_SQLTUNE_UTIL2.STR_NO) < ) < THEN 1576a1578,1580 > > IF (SYS_CONTEXT('USERENV','CON_ID') = 1) THEN > 1578,1584c1582,1605 < SYS.PRVT_AWR_VIEWER.REPORT_CONTAINERS_XML( < P_START_TIME => L_SELECTED_START_TIME, < P_END_TIME => L_SELECTED_END_TIME, < P_DBID => L_DBID, < P_INST_ID => INST_ID), < ZLIB2BASE64 => L_COMPRESS_XML); < END IF; --- > SYS.PRVT_AWR_VIEWER.REPORT_CONTAINERS_XML( > P_IS_REALTIME => L_IS_REALTIME, > P_START_TIME => L_SELECTED_START_TIME, > P_END_TIME => L_SELECTED_END_TIME, > P_DBID => L_DBID, > P_INST_ID => INST_ID), > ZLIB2BASE64 => L_COMPRESS_XML); > > ELSIF ( (DBMS_SQLTUNE_UTIL2.IS_IMPORTED_CDB(L_DBID) = > DBMS_SQLTUNE_UTIL2.STR_YES) > AND > (DBMS_SQLTUNE_UTIL2.IS_IMPORTED_PDB(L_DBID) = > DBMS_SQLTUNE_UTIL2.STR_NO) > ) > THEN > > L_CONTAINERS_XML := DBMS_REPORT.TRANSFORM_REPORT_XML( > SYS.PRVT_AWR_VIEWER.REPORT_CONTAINERS_XML( > P_START_TIME => L_SELECTED_START_TIME, > P_END_TIME => L_SELECTED_END_TIME, > P_DBID => L_DBID, > P_INST_ID => INST_ID), > ZLIB2BASE64 => L_COMPRESS_XML); > END IF; 1587,1593c1608,1614 < < IF (L_RAC = 1) THEN < < L_IS_RAC := I_IS_RAC(P_IS_REALTIME => L_IS_REALTIME, < P_TARGET_DBID => L_DBID, < P_START_TIME => L_SELECTED_START_TIME, < P_END_TIME => L_SELECTED_END_TIME); --- > > IF (L_RAC = 1) THEN > > L_IS_RAC := I_IS_RAC(P_IS_REALTIME => L_IS_REALTIME, > P_TARGET_DBID => L_DBID, > P_START_TIME => L_SELECTED_START_TIME, > P_END_TIME => L_SELECTED_END_TIME); 1596,1606c1617,1627 < IF (L_IS_RAC = 'yes') THEN < L_RAC_XML := DBMS_REPORT.TRANSFORM_REPORT_XML( < SYS.PRVT_AWR_VIEWER.REPORT_RAC_XML( < START_TIME => L_SELECTED_START_TIME, < END_TIME => L_SELECTED_END_TIME, < LAST_REFRESH_TIME => NULL, < INST_ID => INST_ID, < DBID => L_DBID, < IS_REALTIME => L_IS_REALTIME, < SHOW_SQL => NULL), < ZLIB2BASE64 => L_COMPRESS_XML); --- > IF (L_IS_RAC = 'yes') THEN > L_RAC_XML := DBMS_REPORT.TRANSFORM_REPORT_XML( > SYS.PRVT_AWR_VIEWER.REPORT_RAC_XML( > START_TIME => L_SELECTED_START_TIME, > END_TIME => L_SELECTED_END_TIME, > LAST_REFRESH_TIME => NULL, > INST_ID => INST_ID, > DBID => L_DBID, > IS_REALTIME => L_IS_REALTIME, > SHOW_SQL => NULL), > ZLIB2BASE64 => L_COMPRESS_XML); 1607a1629 > END IF; 1663c1685 < IF (L_WORKLOAD = 1 AND IS_OMX = 0) THEN --- > IF (L_WORKLOAD = 1) THEN 2448d2469 < 2520d2540 < FILTERED => 1, 3214d3233 < FILTERED => 1,
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '19.05.01.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '19.05.02.00';
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '19.06.00.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '19.07.00.00';
122c122 < CATALOGVERSION CONSTANT VARCHAR2(11) := '19.06.00.00'; --- > CATALOGVERSION CONSTANT VARCHAR2(11) := '19.06.01.00';
1055a1056,1060 > EXCEPTION > WHEN OTHERS THEN > CONTENT_TYPE := CONTENT_TYPE_XML; > RETURN XMLTYPE('<mesg type="oraerr">'|| SQLERRM || > '</mesg>').GETCLOBVAL(); 2011a2017,2021 > > > > > 2021c2031,2032 < P_PACKS OUT NUMBER --- > P_PACKS OUT NUMBER, > P_CLOUD_SERVICE_TYPE OUT NUMBER 2257a2269,2299 > > IF (V_RESOLVED_DB_TYPE > IN (DBMS_SQLTUNE_UTIL2.DB_TYPE_PDB, DBMS_SQLTUNE_UTIL2.DB_TYPE_IMP)) > THEN > SELECT CASE MAX(VALUE) > WHEN 'DWCS' THEN 1 > WHEN 'EECS' THEN 2 > WHEN 'PAAS' THEN 3 > WHEN 'OLTP' THEN 4 > ELSE 0 > END > INTO P_CLOUD_SERVICE_TYPE > FROM SYS.AWR_PDB_PARAMETER > WHERE DBID = P_DBID > AND SNAP_ID = V_END_SNAP > AND PARAMETER_NAME = '_cloud_service_type'; > ELSE > SELECT CASE MAX(VALUE) > WHEN 'DWCS' THEN 1 > WHEN 'EECS' THEN 2 > WHEN 'PAAS' THEN 3 > WHEN 'OLTP' THEN 4 > ELSE 0 > END > INTO P_CLOUD_SERVICE_TYPE > FROM SYS.AWR_ROOT_PARAMETER > WHERE DBID = P_DBID > AND SNAP_ID = V_END_SNAP > AND PARAMETER_NAME = '_cloud_service_type'; > END IF; >
63c63,65 < ATTRIBUTE, CPS); --- > ATTRIBUTE, CPS, > DBMS_ASSERT.ENQUOTE_NAME( > SYS_CONTEXT('USERENV','CURRENT_USER'), FALSE)); 98c100,102 < ATTRIBUTE, CPS); --- > ATTRIBUTE, CPS, > DBMS_ASSERT.ENQUOTE_NAME( > SYS_CONTEXT('USERENV','CURRENT_USER'), FALSE)); 130c134,136 < NAMESPACE, ATTRIBUTE, CPS); --- > NAMESPACE, ATTRIBUTE, CPS, > DBMS_ASSERT.ENQUOTE_NAME( > SYS_CONTEXT('USERENV','CURRENT_USER'), FALSE)); 154c160,162 < OBJECT_NAME,POLICY_NAME, CPS); --- > OBJECT_NAME,POLICY_NAME, CPS, > DBMS_ASSERT.ENQUOTE_NAME( > SYS_CONTEXT('USERENV','CURRENT_USER'), FALSE)); 178c186,188 < OBJECT_NAME, POLICY_NAME, CPS); --- > OBJECT_NAME, POLICY_NAME, CPS, > DBMS_ASSERT.ENQUOTE_NAME( > SYS_CONTEXT('USERENV','CURRENT_USER'), FALSE)); 204c214,216 < OBJECT_NAME, POLICY_NAME, ENABLE, CPS); --- > OBJECT_NAME, POLICY_NAME, ENABLE, CPS, > DBMS_ASSERT.ENQUOTE_NAME( > SYS_CONTEXT('USERENV','CURRENT_USER'), FALSE)); 226c238,240 < OBJECT_NAME,POLICY_GROUP, CPS); --- > OBJECT_NAME,POLICY_GROUP, CPS, > DBMS_ASSERT.ENQUOTE_NAME( > SYS_CONTEXT('USERENV','CURRENT_USER'), FALSE)); 282c296,298 < ATTRIBUTE, CPS); --- > ATTRIBUTE, CPS, > DBMS_ASSERT.ENQUOTE_NAME( > SYS_CONTEXT('USERENV','CURRENT_USER'), FALSE)); 307c323,325 < OBJECT_NAME,NAMESPACE, ATTRIBUTE, CPS); --- > OBJECT_NAME,NAMESPACE, ATTRIBUTE, CPS, > DBMS_ASSERT.ENQUOTE_NAME( > SYS_CONTEXT('USERENV','CURRENT_USER'), FALSE)); 329c347,349 < OBJECT_NAME,POLICY_GROUP, CPS); --- > OBJECT_NAME,POLICY_GROUP, CPS, > DBMS_ASSERT.ENQUOTE_NAME( > SYS_CONTEXT('USERENV','CURRENT_USER'), FALSE)); 354c374,376 < OBJECT_NAME,POLICY_GROUP, POLICY_NAME, CPS); --- > OBJECT_NAME,POLICY_GROUP, POLICY_NAME, CPS, > DBMS_ASSERT.ENQUOTE_NAME( > SYS_CONTEXT('USERENV','CURRENT_USER'), FALSE)); 379c401,403 < OBJECT_NAME,NAMESPACE, ATTRIBUTE, CPS); --- > OBJECT_NAME,NAMESPACE, ATTRIBUTE, CPS, > DBMS_ASSERT.ENQUOTE_NAME( > SYS_CONTEXT('USERENV','CURRENT_USER'), FALSE)); 405c429,431 < OBJECT_NAME,GROUP_NAME, POLICY_NAME, CPS); --- > OBJECT_NAME,GROUP_NAME, POLICY_NAME, CPS, > DBMS_ASSERT.ENQUOTE_NAME( > SYS_CONTEXT('USERENV','CURRENT_USER'), FALSE)); 431c457,459 < OBJECT_NAME,GROUP_NAME, POLICY_NAME, ENABLE, CPS); --- > OBJECT_NAME,GROUP_NAME, POLICY_NAME, ENABLE, CPS, > DBMS_ASSERT.ENQUOTE_NAME( > SYS_CONTEXT('USERENV','CURRENT_USER'), FALSE)); 449c477,479 < OBJECT_NAME,GROUP_NAME, POLICY_NAME, FALSE, CPS); --- > OBJECT_NAME,GROUP_NAME, POLICY_NAME, FALSE, CPS, > DBMS_ASSERT.ENQUOTE_NAME( > SYS_CONTEXT('USERENV','CURRENT_USER'), FALSE));
38c38,39 < CPS IN BOOLEAN := FALSE) IS --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2) IS 40c41 < NAME "kzraadp" --- > NAME "kzraadp1" 44,49c45,58 < OBJECT_SCHEMA OCISTRING, OBJECT_SCHEMA INDICATOR SB2, < OBJECT_NAME OCISTRING, POLICY_NAME OCISTRING, < FUNCTION_SCHEMA OCISTRING, FUNCTION_SCHEMA INDICATOR SB2, < POLICY_FUNCTION OCISTRING, STATEMENT_TYPES OCISTRING, < STATEMENT_TYPES INDICATOR SB2, UPDATE_CHECK UB1, ENABLE UB1, < STATIC_POLICY UB1, POLICY_TYPE SB4, POLICY_TYPE INDICATOR SB2, --- > OBJECT_SCHEMA OCISTRING, > OBJECT_SCHEMA INDICATOR SB2, > OBJECT_NAME OCISTRING, > POLICY_NAME OCISTRING, > FUNCTION_SCHEMA OCISTRING, > FUNCTION_SCHEMA INDICATOR SB2, > POLICY_FUNCTION OCISTRING, > STATEMENT_TYPES OCISTRING, > STATEMENT_TYPES INDICATOR SB2, > UPDATE_CHECK UB1, > ENABLE UB1, > STATIC_POLICY UB1, > POLICY_TYPE SB4, > POLICY_TYPE INDICATOR SB2, 51c60,61 < SEC_RELEVANT_COLS OCISTRING, SEC_RELEVANT_COLS INDICATOR SB2, --- > SEC_RELEVANT_COLS OCISTRING, > SEC_RELEVANT_COLS INDICATOR SB2, 54,55c64,69 < NAMESPACE OCISTRING, NAMESPACE INDICATOR SB2, < ATTRIBUTE OCISTRING, ATTRIBUTE INDICATOR SB2, CPS UB1) --- > NAMESPACE OCISTRING, > NAMESPACE INDICATOR SB2, > ATTRIBUTE OCISTRING, > ATTRIBUTE INDICATOR SB2, > CPS UB1, > INVOKER OCISTRING) 77c91,92 < CPS IN BOOLEAN := FALSE) IS --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2) IS 79c94 < NAME "kzraealp" --- > NAME "kzraealp1" 83,86c98,107 < OBJECT_SCHEMA OCISTRING, OBJECT_SCHEMA INDICATOR SB2, < OBJECT_NAME OCISTRING, POLICY_NAME OCISTRING, < ALTER_OPTION SB4, ALTER_OPTION INDICATOR SB2, < NAMESPACE OCISTRING, ATTRIBUTE OCISTRING, CPS UB1) --- > OBJECT_SCHEMA OCISTRING, > OBJECT_SCHEMA INDICATOR SB2, > OBJECT_NAME OCISTRING, > POLICY_NAME OCISTRING, > ALTER_OPTION SB4, > ALTER_OPTION INDICATOR SB2, > NAMESPACE OCISTRING, > ATTRIBUTE OCISTRING, > CPS UB1, > INVOKER OCISTRING) 110c131,132 < CPS IN BOOLEAN := FALSE) IS --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2) IS 112c134 < NAME "kzraealgp" --- > NAME "kzraealgp1" 116,120c138,148 < OBJECT_SCHEMA OCISTRING, OBJECT_SCHEMA INDICATOR SB2, < OBJECT_NAME OCISTRING, POLICY_GROUP OCISTRING, < POLICY_NAME OCISTRING, ALTER_OPTION SB4, < ALTER_OPTION INDICATOR SB2, NAMESPACE OCISTRING, < ATTRIBUTE OCISTRING, CPS UB1) --- > OBJECT_SCHEMA OCISTRING, > OBJECT_SCHEMA INDICATOR SB2, > OBJECT_NAME OCISTRING, > POLICY_GROUP OCISTRING, > POLICY_NAME OCISTRING, > ALTER_OPTION SB4, > ALTER_OPTION INDICATOR SB2, > NAMESPACE OCISTRING, > ATTRIBUTE OCISTRING, > CPS UB1, > INVOKER OCISTRING) 136c164,165 < CPS IN BOOLEAN := FALSE) IS --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2) IS 138c167 < NAME "kzradrp" --- > NAME "kzradrp1" 142,143c171,176 < OBJECT_SCHEMA OCISTRING, OBJECT_SCHEMA INDICATOR SB2, < OBJECT_NAME OCISTRING, POLICY_NAME OCISTRING, CPS UB1) --- > OBJECT_SCHEMA OCISTRING, > OBJECT_SCHEMA INDICATOR SB2, > OBJECT_NAME OCISTRING, > POLICY_NAME OCISTRING, > CPS UB1, > INVOKER OCISTRING) 159c192,193 < CPS IN BOOLEAN := FALSE) IS --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2) IS 161c195 < NAME "kzraflp" --- > NAME "kzraflp1" 165,167c199,206 < OBJECT_SCHEMA OCISTRING, OBJECT_SCHEMA INDICATOR SB2, < OBJECT_NAME OCISTRING, OBJECT_NAME INDICATOR SB2, < POLICY_NAME OCISTRING, POLICY_NAME INDICATOR SB2, CPS UB1) --- > OBJECT_SCHEMA OCISTRING, > OBJECT_SCHEMA INDICATOR SB2, > OBJECT_NAME OCISTRING, > OBJECT_NAME INDICATOR SB2, > POLICY_NAME OCISTRING, > POLICY_NAME INDICATOR SB2, > CPS UB1, > INVOKER OCISTRING) 185c224,225 < CPS IN BOOLEAN := FALSE ) IS --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2) IS 187c227 < NAME "kzraenp" --- > NAME "kzraenp1" 191,193c231,237 < OBJECT_SCHEMA OCISTRING, OBJECT_SCHEMA INDICATOR SB2, < OBJECT_NAME OCISTRING, POLICY_NAME OCISTRING, ENABLE UB1, < CPS UB1) --- > OBJECT_SCHEMA OCISTRING, > OBJECT_SCHEMA INDICATOR SB2, > OBJECT_NAME OCISTRING, > POLICY_NAME OCISTRING, > ENABLE UB1, > CPS UB1, > INVOKER OCISTRING) 207c251,252 < CPS IN BOOLEAN := FALSE) IS --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2) IS 209c254 < NAME "kzracpg" --- > NAME "kzracpg1" 213,214c258,263 < OBJECT_SCHEMA OCISTRING, OBJECT_SCHEMA INDICATOR SB2, < OBJECT_NAME OCISTRING, POLICY_GROUP OCISTRING, CPS UB1) --- > OBJECT_SCHEMA OCISTRING, > OBJECT_SCHEMA INDICATOR SB2, > OBJECT_NAME OCISTRING, > POLICY_GROUP OCISTRING, > CPS UB1, > INVOKER OCISTRING) 256,257c305,306 < CPS IN BOOLEAN := FALSE) < IS --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2) IS 259c308 < NAME "kzraptg" --- > NAME "kzraptg1" 263,264c312,315 < OBJECT_SCHEMA OCISTRING, OBJECT_SCHEMA INDICATOR SB2, < OBJECT_NAME OCISTRING, POLICY_GROUP OCISTRING, --- > OBJECT_SCHEMA OCISTRING, > OBJECT_SCHEMA INDICATOR SB2, > OBJECT_NAME OCISTRING, > POLICY_GROUP OCISTRING, 266,271c317,329 < FUNCTION_SCHEMA OCISTRING, FUNCTION_SCHEMA INDICATOR SB2, < POLICY_FUNCTION OCISTRING, STATEMENT_TYPES OCISTRING, < STATEMENT_TYPES INDICATOR SB2, UPDATE_CHECK UB1, ENABLE UB1, < STATIC_POLICY UB1, POLICY_TYPE SB4, POLICY_TYPE INDICATOR SB2, < LONG_PREDICATE UB1, < SEC_RELEVANT_COLS OCISTRING, SEC_RELEVANT_COLS INDICATOR SB2, --- > FUNCTION_SCHEMA OCISTRING, > FUNCTION_SCHEMA INDICATOR SB2, > POLICY_FUNCTION OCISTRING, > STATEMENT_TYPES OCISTRING, > STATEMENT_TYPES INDICATOR SB2, > UPDATE_CHECK UB1, > ENABLE UB1, > STATIC_POLICY UB1, > POLICY_TYPE SB4, > POLICY_TYPE INDICATOR SB2, > LONG_PREDICATE UB1, > SEC_RELEVANT_COLS OCISTRING, > SEC_RELEVANT_COLS INDICATOR SB2, 274,275c332,337 < NAMESPACE OCISTRING, NAMESPACE INDICATOR SB2, < ATTRIBUTE OCISTRING, ATTRIBUTE INDICATOR SB2, CPS UB1) --- > NAMESPACE OCISTRING, > NAMESPACE INDICATOR SB2, > ATTRIBUTE OCISTRING, > ATTRIBUTE INDICATOR SB2, > CPS UB1, > INVOKER OCISTRING) 292c354,355 < CPS IN BOOLEAN := FALSE) IS --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2) IS 294c357 < NAME "kzraacx" --- > NAME "kzraacx1" 298,300c361,367 < OBJECT_SCHEMA OCISTRING, OBJECT_SCHEMA INDICATOR SB2, < OBJECT_NAME OCISTRING, NAMESPACE OCISTRING, < ATTRIBUTE OCISTRING, CPS UB1) --- > OBJECT_SCHEMA OCISTRING, > OBJECT_SCHEMA INDICATOR SB2, > OBJECT_NAME OCISTRING, > NAMESPACE OCISTRING, > ATTRIBUTE OCISTRING, > CPS UB1, > INVOKER OCISTRING) 314c381,382 < CPS IN BOOLEAN := FALSE) IS --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2) IS 316c384 < NAME "kzradpg" --- > NAME "kzradpg1" 320,321c388,393 < OBJECT_SCHEMA OCISTRING, OBJECT_SCHEMA INDICATOR SB2, < OBJECT_NAME OCISTRING, POLICY_GROUP OCISTRING, CPS UB1) --- > OBJECT_SCHEMA OCISTRING, > OBJECT_SCHEMA INDICATOR SB2, > OBJECT_NAME OCISTRING, > POLICY_GROUP OCISTRING, > CPS UB1, > INVOKER OCISTRING) 338c410,411 < CPS IN BOOLEAN := FALSE) IS --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2) IS 341c414 < NAME "kzrapfg" --- > NAME "kzrapfg1" 345,347c418,424 < OBJECT_SCHEMA OCISTRING, OBJECT_SCHEMA INDICATOR SB2, < OBJECT_NAME OCISTRING, POLICY_GROUP OCISTRING, < POLICY_NAME OCISTRING, CPS UB1) --- > OBJECT_SCHEMA OCISTRING, > OBJECT_SCHEMA INDICATOR SB2, > OBJECT_NAME OCISTRING, > POLICY_GROUP OCISTRING, > POLICY_NAME OCISTRING, > CPS UB1, > INVOKER OCISTRING) 364c441,442 < CPS IN BOOLEAN := FALSE) IS --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2) IS 366c444 < NAME "kzradcx" --- > NAME "kzradcx1" 370,372c448,454 < OBJECT_SCHEMA OCISTRING, OBJECT_SCHEMA INDICATOR SB2, < OBJECT_NAME OCISTRING, NAMESPACE OCISTRING, < ATTRIBUTE OCISTRING, CPS UB1) --- > OBJECT_SCHEMA OCISTRING, > OBJECT_SCHEMA INDICATOR SB2, > OBJECT_NAME OCISTRING, > NAMESPACE OCISTRING, > ATTRIBUTE OCISTRING, > CPS UB1, > INVOKER OCISTRING) 390c472,473 < CPS IN BOOLEAN := FALSE) IS --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2) IS 392c475 < NAME "kzragflp" --- > NAME "kzragflp1" 396,399c479,488 < OBJECT_SCHEMA OCISTRING, OBJECT_SCHEMA INDICATOR SB2, < OBJECT_NAME OCISTRING, OBJECT_NAME INDICATOR SB2, < GROUP_NAME OCISTRING, GROUP_NAME INDICATOR SB2, < POLICY_NAME OCISTRING, POLICY_NAME INDICATOR SB2, CPS UB1) --- > OBJECT_SCHEMA OCISTRING, > OBJECT_SCHEMA INDICATOR SB2, > OBJECT_NAME OCISTRING, > OBJECT_NAME INDICATOR SB2, > GROUP_NAME OCISTRING, > GROUP_NAME INDICATOR SB2, > POLICY_NAME OCISTRING, > POLICY_NAME INDICATOR SB2, > CPS UB1, > INVOKER OCISTRING) 417c506,507 < CPS IN BOOLEAN := FALSE) IS --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2) IS 419c509 < NAME "kzragenp" --- > NAME "kzragenp1" 423,425c513,520 < OBJECT_SCHEMA OCISTRING, OBJECT_SCHEMA INDICATOR SB2, < OBJECT_NAME OCISTRING, GROUP_NAME OCISTRING, < POLICY_NAME OCISTRING, ENABLE UB1, CPS UB1) --- > OBJECT_SCHEMA OCISTRING, > OBJECT_SCHEMA INDICATOR SB2, > OBJECT_NAME OCISTRING, > GROUP_NAME OCISTRING, > POLICY_NAME OCISTRING, > ENABLE UB1, > CPS UB1, > INVOKER OCISTRING) 442c537,538 < CPS IN BOOLEAN := FALSE) IS --- > CPS IN BOOLEAN := FALSE, > INVOKER IN VARCHAR2) IS 444c540 < NAME "kzragenp" --- > NAME "kzragenp1" 448,450c544,551 < OBJECT_SCHEMA OCISTRING, OBJECT_SCHEMA INDICATOR SB2, < OBJECT_NAME OCISTRING, GROUP_NAME OCISTRING, < POLICY_NAME OCISTRING, ENABLE UB1, CPS UB1) --- > OBJECT_SCHEMA OCISTRING, > OBJECT_SCHEMA INDICATOR SB2, > OBJECT_NAME OCISTRING, > GROUP_NAME OCISTRING, > POLICY_NAME OCISTRING, > ENABLE UB1, > CPS UB1, > INVOKER OCISTRING)
541a542 >
4503,4505c4503 < IF (SQLCODE = -1031) THEN < ERR_CREATE_DIR := TRUE; < ELSE --- > IF (DBMS_STATS_INTERNAL.IS_URGENT_ERROR) THEN 4506a4505,4507 > ELSE > > ERR_CREATE_DIR := TRUE; 4634c4635,4639 < RETURN; --- > IF (DBMS_STATS_INTERNAL.IS_URGENT_ERROR) THEN > RAISE; > ELSE > RETURN; > END IF;
669a670,716 > > > > > > > > > > > > > > > FUNCTION GET_CLOUD_SERVICE_TYPE > RETURN VARCHAR2 > IS > BEGIN > > RETURN NVL(SYS_CONTEXT('userenv', 'cloud_service'), CLOUD_SERVICE_TYPE_NONE); > > END GET_CLOUD_SERVICE_TYPE; > > > > > > > > > > > > > FUNCTION IS_ADW > RETURN BOOLEAN > IS > BEGIN > > IF (GET_CLOUD_SERVICE_TYPE() = CLOUD_SERVICE_TYPE_ADW) THEN > RETURN TRUE; > ELSE > RETURN FALSE; > END IF; > > END IS_ADW; >
712,719c712,715 < RS_CTR(DBMS_AWR_REPORT_LAYOUT.DICT_CACHE, AWRRPT_PDB_FOR_ROOT < + AWRRPT_PDB_FOR_PDB), < RS_CTR(DBMS_AWR_REPORT_LAYOUT.DICT_CACHE_RAC, AWRRPT_PDB_FOR_ROOT < + AWRRPT_PDB_FOR_PDB), < RS_CTR(DBMS_AWR_REPORT_LAYOUT.LIB_CACHE, AWRRPT_PDB_FOR_ROOT < + AWRRPT_PDB_FOR_PDB), < RS_CTR(DBMS_AWR_REPORT_LAYOUT.LIB_CACHE_RAC, AWRRPT_PDB_FOR_ROOT < + AWRRPT_PDB_FOR_PDB), --- > RS_CTR(DBMS_AWR_REPORT_LAYOUT.DICT_CACHE, AWRRPT_DEFAULT), > RS_CTR(DBMS_AWR_REPORT_LAYOUT.DICT_CACHE_RAC, AWRRPT_DEFAULT), > RS_CTR(DBMS_AWR_REPORT_LAYOUT.LIB_CACHE, AWRRPT_DEFAULT), > RS_CTR(DBMS_AWR_REPORT_LAYOUT.LIB_CACHE_RAC, AWRRPT_DEFAULT), 963,970c959,962 < RS_CTR(DBMS_AWR_REPORT_LAYOUT.DIFF_DIC_CACHE, AWRRPT_PDB_FOR_ROOT < + AWRRPT_PDB_FOR_PDB), < RS_CTR(DBMS_AWR_REPORT_LAYOUT.DIFF_DIC_CACHE_RAC, AWRRPT_PDB_FOR_ROOT < + AWRRPT_PDB_FOR_PDB), < RS_CTR(DBMS_AWR_REPORT_LAYOUT.DIFF_LIB_CACHE, AWRRPT_PDB_FOR_ROOT < + AWRRPT_PDB_FOR_PDB), < RS_CTR(DBMS_AWR_REPORT_LAYOUT.DIFF_LIB_CACHE_RAC, AWRRPT_PDB_FOR_ROOT < + AWRRPT_PDB_FOR_PDB), --- > RS_CTR(DBMS_AWR_REPORT_LAYOUT.DIFF_DIC_CACHE, AWRRPT_DEFAULT), > RS_CTR(DBMS_AWR_REPORT_LAYOUT.DIFF_DIC_CACHE_RAC, AWRRPT_DEFAULT), > RS_CTR(DBMS_AWR_REPORT_LAYOUT.DIFF_LIB_CACHE, AWRRPT_DEFAULT), > RS_CTR(DBMS_AWR_REPORT_LAYOUT.DIFF_LIB_CACHE_RAC, AWRRPT_DEFAULT), 1218,1219c1210 < RS_CTR(DBMS_AWR_REPORT_LAYOUT.GAWRG_LIB_CACHE, AWRRPT_PDB_FOR_ROOT < + AWRRPT_PDB_FOR_PDB) --- > RS_CTR(DBMS_AWR_REPORT_LAYOUT.GAWRG_LIB_CACHE, AWRRPT_DEFAULT) 13737c13728,13731 < and b.status = ''OPEN'''; --- > and b.status = ''OPEN'' > and exists (select 1 from awr_pdb_snapshot s > where s.dbid = b.dbid and s.snap_id = b.snap_id > and s.instance_number = b.thread#)'; 13775c13769,13772 < and e.status = ''OPEN'''; --- > and e.status = ''OPEN'' > and exists (select 1 from awr_pdb_snapshot s > where s.dbid = e.dbid and s.snap_id = e.snap_id > and s.instance_number = e.thread#)'; 14602a14600,14658 > > IF TO_HTML THEN > APPEND_ROW(PARAGRAPH_TAG); > END IF; > > APPEND_ROW('Database Resource Limits'); > > IF (TO_HTML) THEN > TAB_SUMMARY := 'This table displays database resource limits'; > APPEND_ROW(PARAGRAPH_TAG); > APPEND_ROW(AWR_TAB_STYLE || TAB_SUMMARY || TABLE_CLOSE); > GENERIC_TABLE_HEADER(HTML_TABLE_HEADER('', 'Begin', 'End')); > GENERIC_TABLE_ROW(HTML_TABLE_ROW( > NEW_CELL_TEXT('CPUs:'), > NEW_CELL_NUM(RPT_PARAMS(STAT_CPU_COUNT_B)), > NEW_CELL_NUM(RPT_PARAMS(STAT_CPU_COUNT_E))), TRUE, 1); > GENERIC_TABLE_ROW(HTML_TABLE_ROW( > NEW_CELL_TEXT('SGA Target:'), > NEW_CELL_NUM(RPT_PARAMS(STAT_SGA_TARGET_PARAM_B), '999,999,999,999'), > NEW_CELL_NUM(RPT_PARAMS(STAT_SGA_TARGET_PARAM_E), '999,999,999,999')), > TRUE, 1); > GENERIC_TABLE_ROW(HTML_TABLE_ROW( > NEW_CELL_TEXT('PGA Target:'), > NEW_CELL_NUM(RPT_PARAMS(STAT_PGA_TARGET_PARAM_B), '999,999,999,999'), > NEW_CELL_NUM(RPT_PARAMS(STAT_PGA_TARGET_PARAM_E), '999,999,999,999')), > TRUE, 1); > GENERIC_TABLE_ROW(HTML_TABLE_ROW( > NEW_CELL_TEXT('Memory Target'), > NEW_CELL_NUM(RPT_PARAMS(STAT_MEMORY_TARGET_B), '999,999,999,999'), > NEW_CELL_NUM(RPT_PARAMS(STAT_MEMORY_TARGET_E), '999,999,999,999')), > TRUE, 1); > APPEND_ROW(TABLE_END); > > ELSE > APPEND_ROW('~~~~~~~~~~~~~~~~~~~~~~~~' || SP_CHR || > LPAD('Begin End',37)); > APPEND_ROW(LPAD('---------------- ----------------',62)); > APPEND_ROW(LPAD('CPUs:',28) || SP_CHR || > TO_CHAR(RPT_PARAMS(STAT_CPU_COUNT_B), '999,999,999,999') || SP_CHR || > TO_CHAR(RPT_PARAMS(STAT_CPU_COUNT_E), '999,999,999,999')); > APPEND_ROW(LPAD('SGA Target:',28) || SP_CHR || > TO_CHAR(RPT_PARAMS(STAT_SGA_TARGET_PARAM_B), '999,999,999,999') > || SP_CHR || > TO_CHAR(RPT_PARAMS(STAT_SGA_TARGET_PARAM_E), '999,999,999,999')); > APPEND_ROW(LPAD('PGA Target:',28) || SP_CHR || > TO_CHAR(RPT_PARAMS(STAT_PGA_TARGET_PARAM_B), '999,999,999,999') > || SP_CHR || > TO_CHAR(RPT_PARAMS(STAT_PGA_TARGET_PARAM_E), '999,999,999,999')); > APPEND_ROW(LPAD('Memory Target:',28) || SP_CHR || > TO_CHAR(RPT_PARAMS(STAT_MEMORY_TARGET_B), '999,999,999,999') > || SP_CHR || > TO_CHAR(RPT_PARAMS(STAT_MEMORY_TARGET_E), '999,999,999,999')); > APPEND_ROW(BLANK_LINE); > END IF; > > > > > 14913c14969,14972 < and b.status = ''OPEN'''; --- > and b.status = ''OPEN'' > and exists (select 1 from awr_pdb_snapshot s > where s.dbid = b.dbid and s.snap_id = b.snap_id > and s.instance_number = b.thread#)'; 14951c15010,15013 < and e.status = ''OPEN'''; --- > and e.status = ''OPEN'' > and exists (select 1 from awr_pdb_snapshot s > where s.dbid = e.dbid and s.snap_id = e.snap_id > and s.instance_number = e.thread#)'; 15827c15889,15891 < RPAD('Startup Time', 15); --- > RPAD('Startup Time', 15) || SP_CHR || > RPAD('User Name', 12) || SP_CHR || > RPAD('System Data Visible', 20); 15833c15897,15899 < RPAD('-', 15, '-'); --- > RPAD('-', 15, '-') || SP_CHR || > RPAD('-', 12, '-') || SP_CHR || > RPAD('-', 20, '-'); 15837,15839c15903,15908 < OUTPUT := RPAD(RPT_PARAMS(STAT_INSTNAME), 12) || SP_CHR || < TO_CHAR(L_INST_NUM, '9999999') || SP_CHR || < TO_CHAR(RPT_TIME_VALS(STAT_INSTSTART), 'DD-Mon-YY HH24:MI'); --- > OUTPUT := RPAD(RPT_PARAMS(STAT_INSTNAME), 12) || SP_CHR || > TO_CHAR(L_INST_NUM, '9999999') || SP_CHR || > TO_CHAR(RPT_TIME_VALS(STAT_INSTSTART), 'DD-Mon-YY HH24:MI') > || SP_CHR || > RPAD(SYS_CONTEXT('USERENV', 'SESSION_USER'), 12) || SP_CHR || > RPAD(SYS_CONTEXT('USERENV', 'SYSTEM_DATA_VISIBLE'), 20); 15875c15944,15945 < HDR := HTML_TABLE_HEADER('Instance','Inst Num','Startup Time'); --- > HDR := HTML_TABLE_HEADER('Instance','Inst Num','Startup Time', > 'User Name', 'System Data Visible'); 15881c15951,15953 < TO_CHAR(RPT_TIME_VALS(STAT_INSTSTART),'DD-Mon-YY HH24:MI')) --- > TO_CHAR(RPT_TIME_VALS(STAT_INSTSTART),'DD-Mon-YY HH24:MI')), > NEW_CELL_TEXT(SYS_CONTEXT('USERENV', 'SESSION_USER')), > NEW_CELL_TEXT(SYS_CONTEXT('USERENV', 'SYSTEM_DATA_VISIBLE')) 22424c22496,22499 < and e.status = ''OPEN'''; --- > and e.status = ''OPEN'' > and exists (select 1 from awr_pdb_snapshot s > where s.dbid = e.dbid and s.snap_id = e.snap_id > and s.instance_number = e.thread#)'; 26904a26980,26983 > ADD_RPT_STAT_IN_SRC(STAT_CPU_COUNT_B, 'cpu_count'); > ADD_RPT_STAT_IN_SRC(STAT_SGA_TARGET_PARAM_B, 'sga_target'); > ADD_RPT_STAT_IN_SRC(STAT_PGA_TARGET_PARAM_B, 'pga_aggregate_target'); > ADD_RPT_STAT_IN_SRC(STAT_MEMORY_TARGET_B, 'memory_target'); 26926,26927d27004 < ADD_RPT_STAT_IN_SRC(STAT_SGA_PARAM, 'sga_target'); < ADD_RPT_STAT_IN_SRC(STAT_PGA_PARAM, 'pga_aggregate_target'); 26931a27009,27012 > ADD_RPT_STAT_IN_SRC(STAT_CPU_COUNT_E, 'cpu_count'); > ADD_RPT_STAT_IN_SRC(STAT_SGA_TARGET_PARAM_E, 'sga_target'); > ADD_RPT_STAT_IN_SRC(STAT_PGA_TARGET_PARAM_E, 'pga_aggregate_target'); > ADD_RPT_STAT_IN_SRC(STAT_MEMORY_TARGET_E, 'memory_target');
6662,6668c6662 < < < < V_SCB.FATALFILEERROR := 0; < < L_RESPONSE := KUPC$QUEUE.TRANSCEIVE(KUPC$_WORKER_FILE_LIST(WID)); < IF L_RESPONSE IS NULL OR L_RESPONSE.MSGTYPE <> KUPCC.FILE_LIST_MSGTYPE --- > IF (SYS.KUPP$PROC.WHAT_AM_I != SYS.KUPP$PROC.VC_KUPP_PROC_TYPE_EXTTBL) 6670,6673c6664,6692 < DEBUG('Received unexpected msgtype ' || L_RESPONSE.MSGTYPE || < ' in response to FILE_LIST request.'); < V_SCB.FATALFILEERROR := KUPCC.E_INT_MASTER_NORMAL_EXIT_NUM; < DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR(KUPCC.E_INT_MASTER_NORMAL_EXIT_NUM); --- > > > > V_SCB.FATALFILEERROR := 0; > > L_RESPONSE := KUPC$QUEUE.TRANSCEIVE(KUPC$_WORKER_FILE_LIST(WID)); > IF L_RESPONSE IS NULL OR L_RESPONSE.MSGTYPE <> KUPCC.FILE_LIST_MSGTYPE > THEN > DEBUG('Received unexpected msgtype ' || L_RESPONSE.MSGTYPE || > ' in response to FILE_LIST request.'); > V_SCB.FATALFILEERROR := KUPCC.E_INT_MASTER_NORMAL_EXIT_NUM; > DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR( > KUPCC.E_INT_MASTER_NORMAL_EXIT_NUM, TRUE); > ELSE > V_FILELIST := TREAT(L_RESPONSE AS KUPC$_FILE_LIST).FILELIST; > DEBUG('Retrieved FILE_LIST, Count = ' || V_FILELIST.COUNT); > > DMPFILVER := V_FILELIST(V_FILELIST.FIRST).VERSION; > > > > > > > > > > L_DFLGS := V_FILELIST(V_FILELIST.FIRST).FLAGS; > END IF; 6675,6688c6694,6749 < V_FILELIST := TREAT(L_RESPONSE AS KUPC$_FILE_LIST).FILELIST; < DEBUG('Retrieved FILE_LIST, Count = ' || V_FILELIST.COUNT); < < DMPFILVER := V_FILELIST(V_FILELIST.FIRST).VERSION; < < < < < < < < < < L_DFLGS := V_FILELIST(V_FILELIST.FIRST).FLAGS; --- > > > > > > > > > > > DECLARE > L_FILETYPE NUMBER := 0; > L_MTFULLNAME T_MTFULLNAME := NULL; > L_FILESPEC T_FILENAME := NULL; > L_INFOVALUES SYS.KUPF$FILE_INT.T_INFOVALUES; > L_CREDENTIAL T_CREDENTIAL := NULL; > > BEGIN > L_MTFULLNAME := > ' ' || SYS.DBMS_ASSERT.ENQUOTE_NAME(JOBOWNER, FALSE) || > '.' || SYS.DBMS_ASSERT.ENQUOTE_NAME(JOBNAME, FALSE) || ' '; > > EXECUTE IMMEDIATE > 'SELECT file_name, file_type, user_directory FROM' || > L_MTFULLNAME || > 'WHERE process_order = :1 AND duplicate <> 0 AND ROWNUM = 1' > INTO L_FILESPEC, > L_FILETYPE, > L_CREDENTIAL > USING KUPCC.PO_IMP_FILE; > > > > > > IF (L_FILETYPE <> K_URIDISKTYPE) THEN > L_CREDENTIAL := NULL; > END IF; > > > > > KUPF$FILE_INT.EXAMINE_DUMP_FILE(L_FILESPEC, L_FILETYPE, L_INFOVALUES, > L_CREDENTIAL); > > DMPFILVER := TO_NUMBER(L_INFOVALUES(K_INFO_FILVER_NUM)); > L_DFLGS := TO_NUMBER(L_INFOVALUES(K_INFO_FLAGS)); > > EXCEPTION > WHEN OTHERS THEN > DEBUG('INIT_CB failure: ' || SQLERRM); > V_SCB.FATALFILEERROR := KUPCC.E_INT_MASTER_NORMAL_EXIT_NUM; > DBMS_SYS_ERROR.RAISE_SYSTEM_ERROR( > KUPCC.E_INT_MASTER_NORMAL_EXIT_NUM, TRUE); > END; > END IF; 6690,6691c6751,6752 < KUPUTIL.BITSOC(V_SCB.JOBFLGS, K_KUPFJOB_MDCMP_FLG, < KUPUTIL.BITTST(L_DFLGS, K_KUPFDHF_MDCMP_FLG)); --- > KUPUTIL.BITSOC(V_SCB.JOBFLGS, K_KUPFJOB_MDCMP_FLG, > KUPUTIL.BITTST(L_DFLGS, K_KUPFDHF_MDCMP_FLG)); 6693,6694c6754,6755 < KUPUTIL.BITSOC(V_SCB.JOBFLGS, K_KUPFJOB_TDCMP_FLG, < KUPUTIL.BITTST(L_DFLGS, K_KUPFDHF_TDCMP_FLG)); --- > KUPUTIL.BITSOC(V_SCB.JOBFLGS, K_KUPFJOB_TDCMP_FLG, > KUPUTIL.BITTST(L_DFLGS, K_KUPFDHF_TDCMP_FLG)); 6696,6697c6757,6758 < KUPUTIL.BITSOC(V_SCB.JOBFLGS, K_KUPFJOB_MDENC_FLG, < KUPUTIL.BITTST(L_DFLGS, K_KUPFDHF_MDENC_FLG)); --- > KUPUTIL.BITSOC(V_SCB.JOBFLGS, K_KUPFJOB_MDENC_FLG, > KUPUTIL.BITTST(L_DFLGS, K_KUPFDHF_MDENC_FLG)); 6699,6700c6760,6761 < KUPUTIL.BITSOC(V_SCB.JOBFLGS, K_KUPFJOB_TDENC_FLG, < KUPUTIL.BITTST(L_DFLGS, K_KUPFDHF_TDENC_FLG)); --- > KUPUTIL.BITSOC(V_SCB.JOBFLGS, K_KUPFJOB_TDENC_FLG, > KUPUTIL.BITTST(L_DFLGS, K_KUPFDHF_TDENC_FLG)); 6702,6703c6763,6764 < KUPUTIL.BITSOC(V_SCB.JOBFLGS, K_KUPFJOB_ECENC_FLG, < KUPUTIL.BITTST(L_DFLGS, K_KUPFDHF_ECENC_FLG)); --- > KUPUTIL.BITSOC(V_SCB.JOBFLGS, K_KUPFJOB_ECENC_FLG, > KUPUTIL.BITTST(L_DFLGS, K_KUPFDHF_ECENC_FLG)); 6705,6706c6766 < JFLGS := V_SCB.JOBFLGS; < END IF; --- > JFLGS := V_SCB.JOBFLGS; 8626c8686,8687 < IF (V_SCB.INITIALIZED) --- > IF (V_SCB.INITIALIZED AND > (SYS.KUPP$PROC.WHAT_AM_I != SYS.KUPP$PROC.VC_KUPP_PROC_TYPE_EXTTBL)) 8629a8691,8692 > > DEBUG('SET DEBUG called');
1784a1785,1807 > > > > > > PROCEDURE SET_KGL_TIME_TO_WAIT_FOR_LOCKS ( > LWAIT_TIME IN NUMBER) > ACCESSIBLE BY (PACKAGE SYS.KUPW$WORKER) IS > STMT VARCHAR2(4000) := NULL; > BEGIN > DEBUG('In SET_KGL_TIME_TO_WAIT_FOR_LOCKS' || LWAIT_TIME); > > STMT := 'ALTER SESSION SET "_kgl_time_to_wait_for_locks" =' || LWAIT_TIME; > EXECUTE IMMEDIATE STMT; > > EXCEPTION > WHEN OTHERS THEN > DEBUG('Not able to set _kgl_time_to_wait_for_locks to ' || LWAIT_TIME || > DBMS_UTILITY.FORMAT_ERROR_STACK() || ' ' || > DBMS_UTILITY.FORMAT_CALL_STACK()); > RAISE; > END SET_KGL_TIME_TO_WAIT_FOR_LOCKS; >
160a161,168 > > C_DDL_MAX_RETRIES CONSTANT NUMBER := 25; > C_DDL_RETRY_MIN_WAIT CONSTANT NUMBER := 0.1; > C_DDL_RETRY_MAX_WAIT CONSTANT NUMBER := 1.0; > > > > 1023a1032,1033 > > V_KGL_LOCK_TIMEOUT NUMBER := 15; 25349a25360 > L_GRANTOR KUPCC.T_ID; 25933a25945,25958 > > > > > > > > > IF V_CURRENT_OBJECT_TYPE = 'TABLESPACE_QUOTA' THEN > L_GRANTOR := NULL; > ELSE > L_GRANTOR := NVL(L_OBJDDL(K).GRANTOR,A_GRANTOR(J)); > END IF ; > 25939c25964 < NVL(L_OBJDDL(K).GRANTOR,A_GRANTOR(J)), --- > L_GRANTOR, 25956c25981 < PUT_SQL_FILE(NVL(L_OBJDDL(K).GRANTOR,A_GRANTOR(J)), --- > PUT_SQL_FILE(L_GRANTOR, 27378c27403 < --- > L_WAIT_TIME NUMBER := 0; 27523a27549,27569 > > > > > > IF SQLCODE NOT IN ( -54, > -60, > -4020, > -4021 > ) OR > L_RETRY > C_DDL_MAX_RETRIES THEN > > IF V_KGL_LOCK_TIMEOUT = 1 AND > SQLCODE = -4021 THEN > > > > SEND_TRACE_MSG(NULL, '_kgl_time_to_wait_for_lock reset to 15 minutes'); > SYS.KUPU$UTILITIES_INT.SET_KGL_TIME_TO_WAIT_FOR_LOCKS(15); > V_KGL_LOCK_TIMEOUT := 15; > END IF; 27525d27570 < IF SQLCODE NOT IN (-60,-4020) OR L_RETRY > 10 THEN 27529,27530c27574,27596 < DBMS_LOCK.SLEEP(.5); < SEND_TRACE_MSG(NULL, 'Retrying... (' || L_RETRY || ')'); --- > > > > > > L_WAIT_TIME := TRUNC(DBMS_RANDOM.VALUE(C_DDL_RETRY_MIN_WAIT, > C_DDL_RETRY_MAX_WAIT), 2); > SEND_TRACE_MSG(NULL, 'Retrying... (' || L_RETRY || ' With wait time ' > || L_WAIT_TIME || ' seconds'); > > > > > > > > IF V_KGL_LOCK_TIMEOUT != 1 AND > SQLCODE = -4021 THEN > SEND_TRACE_MSG(NULL, '_kgl_time_to_wait_for_lock set to 1 minute'); > SYS.KUPU$UTILITIES_INT.SET_KGL_TIME_TO_WAIT_FOR_LOCKS(1); > V_KGL_LOCK_TIMEOUT := 1; > END IF; > DBMS_LOCK.SLEEP(L_WAIT_TIME); 34414c34480,34484 < IF V_DEBUG_ENABLE AND V_DEBUG_MORE THEN --- > > > > IF V_DEBUG_ENABLE AND V_DEBUG_MORE AND > KUPP$PROC.WHAT_AM_I() = KUPP$PROC.VC_KUPP_PROC_TYPE_WORKER THEN
1063a1064,1187 > > > > > > > > > > > > > > > > > > > FUNCTION ACTION_CANCEL_SQL_XML( > P_SID IN NUMBER, > P_SERIAL_NUM IN NUMBER, > P_INST_ID IN NUMBER DEFAULT NULL, > P_SQL_ID IN VARCHAR2, > P_SHOW_SQL IN NUMBER DEFAULT 0) > RETURN XMLTYPE > IS > > V_SQL_EXEC CLOB := ''; > V_SQL_PARAMS VARCHAR2(32767); > > > V_REF_PARAMS DBMS_REPORT.REF_STRING_IDSPEC; > > > V_REPORT_XML XMLTYPE := NULL; > > > V_REPORT_BODY_XML XMLTYPE := NULL; > > > V_REPORT_SQL CLOB := ''; > > > V_ELAPSED NUMBER; > V_CPU NUMBER; > > > V_ORIG_ENV DBMS_REPORT.FORMAT_PARAM_VALUES; > V_SET_ENV BOOLEAN; > > > V_INST_ID NUMBER := NVL(P_INST_ID, > USERENV('INSTANCE')); > > BEGIN > > > V_ORIG_ENV := DBMS_REPORT.FORMAT_PARAM_VALUES(); > V_SET_ENV := DBMS_REPORT.SETUP_REPORT_ENV(V_ORIG_ENV); > > > DBMS_REPORT.GET_TIMING_INFO(0, V_ELAPSED, V_CPU); > > V_SQL_PARAMS := P_SID || ',' || P_SERIAL_NUM; > > > IF (V_INST_ID IS NOT NULL) THEN > V_SQL_PARAMS := V_SQL_PARAMS || ',@' || V_INST_ID; > END IF; > > > V_SQL_PARAMS := V_SQL_PARAMS || ',' || P_SQL_ID; > > > V_SQL_PARAMS := DBMS_ASSERT.ENQUOTE_LITERAL(V_SQL_PARAMS); > > > V_SQL_EXEC := 'ALTER SYSTEM CANCEL SQL ' || V_SQL_PARAMS; > > > IF (P_SHOW_SQL IS NULL OR P_SHOW_SQL = 0) THEN > > > BEGIN > EXECUTE IMMEDIATE V_SQL_EXEC; > > EXCEPTION > WHEN OTHERS THEN > RAISE; > END; > > END IF; > > > DBMS_REPORT.GET_TIMING_INFO(1, V_ELAPSED, V_CPU); > > > > V_REPORT_XML := > PRVT_REPORT_TAGS.BUILD_REPORT_TAG( > DBMS_REPORT.BUILD_REPORT_REFERENCE_STRUCT( > 'session', 'cancel_sql', V_REF_PARAMS), > V_ELAPSED, V_CPU); > > > SELECT XMLELEMENT("sql", NULL, V_SQL_EXEC) > INTO V_REPORT_BODY_XML > FROM SYS.DUAL; > > > V_REPORT_XML := V_REPORT_XML.APPENDCHILDXML('/*', V_REPORT_BODY_XML); > > > IF (V_SET_ENV) THEN > > DBMS_REPORT.RESTORE_REPORT_ENV(V_ORIG_ENV); > > END IF; > > > > RETURN V_REPORT_XML; > > END ACTION_CANCEL_SQL_XML;
2530,2578d2529 < PROCEDURE I_CREATE_AWR_CG_MAP( < P_CON_ID IN NUMBER, < P_AWR_PERIOD IN OUT NOCOPY PRVT_AWRV_METADATA, < P_CGRP_MAP IN OUT NOCOPY PRVT_AWRV_INSTTAB) < IS < < SQLSTMT_MAP CONSTANT VARCHAR2(32767) := q'[ < select sys.prvt_awrv_inst(id, name) < from ( < select distinct < consumer_group_id id, < consumer_group_name name < from sys.awr_root_rsrc_consumer_group s < where s.dbid = :m_dbid < and s.snap_id > :m_begin_snap < and s.snap_id <= :m_end_snap < and s.con_dbid = :m_con_dbid < and ]' || P_AWR_PERIOD.GET_INST_CLAUSE('s') ||')'; < < BEGIN < IF (P_CON_ID = 0 OR P_CON_ID > 2) THEN < EXECUTE IMMEDIATE SQLSTMT_MAP < BULK COLLECT INTO P_CGRP_MAP < USING P_AWR_PERIOD.M_DBID, < P_AWR_PERIOD.M_BEGIN_SNAP, P_AWR_PERIOD.M_END_SNAP, < SYS.DBMS_SQLTUNE_UTIL0.CDBCON_ID_TO_DBID(P_CON_ID), < P_AWR_PERIOD.M_INST_ID_LOW, P_AWR_PERIOD.M_INST_ID_HIGH, < P_AWR_PERIOD.M_INST_ID_LIST; < ELSE < < P_CGRP_MAP := PRVT_AWRV_INSTTAB(); < END IF; < END I_CREATE_AWR_CG_MAP; < < < < < < < < < < < < < < < < 2883c2834,2835 < I_CREATE_AWR_CG_MAP(L_CON_ID, AWR_PERIOD, L_DIM_MAP); --- > PRVT_AWR_VIEWER.CREATE_CONSUMER_GROUP_MAP( > L_CON_ID, AWR_PERIOD, L_DIM_MAP);
42,44d41 < < < 56d52 < FILTERED IN NUMBER := NULL, 69c65 < IF (FILTERED = 1) THEN --- > IF (FILTER_LIST IS NOT NULL) THEN 188,190d183 < < < 203d195 < FILTERED IN NUMBER := NULL,
1183a1184,1265 > > > ADW_RMMETRICS_COMMON CONSTANT VARCHAR2(32767) := q'[ > with rmmetrics_data as (-- ADW workload main query > select bucket_id, > new_id consumer_group_id, > case > when rn = 1 and :is_awr = 1 > then (select /*+ cardinality(t 1) */ instance_name > from table(cast(:p_contTab > as sys.prvt_awrv_instTab)) t > where t.inst_id = consumer_group_id) > when rn = 1 > then consumer_group_name > else null > end consumer_group_name, > avg_cpu_utilization, > avg_active_parallel_stmts, > avg_queued_parallel_stmts > from ( -- generate an id since default ids can be high numbers > select bucket_id, > consumer_group_id, > consumer_group_name, > avg_cpu_utilization, > avg_active_parallel_stmts, > avg_queued_parallel_stmts, > row_number() over (partition by consumer_group_id, > consumer_group_name > order by bucket_id, > consumer_group_id, > consumer_group_name) rn, > -- generate an id > dense_rank() over (order by consumer_group_id, > consumer_group_name) new_id > from (#GENERATE_METRICS_BUCKETID#) rsrc > where avg_cpu_utilization + > avg_active_parallel_stmts + > avg_queued_parallel_stmts > 0) > ) > > -- construct xml > select xmlagg( > nvl2(buckets, > xmlelement("stattype", > xmlattributes('rsrcmgrmetric' as "name"), > xmlelement("stat_info", > nvl(stat_id, > xmlelement("stat", > xmlattributes( > consumer_group_id as "id", > consumer_group_id as "name")))), > #GENERATE_BUCKETS_TAG#), > null)) > from ( -- aggregate buckets > select #GENERATE_BUCKETID_TAG#, > xmlagg(stat_id) stat_id, > max(consumer_group_id) consumer_group_id > from ( -- aggregate stats in each bucket > select bucket_id, > max(consumer_group_id) consumer_group_id, > xmlagg(stat_id order by consumer_group_id) stat_id, > xmlagg(xmlelement("stat", > xmlattributes(consumer_group_id as "id", > round(avg_cpu_utilization, 2) as "cpu", > round(avg_active_parallel_stmts, 2) as "apst", > round(avg_queued_parallel_stmts, 2) as "qpst" > ) > ) > order by consumer_group_id) stats > from ( -- generate id name map > select bucket_id, consumer_group_id, > nvl2(consumer_group_name, > xmlelement("stat", > xmlattributes(consumer_group_id as "id", > consumer_group_name as "name")), > null) stat_id, > avg_cpu_utilization, > avg_active_parallel_stmts, > avg_queued_parallel_stmts > from rmmetrics_data) > group by bucket_id))]'; > 1311a1394,1451 > PROCEDURE CREATE_CONSUMER_GROUP_MAP( > P_CON_ID IN NUMBER, > P_AWR_PERIOD IN OUT NOCOPY PRVT_AWRV_METADATA, > P_CGRP_MAP IN OUT NOCOPY PRVT_AWRV_INSTTAB) > IS > > L_QRY VARCHAR2(32767) := NULL; > > > SQLSTMT_MAP CONSTANT VARCHAR2(32767) := q'[ > select sys.prvt_awrv_inst(id, name) > from ( > select distinct > consumer_group_id id, > consumer_group_name name > from sys.awr_root_rsrc_consumer_group s > where s.dbid = :m_dbid > and s.snap_id > :m_begin_snap > and s.snap_id <= :m_end_snap > and s.con_dbid = :m_con_dbid > and ]' || P_AWR_PERIOD.GET_INST_CLAUSE('s') ||')'; > > BEGIN > > L_QRY := SQLSTMT_MAP; > > DBMS_SQLTUNE_UTIL1.REPLACE_AWR_VIEW_PREFIX( > L_QRY, P_AWR_PERIOD.M_AWR_VIEW_PREFIX); > > IF (P_CON_ID = 0 OR P_CON_ID > 2) THEN > EXECUTE IMMEDIATE L_QRY > BULK COLLECT INTO P_CGRP_MAP > USING P_AWR_PERIOD.M_DBID, > P_AWR_PERIOD.M_BEGIN_SNAP, P_AWR_PERIOD.M_END_SNAP, > SYS.DBMS_SQLTUNE_UTIL0.CDBCON_ID_TO_DBID(P_CON_ID), > P_AWR_PERIOD.M_INST_ID_LOW, P_AWR_PERIOD.M_INST_ID_HIGH, > P_AWR_PERIOD.M_INST_ID_LIST; > ELSE > > P_CGRP_MAP := PRVT_AWRV_INSTTAB(); > END IF; > > END CREATE_CONSUMER_GROUP_MAP; > > > > > > > > > > > > > > > 16408a16549,16550 > > 16420a16563 > INCLUDE_SQLS IN NUMBER DEFAULT NULL, 16606c16749 < IF (L_DIM_STAT IS NULL AND L_DIM_NAME IS NULL) THEN --- > IF (INCLUDE_SQLS = 0) THEN 16607a16751,16753 > L_TOPSQL_XML := NULL; > > ELSE 16609,16631c16755 < IF (IS_REALTIME IS NULL OR IS_REALTIME = G_TIMEPICKER_HISTORICAL) THEN < < IF (L_START_TIME IS NOT NULL AND L_END_TIME IS NOT NULL AND < (L_END_TIME - L_START_TIME)*24*60 < L_SNAPINT_MINS) < THEN < L_USEASH := TRUE; < END IF; < < < ELSE < L_USEASH := TRUE; < END IF; < < < IF (L_USEASH) THEN < SELECT XMLELEMENT("region_data", < XMLAGG( < XMLELEMENT("stattype", < XMLATTRIBUTES('topsql' AS "name", < '10' AS "topn", < 'ash' AS "source")))) < INTO L_TOPSQL_XML < FROM SYS.DUAL; --- > IF (L_DIM_STAT IS NULL AND L_DIM_NAME IS NULL) THEN 16634,16635c16758,16768 < IF (L_END_TIME IS NULL) THEN < L_END_TIME := SYSDATE; --- > IF (IS_REALTIME IS NULL OR IS_REALTIME = G_TIMEPICKER_HISTORICAL) THEN > > IF (L_START_TIME IS NOT NULL AND L_END_TIME IS NOT NULL AND > (L_END_TIME - L_START_TIME)*24*60 < L_SNAPINT_MINS) > THEN > L_USEASH := TRUE; > END IF; > > > ELSE > L_USEASH := TRUE; 16638,16640d16770 < IF (L_START_TIME IS NULL) THEN < L_START_TIME := L_END_TIME - 1/24; < END IF; 16642,16651c16772,16800 < L_TOPSQL_XML := L_TOPSQL_XML.APPENDCHILDXML('/*/stattype', < SYS.DBMS_ASH_INTERNAL.REPORT_ASHVIEWER_XML( < DBID => L_DBID, < INST_ID => L_INST_ID, < BEGIN_TIME => < TO_CHAR(L_START_TIME,'hh24:mi:ss mm/dd/yyyy'), < END_TIME => < TO_CHAR(L_END_TIME,'hh24:mi:ss mm/dd/yyyy'), < REPORT_LEVEL=>'<sqlid,wait_class>{treemap}', < PARENT_REPORT => 'topsql')); --- > IF (L_USEASH) THEN > SELECT XMLELEMENT("region_data", > XMLAGG( > XMLELEMENT("stattype", > XMLATTRIBUTES('topsql' AS "name", > '10' AS "topn", > 'ash' AS "source")))) > INTO L_TOPSQL_XML > FROM SYS.DUAL; > > > IF (L_END_TIME IS NULL) THEN > L_END_TIME := SYSDATE; > END IF; > > IF (L_START_TIME IS NULL) THEN > L_START_TIME := L_END_TIME - 1/24; > END IF; > > L_TOPSQL_XML := L_TOPSQL_XML.APPENDCHILDXML('/*/stattype', > SYS.DBMS_ASH_INTERNAL.REPORT_ASHVIEWER_XML( > DBID => L_DBID, > INST_ID => L_INST_ID, > BEGIN_TIME => > TO_CHAR(L_START_TIME,'hh24:mi:ss mm/dd/yyyy'), > END_TIME => > TO_CHAR(L_END_TIME,'hh24:mi:ss mm/dd/yyyy'), > REPORT_LEVEL =>'<sqlid,wait_class>{treemap}', > PARENT_REPORT => 'topsql')); 16653c16802 < ELSE --- > ELSE 16655,16678c16804,16829 < < L_TOPSQL_XML := I_REP_AWRDATA_XML( < START_TIME => L_START_TIME, < END_TIME => L_END_TIME, < TIMEPICKER_START => NULL, < TIMEPICKER_END => NULL, < INSTANCE_LIST => L_INSTANCE_LIST, < DBID => L_DBID, < BUCKET_MAX_COUNT => 1, < TIME_MODEL => 'no', < WAIT_CLASS => 'no', < WAIT_EVENT => 'no', < EVENT_CLASS => 'no', < SYSSTAT => 'no', < SQLSTAT => 'EM_TOP_SQL', < OSSTAT => 'no', < IOSTAT => 'no', < MEMORY => 'no', < SPACE => 'no', < KEY_STATISTICS => 'no', < INST_DETAIL => L_SHOW_INST_DETAIL, < MEMBERS => 'no', < SUMMARY => 'no', < SHOW_SQL => SHOW_SQL); --- > > L_TOPSQL_XML := I_REP_AWRDATA_XML( > START_TIME => L_START_TIME, > END_TIME => L_END_TIME, > TIMEPICKER_START => NULL, > TIMEPICKER_END => NULL, > INSTANCE_LIST => L_INSTANCE_LIST, > DBID => L_DBID, > BUCKET_MAX_COUNT => 1, > TIME_MODEL => 'no', > WAIT_CLASS => 'no', > WAIT_EVENT => 'no', > EVENT_CLASS => 'no', > SYSSTAT => 'no', > SQLSTAT => 'EM_TOP_SQL', > OSSTAT => 'no', > IOSTAT => 'no', > MEMORY => 'no', > SPACE => 'no', > KEY_STATISTICS => 'no', > INST_DETAIL => L_SHOW_INST_DETAIL, > MEMBERS => 'no', > SUMMARY => 'no', > SHOW_SQL => SHOW_SQL); > END IF; > END IF; 16680d16830 < END IF; 18093a18244,18921 > > > > > > > > > > > > > > > > > > > > > > > FUNCTION REPORT_ADW_WORKLOAD_REALTIME( > START_TIME IN DATE DEFAULT NULL, > END_TIME IN DATE DEFAULT NULL, > INST_ID_LOW IN NUMBER DEFAULT NULL, > INST_ID_HIGH IN NUMBER DEFAULT NULL, > SHOW_SQL IN NUMBER DEFAULT 0) > RETURN XMLTYPE > IS > > L_ELAPSED NUMBER; > L_CPU NUMBER; > > > L_REF_PARAMS DBMS_REPORT.REF_STRING_IDSPEC; > > > L_ORIG_ENV DBMS_REPORT.FORMAT_PARAM_VALUES; > L_SET_ENV BOOLEAN; > > > L_QUERY VARCHAR2(32767) := NULL; > L_REPORT_SQL CLOB; > > > L_REPORT_XML XMLTYPE := NULL; > L_RMMETRICS_XML XMLTYPE := NULL; > > > > L_START_TIME DATE := START_TIME; > L_END_TIME DATE := END_TIME; > L_INST_ID_LOW NUMBER := INST_ID_LOW; > L_INST_ID_HIGH NUMBER := INST_ID_HIGH; > > > L_BUCKET_COUNT NUMBER; > L_BUCKET_INTERVAL NUMBER; > > > L_CG_MAP PRVT_AWRV_INSTTAB := NULL; > > ADW_RMMETRICS_REALTIME CONSTANT VARCHAR2(32767) := q'[ > select bucket_id, > consumer_group_id, consumer_group_name, > avg(avg_cpu_utilization) avg_cpu_utilization, > sum(avg_active_parallel_stmts) > avg_active_parallel_stmts, > sum(avg_queued_parallel_stmts) > avg_queued_parallel_stmts > from table(sys.gv$(cursor( > select trunc( > ((extract(day from > (cast(trunc(end_time,'mi') as timestamp) - > cast(trunc(to_date(:b_start_time, :date_fmt),'mi') > as timestamp))) > * 86400 + > extract(hour from > (cast(trunc(end_time,'mi') as timestamp) - > cast(trunc(to_date(:b_start_time, :date_fmt),'mi') > as timestamp))) > * 3600 + > extract(minute from > (cast(trunc(end_time,'mi') as timestamp) - > cast(trunc(to_date(:b_start_time, :date_fmt),'mi') > as timestamp))) > * 60 + > extract(second from > (cast(trunc(end_time,'mi') as timestamp) - > cast(trunc(to_date(:b_start_time, :date_fmt),'mi') > as timestamp))) > ) > / :p_bucket_interval)) + 1 bucket_id, > consumer_group_name, > consumer_group_id, > case > when running_sessions_limit is null or > running_sessions_limit = 0 then > avg_cpu_utilization > else > (avg_running_sessions/running_sessions_limit)*100 > end avg_cpu_utilization, > avg_active_parallel_stmts, > avg_queued_parallel_stmts > from v$rsrcmgrmetric_history > where end_time >= to_date(:b_start_time,:date_fmt) > and end_time < to_date(:b_end_time,:date_fmt) > and userenv('INSTANCE') between :p_inst_id_low > and :p_inst_id_high))) > group by bucket_id, consumer_group_id, consumer_group_name]'; > > > ADW_RMMETRICS_RT_HEADER CONSTANT VARCHAR2(32767) := q'[ > var is_awr number; > var p_contTab prvt_awrv_instTab; > var b_start_time varchar2(4000); > var b_end_time varchar2(4000); > var p_bucket_interval number; > var p_bucket_count number; > var p_inst_id_low number; > var p_inst_id_high number; > var b_min_time varchar2(4000); > var b_max_time varchar2(4000); > var b_duration number; > var date_fmt varchar2(4000); > begin > :is_awr := #is_awr#; > :p_contTab := #p_contTab#; > :b_start_time := '#b_start_time#'; > :b_end_time := '#b_end_time#'; > :p_bucket_interval := #p_bucket_interval#; > :p_bucket_count := #p_bucket_count#; > :p_inst_id_low := #p_inst_id_low#; > :p_inst_id_high := #p_inst_id_high#; > :b_min_time := '#b_min_time#'; > :b_max_time := '#b_max_time#'; > :b_duration := #b_duration#; > :date_fmt := '#date_fmt#'; > end; > /]'; > > BEGIN > > > L_ORIG_ENV := DBMS_REPORT.FORMAT_PARAM_VALUES(); > L_SET_ENV := DBMS_REPORT.SETUP_REPORT_ENV(L_ORIG_ENV); > > > DBMS_REPORT.GET_TIMING_INFO(0, L_ELAPSED, L_CPU); > > > > > IF (START_TIME IS NOT NULL) THEN > L_REF_PARAMS('start_time') := > TO_CHAR(START_TIME,DBMS_REPORT.DATE_FMT_MOD); > END IF; > > IF (END_TIME IS NOT NULL) THEN > L_REF_PARAMS('end_time') := > TO_CHAR(END_TIME,DBMS_REPORT.DATE_FMT_MOD); > END IF; > > IF (INST_ID_LOW IS NOT NULL) THEN > L_REF_PARAMS('inst_id_low') := TO_CHAR(INST_ID_LOW); > END IF; > > IF (INST_ID_HIGH IS NOT NULL) THEN > L_REF_PARAMS('inst_id_high') := TO_CHAR(INST_ID_HIGH); > END IF; > > L_REF_PARAMS('is_realtime') := 1; > > IF (SHOW_SQL IS NOT NULL) THEN > L_REF_PARAMS('show_sql') := SHOW_SQL; > END IF; > > > IF (L_INST_ID_LOW IS NULL) THEN > L_INST_ID_LOW := 0; > END IF; > > IF (L_INST_ID_HIGH IS NULL) THEN > L_INST_ID_HIGH := INST_ID_MAX; > END IF; > > > IF (END_TIME IS NULL) THEN > L_END_TIME := SYSDATE; > END IF; > > > IF (START_TIME IS NULL) THEN > L_START_TIME := L_END_TIME - 1/24; > END IF; > > > CALCULATE_BUCKETS(L_BUCKET_COUNT, L_BUCKET_INTERVAL, > (L_END_TIME - L_START_TIME)*DTOS, > NULL); > > > L_QUERY := ADW_RMMETRICS_COMMON; > > > L_QUERY := REPLACE(L_QUERY,'#GENERATE_BUCKETS_TAG#', GENERATE_BUCKETS_TAG2); > L_QUERY := REPLACE(L_QUERY,'#GENERATE_BUCKETID_TAG#', > GENERATE_BUCKETID_TAG); > L_QUERY := REPLACE(L_QUERY,'#GENERATE_METRICS_BUCKETID#', > ADW_RMMETRICS_REALTIME); > > IF (SHOW_SQL = 1) THEN > > L_REPORT_SQL := ADW_RMMETRICS_RT_HEADER; > > > L_REPORT_SQL := L_REPORT_SQL || L_QUERY; > > > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#is_awr#', 0); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#p_contTab#', 'null'); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#b_start_time#', > TO_CHAR(L_START_TIME, DATE_FMT)); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#b_end_time#', > TO_CHAR(L_END_TIME, DATE_FMT)); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#p_bucket_count#', L_BUCKET_COUNT); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#p_bucket_interval#', > L_BUCKET_INTERVAL); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#p_inst_id_low#', L_INST_ID_LOW); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#p_inst_id_high#', L_INST_ID_HIGH); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#b_min_time#', > TO_CHAR(L_START_TIME, DATE_FMT)); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#b_max_time#', > TO_CHAR(L_END_TIME, DATE_FMT)); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#b_duration#', > ROUND((L_END_TIME - L_START_TIME)*DTOS)); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#date_fmt#', DATE_FMT); > > L_RMMETRICS_XML := I_SHOW_SQL_XML('rsrcmgrmetric', L_REPORT_SQL); > > ELSE > > EXECUTE IMMEDIATE L_QUERY > INTO L_RMMETRICS_XML > USING 0, L_CG_MAP, > TO_CHAR(L_START_TIME, DATE_FMT), DATE_FMT, > TO_CHAR(L_START_TIME, DATE_FMT), DATE_FMT, > TO_CHAR(L_START_TIME, DATE_FMT), DATE_FMT, > TO_CHAR(L_START_TIME, DATE_FMT), DATE_FMT, > L_BUCKET_INTERVAL, > TO_CHAR(L_START_TIME, DATE_FMT), DATE_FMT, > TO_CHAR(L_END_TIME, DATE_FMT), DATE_FMT, > L_INST_ID_LOW, L_INST_ID_HIGH, > > L_BUCKET_INTERVAL, L_BUCKET_COUNT, > TO_CHAR(L_START_TIME,DATE_FMT), TO_CHAR(L_END_TIME,DATE_FMT), > (L_END_TIME - L_START_TIME)*DTOS; > END IF; > > > DBMS_REPORT.GET_TIMING_INFO(1, L_ELAPSED, L_CPU); > > > > L_REPORT_XML := > PRVT_REPORT_TAGS.BUILD_REPORT_TAG( > DBMS_REPORT.BUILD_REPORT_REFERENCE_STRUCT( > 'awrv','topsql', L_REF_PARAMS), > L_ELAPSED, L_CPU); > > > > IF (L_RMMETRICS_XML IS NOT NULL) THEN > L_REPORT_XML := L_REPORT_XML.APPENDCHILDXML(XML_ROOT, L_RMMETRICS_XML); > END IF; > > <<DONE>> > > > IF (L_REPORT_XML IS NULL) THEN > > L_REPORT_XML := > PRVT_REPORT_TAGS.BUILD_REPORT_TAG( > DBMS_REPORT.BUILD_REPORT_REFERENCE_STRUCT( > 'awrv','topsql',L_REF_PARAMS), > NULL, NULL); > END IF; > > IF (L_SET_ENV) THEN > > DBMS_REPORT.RESTORE_REPORT_ENV(L_ORIG_ENV); > END IF; > > > RETURN L_REPORT_XML; > > END REPORT_ADW_WORKLOAD_REALTIME; > > > > > > > > > > > > > > > > > > > > > > > > > FUNCTION REPORT_ADW_WORKLOAD_HISTORICAL( > START_TIME IN DATE DEFAULT NULL, > END_TIME IN DATE DEFAULT NULL, > DBID IN NUMBER DEFAULT NULL, > INST_ID IN NUMBER DEFAULT NULL, > SHOW_SQL IN NUMBER DEFAULT 0) > RETURN XMLTYPE > IS > > L_ELAPSED NUMBER; > L_CPU NUMBER; > > > L_REF_PARAMS DBMS_REPORT.REF_STRING_IDSPEC; > > > L_ORIG_ENV DBMS_REPORT.FORMAT_PARAM_VALUES; > L_SET_ENV BOOLEAN; > > > L_QUERY VARCHAR2(32767) := NULL; > L_REPORT_SQL CLOB; > > > L_REPORT_XML XMLTYPE := NULL; > L_RMMETRICS_XML XMLTYPE := NULL; > > > > L_START_TIME DATE := START_TIME; > L_END_TIME DATE := END_TIME; > L_DBID NUMBER := DBID; > L_INST_ID NUMBER := INST_ID; > L_CON_ID NUMBER; > L_CON_DBID NUMBER; > > > L_BUCKET_CALC_INTERVAL NUMBER; > L_BUCKET_CALC_MAX_COUNT NUMBER; > L_BUCKET_MAP PRVT_AWRV_MAPTAB; > L_AWR_PERIOD PRVT_AWRV_METADATA; > > > L_CG_MAP PRVT_AWRV_INSTTAB := NULL; > > L_CPU_COUNT NUMBER := NULL; > > > L_ERRMSG VARCHAR2(32767); > L_ERROR_XML XMLTYPE := NULL; > > ADW_RMMETRICS_AWR CONSTANT VARCHAR2(32767) := q'[ > select bucket_id, > consumer_group_id, > consumer_group_name, > sum(avg_cpu_utilization) > avg_cpu_utilization, > sum(avg_active_parallel_stmts) > avg_active_parallel_stmts, > sum(avg_queued_parallel_stmts) > avg_queued_parallel_stmts > from ( > select bucket_id, > consumer_group_name, > consumer_group_id, > -- avg > avg(avg_cpu_utilization) > avg_cpu_utilization, > avg(avg_active_parallel_stmts) > avg_active_parallel_stmts, > avg(avg_queued_parallel_stmts) > avg_queued_parallel_stmts > from table( > cast(:bucket_map as > sys.prvt_awrv_mapTab)) m, > (select /*+ no_merge */ snap_id, > instance_number, > consumer_group_id, > null consumer_group_name, > case > when :cpu_count is null or > :cpu_count = 0 then > avg_cpu_utilization > else > (avg_running_sessions/:cpu_count)*100 > end avg_cpu_utilization, > avg_active_parallel_stmts, > avg_queued_parallel_stmts > from awr_pdb_rsrc_metric > where dbid = :m_dbid > and snap_id between :m_begin_snap > and :m_end_snap > and con_dbid = :l_con_dbid) y > where m.snap_id = y.snap_id > and m.instance_number = y.instance_number > and y.snap_id > :m_begin_snap > group by bucket_id, > y.instance_number, > y.consumer_group_id, > y.consumer_group_name) > group by bucket_id, > consumer_group_id, > consumer_group_name]'; > > > ADW_RMMETRICS_AWR_SQL_HEADER CONSTANT VARCHAR2(32767) := q'[ > var is_awr number; > var p_contTab prvt_awrv_instTab; > var bucket_map prvt_awrv_mapTab; > var cpu_count number; > var m_dbid number; > var m_begin_snap number; > var m_end_snap number; > var l_con_dbid number; > var p_bucket_interval number; > var p_bucket_count number; > var b_min_time varchar2(4000); > var b_max_time varchar2(4000); > var b_duration number; > begin > :is_awr := #is_awr#; > :p_contTab := #p_contTab#; > :bucket_map := #bucket_map#; > :cpu_count := #cpu_count#; > :m_dbid := #m_dbid#; > :m_begin_snap := #m_begin_snap#; > :m_end_snap := #m_end_snap#; > :l_con_dbid := #l_con_dbid#; > :p_bucket_interval := #p_bucket_interval#; > :p_bucket_count := #p_bucket_count#; > :b_min_time := '#b_min_time#'; > :b_max_time := '#b_max_time#'; > :b_duration := #b_duration#; > end; > /]'; > > > BEGIN > > > L_ORIG_ENV := DBMS_REPORT.FORMAT_PARAM_VALUES(); > L_SET_ENV := DBMS_REPORT.SETUP_REPORT_ENV(L_ORIG_ENV); > > > DBMS_REPORT.GET_TIMING_INFO(0, L_ELAPSED, L_CPU); > > > > > IF (START_TIME IS NOT NULL) THEN > L_REF_PARAMS('start_time') := > TO_CHAR(START_TIME,DBMS_REPORT.DATE_FMT_MOD); > END IF; > > IF (END_TIME IS NOT NULL) THEN > L_REF_PARAMS('end_time') := > TO_CHAR(END_TIME,DBMS_REPORT.DATE_FMT_MOD); > END IF; > > IF (DBID IS NOT NULL) THEN > L_REF_PARAMS('dbid') := TO_CHAR(DBID); > END IF; > > IF (INST_ID IS NOT NULL) THEN > L_REF_PARAMS('inst_id') := TO_CHAR(INST_ID); > END IF; > > L_REF_PARAMS('is_realtime') := 0; > > IF (SHOW_SQL IS NOT NULL) THEN > L_REF_PARAMS('show_sql') := SHOW_SQL; > END IF; > > L_CON_DBID := SYS_CONTEXT('USERENV','CON_DBID'); > > > IF (L_DBID IS NULL) THEN > L_DBID := L_CON_DBID; > END IF; > > > IF (END_TIME IS NULL) THEN > L_END_TIME := SYSDATE; > END IF; > > > IF (START_TIME IS NULL) THEN > L_START_TIME := L_END_TIME - 1; > END IF; > > > > L_AWR_PERIOD := PRVT_AWRV_METADATA( > P_START_TIME => L_START_TIME, > P_END_TIME => L_END_TIME, > P_DBID => L_DBID); > > > IF (L_AWR_PERIOD.M_BEGIN_SNAP IS NULL OR > L_AWR_PERIOD.M_BEGIN_SNAP = L_AWR_PERIOD.M_END_SNAP) > THEN > > L_ERRMSG := '[' || L_AWR_PERIOD.M_DBID || ']' || > '[' || L_AWR_PERIOD.M_INST_ID_LOW || '.' || > L_AWR_PERIOD.M_INST_ID_HIGH || ']' || > '[' || L_AWR_PERIOD.M_BEGIN_SNAP || '.' || > L_AWR_PERIOD.M_END_SNAP || ']' || > '[' || TO_CHAR(L_AWR_PERIOD.M_MIN_TIME, > DBMS_REPORT.DATE_FMT) || '-' || > TO_CHAR(L_AWR_PERIOD.M_MAX_TIME, > DBMS_REPORT.DATE_FMT) || ']'; > > > L_AWR_PERIOD := NULL; > > > L_ERROR_XML := ERROR_XML('report_adw_workload_historical', > -20800, > 'Insufficient awr data', > L_ERRMSG); > > ELSE > > > L_BUCKET_CALC_MAX_COUNT := 128; > CREATE_BUCKET_SNAP_MAP(L_AWR_PERIOD, L_BUCKET_MAP, > L_BUCKET_CALC_MAX_COUNT, L_BUCKET_CALC_INTERVAL); > > L_CON_ID := SYS_CONTEXT('USERENV','CON_ID'); > > CREATE_CONSUMER_GROUP_MAP(L_CON_ID, L_AWR_PERIOD, L_CG_MAP); > > > BEGIN > SELECT VALUE > INTO L_CPU_COUNT > FROM V$SYSTEM_PARAMETER2 > WHERE NAME = 'cpu_count'; > EXCEPTION > WHEN OTHERS THEN > L_CPU_COUNT := NULL; > END; > > > L_QUERY := ADW_RMMETRICS_COMMON; > > > L_QUERY := REPLACE(L_QUERY,'#GENERATE_BUCKETS_TAG#', > GENERATE_BUCKETS_TAG2); > L_QUERY := REPLACE(L_QUERY,'#GENERATE_BUCKETID_TAG#', > GENERATE_BUCKETID_TAG); > L_QUERY := REPLACE(L_QUERY,'#GENERATE_METRICS_BUCKETID#', > ADW_RMMETRICS_AWR); > > IF (SHOW_SQL = 1) THEN > > L_REPORT_SQL := ADW_RMMETRICS_AWR_SQL_HEADER; > > > L_REPORT_SQL := L_REPORT_SQL || L_QUERY; > > > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#is_awr#', 1); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#p_contTab#', ''); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#bucket_map#', ''); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#cpu_count#', L_CPU_COUNT); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#m_dbid#', L_AWR_PERIOD.M_DBID); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#m_begin_snap#', > L_AWR_PERIOD.M_BEGIN_SNAP); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#m_end_snap#', > L_AWR_PERIOD.M_END_SNAP); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#l_con_dbid#', L_CON_DBID); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#p_bucket_count#', > L_BUCKET_CALC_MAX_COUNT); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#p_bucket_interval#', > L_BUCKET_CALC_INTERVAL); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#b_min_time#', > TO_CHAR(L_AWR_PERIOD.M_MIN_TIME, DATE_FMT)); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#b_max_time#', > TO_CHAR(L_AWR_PERIOD.M_MAX_TIME, DATE_FMT)); > L_REPORT_SQL := REPLACE(L_REPORT_SQL, '#b_duration#', > ROUND(INTERVAL_TO_SECOND( > L_AWR_PERIOD.M_MAX_TIME, > L_AWR_PERIOD.M_MIN_TIME))); > > L_RMMETRICS_XML := I_SHOW_SQL_XML('rsrcmgrmetric', L_REPORT_SQL); > > ELSE > > EXECUTE IMMEDIATE L_QUERY > INTO L_RMMETRICS_XML > USING 1, > L_CG_MAP, > L_BUCKET_MAP, > L_CPU_COUNT, L_CPU_COUNT, L_CPU_COUNT, > L_AWR_PERIOD.M_DBID, > L_AWR_PERIOD.M_BEGIN_SNAP, > L_AWR_PERIOD.M_END_SNAP, > L_CON_DBID, > L_AWR_PERIOD.M_BEGIN_SNAP, > L_BUCKET_CALC_INTERVAL, > L_BUCKET_CALC_MAX_COUNT, > TO_CHAR(L_AWR_PERIOD.M_MIN_TIME, DATE_FMT), > TO_CHAR(L_AWR_PERIOD.M_MAX_TIME, DATE_FMT), > ROUND( > INTERVAL_TO_SECOND( > L_AWR_PERIOD.M_MAX_TIME, L_AWR_PERIOD.M_MIN_TIME)); > > END IF; > > END IF; > > > DBMS_REPORT.GET_TIMING_INFO(1, L_ELAPSED, L_CPU); > > > > L_REPORT_XML := > PRVT_REPORT_TAGS.BUILD_REPORT_TAG( > DBMS_REPORT.BUILD_REPORT_REFERENCE_STRUCT( > 'awrv','topsql', L_REF_PARAMS), > L_ELAPSED, L_CPU); > > > IF (L_ERROR_XML IS NOT NULL) THEN > L_REPORT_XML := L_REPORT_XML.APPENDCHILDXML(XML_ROOT, L_ERROR_XML); > > ELSE > > IF (L_RMMETRICS_XML IS NOT NULL) THEN > L_REPORT_XML := L_REPORT_XML.APPENDCHILDXML(XML_ROOT, L_RMMETRICS_XML); > END IF; > END IF; > > <<DONE>> > > > IF (L_REPORT_XML IS NULL) THEN > > L_REPORT_XML := > PRVT_REPORT_TAGS.BUILD_REPORT_TAG( > DBMS_REPORT.BUILD_REPORT_REFERENCE_STRUCT( > 'awrv','topsql',L_REF_PARAMS), > NULL, NULL); > END IF; > > IF (L_SET_ENV) THEN > > DBMS_REPORT.RESTORE_REPORT_ENV(L_ORIG_ENV); > END IF; > > > RETURN L_REPORT_XML; > > END REPORT_ADW_WORKLOAD_HISTORICAL; >
2015a2016,2021 > DBMS_REPORT.REGISTER_REPORT('session', 'cancel_sql', > 'Cancel SQL Action', > XSD_FILE_ID); > > >
627c627 < --- > CUR_USER VARCHAR2(128); 631a632 > CUR_USER := SYS_CONTEXT('USERENV', 'CURRENT_USER'); 634c635 < STATEMENT_TYPES, ACLMV); --- > STATEMENT_TYPES, ACLMV, CUR_USER); 642a644 > CUR_USER VARCHAR2(128); 648c650,652 < XS_DATA_SECURITY_INT.ENABLE_DISABLE_OBJECT_POLICY(POLICY, SCHEMA, OBJECT, TRUE); --- > CUR_USER := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > XS_DATA_SECURITY_INT.ENABLE_DISABLE_OBJECT_POLICY(POLICY, SCHEMA, OBJECT, > TRUE, CUR_USER); 658c662 < --- > CUR_USER VARCHAR2(128); 665c669,671 < XS_DATA_SECURITY_INT.ENABLE_DISABLE_OBJECT_POLICY(POLICY, SCHEMA, OBJECT, FALSE); --- > CUR_USER := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > XS_DATA_SECURITY_INT.ENABLE_DISABLE_OBJECT_POLICY(POLICY, SCHEMA, OBJECT, > FALSE, CUR_USER); 675c681 < --- > CUR_USER VARCHAR2(128); 682c688,689 < XS_DATA_SECURITY_INT.REMOVE_OBJECT_POLICY(POLICY, SCHEMA, OBJECT); --- > CUR_USER := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > XS_DATA_SECURITY_INT.REMOVE_OBJECT_POLICY(POLICY, SCHEMA, OBJECT, CUR_USER);
640c640,641 < ACLMV IN VARCHAR2 := NULL --- > ACLMV IN VARCHAR2 := NULL, > INVOKER IN VARCHAR2 := NULL 643c644 < NAME "kzraxdsa" --- > NAME "kzraxdsa1" 654c655,656 < ACLMV OCISTRING, ACLMV INDICATOR SB2) ; --- > ACLMV OCISTRING, ACLMV INDICATOR SB2, > INVOKER OCISTRING, INVOKER INDICATOR SB2) ; 658,661c660,664 < POLICY IN VARCHAR2, < SCHEMA IN VARCHAR2, < OBJECT IN VARCHAR2, < ENABLE IN BOOLEAN --- > POLICY IN VARCHAR2, > SCHEMA IN VARCHAR2, > OBJECT IN VARCHAR2, > ENABLE IN BOOLEAN, > INVOKER IN VARCHAR2 664c667 < NAME "kzraxdse" --- > NAME "kzraxdse1" 671c674,675 < ENABLE UB1); --- > ENABLE UB1, > INVOKER OCISTRING, INVOKER INDICATOR SB2); 675,677c679,682 < POLICY IN VARCHAR2, < SCHEMA IN VARCHAR2, < OBJECT IN VARCHAR2 --- > POLICY IN VARCHAR2, > SCHEMA IN VARCHAR2, > OBJECT IN VARCHAR2, > INVOKER IN VARCHAR2 680c685 < NAME "kzraxdsr" --- > NAME "kzraxdsr1" 686c691,692 < OBJECT OCISTRING); --- > OBJECT OCISTRING, > INVOKER OCISTRING, INVOKER INDICATOR SB2);
19a20 > L_CURUSER VARCHAR2(128); 33a35 > L_CURUSER := SYS_CONTEXT('USERENV', 'CURRENT_USER'); 37c39,40 < L_SCHEMA, L_TABLE, NULL, NULL, NULL); --- > L_CURUSER, L_SCHEMA, L_TABLE, NULL, > NULL, NULL); 46c49,50 < I_OBJ_TYPE, L_SCHEMA, L_TABLE, NULL, --- > I_OBJ_TYPE, L_CURUSER, L_SCHEMA, > L_TABLE, NULL, 139a144 > CUR_USER VARCHAR2(128); 143c148,149 < RETURN SYS.XS_DIAG_INT.VALIDATE_WORKSPACE(ERROR_LIMIT); --- > CUR_USER := SYS_CONTEXT('USERENV', 'CURRENT_USER'); > RETURN SYS.XS_DIAG_INT.VALIDATE_WORKSPACE(ERROR_LIMIT, CUR_USER);
1175a1176 > INVOKER IN VARCHAR2 := NULL, 1180c1181 < IS EXTERNAL NAME "kzraxdsa_int" --- > IS EXTERNAL NAME "kzraxdsa_int1" 1193c1194,1196 < ACLMV INDICATOR SB2) --- > ACLMV INDICATOR SB2, > INVOKER OCISTRING, > INVOKER INDICATOR SB2) 1200,1201c1203,1205 < OBJECT IN VARCHAR2 < ) IS EXTERNAL NAME "kzraxdsr_int" --- > OBJECT IN VARCHAR2, > INVOKER IN VARCHAR2 := NULL > ) IS EXTERNAL NAME "kzraxdsr_int1" 1208c1212,1214 < OBJECT OCISTRING) --- > OBJECT OCISTRING, > INVOKER OCISTRING, > INVOKER INDICATOR SB2) 1220c1226,1227 < := FLAG_CHECK_OBJECT) --- > := FLAG_CHECK_OBJECT, > I_INVOKER IN VARCHAR2) 1422c1429,1430 < L_TAB_NAME); --- > L_TAB_NAME, > I_INVOKER); 1460c1468,1469 < L_TAB_NAME); --- > L_TAB_NAME, > I_INVOKER); 1478c1487,1488 < L_TAB_NAME); --- > L_TAB_NAME, > I_INVOKER); 1753a1764 > I_INVOKER IN VARCHAR2, 1891c1902 < L_UIDS, I_VALIDATION_FLAG --- > L_UIDS, I_VALIDATION_FLAG, I_INVOKER 1999c2010,2011 < FUNCTION VALIDATE_TABLE(I_SCHEMA IN VARCHAR2, I_TABLE IN VARCHAR2) --- > FUNCTION VALIDATE_TABLE(I_SCHEMA IN VARCHAR2, I_TABLE IN VARCHAR2, > I_INVOKER IN VARCHAR2) 2054c2066,2067 < IF VALIDATE_DATA_SECURITY(L_OBJ_IDS(M), L_OBJ_PATH, I_SCHEMA, I_TABLE) --- > IF VALIDATE_DATA_SECURITY(L_OBJ_IDS(M), L_OBJ_PATH, I_INVOKER, I_SCHEMA, > I_TABLE) 2170a2184 > I_INVOKER IN VARCHAR2, 2221c2235 < L_TMP := VALIDATE_DATA_SECURITY(I_OBJ_ID, L_OBJ_PATH, --- > L_TMP := VALIDATE_DATA_SECURITY(I_OBJ_ID, L_OBJ_PATH, I_INVOKER, 2224c2238 < L_TMP := VALIDATE_TABLE(I_SCHEMA, I_TABLE); --- > L_TMP := VALIDATE_TABLE(I_SCHEMA, I_TABLE, I_INVOKER); 2356c2370,2371 < FUNCTION VALIDATE_WORKSPACE(MSG_MAX IN PLS_INTEGER := 1) --- > FUNCTION VALIDATE_WORKSPACE(MSG_MAX IN PLS_INTEGER := 1, > INVOKER IN VARCHAR2) 2519c2534,2535 < NULL, NULL, FLAG_CHECK_WORKSPACE); --- > INVOKER, NULL, NULL, > FLAG_CHECK_WORKSPACE);
11c11 < SELECT value INTO compat FROM v$parameter WHERE name='compatible'; --- > SELECT ltrim(value) INTO compat FROM v$parameter WHERE name='compatible'; 17,32d16 < -- check that dependent component XDB is loaded < IF sys.dbms_registry.is_loaded('XDB') < != 1 THEN < ok := FALSE; < END IF; < END IF; < < IF ok THEN < -- check that expected XDB resources are there < IF NOT (dbms_xdb.existsresource('/olap_data_security/public/acls') AND < dbms_xdb.existsresource('/xds/dsd')) THEN < ok := FALSE; < END IF; < END IF; < < IF ok THEN 103c87 < IF ok THEN --- > IF ok and sys.dbms_registry.is_loaded('XDB') = 1 THEN
26d25 < L_FILTERED NUMBER := NULL; 83,85d81 < L_FILTERED := TO_NUMBER(DBMS_REPORT.GET_PARAM(L_PARAMS, 'filtered', < NULLABLE=>TRUE)); < 102d97 < FILTERED => L_FILTERED, 173d167 < FILTERED => L_FILTERED,
62a63 > P_INCLUDE_SQLS NUMBER := 1; 548,553d548 < P_LAST_REFRESH_TIME := TO_DATE( < DBMS_REPORT.GET_PARAM(PARAMS, < 'last_refresh_time', < NULLABLE=>TRUE), < DBMS_REPORT.DATE_FMT_MOD); < 566a562,566 > P_INCLUDE_SQLS := TO_NUMBER( > DBMS_REPORT.GET_PARAM(PARAMS,'include_sqls', > NULLABLE=>TRUE)); > > 570d569 < 572,574d570 < P_TOP_N_DETAIL := TO_NUMBER(DBMS_REPORT.GET_PARAM(PARAMS,'top_n_detail', < NULLABLE=>TRUE)); < 576,579c572,588 < P_OUTER_START_TIME := TO_DATE( < DBMS_REPORT.GET_PARAM(PARAMS,'outer_start_time', < NULLABLE=>TRUE), < DBMS_REPORT.DATE_FMT_MOD); --- > IF (DBMS_SQLTUNE_UTIL2.IS_ADW() AND SYS_CONTEXT('USERENV', 'CON_ID') > 2) > THEN > IF (P_IS_REALTIME = 0) THEN > REPORT_XML := PRVT_AWR_VIEWER.REPORT_ADW_WORKLOAD_HISTORICAL( > START_TIME => P_START_TIME, > END_TIME => P_END_TIME, > DBID => P_DBID, > INST_ID => P_INST_ID, > SHOW_SQL => P_SHOW_SQL); > ELSE > REPORT_XML := PRVT_AWR_VIEWER.REPORT_ADW_WORKLOAD_REALTIME( > START_TIME => P_START_TIME, > END_TIME => P_END_TIME, > INST_ID_LOW => P_INST_ID, > INST_ID_HIGH => P_INST_ID, > SHOW_SQL => P_SHOW_SQL); > END IF; 582,585c591,594 < P_OUTER_END_TIME := TO_DATE( < DBMS_REPORT.GET_PARAM(PARAMS,'outer_end_time', < NULLABLE=>TRUE), < DBMS_REPORT.DATE_FMT_MOD); --- > ELSE > > > 587,589c596,600 < < P_DIM_NAME := DBMS_REPORT.GET_PARAM(PARAMS,'dim_name',NULLABLE=>TRUE); < P_DIM_STAT := DBMS_REPORT.GET_PARAM(PARAMS,'dim_stat',NULLABLE=>TRUE); --- > P_LAST_REFRESH_TIME := TO_DATE( > DBMS_REPORT.GET_PARAM(PARAMS, > 'last_refresh_time', > NULLABLE=>TRUE), > DBMS_REPORT.DATE_FMT_MOD); 591,603c602,610 < REPORT_XML := PRVT_AWR_VIEWER.REPORT_TOPSQL_XML( < START_TIME => P_START_TIME, < END_TIME => P_END_TIME, < LAST_REFRESH_TIME => P_LAST_REFRESH_TIME, < INST_ID => P_INST_ID, < DBID => P_DBID, < IS_REALTIME => P_IS_REALTIME, < TOP_N_DETAIL => P_TOP_N_DETAIL, < OUTER_START_TIME => P_OUTER_START_TIME, < OUTER_END_TIME => P_OUTER_END_TIME, < DIM_NAME => P_DIM_NAME, < DIM_STAT => P_DIM_STAT, < SHOW_SQL => P_SHOW_SQL); --- > > P_TOP_N_DETAIL := TO_NUMBER(DBMS_REPORT.GET_PARAM(PARAMS,'top_n_detail', > NULLABLE=>TRUE)); > > > P_OUTER_START_TIME := TO_DATE( > DBMS_REPORT.GET_PARAM(PARAMS,'outer_start_time', > NULLABLE=>TRUE), > DBMS_REPORT.DATE_FMT_MOD); 604a612,636 > > P_OUTER_END_TIME := TO_DATE( > DBMS_REPORT.GET_PARAM(PARAMS,'outer_end_time', > NULLABLE=>TRUE), > DBMS_REPORT.DATE_FMT_MOD); > > > P_DIM_NAME := DBMS_REPORT.GET_PARAM(PARAMS,'dim_name',NULLABLE=>TRUE); > P_DIM_STAT := DBMS_REPORT.GET_PARAM(PARAMS,'dim_stat',NULLABLE=>TRUE); > > REPORT_XML := PRVT_AWR_VIEWER.REPORT_TOPSQL_XML( > START_TIME => P_START_TIME, > END_TIME => P_END_TIME, > LAST_REFRESH_TIME => P_LAST_REFRESH_TIME, > INST_ID => P_INST_ID, > DBID => P_DBID, > IS_REALTIME => P_IS_REALTIME, > TOP_N_DETAIL => P_TOP_N_DETAIL, > OUTER_START_TIME => P_OUTER_START_TIME, > OUTER_END_TIME => P_OUTER_END_TIME, > DIM_NAME => P_DIM_NAME, > DIM_STAT => P_DIM_STAT, > INCLUDE_SQLS => P_INCLUDE_SQLS, > SHOW_SQL => P_SHOW_SQL); > END IF;
21a22 > V_SQL_ID VARCHAR2(32767); 118a120,150 > > > > > > > WHEN V_REPORT_NAME = 'cancel_sql' THEN > > > V_SID := TO_NUMBER(DBMS_REPORT.GET_PARAM(V_PARAMS, 'session_id', TRUE)); > > > V_SERIAL_NUM := TO_NUMBER(DBMS_REPORT.GET_PARAM(V_PARAMS, > 'session_serial', TRUE)); > > > V_SQL_ID := DBMS_REPORT.GET_PARAM(V_PARAMS, 'sql_id', TRUE); > > > V_INST_ID := TO_NUMBER(DBMS_REPORT.GET_PARAM(V_PARAMS, 'inst_id')); > > > V_SHOW_SQL := TO_NUMBER(DBMS_REPORT.GET_PARAM(V_PARAMS, 'show_sql')); > > > V_REPORT_XML := > PRVTEMX_PERF.ACTION_CANCEL_SQL_XML(P_SID=>V_SID, > P_SERIAL_NUM=>V_SERIAL_NUM, > P_INST_ID=>V_INST_ID, > P_SQL_ID=>V_SQL_ID, > P_SHOW_SQL=>V_SHOW_SQL); 124c156 < LOWER(PRVT_EMX.COMPONENT_STRING)); --- > LOWER(PRVT_EMX.COMPONENT_STRING));
1c1 < SELECT k."ID",k."NAME",k."DBID",k."DBNAME",k."DBVERSION",k."PARALLEL",k."DIRECTORY",k."STATUS",k."START_TIME",k."END_TIME",k."DURATION_SECS",k."START_SCN",k."END_SCN",k."DEFAULT_ACTION",k."FILTERS_USED",k."CAPTURE_SIZE",k."DBTIME",k."DBTIME_TOTAL",k."USER_CALLS",k."USER_CALLS_TOTAL",k."USER_CALLS_UNREPLAYABLE",k."PLSQL_SUBCALL_SIZE",k."PLSQL_CALLS",k."PLSQL_SUBCALLS",k."PLSQL_DBTIME",k."TRANSACTIONS",k."TRANSACTIONS_TOTAL",k."CONNECTS",k."CONNECTS_TOTAL",k."ERRORS",k."AWR_DBID",k."AWR_BEGIN_SNAP",k."AWR_END_SNAP",k."AWR_EXPORTED",k."ERROR_CODE",k."ERROR_MESSAGE",k."DIR_PATH",k."DIR_PATH_SHARED",k."LAST_PROCESSED_VERSION",k."SQLSET_OWNER",k."SQLSET_NAME",k."PLSQL_MODE",k."ENCRYPTION",k."CON_ID", k.CON$NAME, k.CDB$NAME, k.CON$ERRNUM, k.CON$ERRMSG FROM CONTAINERS("SYS"."DBA_WORKLOAD_CAPTURES") k --- > SELECT k."ID",k."NAME",k."DBID",k."DBNAME",k."DBVERSION",k."PARALLEL",k."DIRECTORY",k."STATUS",k."START_TIME",k."END_TIME",k."DURATION_SECS",k."START_SCN",k."END_SCN",k."DEFAULT_ACTION",k."FILTERS_USED",k."CAPTURE_SIZE",k."DBTIME",k."DBTIME_TOTAL",k."USER_CALLS",k."USER_CALLS_TOTAL",k."USER_CALLS_UNREPLAYABLE",k."PLSQL_SUBCALL_SIZE",k."PLSQL_CALLS",k."PLSQL_SUBCALLS",k."PLSQL_DBTIME",k."TRANSACTIONS",k."TRANSACTIONS_TOTAL",k."CONNECTS",k."CONNECTS_TOTAL",k."ERRORS",k."AWR_DBID",k."AWR_BEGIN_SNAP",k."AWR_END_SNAP",k."AWR_EXPORTED",k."ERROR_CODE",k."ERROR_MESSAGE",k."DIR_PATH",k."DIR_PATH_SHARED",k."LAST_PROCESSED_VERSION",k."SQLSET_OWNER",k."SQLSET_NAME",k."PLSQL_MODE",k."ENCRYPTION",k."ENCRYPTION_VERIFIER",k."CON_ID", k.CON$NAME, k.CDB$NAME, k.CON$ERRNUM, k.CON$ERRMSG FROM CONTAINERS("SYS"."DBA_WORKLOAD_CAPTURES") k
1c1,2 < select a.app_name, v.tgtver, v.cmnt, v.spare1 --- > select a.app_name, v.tgtver, v.cmnt, v.spare1, > con_id_to_con_name(con_uid_to_id(v.root_clone_con_uid#))
30c30,31 < , decode(nvl(r.plsql_mode, 0), 0, 'TOP_LEVEL', 1, 'EXTENDED', 2, 'EXTENDED_SYS', 'INVALID') --- > , decode( nvl(r.plsql_mode, 0), 0,'TOP_LEVEL', 1,'EXTENDED', 2,'EXTENDED_SYS', > 'INVALID' ) 31a33 > , encryption_verifier
14c14 < , decode(r.synchronization, 1, 'SCN', 2, 'OBJECT_ID', 'FALSE') --- > , decode(nvl(r.synchronization, 0), 1, 'SCN', 2, 'OBJECT_ID', 'FALSE') 17c17 < , decode(r.think_time_auto_correct, 1, 'TRUE', 'FALSE') --- > , decode(nvl(r.think_time_auto_correct, 0), 1, 'TRUE', 'FALSE') 26c26 < , decode(r.awr_exported, 1, 'YES', 0, 'NO', 'NOT POSSIBLE') --- > , decode(nvl(r.awr_exported, -1), 1, 'YES', 0, 'NO', 'NOT POSSIBLE') 35,37c35,37 < , decode(r.connect_time_auto_correct, 1, 'YES', 0, 'NO', 'NOT POSSIBLE') < , decode(r.rac_mode, 0, 'GLOBAL_SYNC', 1, 'PER_INSTANCE_CLIENT', 2, 'PER_INSTANCE_SYNC','INVALID') < , decode(bitand(r.flags, 1), 0, 'N','Y') as QUERY_ONLY --- > , decode(nvl(r.connect_time_auto_correct, -1), 1, 'YES', 0, 'NO', 'NOT POSSIBLE') > , decode(nvl(r.rac_mode, -1), 0, 'GLOBAL_SYNC', 1, 'PER_INSTANCE_CLIENT', 2, 'PER_INSTANCE_SYNC','INVALID') > , decode(bitand(nvl(r.flags, 0), 1), 0, 'N','Y') as QUERY_ONLY 41,52c41,52 < sum(decode(parallel,'YES',1,0)) as parallel, < sum(user_calls) as user_calls, < sum(dbtime) as dbtime, < sum(network_time) as network_time, < sum(think_time) as think_time, < sum(time_gain) as time_gain, < sum(time_loss) as time_loss, < sum(time_paused) as time_paused, < sum(plsql_calls) as plsql_calls, < sum(plsql_subcalls) as plsql_subcalls, < sum(plsql_dbtime) as plsql_dbtime, < sum(replay_deadlocks) AS replay_deadlocks --- > sum(decode(nvl(parallel, 'NO'),'YES',1,0)) as parallel, > sum(nvl(user_calls, 0)) as user_calls, > sum(nvl(dbtime, 0)) as dbtime, > sum(nvl(network_time, 0)) as network_time, > sum(nvl(think_time, 0)) as think_time, > sum(nvl(time_gain, 0)) as time_gain, > sum(nvl(time_loss, 0)) as time_loss, > sum(nvl(time_paused, 0)) as time_paused, > sum(nvl(plsql_calls, 0)) as plsql_calls, > sum(nvl(plsql_subcalls, 0)) as plsql_subcalls, > sum(nvl(plsql_dbtime, 0)) as plsql_dbtime, > sum(nvl(replay_deadlocks, 0)) AS replay_deadlocks
108a109,111 > -- materialize > -- The materialize argument will be a boolean that will tell us whether the > -- view will be materialized or not. 114c117,118 < resourcePath VARCHAR2 DEFAULT NULL); --- > resourcePath VARCHAR2 DEFAULT NULL, > materialize BOOLEAN DEFAULT FALSE);
349,350d348 < OWN VARCHAR2(130) := OWNER; < TBN VARCHAR2(130) := TABLENAME; 352c350 < OPEN RELC_CUR(OWN, TBN); --- > OPEN RELC_CUR(OWNER, TABLENAME); 533,535c531,533 < VIEWNAME VARCHAR2, < TABLENAME VARCHAR2, < COLNAME VARCHAR2, --- > VNAME VARCHAR2, > TNAME VARCHAR2, > CNAME VARCHAR2, 540c538,539 < RESOURCEPATH VARCHAR2) --- > RESOURCEPATH VARCHAR2, > MATERIALIZE BOOLEAN) 543,545c542 < VNAME VARCHAR2(130) := VIEWNAME; < TNAME VARCHAR2(130) := TABLENAME; < CNAME VARCHAR2(130) := COLNAME; --- > HASPK BOOLEAN := FALSE; 561c558 < BUILDRCOLS(OWNER, TABLENAME, RELDDL, RCSTK, COLCNT); --- > BUILDRCOLS(OWNER, TNAME, RELDDL, RCSTK, COLCNT); 574c571,578 < DDL := 'CREATE OR REPLACE VIEW '; --- > IF (MATERIALIZE) THEN > DDL := 'CREATE MATERIALIZED VIEW '; > IF (SYS.DBMS_JSON0.CHECKPK(OWNER, TNAME)) THEN > HASPK := TRUE; > END IF; > ELSE > DDL := 'CREATE OR REPLACE VIEW '; > END IF; 576c580,595 < DDL := DDL||DBMS_ASSERT.ENQUOTE_NAME(VNAME,FALSE)||' AS SELECT '; --- > DDL := DDL||DBMS_ASSERT.ENQUOTE_NAME(VNAME,FALSE); > > IF (MATERIALIZE) THEN > DDL := DDL||'BUILD IMMEDIATE REFRESH FAST ON STATEMENT WITH '; > IF (HASPK) THEN > DDL := DDL||'PRIMARY KEY '; > ELSE > DDL := DDL||'ROWID '; > END IF; > END IF; > DDL := DDL||' AS SELECT '; > > IF (MATERIALIZE = TRUE AND HASPK = FALSE) THEN > DDL := DDL||'RT."ROWID" ROW_ID, '; > END IF; > 1039c1058,1059 < RESOURCEPATH VARCHAR2 DEFAULT NULL) --- > RESOURCEPATH VARCHAR2 DEFAULT NULL, > MATERIALIZE BOOLEAN DEFAULT FALSE) 1070c1090 < ERRSTR, COLCNT, RESOURCEPATH); --- > ERRSTR, COLCNT, RESOURCEPATH, MATERIALIZE);