外观
DM 存储参数
存储参数的作用
- 定义存储结构:确定数据文件、日志文件、临时文件的位置和大小
- 优化I/O性能:调整I/O相关参数,提高读写效率
- 提高数据可靠性:配置冗余和备份策略
- 管理存储空间:控制数据增长和空间使用
- 支持高可用性:配置集群和灾备相关存储参数
存储参数的分类
- 数据文件参数:定义数据文件的位置、大小、增长方式等
- 日志文件参数:定义日志文件的位置、大小、数量、归档方式等
- 临时文件参数:定义临时文件的位置、大小等
- 控制文件参数:定义控制文件的位置、数量等
- 归档参数:定义归档日志的位置、格式、保留策略等
- I/O性能参数:调整I/O相关参数,提高读写效率
主要存储参数详解
1. 数据文件相关参数
DATA_PATH
- 描述:数据文件的默认存储路径
- 默认值:DM_HOME/data
- 调整建议:选择性能较好的存储设备,建议使用RAID 10
sql
-- 查看当前值
SELECT NAME, VALUE FROM V$DM_INI WHERE NAME = 'DATA_PATH';
-- 修改值
SP_SET_PARA_VALUE(2, 'DATA_PATH', '/dm/data');DBFILE_PATH
- 描述:数据文件的存储路径列表,支持多个路径
- 默认值:空
- 调整建议:对于大数据库,可以配置多个数据文件路径,分布在不同的存储设备上
DBFILE_SIZE
- 描述:数据文件的默认大小
- 默认值:128MB
- 最小值:8MB
- 最大值:4096GB
- 单位:MB
- 调整建议:根据数据库规模和存储设备性能调整
DBFILE_GROWTH
- 描述:数据文件的自动增长大小
- 默认值:128MB
- 最小值:8MB
- 最大值:4096GB
- 单位:MB
- 调整建议:根据数据增长速度调整
DBFILE_MAX_SIZE
- 描述:数据文件的最大大小
- 默认值:0(无限制)
- 最小值:0
- 最大值:4096GB
- 单位:MB
- 调整建议:根据存储设备容量调整
2. 日志文件相关参数
LOG_PATH
- 描述:日志文件的默认存储路径
- 默认值:DM_HOME/data
- 调整建议:建议将日志文件和数据文件放在不同的存储设备上,提高I/O性能和可靠性
sql
-- 查看当前值
SELECT NAME, VALUE FROM V$DM_INI WHERE NAME = 'LOG_PATH';
-- 修改值
SP_SET_PARA_VALUE(2, 'LOG_PATH', '/dm/log');REDO_LOG_SIZE
- 描述:重做日志文件的大小
- 默认值:256MB
- 最小值:64MB
- 最大值:2048MB
- 单位:MB
- 调整建议:对于高并发写入场景,建议设置为512MB-1024MB
REDO_LOG_FILE_NUM
- 描述:重做日志文件的数量
- 默认值:3
- 最小值:2
- 最大值:100
- 调整建议:建议设置为4-8个
ARCH_INI
- 描述:是否启用归档配置
- 默认值:0(不启用)
- 取值范围:0(不启用),1(启用)
- 调整建议:生产环境建议启用归档
sql
-- 查看当前值
SELECT NAME, VALUE FROM V$DM_INI WHERE NAME = 'ARCH_INI';
-- 修改值
SP_SET_PARA_VALUE(1, 'ARCH_INI', 1);ARCH_DEST
- 描述:归档日志的存储路径
- 默认值:DM_HOME/arch
- 调整建议:建议将归档日志存储在独立的存储设备上
3. 临时文件相关参数
TEMP_PATH
- 描述:临时文件的存储路径
- 默认值:DM_HOME/data
- 调整建议:建议将临时文件放在高性能存储设备上,如SSD
sql
-- 查看当前值
SELECT NAME, VALUE FROM V$DM_INI WHERE NAME = 'TEMP_PATH';
-- 修改值
SP_SET_PARA_VALUE(2, 'TEMP_PATH', '/dm/temp');TEMP_SIZE
- 描述:临时表空间的大小
- 默认值:100MB
- 最小值:16MB
- 最大值:4096GB
- 单位:MB
- 调整建议:根据系统负载和排序操作的频率调整,一般设置为512MB-2GB
TEMP_SPACE_LIMIT
- 描述:临时表空间的大小限制
- 默认值:0(无限制)
- 最小值:0
- 最大值:4096GB
- 单位:MB
- 调整建议:根据存储设备容量调整
4. 控制文件相关参数
CTL_PATH
- 描述:控制文件的存储路径
- 默认值:DM_HOME/data
- 调整建议:建议配置多个控制文件,分布在不同的存储设备上
CTL_FILE_NUM
- 描述:控制文件的数量
- 默认值:1
- 最小值:1
- 最大值:10
- 调整建议:建议设置为2-3个,提高可靠性
5. I/O性能参数
IO_THR_GROUPS
- 描述:I/O线程组数量
- 默认值:1
- 最小值:1
- 最大值:16
- 调整建议:根据存储设备类型和数量调整,一般设置为存储设备数量
IO_THR_PER_GRP
- 描述:每个I/O线程组的I/O线程数量
- 默认值:4
- 最小值:1
- 最大值:64
- 调整建议:根据CPU核心数和存储设备性能调整,一般设置为CPU核心数的1/4-1/2
DISK_ASYNC_IO
- 描述:是否启用异步I/O
- 默认值:1(启用)
- 取值范围:0(不启用),1(启用)
- 调整建议:对于高性能存储设备,建议启用异步I/O
sql
-- 查看当前值
SELECT NAME, VALUE FROM V$DM_INI WHERE NAME = 'DISK_ASYNC_IO';
-- 修改值
SP_SET_PARA_VALUE(1, 'DISK_ASYNC_IO', 1);DISK_IO_QUEUE
- 描述:磁盘I/O队列深度
- 默认值:1024
- 最小值:128
- 最大值:8192
- 调整建议:根据存储设备性能调整,高性能存储设备可以设置较大的值
CACHE_POOL_SIZE
- 描述:缓存池大小
- 默认值:16MB
- 最小值:4MB
- 最大值:1024MB
- 单位:MB
- 调整建议:根据系统负载和内存大小调整
6. 存储管理参数
AUTO_EXTEND_SIZE
- 描述:表空间自动扩展的默认大小
- 默认值:128MB
- 最小值:8MB
- 最大值:4096GB
- 单位:MB
- 调整建议:根据数据增长速度调整
AUTO_EXTEND_MAX_SIZE
- 描述:表空间自动扩展的最大大小
- 默认值:0(无限制)
- 最小值:0
- 最大值:4096GB
- 单位:MB
- 调整建议:根据存储设备容量调整
SPACE_MONITOR
- 描述:是否启用空间监控
- 默认值:1(启用)
- 取值范围:0(不启用),1(启用)
- 调整建议:建议启用空间监控,及时发现空间不足问题
7. 集群存储参数
DMDSC_PATH
- 描述:DMDSC集群的共享存储路径
- 默认值:空
- 调整建议:配置为共享存储设备的路径
RLOG_SEND_THRESHOLD
- 描述:日志发送阈值
- 默认值:0
- 最小值:0
- 最大值:1024MB
- 单位:MB
- 调整建议:根据网络带宽和集群负载调整
RLOG_APPLY_THRESHOLD
- 描述:日志应用阈值
- 默认值:0
- 最小值:0
- 最大值:1024MB
- 单位:MB
- 调整建议:根据系统负载调整
存储参数配置方法
1. 使用系统过程修改
可以使用SP_SET_PARA_VALUE系统过程修改存储参数,该方法可以立即生效或重启后生效,具体取决于参数类型。
sql
-- 立即生效(系统级参数)
SP_SET_PARA_VALUE(1, 'DISK_ASYNC_IO', 1);
-- 重启后生效(会话级参数)
SP_SET_PARA_VALUE(2, 'DATA_PATH', '/dm/data');2. 修改dm.ini配置文件
可以直接修改dm.ini配置文件中的存储参数,修改后需要重启数据库实例才能生效。
ini
-- dm.ini文件示例
DATA_PATH = /dm/data
LOG_PATH = /dm/log
TEMP_PATH = /dm/temp
DBFILE_SIZE = 512
DBFILE_GROWTH = 256
REDO_LOG_SIZE = 512
REDO_LOG_FILE_NUM = 4
DISK_ASYNC_IO = 1
IO_THR_PER_GRP = 83. 使用DM管理工具修改
可以使用DM管理工具图形界面修改存储参数:
- 启动DM管理工具,连接到数据库实例
- 选择"配置" -> "参数配置"
- 在左侧导航树中选择"存储参数"
- 修改相应的参数值
- 点击"应用"保存修改
- 根据提示重启数据库实例(如果需要)
4. 使用DM性能监控工具修改
可以使用DM性能监控工具实时监控和修改存储参数:
- 启动DM性能监控工具,连接到数据库实例
- 选择"性能" -> "存储监控"
- 查看当前存储使用情况
- 点击"参数调整"修改存储参数
- 保存修改并重启数据库实例(如果需要)
存储参数调优最佳实践
1. 总体调优原则
- 分离存储设备:将数据文件、日志文件、临时文件放在不同的存储设备上
- 使用高性能存储:对于I/O密集型应用,使用SSD等高性能存储设备
- 合理规划空间:根据数据增长速度,合理规划数据文件大小和增长方式
- 监控空间使用:定期监控存储空间使用情况,及时扩展空间
- 优化I/O参数:根据存储设备性能,调整I/O相关参数
- 考虑高可用性:配置冗余的日志文件、控制文件等
2. 数据文件调优建议
- 合理设置初始大小:根据数据库规模,设置合理的数据文件初始大小,避免频繁扩展
- 使用多个数据文件:对于大数据库,使用多个数据文件,分布在不同的存储设备上
- 设置适当的增长方式:根据数据增长速度,设置适当的自动增长大小
- 考虑分区表:对于大表,考虑使用分区表,分布在不同的数据文件上
3. 日志文件调优建议
- 设置合理的大小:重做日志文件大小建议设置为512MB-1024MB
- 使用多个日志文件:建议设置4-8个重做日志文件
- 将日志文件放在独立存储设备上:日志文件的I/O模式与数据文件不同,放在独立存储设备上可以提高性能
- 启用归档日志:生产环境建议启用归档日志,提高数据可靠性
4. 临时文件调优建议
- 将临时文件放在高性能存储设备上:临时文件常用于排序、连接等操作,需要高性能存储
- 设置合理的大小:根据系统负载和排序操作的频率,设置合理的临时表空间大小
- 监控临时空间使用:定期监控临时空间使用情况,避免临时空间不足
5. I/O性能调优建议
- 启用异步I/O:对于高性能存储设备,建议启用异步I/O
- 调整I/O线程数量:根据CPU核心数和存储设备性能,调整I/O线程数量
- 优化I/O队列深度:根据存储设备性能,调整I/O队列深度
- 使用RAID:对于重要数据,使用RAID 10等冗余存储方案
存储监控与管理
1. 存储使用监控
可以使用以下视图监控存储使用情况:
- V$DATAFILE:查看数据文件信息
- V$LOGFILE:查看日志文件信息
- V$TABLESPACE:查看表空间信息
- V$TEMPFILE:查看临时文件信息
- V$DISK:查看磁盘使用情况
sql
-- 查看表空间使用情况
SELECT TABLESPACE_NAME, TOTAL_SIZE/1024/1024 total_mb, USED_SIZE/1024/1024 used_mb,
(USED_SIZE/TOTAL_SIZE)*100 used_percent
FROM V$TABLESPACE;
-- 查看数据文件信息
SELECT NAME, PATH, TOTAL_SIZE/1024/1024 total_mb, FREE_SIZE/1024/1024 free_mb
FROM V$DATAFILE;
-- 查看日志文件信息
SELECT NAME, PATH, SIZE/1024/1024 size_mb, STATUS
FROM V$LOGFILE;
-- 查看临时表空间使用情况
SELECT TABLESPACE_NAME, TOTAL_SIZE/1024/1024 total_mb, USED_SIZE/1024/1024 used_mb
FROM V$TEMP_SPACE_STAT;2. 存储故障诊断
- 空间不足:如果出现"表空间不足"或"数据文件已满"错误,需要扩展表空间或数据文件
- I/O性能问题:如果I/O等待时间过长,需要优化存储参数或升级存储设备
- 存储设备故障:如果存储设备故障,需要使用备份恢复数据
3. 存储管理建议
- 定期备份:定期备份数据库,确保数据安全
- 监控空间使用:设置空间使用告警,及时发现空间不足问题
- 优化存储结构:定期重组表和索引,优化存储结构
- 考虑存储虚拟化:对于复杂环境,考虑使用存储虚拟化技术,提高存储资源利用率
- 规划存储增长:根据业务增长情况,提前规划存储扩展
常见问题(FAQ)
Q1: 如何确定合适的数据文件大小?
A1: 确定合适的数据文件大小需要考虑以下因素:
- 数据库规模:数据库越大,需要的数据文件越大
- 数据增长速度:数据增长越快,需要的数据文件越大
- 存储设备性能:高性能存储设备可以支持更大的数据文件
- 备份和恢复需求:较大的数据文件会增加备份和恢复时间
Q2: 为什么要将数据文件、日志文件和临时文件放在不同的存储设备上?
A2: 将不同类型的文件放在不同的存储设备上有以下好处:
- 减少I/O竞争:不同类型的文件有不同的I/O模式,分离存储可以减少I/O竞争
- 提高性能:将日志文件和临时文件放在高性能存储设备上可以提高系统性能
- 提高可靠性:如果一个存储设备故障,只会影响一种类型的文件
Q3: 如何扩展表空间?
A3: 扩展表空间的方法包括:
- 增加数据文件:向表空间中添加新的数据文件
- 扩展现有数据文件:增加现有数据文件的大小
- 启用自动扩展:设置数据文件自动增长
sql
-- 增加数据文件
ALTER TABLESPACE USERS ADD DATAFILE '/dm/data/users02.dbf' SIZE 512MB AUTOEXTEND ON NEXT 256MB;
-- 扩展现有数据文件
ALTER TABLESPACE USERS RESIZE DATAFILE '/dm/data/users01.dbf' TO 1024MB;Q4: 如何优化I/O性能?
A4: 优化I/O性能的方法包括:
- 使用高性能存储设备,如SSD
- 启用异步I/O
- 调整I/O线程数量
- 优化I/O队列深度
- 将不同类型的文件放在不同的存储设备上
- 优化SQL语句,减少I/O操作
Q5: 如何配置归档日志?
A5: 配置归档日志的步骤:
- 修改dm.ini文件,设置ARCH_INI=1
- 创建归档配置文件dmarch.ini
- 重启数据库实例
ini
-- dmarch.ini文件示例
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0Q6: 如何监控存储空间使用情况?
A6: 监控存储空间使用情况的方法:
- 使用V$TABLESPACE、V$DATAFILE等视图查看空间使用情况
- 使用DM管理工具的空间监控功能
- 设置空间使用告警
- 定期生成空间使用报告
Q7: 如何处理表空间不足问题?
A7: 处理表空间不足问题的方法:
- 增加数据文件
- 扩展现有数据文件
- 启用自动扩展
- 清理无用数据
- 考虑表分区
Q8: 如何优化临时表空间?
A8: 优化临时表空间的方法:
- 将临时表空间放在高性能存储设备上
- 设置合理的临时表空间大小
- 监控临时表空间使用情况
- 优化排序和连接操作,减少临时空间使用
Q9: 如何配置多个控制文件?
A9: 配置多个控制文件的步骤:
- 修改dm.ini文件,设置CTL_FILE_NUM为需要的控制文件数量
- 修改dm.ini文件,设置CTL_PATH为多个控制文件路径,用分号分隔
- 重启数据库实例
Q10: 如何备份存储参数配置?
A10: 备份存储参数配置的方法:
- 备份dm.ini配置文件
- 备份表空间和数据文件的创建脚本
- 记录存储设备的配置信息
- 定期生成数据库配置报告
版本差异说明
| 版本 | 主要变化 |
|---|---|
| DM 7 | 支持基本的存储参数配置 |
| DM 8 | 增强了存储管理功能,支持更多存储参数 |
| DM 8.1 | 优化了I/O性能,支持更多存储设备类型 |
在进行存储参数调优时,需要注意以下几点:
- 分离不同类型的文件到不同的存储设备
- 使用高性能存储设备,如SSD
- 合理规划数据文件大小和增长方式
- 优化I/O相关参数
- 定期监控存储空间使用情况
- 考虑高可用性和灾备需求
通过合理的存储参数配置和调优,可以充分利用存储资源,提高DM数据库的性能和可靠性,为业务提供高效、稳定的数据服务。
