Statistics preferences specify the default values for statistics collection strategies, such as the values of granularity and method_opt.
Available statistics preferences
In Oracle mode, the following virtual tables are provided for you to query the current settings of statistics preferences:
SYS.ALL_VIRTUAL_OPTSTAT_GLOBAL_PREFS_REAL_AGENTfor querying global preference settingsSYS.ALL_VIRTUAL_OPTSTAT_USER_PREFS_REAL_AGENTfor querying table-level preference settings
The following table lists the available preferences that you can set.
| Preference name | Preference value | Description |
|---|---|---|
| APPROXIMATE_NDV | Valid values:
|
Specifies whether estimation is used for the calculation of the number of distinct values (NDV). Note that this preference cannot be inserted into __all_optstat_user_prefs. |
| CASCADE | Valid values:
|
This parameter is not used. |
| DEGREE | Default value: NULL. | The collection concurrency. |
| ESTIMATE_PERCENT | Value range: [0.000001, 100]. Default value: "DBMS_STATS.AUTO_SAMPLE_SIZE". | The percentage of rows to estimate. |
| GRANULARITY | Default value: "AUTO". | The collection granularity. Its syntax is the same as that of granularity. |
| INCREMENTAL | Valid values:
|
Specifies whether to use the incremental collection strategy. |
| INCREMENTAL_LEVEL | Valid values:
|
The incremental collection level. Currently, only the table level is supported. |
| METHOD_OPT | Default value: "FOR ALL COLUMNS SIZE AUTO". | The statistics collection method at the column level. Its syntax is the same as that of method_opt. |
| NO_INVALIDATE | Valid values:
|
This parameter is not used. |
| OPTIONS | Valid values:
|
This parameter is not used. |
| STALE_PERCENT | Default value: 10. | The expiration ratio threshold for statistics. |
| STATS_RETENTION | Value range: [0-365000]. Default value: 31. | The interval at which statistics are retained. |
Set and retrieve preferences
Set and retrieve global preferences
You can set and retrieve global preferences by using the following stored procedures:
reset_global_pref_defaultsreset_param_defaultsset_global_prefsset_paramget_param
The definitions are as follows:
PROCEDURE reset_global_pref_defaults;
PROCEDURE reset_param_defaults;
PROCEDURE set_global_prefs(
pname VARCHAR2,
pvalue VARCHAR2
);
PROCEDURE set_param(
pname VARCHAR2,
pval VARCHAR2
);
FUNCTION get_param (
pname VARCHAR2
)RETURN VARCHAR2;
The parameters are described as follows:
pname: the name of a preference.pvalue: the value of the preference.
Set and retrieve table-level preferences
You can set and retrieve table-level preferences by using the following stored procedures:
set_schema_prefsset_table_prefsdelete_schema_prefsdelete_table_prefsget_prefs
The definitions are as follows:
PROCEDURE set_schema_prefs(
ownname VARCHAR2,
pname VARCHAR2,
pvalue VARCHAR2
);
PROCEDURE set_table_prefs(
ownname VARCHAR2,
tabname VARCHAR2,
pname VARCHAR2,
pvalue VARCHAR2
);
PROCEDURE delete_schema_prefs(
ownname VARCHAR2,
pname VARCHAR2
);
PROCEDURE delete_table_prefs (
ownname VARCHAR2,
tabname VARCHAR2,
pname VARCHAR2
);
FUNCTION get_prefs (
pname VARCHAR2,
ownname VARCHAR2 DEFAULT NULL,
tabname VARCHAR2 DEFAULT NULL
) RETURN VARCHAR2;
The following table describes the parameters.
| Parameter | Description |
|---|---|
| ownname |
|
| tabname | The name of the table. |
| pname | The name of the preference. |
| pvalue | The value of the preference. |
Examples
Set the global
APPROXIMATE_NDVpreference toFALSE.CALL dbms_stats.set_global_prefs('APPROXIMATE_NDV', 'FALSE');Reset all global preferences to their default values.
CALL reset_global_pref_defaults();Set the
DEGREEpreference for the statistics collection strategy oftbl1to128for usertest.CALL dbms_stats.set_table_prefs('test', 'tbl1', 'DEGREE', '128');Delete the
DEGREEpreference for the statistics collection strategy oftbl1for usertest.CALL dbms_stats.delete_table_prefs('test', 'tbl1', 'DEGREE');