Oracle DBMS_MACUTL
Version 26ai

General Information
Library Note Morgan's Library Page Header
The best Oracle News for FY2026

Oracle Database 26ai is now availble. If you haven't you downloaded already: Why?
Purpose Provides constants and utilities for use with Oracle Database Vault
AUTHID DEFINER
Constants
Name Data Type Value
 Code Groups
G_CODES_AUDIT_EVENTS VARCHAR2(30) 'AUDIT_EVENTS'
G_CODES_BOOLEAN VARCHAR2(30) 'BOOLEAN'
G_CODES_DDL_CMDS VARCHAR2(30) 'DDL_CMDS'
G_CODES_FACTOR_AUDIT VARCHAR2(30) 'FACTOR_AUDIT'
G_CODES_FACTOR_EVAL VARCHAR2(30) 'FACTOR_EVALUATE'
G_CODES_FACTOR_FAIL VARCHAR2(30) 'FACTOR_FAIL'
G_CODES_FACTOR_IDENTIFY VARCHAR2(30) 'FACTOR_IDENTIFY'
G_CODES_FACTOR_LABEL VARCHAR2(30) 'FACTOR_LABEL'
G_CODES_DB_OBJECT_TYPE VARCHAR2(30) 'DB_OBJECT_TYPE'
G_CODES_LABEL_ALG VARCHAR2(30) 'LABEL_ALG'
G_CODES_MESSAGES VARCHAR2(30) 'DV_MESSAGES'
G_CODES_OPERATORS VARCHAR2(30) 'OPERATORS'
G_CODES_REALM_AUDIT VARCHAR2(30) 'REALM_AUDIT'
G_CODES_RULESET_AUDIT VARCHAR2(30) 'RULESET_AUDIT'
G_CODES_RULESET_EVAL VARCHAR2(30) 'RULESET_EVALUATE'
G_CODES_RULESET_EVENT VARCHAR2(30) 'RULESET_EVENT'
G_CODES_RULESET_FAIL VARCHAR2(30) 'RULESET_FAIL'
G_CODES_SQL_CMDS VARCHAR2(30) 'SQL_CMDS'
 Context: Namespace, Attribute, Value
G_CONTEXT_PREFIX VARCHAR2(30) 'MAC$'
G_CONTEXT_FACTOR_LABEL VARCHAR2(30) g_context_prefix||'F$'
G_CONTEXT_SESSION_LABEL VARCHAR2(30) g_context_prefix||'S$'
G_CONTEXT_FACTOR VARCHAR2(30) g_context_prefix||'FACTOR'
G_CONTEXT_REALM VARCHAR2(30) g_context_prefix||'REALM'
G_MIN_POLICY_LABEL VARCHAR2(30) 'MIN_POLICY_LABEL'
G_MAX_SESSION_LABEL VARCHAR2(30) 'MAX_SESSION_LABEL'
G_OLS_SESSION_LABEL VARCHAR2(30) 'OLS_SESSION_LABEL'
G_USER_POLICY_LABEL VARCHAR2(30) 'USER_POLICY_LABEL'
 Database Vault Realm Scope
G_SCOPE_LOCAL NUMBER 1
G_SCOPE_COMMON NUMBER 2
 Datapump Authorization Actions
G_DP_ACT_ALL VARCHAR2(30) '%'
G_DP_ACT_CREATE_USER VARCHAR2(30) 'CREATE_USER'
G_DP_ACT_GRANT VARCHAR2(30) 'GRANT'
G_DP_ACT_TABLE VARCHAR2(30) 'TABLE'
 Factor Audit Options
G_AUDIT_OFF NUMBER 0
G_AUDIT_ALWAYS NUMBER POWER(2,0)
G_AUDIT_ON_GET_ERROR NUMBER POWER(2,1)
G_AUDIT_ON_GET_NULL NUMBER POWER(2,2)
G_AUDIT_ON_VALIDATE_ERROR NUMBER POWER(2,3)
G_AUDIT_ON_VALIDATE_FLASE NUMBER POWER(2,4)
G_AUDIT_ON_TRUST_LEVEL_NULL NUMBER POWER(2,5)
G_AUDIT_ON_TRUST_LEVEL_NEG NUMBER POWER(2,6)
 Factor Identify By Column
