This post is also available in: English
After applying the 180417 PSU and BP over 12.1.0.2 Database, I've noted 2 new packages created on the database: DBMS_ASH and DBMS_BDSQL.
VERSION PATCH OWNER TYPE NAME -------------------- ---------- -------------------- -------------------- -------------------- 12.1.0.2 PSU & BP SYS PACKAGE DBMS_ASH 12.1.0.2 BP ONLY SYS PACKAGE DBMS_BDSQL 12.1.0.2 BP ONLY SYS PACKAGE BODY DBMS_ASH 12.1.0.2 BP ONLY SYS PACKAGE BODY DBMS_BDSQL
* Note DBMS_ASH Package Body was not created by the PSU, only by the BP. Probably this was a bug or something still under development.
DBMS_ASH:
PACKAGE dbms_ash AUTHID CURRENT_USER IS TYPE FILTERTABLETYPE IS TABLE OF VARCHAR2(32767) INDEX BY VARCHAR2(30); TYPE ADDINFOTYPE IS RECORD ( IDNAMESQL VARCHAR2(32767) , ID2NAME_DYNAMIC VARCHAR2(32767) , ID2NAME_AWR VARCHAR2(32767) , ID2NAME_CONST VARCHAR2(32767) , IDNAMEXML VARCHAR2(32767) ); TYPE DIMTYPE IS RECORD ( NAME VARCHAR2(30) , ENABLED BOOLEAN , SELECTSTR VARCHAR2(32767) , MAPSQL VARCHAR2(32767) , SELECTSTRMAP VARCHAR2(32767) , ISDIMMASKED BOOLEAN , FROMCLAUSE VARCHAR2(32767) , MAPXML VARCHAR2(32767) , WHERECLAUSE VARCHAR2(32767) , ADDINFO ADDINFOTYPE , IS_PDB_SPECIFIC BOOLEAN , CATEGORY VARCHAR2(128) ); TYPE DIMTABLETYPE IS TABLE OF DIMTYPE INDEX BY VARCHAR2(30); TYPE BINDTYPE IS RECORD ( NAME VARCHAR2(100) , VALUE VARCHAR2(4000) ); TYPE BINDARRAYTYPE IS VARRAY(100) OF BINDTYPE; TYPE QUERYBLOCKARRAYTYPE IS VARRAY(200) OF VARCHAR2(4000); TYPE CONTEXTTYPE IS RECORD ( IS_LOCAL BOOLEAN , IS_CDB_ROOT BOOLEAN , LOCAL_IS_PDB BOOLEAN , LOCAL_DBID NUMBER , LOCAL_VERSION VARCHAR(30) , LOCAL_COMP_VER VARCHAR(30) , LOCAL_CONID NUMBER , LOCAL_CONDBID NUMBER , UNDERSCORES BOOLEAN , BEGINTIMEUTC DATE , ENDTIMEUTC DATE , BUCKETCOUNT NUMBER , BUCKETINTERVAL NUMBER , LASTBUCKETSIZE NUMBER , MEMENABLE BOOLEAN , MEMTZ NUMBER , MEMSIZEDAYS NUMBER , DISKENABLE BOOLEAN , DISK_COMP_VER VARCHAR(30) , DBID NUMBER , BEGINSNAPID NUMBER , ENDSNAPID NUMBER , AWRTABLEPREFIX VARCHAR(20) , DISKENDTIMEUTC DATE , DISKTZ NUMBER , SHOW_SQL BOOLEAN , VERBOSE_XML BOOLEAN , ERROR_XML XMLTYPE , DIAG_START_TIME TIMESTAMP , DIAG_CONTEXT_SECS NUMBER , DIAG_PICKER_SECS NUMBER , DIAG_DATA_SECS NUMBER , DIAG_CPUINFO_SECS NUMBER , INCLUDE_BG BOOLEAN , DIMTABLE DIMTABLETYPE , MEMFILTERPREDICATE VARCHAR2(32767) , DISKFILTERPREDICATE VARCHAR2(32767) , GVFILTERPREDICATE VARCHAR2(32767) , SAMPLE_RATIO NUMBER , EST_ROW_COUNT NUMBER , EXP_ROW_COUNT NUMBER , ACTIVITYLINEXML XMLTYPE , CPUCOUNT NUMBER , CPUCORECOUNT NUMBER , QUERY QUERYBLOCKARRAYTYPE , USE_UTC_BINDS BOOLEAN , BINDS BINDARRAYTYPE ); REPORT_INTERNAL_VERSION CONSTANT VARCHAR2(64) := '29'; OMC_TIME_FORMAT CONSTANT VARCHAR2(30) := 'MM/DD/YYYY HH24:MI:SS'; OMC_ALLOWED_ERR_RATIO CONSTANT NUMBER := 0.9; OMC_DEF_BUCKETS CONSTANT NUMBER := 120; OMC_DEF_ROWS_PER_BUCKET CONSTANT NUMBER := 20; OMC_DEF_RT_MIN_BUCKET_SIZE CONSTANT NUMBER := 10; OMC_DEF_HIST_MIN_BUCKET_SIZE CONSTANT NUMBER := 10; OMC_DEF_SQLTEXT_LEN CONSTANT NUMBER := 200; VER_12_2 CONSTANT VARCHAR2(12) := '1202000000'; VER_12_1_2 CONSTANT VARCHAR2(12) := '1201000200'; VER_12_1 CONSTANT VARCHAR2(12) := '1201000000'; VER_12 CONSTANT VARCHAR2(12) := '1200000000'; VER_11_MIN CONSTANT VARCHAR2(12) := '1102000200'; TOP_ADD_INFO_COUNT CONSTANT BINARY_INTEGER := 20; MAX_INFO_TIME_LIMIT CONSTANT BINARY_INTEGER := 2; RSRC_CONS_CAT CONSTANT VARCHAR2(128) := 'resource_consumption_cat'; SESS_ID_CAT CONSTANT VARCHAR2(128) := 'session_identifiers_cat'; SESS_ATTR_CAT CONSTANT VARCHAR2(128) := 'session_attributes_cat'; SQL_CAT CONSTANT VARCHAR2(128) := 'sql_cat'; PLSQL_CAT CONSTANT VARCHAR2(128) := 'pl_sql_cat'; TARGET_CAT CONSTANT VARCHAR2(128) := 'target_category'; ERR_DIMNAME_TOO_LONG CONSTANT NUMBER := -13720; ERR_DIMNAME_INVALID CONSTANT NUMBER := -13721; FUNCTION STR_TO_ASCII(S IN VARCHAR) RETURN VARCHAR; FUNCTION FETCH_SQLTEXT_LOCAL(P_SQLID IN VARCHAR, P_DBID IN NUMBER, P_TIME_LIMIT IN VARCHAR) RETURN VARCHAR; FUNCTION FETCH_SQLTEXT_AWR(P_SQLID IN VARCHAR, P_DBID IN NUMBER, P_IS_PDB IN VARCHAR, P_TIME_LIMIT IN VARCHAR) RETURN VARCHAR; FUNCTION FETCH_OBJ_NAME_LOCAL(P_OBJ_ID IN NUMBER, P_DBID IN NUMBER, P_CON_DBID IN NUMBER, P_TIME_LIMIT IN VARCHAR) RETURN VARCHAR; FUNCTION FETCH_OBJ_NAME_AWR(P_OBJ_ID IN NUMBER, P_DBID IN NUMBER, P_CON_DBID IN NUMBER, P_IS_PDB IN VARCHAR, P_TIME_LIMIT IN VARCHAR) RETURN VARCHAR; FUNCTION FETCH_PROCEDURE_NAME(P_OBJ_ID IN NUMBER, P_SUBOBJ_ID IN NUMBER, P_CON_DBID IN NUMBER, P_TIME_LIMIT IN VARCHAR) RETURN VARCHAR; FUNCTION FETCH_USER_NAME(P_USER_ID IN NUMBER, P_CON_DBID IN NUMBER, P_TIME_LIMIT IN VARCHAR) RETURN VARCHAR; FUNCTION GETCPUINFO(DBID IN NUMBER := NULL, OBSERVATIONTIME IN VARCHAR := NULL) RETURN XMLTYPE; FUNCTION GETTIMEPICKERREALTIME( TIME_SINCE_SEC IN NUMBER := 3600 , SHOW_SQL IN VARCHAR2 := 'n' , VERBOSE_XML IN VARCHAR2 := 'n') RETURN XMLTYPE; FUNCTION INCREMENTTIMEPICKER( BEGIN_TIME_UTC IN VARCHAR2 , BUCKET_SIZE IN NUMBER , SHOW_SQL IN VARCHAR2 := 'n' , VERBOSE_XML IN VARCHAR2 := 'n') RETURN XMLTYPE; FUNCTION GETTIMEPICKERHISTORICAL( DBID IN NUMBER := NULL , BEGIN_TIME_UTC IN VARCHAR2 := NULL , END_TIME_UTC IN VARCHAR2 := NULL , TIME_SINCE_SEC IN NUMBER := 86400 , SHOW_SQL IN VARCHAR2 := 'n' , VERBOSE_XML IN VARCHAR2 := 'n') RETURN XMLTYPE; FUNCTION GETDATAREALTIME( FILTER_LIST IN VARCHAR2 := NULL , TIME_SINCE_SEC IN NUMBER := 3600 , SHOW_SQL IN VARCHAR2 := 'n' , VERBOSE_XML IN VARCHAR2 := 'n' , INCLUDE_BG IN VARCHAR2 := 'n') RETURN XMLTYPE; FUNCTION INCREMENTDATA( FILTER_LIST IN VARCHAR2 := NULL , BEGIN_TIME_UTC IN VARCHAR2 , BUCKET_SIZE IN NUMBER , SHOW_SQL IN VARCHAR2 := 'n' , VERBOSE_XML IN VARCHAR2 := 'n' , INCLUDE_BG IN VARCHAR2 := 'n') RETURN XMLTYPE; FUNCTION GETDATAHISTORICAL( DBID IN NUMBER := NULL , FILTER_LIST IN VARCHAR2 := NULL , BEGIN_TIME_UTC IN VARCHAR2 := NULL , END_TIME_UTC IN VARCHAR2 := NULL , TIME_SINCE_SEC IN NUMBER := 86400 , SHOW_SQL IN VARCHAR2 := 'n' , VERBOSE_XML IN VARCHAR2 := 'n' , INCLUDE_BG IN VARCHAR2 := 'n') RETURN XMLTYPE; END DBMS_ASH;
DBMS_BDSQL:
PACKAGE "DBMS_BDSQL" AUTHID DEFINER AS -- Here are the exceptions that can come from this module -- We're going to use RAISE_APPLICATION_EEROR to raise these errors NULL_CLUSTER_NAME_PASSED constant PLS_INTEGER := -20899; NULL_CURRENT_DB_USER_PASSED constant PLS_INTEGER := -20898; NULL_FOURTH_PARAMETER_PASSED constant PLS_INTEGER := -20897; INVALID_USERENV_ATTRIBUTE constant PLS_INTEGER := -20896; DUPLICATE_ROW constant PLS_INTEGER := -20895; ROLE_PRIV_ERR constant PLS_INTEGER := -20894; NULL_SYSCTX_PARM_HADOOP_PASSED constant PLS_INTEGER:= -20893; INVALID_NAME_FOR_US constant PLS_INTEGER := -20892; INVALID_NAME_ASSERT constant PLS_INTEGER := -20891; NO_ROWS_FOUND constant PLS_INTEGER := -20890; NOTHING_TO_REVOKE constant PLS_INTEGER := -20889; NAMESPACE_TOO_LONG constant PLS_INTEGER := -20888; HADOOP_USER_TOO_LONG constant PLS_INTEGER := -20887; AMBIGUOUS_ROW constant PLS_INTEGER := -20886; NAMESPACE_MAX_LEN constant PLS_INTEGER := 30; HADOOP_USER_MAX_LEN constant PLS_INTEGER := 30; --- DBMS_ASSERT.SIMPLE_SQL_NAME didn't like one of the names given assert_invalid_name EXCEPTION; PRAGMA EXCEPTION_INIT(assert_invalid_name, -44003); -- -- ADD_USER_MAP: -- PROCEDURE ADD_USER_MAP(cluster_name IN VARCHAR2 DEFAULT '[DEFAULT]', current_database_user IN VARCHAR2, -- NOT NULL syscontext_namespace IN VARCHAR2, -- DEFAULT NULL syscontext_parm_hadoop_user IN VARCHAR2); -- NOT NULL -- REMOVE_USER_MAP: -- PROCEDURE REMOVE_USER_MAP( cluster_name IN VARCHAR2 DEFAULT '[DEFAULT]', current_database_user IN VARCHAR2); -- NOT NULL -- SEL_USERMAP: PROCEDURE SEL_USERMAP(cluster_name IN VARCHAR2, current_database_user IN VARCHAR2, mapping OUT VARCHAR2, rc OUT PLS_INTEGER); END DBMS_BDSQL;
Both packages are not yet officially documented so their usage are still unclear. They seem to be for internal use only. However, one thing I could notice is that DBMS_HADOOP now interacts with DBMS_BDSQL.SEL_USERMAP.
Their unwrapped Package Bodys are pretty big to post here. I did some overall analysis in SQL Injection and at least they look clear =]
Have you enjoyed? Please leave a comment or give a 👍!