Skip to content

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 = 8

3. 使用DM管理工具修改

可以使用DM管理工具图形界面修改存储参数:

  1. 启动DM管理工具,连接到数据库实例
  2. 选择"配置" -> "参数配置"
  3. 在左侧导航树中选择"存储参数"
  4. 修改相应的参数值
  5. 点击"应用"保存修改
  6. 根据提示重启数据库实例(如果需要)

4. 使用DM性能监控工具修改

可以使用DM性能监控工具实时监控和修改存储参数:

  1. 启动DM性能监控工具,连接到数据库实例
  2. 选择"性能" -> "存储监控"
  3. 查看当前存储使用情况
  4. 点击"参数调整"修改存储参数
  5. 保存修改并重启数据库实例(如果需要)

存储参数调优最佳实践

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: 配置归档日志的步骤:

  1. 修改dm.ini文件,设置ARCH_INI=1
  2. 创建归档配置文件dmarch.ini
  3. 重启数据库实例
ini
-- dmarch.ini文件示例
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0

Q6: 如何监控存储空间使用情况?

A6: 监控存储空间使用情况的方法:

  • 使用V$TABLESPACE、V$DATAFILE等视图查看空间使用情况
  • 使用DM管理工具的空间监控功能
  • 设置空间使用告警
  • 定期生成空间使用报告

Q7: 如何处理表空间不足问题?

A7: 处理表空间不足问题的方法:

  • 增加数据文件
  • 扩展现有数据文件
  • 启用自动扩展
  • 清理无用数据
  • 考虑表分区

Q8: 如何优化临时表空间?

A8: 优化临时表空间的方法:

  • 将临时表空间放在高性能存储设备上
  • 设置合理的临时表空间大小
  • 监控临时表空间使用情况
  • 优化排序和连接操作,减少临时空间使用

Q9: 如何配置多个控制文件?

A9: 配置多个控制文件的步骤:

  1. 修改dm.ini文件,设置CTL_FILE_NUM为需要的控制文件数量
  2. 修改dm.ini文件,设置CTL_PATH为多个控制文件路径,用分号分隔
  3. 重启数据库实例

Q10: 如何备份存储参数配置?

A10: 备份存储参数配置的方法:

  • 备份dm.ini配置文件
  • 备份表空间和数据文件的创建脚本
  • 记录存储设备的配置信息
  • 定期生成数据库配置报告

版本差异说明

版本主要变化
DM 7支持基本的存储参数配置
DM 8增强了存储管理功能,支持更多存储参数
DM 8.1优化了I/O性能,支持更多存储设备类型

在进行存储参数调优时,需要注意以下几点:

  • 分离不同类型的文件到不同的存储设备
  • 使用高性能存储设备,如SSD
  • 合理规划数据文件大小和增长方式
  • 优化I/O相关参数
  • 定期监控存储空间使用情况
  • 考虑高可用性和灾备需求

通过合理的存储参数配置和调优,可以充分利用存储资源,提高DM数据库的性能和可靠性,为业务提供高效、稳定的数据服务。