G_IDENTIFY_BY_CONSTANT NUMBER 0
G_IDENTIFY_BY_METHOD NUMBER 1
G_IDENTIFY_BY_FACTOR NUMBER 2
G_IDENTIFY_BY_CONTEXT NUMBER 3
 Factor Evaluation Options
G_EVAL_ON_SESSION NUMBER 0
G_EVAL_ON_ACCESS NUMBER 1
G_EVAL_ON_STARTUP NUMBER 2
 Factor Labeled By Column
G_LABELED_BY_SELF NUMBER 0
G_LABELED_BY_FACTORS NUMBER 1
 Fail Options
G_FAIL_WITH_MESSAGE NUMBER POWER(2,0)
G_FAIL_SILENTLY NUMBER POWER(2,1)
 Realm Audit Options
G_REALM_AUDIT_OFF NUMBER 0
G_REALM_AUDIT_FAIL NUMBER POWER(2,0)
G_REALM_AUDIT_SUCCESS NUMBER POWER(2,1)
 Realm Authorizations
G_REALM_AUTH_PARTICIPANT NUMBER 0
G_REALM_AUTH_OWNER NUMBER 1
 Realm Objects
G_ALL_OBJECT VARCHAR2(1) '%'
 Rule Set Audit Options
G_RULESET_AUDIT_OFF NUMBER 0
G_RULESET_AUDIT_FAIL NUMBER POWER(2,0)
G_RULESET_AUDIT_SUCCESS NUMBER POWER(2,1)
 Rule Set Evaluation Options
G_RULESET_EVAL_ALL NUMBER 1
G_RULESET_EVAL_ANY NUMBER 2
 Rule Set Fail Options
G_RULESET_FAIL_SHOW NUMBER 1
G_RULESET_FAIL_SILENT NUMBER 2
 Rule Set Handler Options
G_RULESET_HANDLER_OFF NUMBER 0
G_RULESET_HANDLER_FAIL NUMBER POWER(2,0)
G_RULESET_HANDLER_SUCCESS NUMBER POWER(2,1)
 Simulation/Training
G_SIMULATION VARCHAR2(1) 'S'
 Yes/No Constants
G_NO VARCHAR2(1) 'N'
G_YES VARCHAR2(1) 'Y'
Data Types -
Dependencies
ALL_REGISTRY_BANNERS DBMS_MACOLS EVENT_STATUS_TABLE_TYPE
ALL_USERS DBMS_MACOLS_SESSION FACTOR$
CHECK_FULL_DVAUTH DBMS_MACSEC KZV$UTL_LIBT
CHECK_TAB_DVAUTH DBMS_MACSEC_ROLES OLS$PROPS
CHECK_TS_DVAUTH DBMS_MACSEC_RULES OUT
CODE$ DBMS_STANDARD PLITBLM
CONFIGURE_DV_INTERNAL DBMS_UTILITY ROLENAME_ARRAY
DBA_DV_COMMON_OPERATION_STATUS DV$CODE ROLE_ARRAY
DBA_SYS_PRIVS EVALUATE_RULE_SET SESSION_CONTEXT
DBMS_ASSERT EVENT_STATUS UTL_LMS
DBMS_MACADM EVENT_STATUS_ROW_TYPE V_$OPTION
Documented Partially: In the Database Vault Administrator's Guide
Exceptions
Error Code Reason
ORA-29504 invalid or missing schema name
First Available Not known
Security Model Owned by DVSYS with EXECUTE granted to DV_ADMIN

Some functionality only runs in CDB$ROOT
Source {ORACLE_HOME}/rdbms/admin/catmacp.sql
Subprograms
 
ALTER_SYSTEM_DUMP_ALLOWED
Checks whether 'alter system dump datafile' is only dumping header block dbms_macutl.alter_system_dump_allowed RETURN BOOLEAN;
TBD
 
ALTER_SYSTEM_DUMP_VARCHAR
Checks whether 'alter system dump datafile' is only dumping header block dbms_macutl.alter_system_dump_varchar RETURN VARCHAR2;
TBD
 
