#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路径 |
注意事项:
- 如果os_memory_limit参数采用默认配置,会占用服务器100%内存,在此期间若有其他用户进程占用内存,可能会导致数据库内存不足宕机。建议手动设置该参数,防止内存不足影响数据库正常运行。
- 数据库最小可用内存为1G,最小可用CPU核数为1,如果分配的内存或CPU过小,将按最小值计算推荐参数,而不会报错。
- NOMOUNT模式下,data_path和redo_path默认都是$YASDB_DATA/dbfiles,MOUNT和OPEN模式下,data_path默认为随机一个datafile所在路径,redo_path默认为随机一个redofile所在路径。
- 写入配置文件后,需要重启数据库才能生效参数。
- 如果同一台服务器上部署多个数据库实例,建议手动设置os_memory_limit,将系统内存按比例划分,防止内存不足。
- 在生成推荐参数时,会在相应目录创建名为"_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 |
| DATA_TRANSFORMERS | 1 | 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();