Oracle DBMS_FEATURE_USAGE
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 Manageability Monitor Process (MMON), by default, samples the data dictionary once a week to collect database feature usage and high-water mark (HWM) statistics.
AUTHID DEFINER
Constants
Name Data Type Value
 install check method flags
DBU_INST_ALWAYS_INSTALLED INTEGER 1
DBU_INST_OBJECT INTEGER 2
 flag for the test DB features
DBU_INST_TEST INTEGER 4
 detection method flags
DBU_DETECT_BY_SQL INTEGER 1
DBU_DETECT_BY_PROCEDURE INTEGER 2
DBU_DETECT_NULL INTEGER 4
 high water mark method flags
DBU_HWM_BY_SQL INTEGER 1
DBU_HWM_BY_PROCEDURE INTEGER 2
DBU_HWM_NULL INTEGER 4
 flag for the test high water marks
DBU_HWM_TEST INTEGER 8
Dependencies
DBMS_DBFUSC_LIB DBMS_SYS_ERROR
DBMS_FEATURE_USAGE_INTERNAL FEATURE_USAGE
Documented No
First Available 10.2
Security Model Owned by SYS with no privileges granted
Source {ORACLE_HOME}/rdbms/admin/prvsfus.plb
{ORACLE_HOME}/rdbms/admin/prvtfus.plb

Also view: catfusrg.sql
Subprograms
 
REGISTER_ALL_FEATURES (new 23ai)
Registers all features dbms_features_usage.register_allfeatures;
exec dbms_feature_usage.register_all_features;

PL/SQL procedure successfully completed.
 
REGISTER_DB_FEATURE
Registers tracking usage of a specific feature usage using a SQL statement dbms_feature_usage.register_db_feature(
feature_name           IN VARCHAR2,
install_check_method   IN NUMBER,
install_check_logic    IN VARCHAR2,
usage_detection_method IN NUMBER,
usage_detection_logic  IN VARCHAR2
feature_description    IN VARCHAR2);
set linesize 161
col name format a38
col description format a120

SELECT name, description
FROM dba_feature_usage_statistics
ORDER BY 1;

SELECT name, detected_usages
FROM dba_feature_usage_statistics
ORDER BY 1;

-- to register the use of function-based indexes an install check
-- is not required: The detection method is to use a SQL query


DECLARE
 sql_str CONSTANT VARCHAR2(100) := 'SELECT COUNT(*), 0, NULL FROM
 dba_indexes ' || 'WHERE index_type = ''FUNCTION-BASED NORMAL''';
BEGIN
  dbms_feature_usage.register_db_feature('User FB Index',
  dbms_feature_usage.DBU_INST_ALWAYS_INSTALLED, NULL,
  dbms_feature_usage.DBU_DETECT_BY_SQL, sql_str, 'User created function-based index');
END;
/

SELECT name, description
FROM dba_feature_usage_statistics
ORDER BY 1;

SELECT *
FROM dba_feature_usage_statistics
WHERE name = 'User FB Index';

SELECT name, detected_usages
FROM dba_feature_usage_statistics
ORDER BY 1;

SELECT *
FROM wri$_dbu_feature_metadata
WHERE name LIKE 'User FB%';
Track feature usage using a stored procedure -- to register the HTML_DB (an install check is required and the detection method
-- uses a PL/SQL procedure


CREATE OR REPLACE PROCEDURE oratext_test (
 feature_boolean OUT NOCOPY NUMBER,
 auxiliary_count OUT NOCOPY NUMBER,
 feature_info    OUT NOCOPY CLOB) AUTHID DEFINER IS
BEGIN
  SELECT COUNT(*)
  INTO feature_boolean
  FROM dba_users
  WHERE username = 'CTXSYS';

  auxiliary_count := 0;
  feature_info := NULL;
END oratext_test;
/

DECLARE
 monproc    CONSTANT VARCHAR2(50) := 'OraText_Test';
 is_present CONSTANT VARCHAR2(60) := 'CTXSYS.CONTAINS'
BEGIN
  dbms_feature_usage.register_db_feature('Oracle Text',
  dbms_feature_usage.DBU_INST_OBJECT, is_present,
  dbms_feature_usage.DBU_DETECT_BY_PROCEDURE, monproc, 'Oracle Text');
END;
/
 
REGISTER_HIGH_WATER_MARK
Registers tracking the high-water mark of a specific capability using a SQL statement dbms_feature_usage.register_high_water_mark(
hwm_name   IN VARCHAR2,
hwm_method IN NUMBER,
hwm_logic  IN VARCHAR2,
hwm_desc   IN VARCHAR2);
set linesize 121
col name format a25
col description format a60

SELECT name, version, highwater, description
FROM dba_high_water_mark_statistics;

-- to register the number of user defined function based indexes

DECLARE
 sql_str CONSTANT VARCHAR2(100) := 'SELECT COUNT(*)
 FROM dba_indexes WHERE index_type = ''FUNCTION-BASED NORMAL''';

BEGIN
  dbms_feature_usage.register_high_water_mark('User FBIs',
  dbms_feature_usage.DBU_HWM_BY_SQL, sql_str, 'Number of User Created FBIs');
END;
/

SELECT name, highwater, description
FROM dba_high_water_mark_statistics
WHERE name LIKE 'User%';

Related Topics
ADDM
ASH
Built-in Functions
Built-in Packages
DBMS_FEATURE_USAGE_CLIENT
DBMS_FEATURE_USAGE_INTERNAL
DBMS_FEATURE_USAGE_REPORT
DBMS_WORKLOAD_REPOSITORY
Feature Usage Procedures
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