CHECK_DVSYS_DML_ALLOWED
Verifies that a public-APIs are not being bypassed by users updating the DV configuration dbms_macutl.check_dvsys_dml_allowed(p_user IN VARCHAR2
  DEFAULT sys.dbms_assert.enquote_name(SYS_CONTEXT('USERENV', 'CURRENT_USER'), FALSE));
TBD
 
CHECK_FULL_DVAUTH
Returns 1 if full database authorization level dbms_macutl.check_full_dvauth RETURN BINARY_INTEGER;
SELECT dvsys.dbms_macutl.check_full_dvauth;

CHECK_FULL_DVAUTH
-----------------
                1
 
CHECK_GOLDENGATE_ADMIN
Checks whether the given user can perform Golden Gate extract operation dbms_macutl.check_goldengate_admin(p_user IN VARCHAR2) RETURN BOOLEAN;
TBD
 
CHECK_GOLDENGATE_REDO_ACCESS
Checks whether the given user can perform Golden Gate extract operation using the OCI interface dbms_macutl.check_goldengate_redo_access(p_user IN VARCHAR2) RETURN BOOLEAN;
TBD
 
CHECK_STREAMS_ADMIN
Checks whether the given user can perform Streams administrative operation dbms_macutl.check_streams_admin(p_user IN VARCHAR2) RETURN BOOLEAN;
TBD
 
CHECK_TAB_DVAUTH
Verifies DV authorization for a specified table dbms_macutl.check_tab_dvauth(
schema_name IN VARCHAR2,
table_name  IN VARCHAR2)
RETURN BINARY_INTEGER;
SELECT dvsys.dbms_macutl.check_tab_dvauth('UWCLASS', 'SERVERS');

DVSYS.DBMS_MACUTL.CHECK_TAB_DVAUTH('UWCLASS','SERVERS')
-------------------------------------------------------
                                                      1
 
CHECK_TS_DVAUTH
Verifies DV authorization for a specified tablespace dbms_macutl.check_ts_dvauth(ts_name IN VARCHAR2) RETURN BINARY_INTEGER;
SELECT dvsys.dbms_macutl.check_ts_dvauth('USERS');

DVSYS.DBMS_MACUTL.CHECK_TS_DVAUTH('USERS')
------------------------------------------
                                         1
 
CHECK_XSTREAM_ADMIN
Checks whether the given user can perform XSTREAM capture operation dbms_macutl.check_xstream_admin(p_user IN VARCHAR2) RETURN BOOLEAN;
TBD
 
CONTAINS_HOST (new 23ai)
In theory, returns TRUE if the domain name contains the host name but, as you can see, that's not correct. dbms_macutl.contains_host(
host   IN VARCHAR2,
domain IN VARCHAR2)
RETURN BOOLEAN;
BEGIN
  IF dvsys.dbms_macutl.contains_host('PERRITO', 'pErRiTo') THEN
    dbms_output.put_line('T');
  ELSE
    dbms_output.put_line('F');
  END IF;
END;
/
T

BEGIN
  IF dvsys.dbms_macutl.contains_host('PERRITO', 'ZPERRITOZ') THEN
    dbms_output.put_line('T');
  ELSE
    dbms_output.put_line('F');
  END IF;
END;
/
F
 
DECODE_AUDIT_OPTIONS
Converts the audit_options value for a table to its corresponding string dbms_macutl.decode_audit_options(
p_table_name    IN VARCHAR2,
p_audit_options IN NUMBER)
RETURN VARCHAR2;
TBD
 
