Oracle DBMS_MACUTL
Version 26ai

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

Oracle Database 26ai will be available on generic Linux platforms in January and soon on AIX and Windows
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