#DBMS_PARAM

DBMS_PARAM包提供了一组变量、函数和存储过程,用于设置数据库的推荐参数。 拥有ALTER SYSTEM权限的用户可以根据业务类型和系统资源状况,使用该高级包查看和应用推荐参数。

# OPTIMIZE

DBMS_PARAM.OPTIMIZE (
	apply_parameter     BOOL,
	table_type          VARCHAR,
	os_memory_limit     NUMBER,
	os_cpu_limit        NUMBER,
	data_path           VARCHAR,
	redo_path           VARCHAR
);

此存储过程用于生成推荐参数,旧的推荐参数将会被覆盖。

生成推荐参数的过程中,系统会测试datafile和redofile所在的磁盘性能,因此建议在没有业务的情况下执行,以免影响推荐参数的结果准确性。

此存储过程的所有参数都有默认值,最少输入0个参数,最多输入6个参数。

参数 描述
apply_parameter 生成推荐参数后,是否立刻写入配置文件,默认为FALSE
table_type 主要业务的表类型,可选[HEAP,TAC,LSC],默认为HEAP
os_memory_limit 内存限制百分比,默认为100,即分配所有内存
os_cpu_limit CPU限制百分比,默认为100,即分配所有CPU
data_path datafile所在路径,默认为'',系统会自动获取datafile路径
redo_path redofile所在路径,默认为'',系统会自动获取redofile路径

注意事项:

  1. 数据库最小可用内存为1.5G,最小可用CPU核数为1,如果分配的内存或CPU过小,将按最小值计算推荐参数,而不会报错。
  2. NOMOUNT模式下,data_path和redo_path默认都是$YASDB_DATA/dbfiles,MOUNT和OPEN模式下,data_path默认为随机一个datafile所在路径,redo_path默认为随机一个redofile所在路径。
  3. 写入配置文件后,需要重启数据库才能生效参数。
  4. 如果同一台服务器上部署多个数据库实例,建议手动设置os_memory_limit,将系统内存按比例划分,防止内存不足。
  5. 在生成推荐参数时,会在相应目录创建名为"_io_diag.tmp"的临时文件,正常情况下程序结束后自动删除临时文件。异常宕机时可能会残留,需要手动清理。

示例

# 使用默认参数生成推荐参数,不写入配置文件。
BEGIN
    DBMS_PARAM.OPTIMIZE();
END;
/

# 使用TAC表类型,分配80%的内存,100%的CPU,生成推荐参数后,写入配置文件。
EXEC DBMS_PARAM.OPTIMIZE(True, 'TAC', 80);

# 使用默认的HEAP表类型,分配100%的内存,100%的CPU,生成推荐参数后,不写入配置文件。
EXEC DBMS_PARAM.OPTIMIZE(NULL, NULL, 100, 100);

# 使用LSC表类型,分配100%的内存,100%的CPU,指定datafile和redofile的路径,生成推荐参数后,不写入配置文件。
EXEC DBMS_PARAM.OPTIMIZE(NULL, 'LSC', NULL, NULL, '/home/yashan/data', '/home/yashan/redo');

# SHOW_RECOMMEND

DBMS_PARAM.SHOW_RECOMMEND();

SHOW_RECOMMEND为一个函数,返回最近一次推荐参数的报告。

示例

SELECT DBMS_PARAM.SHOW_RECOMMEND() FROM dual;

DBMS_PARAM.SHOW_RECO                                             
---------------------------------------------------------------- 
********** Recommended Settings For HEAP Table ***********
+--------------------------------+-------------+---------+
|            name                |  recommend  | restart |
+--------------------------------+-------------+---------+
| DATA_BUFFER_SIZE               |       5498M |  True   |
| VM_BUFFER_SIZE                 |        741M |  True   |
| WORK_AREA_STACK_SIZE           |          1M |  True   |
| WORK_AREA_POOL_SIZE            |         16M |  True   |
| SHARE_POOL_SIZE                |        741M |  True   |
| LARGE_POOL_SIZE                |        112M |  True   |
| MAX_PARALLEL_WORKERS           |          12 |  True   |
| SCOL_DATA_BUFFER_SIZE          |        128M |  True   |
| SCOL_DATA_PRELOADERS           |           2 |  True   |
| COLUMNAR_WORK_AREA_HEAP_SIZE   |         32M |  True   |
| COLUMNAR_VM_BUFFER_SIZE        |        128M |  True   |
| COLUMNAR_BULK_SIZE             |        1024 |  True   |
| COMPRESSION                    |         LZ4 |  True   |
| MMS_DATA_LOADERS               |           3 |  True   |
| CHECKPOINT_INTERVAL            |        192M |  False  |
| CHECKPOINT_TIMEOUT             |          60 |  False  |
| REDOFILE_IO_MODE               |      DIRECT |  True   |
| DATAFILE_IO_MODE               |     DEFAULT |  True   |
| COMMIT_LOGGING                 |   IMMEDIATE |  False  |
| RECOVERY_PARALLELISM           |           2 |  True   |
| REDO_BUFFER_SIZE               |         16M |  True   |
+--------------------------------+-------------+---------+
Note: You can execute 'DBMS_PARAM.APPLY_RECOMMEND()' to apply the recommend parameters.
      After applying the parameters, you need to restart the database.

# APPLY_RECOMMEND

DBMS_PARAM.APPLY_RECOMMEND();

此存储过程应用推荐参数,将最近一次的推荐参数写入配置参数文件。执行后必须重启数据库,以便让参数生效。

示例

EXEC DBMS_PARAM.APPLY_RECOMMEND();

# SHOW_MEMORY_LIMIT

DBMS_PARAM.SHOW_MEMORY_LIMIT();

SHOW_MEMORY_LIMIT为一个函数,返回当前配置项下,系统使用内存的上限值。

示例

SELECT DBMS_PARAM.SHOW_MEMORY_LIMIT() FROM dual;

DBMS_PARAM.SHOW_MEMO                                             
---------------------------------------------------------------- 
********** Default table type: LSC ************
+--------------------------------+----------+--------+----------+
|            name                | setting  |  num   |  memory  |
+--------------------------------+----------+--------+----------+
| DATA_BUFFER_SIZE               |     256M |      1 |     256M |
| VM_BUFFER_SIZE                 |      32M |      1 |      32M |
| WORK_AREA_POOL_SIZE            |     128M |      1 |     128M |
| SHARE_POOL_SIZE                |     256M |      1 |     256M |
| LARGE_POOL_SIZE                |      32M |      1 |      32M |
| SCOL_DATA_BUFFER_SIZE          |     128M |      1 |     128M |
| COLUMNAR_VM_BUFFER_SIZE        |     128M |      1 |     128M |
| PQ_POOL_SIZE                   |     128M |      1 |     128M |
| REDO_BUFFER_SIZE               |       8M |      2 |      16M |
| MAX_WORKERS                    |       16 |        |          |
| MAX_PARALLEL_WORKERS           |      128 |        |          |
| WORK_AREA_STACK_SIZE           |    1024K |    144 |     144M |
| private log buffer size        |     128K |    144 |      18M |
| MAX_SESSIONS                   |      128 |        |          |
| WORK_AREA_HEAP_SIZE            |       2M |    128 |     256M |
| reserved memory for db         |     200M |      1 |     200M |
+--------------------------------+----------+--------+----------+
| memory limit                   |          |        | 1.68164G |
+--------------------------------+----------+--------+----------+