GET_ACO_STATUS
Returns ALLOW COMMON OPERATION status dbms_macutl.get_aco_status(RETURN PLS_INTEGER;
SELECT dvsys.dbms_macutl.get_aco_status;

DVSYS.DBMS_MACUTL.GET_ACO_STATUS
--------------------------------
                               1
 
GET_CODE_ID
Looks up the id for a code within a code group dbms_macutl.get_code_id(
p_code_group IN VARCHAR2,
p_code       IN VARCHAR2)
RETURN NUMBER;
TBD
 
GET_CODE_VALUE
Looks up the value for a code within a code group dbms_macutl.get_code_value(
p_code_group IN VARCHAR2,
p_code       IN VARCHAR2)
RETURN VARCHAR2;
TBD
 
GET_DAY
Returns the day in Oracle DD format (01-31) dbms_macutl.get_day(p_date IN DATE DEFAULT SYSDATE) RETURN NUMBER;
TBD
 
GET_DV_TRACE_LEVEL (new 23ai)
Undocumented dbms_macutl.get_dv_trace_level RETURN VARCHAR2;
SELECT dvsys.dbms_macutl.get_dv_trace_level;

DVSYS.DBMS_MACUTL.GET_DV_TRACE_LEVEL
-------------------------------------
OFF
 
GET_EVENT_STATUS
Obtain the status of events 10079 and 24473 dbms_macutl.get_event_status RETURN dvsys.event_status_table_type PIPELINED;
SELECT * FROM TABLE(dvsys.dbms_macutl.get_event_status);

     EVENT ENABL
---------- -----
     10079 FALSE
     24473 FALSE
 
GET_FACTOR_CONTEXT
Constructs an XML document which contains the values for all of the factors dbms_macutl.get_factor_context(skip_default IN VARCHAR2) RETURN VARCHAR2;
TBD
 
GET_HOUR
Returns the hour in Oracle HH24 format (00-23) dbms_macutl.get_hour(p_date IN DATE DEFAULT SYSDATE) RETURN NUMBER;
TBD
 
GET_MESSAGE_LABEL
Looks up an error message and replaces parameters accordingly

Overload 1
dbms_macutl.get_message_label(
p_message_code IN VARCHAR2,
p_parameter1   IN VARCHAR2 DEFAULT NULL,
p_parameter2   IN VARCHAR2 DEFAULT NULL,
p_parameter3   IN VARCHAR2 DEFAULT NULL,
p_parameter4   IN VARCHAR2 DEFAULT NULL,
p_parameter5   IN VARCHAR2 DEFAULT NULL,
p_parameter6   IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;
TBD
Looks up an error message and replaces parameters accordingly

Overload 2
dbms_macutl.get_message_label(
p_message_code IN NUMBER,
p_parameter1   IN VARCHAR2 DEFAULT NULL,
p_parameter2   IN VARCHAR2 DEFAULT NULL,
p_parameter3   IN VARCHAR2 DEFAULT NULL,
p_parameter4   IN VARCHAR2 DEFAULT NULL,
p_parameter5   IN VARCHAR2 DEFAULT NULL,
p_parameter6   IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;
TBD
 
GET_MINUTE
Returns the minute in Oracle MI format (00-59) dbms_macutl.get_minute(p_date IN DATE DEFAULT SYSDATE) RETURN NUMBER;
TBD
 
GET_MONTH
Returns the month in Oracle MM format (01-12) dbms_macutl.get_month(p_date IN DATE DEFAULT SYSDATE) RETURN NUMBER;
TBD
 
GET_SECOND
Returns the seconds in Oracle SS format (00-59) dbms_macutl.get_second(p_date IN DATE DEFAULT SYSDATE) RETURN NUMBER;
TBD
 
GET_SQL_TEXT
Concatenates the elements of an ora_name_list_t into a single VARCHAR2 dbms_macutl.get_sql_text(p_sql_text IN ora_name_list_t) RETURN VARCHAR2;
DECLARE
  test_sql ora_name_list_t := ora_name_list_t();
  retVal dbms_id;
BEGIN
  test_sql.extend(3);
  test_sql(1) := 'SELECT dummy ';
  test_sql(2) := 'FROM dual';
  retVal := dvsys.dbms_macutl.get_sql_text(test_sql);
  dbms_output.put_line(retVal);
END;
/
SELECT DUMMY FROM DUAL

PL/SQL procedure successfully completed.
 
GET_YEAR
Returns the year in Oracle YYYY format (0001-9999) dbms_macutl.get_year(p_date IN DATE DEFAULT SYSDATE) RETURN NUMBER;
TBD
 
IN_CALL_STACK
Checks for a string in the PL/SQL call stack dbms_macutl.in_call_stack(p_search_term IN VARCHAR2) RETURN BOOLEAN;
TBD
 
IS_ALPHA
Checks the first character of a string to determine whether it is alpha

The Oracle docs are technically incorrect on this function and should not be relied upon as demonstrated at right
dbms_macutl.is_alpha(c IN varchar2) RETURN BOOLEAN;
BEGIN
  IF dvsys.dbms_macutl.is_alpha('A1234567#$') THEN
    dbms_output.put_line('Alpha');
  ELSE
    dbms_output.put_line('Not Alpha');
  END IF;
END;
/
Alpha

PL/SQL procedure successfully completed.
 
IS_CLIENT_IP_CONTAINED (new 23ai)
Undocumented dbms_macutl.is_client_ip_contained(domain IN VARCHAR2) RETURN BOOLEAN;
TBD
 
IS_DIGIT
Checks the first character of a string to determine whether it is a digit

The Oracle docs are technically incorrect on this function and should not be relied upon as demonstrated at right
dbms_macutl.is_digit(c IN varchar2) RETURN BOOLEAN;
BEGIN
  IF dvsys.dbms_macutl.is_digit('1ABCDEFG#$') THEN
    dbms_output.put_line('Digit');
  ELSE
    dbms_output.put_line('Not Digit');
  END IF;
END;
/
Digit

PL/SQL procedure successfully completed.
 
IS_DVSYS_OWNER
Determines whether a user is authorized to manage the DV configuration. The
DVSYS user and users granted the DV_OWNER role are authorized.
dbms_macutl.is_dvsys_owner(
p_user    IN VARCHAR2 DEFAULT sys.dbms_assert.enquote_name(SYS_CONTEXT('USERENV',
  'CURRENT_USER'), FALSE),
p_profile IN BOOLEAN  DEFAULT TRUE,
p_scope   IN VARCHAR2 := 'LOCAL')
RETURN BOOLEAN;
BEGIN
  IF dvsys.dbms_macutl.is_dvsys_owner THEN
    dbms_output.put_line('Yes');
  ELSE
    dbms_output.put_line('No');
  END IF;
END;
/
No

PL/SQL procedure successfully completed.
 
IS_DV_ENABLED
Returns TRUE if Database Vault is enabled dbms_macutl.is_dv_enabled(RETURN BOOLEAN;
BEGIN
  IF dvsys.dbms_macutl.is_dv_enabled THEN
    dbms_output.put_line('Enabled');
  ELSE
    dbms_output.put_line('Disabled');
  END IF;
END;
/
Enabled

PL/SQL procedure successfully completed.
 
IS_DV_ENABLED_VARCHAR
Returns Y if Database Vault is enabled dbms_macutl.is_dv_enabled_varchar(RETURN VARCHAR2;
SELECT dvsys.dbms_macutl.is_dv_enabled_varchar;

IS_DV_ENABLED_VARCHAR
----------------------
Y
 
IS_OID_ENABLED_OLS
Returns TRUE if OID is enabled with Oracle Label Security dbms_macutl.is_oid_enabled_ols RETURN BOOLEAN;
BEGIN
  IF dvsys.dbms_macutl.is_oid_enabled_ols THEN
    dbms_output.put_line('Enabled');
  ELSE
    dbms_output.put_line('Not Enabled');
  END IF;
END;
/
Not Enabled

PL/SQL procedure successfully completed.
 
IS_OLS_INSTALLED
Returns TRUE if OLS is installed dbms_macutl.is_ols_installed RETURN BOOLEAN;
BEGIN
  IF dvsys.dbms_macutl.is_ols_installed THEN
    dbms_output.put_line('Installed');
  ELSE
    dbms_output.put_line('Not Installed');
  END IF;
END;
/
Installed

PL/SQL procedure successfully completed.
 
IS_OLS_INSTALLED_VARCHAR
Returns Y if OLS is installed dbms_macutl.is_ols_installed_varchar(RETURN VARCHAR2;
SELECT dvsys.dbms_macutl.is_ols_installed_varchar;

IS_OLS_INSTALLED_VARCHAR
-------------------------
Y
 
OLS_LDAP_USER
Returns the LDAP user if OID enabled and OLS is installed

Note: OID may be enabled from the database standpoint but that does not mean it is installed and operational
dbms_macutl.ols_ldap_user(RETURN VARCHAR2;
SELECT dvsys.dbms_macutl.ols_ldap_user;

OLS_LDAP_USER
--------------
SYS
 
RAISE_ERROR
Look up an error message, replaces parameters accordingly and raise an exception

Overload 1
dbms_macutl.raise_error(p_message_code IN NUMBER);
TBD
Overload 2 dbms_macutl.raise_error(
p_message_code IN NUMBER,
p_parameter1   IN VARCHAR2);
-- found in $ORACLE_HOME/rdbms/admin/catmact.sql
IF (LENGTH(l_name) > 126) THEN
  dvsys.dbms_macutl.raise_error(47951,'factor_name');
END IF;
Overload 3 dbms_macutl.raise_error(
p_message_code IN NUMBER,
p_parameter1   IN VARCHAR2,
p_parameter2   IN VARCHAR2);
TBD
Overload 4 dbms_macutl.raise_error(
p_message_code IN NUMBER,
p_parameter1   IN VARCHAR2,
p_parameter2   IN VARCHAR2,
p_parameter3   IN VARCHAR2);
TBD
Overload 5 dbms_macutl.raise_error(
p_message_code IN NUMBER,
p_parameter1   IN VARCHAR2,
p_parameter2   IN VARCHAR2,
p_parameter3   IN VARCHAR2,
p_parameter4   IN VARCHAR2);
TBD
Overload 6 dbms_macutl.raise_error(
p_message_code IN NUMBER,
p_parameter1   IN VARCHAR2,
p_parameter2   IN VARCHAR2,
p_parameter3   IN VARCHAR2,
p_parameter4   IN VARCHAR2,
p_parameter5   IN VARCHAR2);
TBD
Overload 7 dbms_macutl.raise_error(
p_message_code IN NUMBER,
p_parameter1   IN VARCHAR2,
p_parameter2   IN VARCHAR2,
p_parameter3   IN VARCHAR2,
p_parameter4   IN VARCHAR2,
p_parameter5   IN VARCHAR2,
p_parameter6   IN VARCHAR2);
TBD
 
RAISE_UNAUTHORIZED_OPERATION
Generic disallowed operation exception

Looks like a zero-value throw away. If you want to raise an exception use RAISE_APPLICATION_ERROR
dbms_macutl.raise_unauthorized_operation(p_user IN VARCHAR2);
exec dvsys.dbms_macutl.raise_unauthorized_operation('UWCLASS');
*
ERROR at line 1:
ORA-47920: Authorization failed for user UWCLASS to perform this operation
 
ROLE_GRANTED_ENABLED_VARCHAR
Checks whether a user has a role granted directly or indirectly (via another role) with a sufficient scope or the role currently is enabled in the session while the role is not granted dbms_macutl.role_granted_enabled_varchar(
p_role    IN VARCHAR2,
p_user    IN VARCHAR2 DEFAULT sys.dbms_assert.enquote_name(SYS_CONTEXT('USERENV',
  'CURRENT_USER'), FALSE),
p_profile IN INTEGER  DEFAULT 1,
p_scope   IN VARCHAR2 := 'LOCAL')
RETURN VARCHAR2;
-- found in $ORACLE_HOME/rdbms/admin/dve20.sql
BEGIN
  SELECT count(bugno) into :bug FROM sys.registry$backports WHERE bugno=31993795;

  IF :bug = 0 THEN
    UPDATE DVSYS.rule$ SET rule_expr =
      'DVSYS.DBMS_MACUTL.ROLE_GRANTED_ENABLED_VARCHAR(''DBA'',''"'' ||
      dvsys.dv_login_user || ''"'') = ''Y''' where id# = 4;
  END IF;
END;
/
 
SESSION_ENABLED_ROLE
Checks whether the given role is enabled in the current session dbms_macutl.session_enabled_role(p_role IN VARCHAR2) RETURN BOOLEAN;
TBD
 
SESSION_ENABLED_ROLE_VARCHAR
Checks whether the given role is enabled in the current session dbms_macutl.session_enabled_role_varchar(p_role IN VARCHAR2) RETURN VARCHAR2;
SELECT dvsys.dbms_macutl.session_enabled_role_varchar('EXECUTE_CATALOG_ROLE');

DBMS_MACUTL.SESSION_ENABLED_ROLE_VARCHAR('EXECUTE_CATALOG_ROLE')
----------------------------------------------------------------
N
 
TO_ORACLE_IDENTIFIER
Alters a string to make it a legal Oracle identifier dbms_macutl.to_oracle_identifier(id IN varchar2) RETURN VARCHAR2;
SELECT dvsys.dbms_macutl.to_oracle_identifier('A B C D');

DVSYS.DBMS_MACUTL.TO_ORACLE_IDENTIFIER('ABCD')
-----------------------------------------------
A_B_C_D
 
UNIQUE_USER
Returns unique user ID whether user is from OID or standard database accounts, else returns NULL dbms_macutl.unique_user(RETURN VARCHAR2;
SELECT dvsys.dbms_macutl.unique_user;

UNIQUE_USER
------------
 
 
USER_HAS_OBJECT_PRIVILEGE
Checks whether a user or role may access an object via a object privilege grant dbms_macutl.user_has_object_privilege(
p_user         IN VARCHAR2,
p_object_owner IN VARCHAR2,
p_object_name  IN VARCHAR2,
p_privilege    IN VARCHAR2,
p_profile      IN BOOLEAN DEFAULT TRUE)
RETURN BOOLEAN;
TBD
 
USER_HAS_ROLE
Checks whether a user has a role granted directly or indirectly (via another role) dbms_macutl.user_has_role(
p_role    IN VARCHAR2,
p_user    IN VARCHAR2
  DEFAULT sys.dbms_assert.enquote_name(SYS_CONTEXT('USERENV', 'CURRENT_USER'), FALSE),
p_profile IN BOOLEAN  DEFAULT TRUE,
p_scope   IN VARCHAR2 := 'LOCAL')
RETURN BOOLEAN;
TBD
 
USER_HAS_ROLE_VARCHAR
Checks whether a user has a role granted directly or indirectly (via another role) dbms_macutl.user_has_role_varchar(
p_role    IN VARCHAR2,
p_user    IN VARCHAR2
  DEFAULT sys.dbms_assert.enquote_name(SYS_CONTEXT('USERENV', 'CURRENT_USER'), FALSE),
p_profile IN INTEGER  DEFAULT 1,
p_scope   IN VARCHAR2 := 'LOCAL')
RETURN VARCHAR2;
TBD
 
USER_HAS_SYSTEM_PRIVILEGE
Checks whether a user has a system privilege, directly or indirectly (via a role) dbms_macutl.user_has_system_privilege(
p_privilege IN VARCHAR2,
p_user      IN VARCHAR2 DEFAULT sys.dbms_assert.enquote_name(SYS_CONTEXT('USERENV',
  'CURRENT_USER'), FALSE),
p_profile   IN BOOLEAN  DEFAULT TRUE)
RETURN BOOLEAN;
TBD
 
USER_HAS_SYSTEM_PRIV_VARCHAR
Undocumented dbms_macutl.user_has_system_priv_varchar(
TBD
 
VALIDATE_NAME
Validates and canonicalizes the given user/role name

Our preference would be to make a direct call to the appropriate subprogram in DBMS_ASSERT
dbms_macutl.validate_name(name IN varchar2) RETURN DBMS_ID;
SELECT dvsys.dbms_macutl.validate_name('C##UWCLASS');

DBMS_MACUTL.VALIDATE_NAME('C##UWCLASS')
----------------------------------------
C##UWCLASS


SELECT dvsys.dbms_macutl.validate_name('C## UWCLASS');
       *
ORA-44003: invalid SQL name

Related Topics
Built-in Functions
Built-in Packages
Database Security
DBMS_ASSERT
DBMS_MACADM
DBMS_MACOLS
DBMS_MACOLS_SESSION
DBMS_MACOUT
DBMS_MACSEC
DBMS_MACSEC_FUNCTION
DBMS_MACSEC_ROLES
DBMS_MACSEC_RULES
What's New In 21c
What's New In 26ai

Morgan's Library Page Footer
This site is maintained by Daniel Morgan. Last Updated: This site is protected by copyright and trademark laws under U.S. and International law. © 1998-2026 Daniel A. Morgan All Rights Reserved