DM 物理存储结构

DM 数据库使用了磁盘上大量的物理存储结构来保存和管理用户数据。典型的物理存储结构包括:用于进行功能设置的配置文件;用于记录文件分布的控制文件;用于保存用户实际数据的数据文件、重做日志文件、归档日志文件、备份文件;用来进行问题跟踪的跟踪日志文件等,如图 2.1 所示。

物理存储结构示意图

图2.1 DM物理存储结构示意图

2.1 配置文件

配置文件是 DM 数据库用来设置功能选项的一些文本文件的集合,配置文件以 ini 为扩展名,它们具有固定的格式,用户可以通过修改其中的某些参数取值来达成如下两个方面的目标:

  1. 启用/禁用特定功能项;
  2. 针对当前系统运行环境设置更优的参数值以提升系统性能。

2.1.1 DM 数据库服务配置

1) dm.ini

每创建一个 DM 数据库,就会自动生成 dm.ini 文件。dm.ini 是 DM 数据库启动所必须的配置文件,通过配置该文件可以设置 DM 数据库服务器的各种功能和性能选项,主要的配置内容见表 2.1。

当 dm.ini 中的某参数值设置为非法值时,若设置值与参数类型不兼容,则参数实际取值为默认值;若设置值小于参数取值范围的最小值,则实际取值为最小值;若设置值大于参数取值范围的最大值,则实际取值为最大值。

参数属性分为三种:静态、动态和手动。静态,可以被动态修改,修改后重启服务器才能生效。

动态,可以被动态修改,修改后即时生效。动态参数又分为会话级和系统级两种。会话级参数被修改后,新参数值只会影响新创建的会话,之前创建的会话不受影响;系统级参数的修改则会影响所有的会话。

手动,不能被动态修改,必须手动修改 dm.ini 参数文件,然后重启才能生效。

动态修改是指 DBA 用户可以在数据库服务器运行期间,通过调用系统过程 SP_SET_PARA_VALUE()、SP_SET_PARA_DOUBLE_VALUE()和 SP_SET_PARA_STRING_VALUE()对参数值进行修改。

表2.1 dm.ini配置项
参数名 缺省值 属性 说明
控制文件相关参数(注意:本类参数不建议用户修改)
CTL_PATH 安装时指定 手动 控制文件路径
CTL_BAK_PATH 安装时指定 手动 控制文件备份路径,缺省路径为“SYSTEM_PATH/CTL_BAK”,在初始化库或没有配置该项时均指定为缺省路径。
备份文件命名格式: “DM_年月日时分秒_毫秒.CTL” 备份文件在初始化库和每次修改DM.CTL控制文件后生成
CTL_BAK_NUM 10 手动 控制文件备份个数限制,取值1~100,在此限制之外,会再多保留一个备份文件,在生成新的备份文件时,如果当前已存在的备份文件个数大于指定值,则自动删除创建时间最早的备份文件,小于或等于指定值的情况下,不会有删除操作,缺省值为10
SYSTEM_PATH 安装时指定 手动 系统库目录
CONFIG_PATH 安装时指定 手动 指定DMSERVER所读取的配置文件(DMMAL.INI, DMARCH.INI, DMTIMER.INI等)的路径。缺省使用SYSTEM_PATH路径。不允许指定ASM目录
TEMP_PATH 安装时指定 手动 临时库文件路径
BAK_PATH 安装时指定 手动 备份路径
BAK_POLICY 0 手动 备份还原版本策略。取值0、1或2。缺省为0。为0表示同时支持BAK1和BAK2版本;为1时只能使用BAK1版本;为2表示只支持BAK2版本。BAK1为备份还原的老版本,BAK2为备份还原的新版本。
实例名
INSTANCE_NAME DMSERVER 手动 实例名(长度不超过16个字节)
内存相关参数
MAX_OS_MEMORY 100 静态 DM服务器能使用的最大内存占操作系统物理内存与虚拟内存总和的百分比,有效值范围(40~100)。当取值100时,服务器不进行内存的检查
注:对于32位版本的DM服务器,虚拟内存最大为2G
MEMORY_POOL 200 静态 共享内存池大小,以M为单位。共享内存池是由DM管理的内存。有效值范围:32位平台为(64~2000),64位平台为(64~67108864)
MEMORY_N_POOLS 1 静态 共享内存池个数,有效值范围(0~2048),0与1等价,即共享池不分片。分片时,每池的初始容量为MEMORY_POOL / MEMORY_N_POOLS, 但受最小初始容量为30M限制,因此实际分片数可能会小于MEMORY_N_POOLS,每个池的TARGET也按此方式由MEMORY_TARGET导出
MEMORY_TARGET 0 动态,系统级 共享内存池在扩充到此大小以上后,空闲时收缩回此指定大小,以M为单位,有效值范围:32位平台为(0~2000),64位平台为(0~67108864),0表示不限制
MEMORY_EXTENT_SIZE 1 静态 共享内存池每次扩充的大小,以M为单位,有效值范围(1~10240)
MEMORY_LEAK_CHECK 0 动态,系统级 是否开启内存泄漏检测。0:否;1:是,此时系统对每一次内存分配都登记到动态视图V$MEM_REGINFO中, 并在释放时解除登记
MEMORY_MAGIC_CHECK 2 静态 是否开启对所有内存池的校验。0:不开启;1:开启校验,校验码基于分配出的块地址计算,在被分配空间的头部和尾部写入校验码;2:增强校验,在1的基础上,如果是内存池分配的,则对尾部未使用空间也计算校验码,写入未使用空间的头部
HUGEPAGE_THRESHOLD 32 动态,系统级 如果从OS申请内存的尺寸大于等于 HUGEPAGE_THRESHOLD * 2M, 则尝试先申请巨页内存,若失败再申请常规内存; 0表示不尝试使用巨页内存。有效值范围(0~1024)。注:本参数仅对LINUX操作系统有效,使用巨页内存需要对OS进行相关配置
MEMORY_BAK_POOL 4 静态 系统备份内存池大小,以M为单位。系统备份内存池是由DM管理的内存。有效值范围(2~10000)
HUGE_MEMORY_PERCENTAGE 50 静态 指示HUGE_BUFFER中可以借用作常规内存分配的空间百分比,有效值为0~100。
HUGE_BUFFER 80 静态 HUGE表使用的缓冲区大小,以M为单位。有效值范围(80~1048576)
HUGE_BUFFER_POOLS 4 静态 HUGE BUFFER系统分区数,每个HUGE BUFFER分区的大小为HUGE_BUFFER/HUGE_BUFFER_POOLS。有效值范围(1~512)
BUFFER 100 静态 系统缓冲区大小,以M为单位。推荐值:系统缓冲区大小为可用物理内存的60%~80%。有效值范围(8~1048576)
BUFFER_POOLS 19 静态 BUFFER系统分区数,每个BUFFER分区的大小为BUFFER/BUFFER_POOLS。有效值范围(1~512)
FAST_POOL_PAGES 3000 静态 快速缓冲区页数。有效值范围(0~99999999)。 FAST_POOL_PAGES的值最多不能超过BUFFER总页数的一半,如果超过,系统会自动调整为BUFFER总页数的一半
FAST_ROLL_PAGES 1000 静态 BUFFER中FAST POOL回滚页数量。有效值范围(0~9999999),最多不超过FAST_POOL_PAGES的75%,如果超过,系统会自动调整。填充规则:将回滚表空间0号文件的0~FAST_ROLL_PAGE-1号页填入FAST POOL中
KEEP 8 静态 KEEP缓冲区大小,以M为单位。有效值范围(8~1048576)
RECYCLE 64 静态 RECYCLE缓冲区大小,以M为单位。有效值范围(8~1048576)
RECYCLE_POOLS 19 静态 RECYCLE缓冲区分区数,每个RECYCLE分区的大小为RECYCLE/RECYCLE_POOLS。有效值范围(1~512)
MULTI_PAGE_GET_NUM 1 动态,系统级 缓冲区最多一次读取的页面数。有效值范围(1~64) 注:当数据库加密时不支持多页读取,此时DM.INI中此参数值无效
PRELOAD_SCAN_NUM 0 动态,系统级 数据页首次预加载时连续扫描的页数,有效值范围(0~64)。取值为0时关闭数据页预加载功能
注:PRELOAD_SCAN_NUM实际有效范围为(0 ~ EXTENT_SIZE – 2),当大于EXTENT - 2时将会间接失效预加载
PRELOAD_EXTENT_NUM 0 动态,系统级 数据页首次预加载的簇数量,有效值范围(0~64)。取值为0时关闭数据页预加载功能
SORT_FLAG 0 动态,会话级 排序机制,0:原排序机制;1:新排序机制
SORT_BUF_SIZE 2 动态,会话级 原排序机制下,排序缓存区最大值,以M为单位。有效值范围(1~2048)
SORT_BUF_GLOBAL_SIZE 1000 动态,系统级 新排序机制下,排序全局内存使用上限,以M为单位。有效值范围(10~4294967294)
SORT_BLK_SIZE 1 动态,会话级 新排序机制下,每个排序分片空间的大小,以M为单位,必须小于SORT_BUF_GLOBAL_SIZE。有效值范围(1~50)
HAGR_HASH_SIZE 100000 动态,会话级 HAGR操作时,建立HASH表的桶个数。有效值范围(10000~100000000)
MAL_LEAK_CHECK 0 动态,系统级 是否打开MAL内存泄露检查。0:关闭;1:打开 MAL_LEAK_CHECK为1时,可查询V$MAL_USING_LETTERS检查MAL内存泄露。
HJ_BUF_GLOBAL_SIZE 500 动态,系统级 HASH 连接操作符的数据总缓存大小(>= HJ_BUF_SIZE),系统级参数,以M为单位。有效值范围(10~500000)
HJ_BUF_SIZE 50 动态,会话级 单个HASH连接操作符的数据总缓存大小,以M为单位,必须小于HJ_BUF_GLOBAL_SIZE。有效值范围(2~100000)
HJ_BLK_SIZE 1 动态,会话级 HASH连接操作符每次分配缓存(BLK)大小,以M为单位,必须小于HJ_BUF_SIZE。有效值范围(1~50)
HAGR_BUF_GLOBAL_SIZE 500 动态,系统级 HAGR、DIST、集合操作、SPL2、NTTS2以及HTAB操作符的数据总缓存大小(>= HAGR_BUF_SIZE),系统级参数,以M为单位。有效值范围(10~1000000)
HAGR_BUF_SIZE 50 动态,会话级 单个HAGR、DIST、集合操作、SPL2、NTTS2以及HTAB操作符的数据总缓存大小,以M为单位。有效值范围(2~500000)。 如果HAGR_BUF_SIZE设置的值满足范围且大于HAGR_BUF_GLOBAL_SIZE,那么会在HAGR_BUF_GLOBAL_SIZE/2和500000两个值中,选出较小的那个,作为新的HAGR_BUF_SIZE值。
HAGR_BLK_SIZE 1 动态,会话级 HAGR、DIST、集合操作、SPL2、NTTS2以及HTAB操作符每次分配缓存(BLK)大小,以M为单位,必须小于HAGR_BUF_SIZE。有效值范围(1~50)
MTAB_MEM_SIZE 8 静态 MTAB缓存BDTA占用内存空间的大小,以KB为单位,有效值范围(1~1048576)
FTAB_MEM_SIZE 0 静态 FTAB缓存BDTA占用内存空间的大小,以KB为单位。取值范围为(0~64 * 1024)。0表示使用MTAB,大于0时才使用FTAB。当取值小于32时,FTAB_MEM_SIZE均使用32
MMT_SIZE 0 动态,会话级 是否使用MMT。0:不启用;其他有效值:启用,并确定单个映射文件大小,必须小于MMT_GLOBAL_SIZE。有效值范围(0~64),单位MB
MMT_GLOBAL_SIZE 4000 动态,系统级 系统总共使用MMT的文件总大小,单位MB,有效值范围(10~1000000),仅在MMT_SIZE大于0时有效
MMT_FLAG 1 动态,会话级 MMT存储数据方式。1:按页存储;2:BDTA存储。仅在MMT_SIZE大于0时有效
DICT_BUF_SIZE 5 静态 字典缓冲区大小,以M为单位,有效值范围(1~2048)。单位:MB
HFS_CACHE_SIZE 160 动态,系统级 HUGE表 I/U/D 时HDTA_BUFFER缓存池大小,单位为MB。有效值范围(160~ 2000)
VM_STACK_SIZE 256 静态 系统执行时虚拟机堆栈大小,单位为K,堆栈的空间是从操作系统中申请的,有效值范围(64~256*1024)
VM_POOL_SIZE 64 静态 系统执行时虚拟机内存池大小,在执行过程中用到的内存大部分是从这里申请的,它的空间是从操作系统中直接申请的,有效值范围(32~1024*1024)
VM_POOL_TARGET 32768 静态 虚拟机内存池能扩充到的最大大小,以KB为单位,有效值范围(0~10*1024*1024),0表示不限制
SESS_POOL_SIZE 64 动态,系统级 会话缓冲区大小,以KB为单位,有效值范围(16~1024*1024)。若所申请的内存超过实际能申请的大小,则系统将按16KB大小重新申请
SESS_POOL_TARGET 32768 动态,系统级 会话缓冲区能扩充到的最大大小,以KB为单位,有效值范围(0~10*1024*1024),0表示不限制
RT_HEAP_TARGET 8192 动态,系统级 会话上用于动态对象存储的RT_HEAP最大可扩展到的大小,以K为单位,有效值范围(8192~10*1024*1024)
VM_MEM_HEAP 0 动态,系统级 VM是否使用HEAP分配内存。0:MEMORY POOL模式;1:HEAP模式;2:MEMORY POOL和HEAP混合模式
RFIL_RECV_BUF_SIZE 16 静态 控制服务器启动时,进行REDO操作过程中,REDO日志文件恢复时BUFFER的大小,以MB为单位,有效值范围(16~4000)
COLDATA_POOL_SIZE 0 动态,系统级 COLDATA池的大小,以M为单位
HAGR_DISTINCT_HASH_TABLE_SIZE 10000 动态,会话级 分组DISTINCT操作中HASH表的大小(桶数)。取值范围为(10000~100000000)
CNNTB_HASH_TABLE_SIZE 100 动态,会话级 指定CNNTB操作符中创建HASH表的大小。有效值范围(100~100000000)
GLOBAL_RTREE_BUF_SIZE 100 动态,会话级 R树全局缓冲区大小,以MB为单位
SINGLE_RTREE_BUF_SIZE 10 动态,会话级 单个R树的缓冲区大小,以MB为单位,必须小于GLOBAL_RTREE_BUF_SIZE
SORT_OPT_SIZE 1 静态 整型/浮点型数据排序优化辅助空间大小,对应待排序数组的最大最小差值,单位M,有效值范围(0~1024)。取值1M时对应待排序数组的最大最小差值为262144,超过则不能使用优化。
TSORT_OPT 1 动态,系统级 排序优化选项。0:排序操作一律使用估算的行数分配内存(至少2M);1:打开优化,排序操作结果行数较少时,使用实际的记录行数分配内存
线程相关参数
WORKER_THREADS 4 静态 工作线程的数目,有效值范围(1~64)
TASK_THREADS 4 静态 任务线程个数,有效值范围(1~1000)
FAST_RW_LOCK 1 手动 快速读写锁标记,0不启用;1表示只有FAST POOL启用,2表示所有POOL都启用
SPIN_TIME 4000 静态 线程在不能进入临界区时,自旋的次数,有效值范围(0~4000)
WORK_THRD_STACK_SIZE 8192 静态 工作线程堆栈大小,以KB为单位。有效值范围(1024~32768)
WORK_THRD_RESERVE_SIZE 200 静态 工作线程预留栈帧大小,以KB为单位。有效值范围(50~1024) WORK_THRD_RESERVE_SIZE受WORK_THRD_STACK_SIZE限制,最多预留工作线程堆栈大小一半
WORKER_CPU_PERCENT 0 手动 工作线程占CPU的比重,仅非WINDOWS下有效,有效值范围(0~100)。0表示不限制,相当于100
NESTED_C_STYLE_COMMENT 0 动态,系统级 是否支持C风格的嵌套注释,0:不支持;1:支持
查询相关参数
USE_PLN_POOL 1 静态 是否重用执行计划。0:禁止执行计划的重用;1:启用执行计划的重用功能 ;2:对不包含显式参数的语句进行常量参数化优化;3:即使包含显式参数的语句,也进行常量参数化优化
DYN_SQL_CAN_CACHE 1 动态,系统级 是否缓存动态语句的执行计划。0:不缓存;1:当USE_PLN_POOL不为0时,缓存动态语句的执行计划
RS_CAN_CACHE 0 静态 结果集缓存配置。0:禁止重用结果集;1:强制模式,此时默认缓存所有结果集,但可通过RS_CACHE_TABLES参数和语句HINT进行手动设置;2:手动模式,此时默认不缓存结果集,但可通过语句HINT对必要的结果集进行缓存
RS_CACHE_TABLES 空串 手动 指定可以缓存结果集的基表的清单,当RS_CAN_CACHE=1时,只有查询涉及的所有基表全部在此参数指定范围内,该查询才会缓存结果集。当参数值为空串时,此参数失效。
RS_CACHE_MIN_TIME 0 动态,系统级 结果集缓存的语句执行时间下限,只有实际执行时间不少于指定时间值的查询,其结果集才会被缓存,仅在RS_CAN_CACHE=1时有效。默认值0,表示不限制;有效值范围(0~4294967294),以MS为单位
RS_BDTA_FLAG 0 静态 是否以BDTA形式返回结果集。0:以行为单位返回结果集;2:以BDTA形式返回结果集
RS_BDTA_BUF_SIZE 32 静态 配置消息长度,单位为K。有效值范围(8~32768)
RESULT_SET_LIMIT 10000 动态,会话级 一次请求可以生成的结果集最大个数。有效值范围(1~65000)
RESULT_SET_FOR_QUERY 0 动态,会话级 是否生成非查询结果集。0:生成;1:不生成
SESSION_RESULT_SET_LIMIT 10000 动态,系统级 会话上结果集个数上限,有效值范围(100~ 65000)
BUILD_FORWARD_RS 0 静态 仅向前游标是否生成结果集。0:不生成;1:生成
MAX_OPT_N_TABLES 6 动态,会话级 优化器在处理连接时,一次能优化的最大表连接个数。有效值范围(3~8)
MAX_N_GRP_PUSH_DOWN 5 动态,会话级 用来控制GROUP BY下放优化的最大叶子表节点个数。在PLACE_GROUP_BY_FLAG为2时生效
CNNTB_MAX_LEVEL 20000 动态,会话级 层次查询的最大支持层次。有效值范围(1~100000)
CTE_MAXRECURSION 100 动态,会话级 递归WITH CTE迭代层次。会话级参数,支持HINT。取值范围(1~4294967294)
CTE_OPT_FLAG 1 动态,会话级 递归WITH CTE优化选项,表示相关子查询是否转换为WITH FUCNTION优化。支持HINT。 取值0或1
BATCH_PARAM_OPT 0 静态 是否启用批量参数优化,0:不启用;1:启用,默认不启用。当置为1时,不返回操作影响的行数
CLT_CONST_TO_PARAM 0 静态 是否进行语句的常量参数化优化,0:不进行;1:进行
LIKE_OPT_FLAG 1 动态,会话级 LIKE查询的优化开关。0:不优化;1:对于LIKE表达式首尾存在通配符的情况,优化为POSITION()函数;对于LIKE表达式首部存在通配符,并且条件列存在REVERSE()函数索引时,优化为REVERSE()函数;2:对于COL1 LIKE COL2 || '%'的情况,优化为POSITION()函数;4:对于COL1 LIKE ‘A’||‘B%’的情况,优化为COL1 LIKE ‘AB%’;8:对于可计算的LIKE表达式,优化为常量;16:对于控制函数索引列的LIKE表达式,优化为BETWEEN…AND…表达式。 支持使用上述有效值的组合值,如31表示同时进行1、2、4、8和16的优化
FILTER_PUSH_DOWN 0 动态,会话级 对单表条件是否下放的不同处理方式。0:表示条件不下放;1:表示层次查询中将START WITH条件进行下放;2:表示在新优化器下对外连接、半连接进行下放条件优化处理;4:语义分析阶段考虑单表过滤条件的选择率,超过0.5则不下放,由后面进行代价计算选择是否下放,参数值4仅在参数取值包含2时有效,即将参数值设为6时有效;8:表示尝试将包含非相关子查询的布尔表达式进行下放。 支持使用上述有效值的组合值,如6表示同时进行2和4的优化
USE_MCLCT 2 动态,会话级 MPP/LPQ下,是否替换MGAT/LGAT通讯操作符为MCLCT/LCLCT。0:不替换;1:MPP下将操作符MGAT替换为MCLCT;2:MPP下将操作符MGAT替换为MCLCT,或LPQ下将操作符LGAT替换为LCLCT
MPP_OP_JUMP 1 动态,会话级 MPP系统中操作符的跳转开关,是否支持通讯操作符的跳转功能。0:不支持;1:支持
PHF_NTTS_OPT 1 动态,会话级 MPP系统中是否进行NTTS计划的优化,打开时可能减少计划中的NTTS操作符。0:不支持;1:支持
MPP_MOTION_SYNC 200 动态,会话级 通讯操作符同步时认定的邮件堆积数,堆积超过该值则要进行同步检查。取值0-100000,0表示不进行同步检查
USE_FTTS 0 动态,会话级 执行过程中产生的临时数据的存放格式。0:用临时表空间的数据页存放;1:用临时文件存放
UPD_DEL_OPT 2 动态,会话级 删除更新计划优化方式,取值范围0、1、2 单节点计划,0:不优化 1,2:都可优化NTTS MPP计划,0:不优化; 1:优化删除更新计划,不优化NTTS;2:优化删除更新计划,同时优化NTTS
ENABLE_DIST_IN_SUBQUERY_OPT 0 动态,系统级 IN子查询的优化方式,0:不优化;1:对IN子查询进行去掉子查询的优化;2:IN子查询中的等值连接转换为多个IN;4:IN子查询中移除与外表相同的内表 支持使用上述有效值的组合值,如5表示同时进行1和4的优化
MAX_OPT_N_OR_BEXPS 7 动态,会话级 能参与优化的最大OR分支个数,超过时布尔表达式仅用于过滤使用。有效值范围(7~64)
USE_HAGR_FLAG 0 动态,会话级 当带有DISTINCT的集函数不能使用SAGR操作符时,是否使用HAGR,0:不使用;1:使用
DTABLE_PULLUP_FLAG 1 动态,会话级 是否在语法分析阶段对派生表进行上拉优化处理,0:不优化;1:优化
VIEW_PULLUP_FLAG 0 动态,会话级 是否对视图进行上拉优化,把视图转换为其原始定义,消除视图。可取值0、1、2、4。0:不进行视图上拉优化;1:对不包含别名和同名列的视图进行上拉优化;2:对包含别名和同名列的视图也进行上拉优化;4:强制允许带变量的查询语句进行视图上拉优化,有可能造成结果集错误;8表示不对LEFT JOIN的右孩子\RIGHT JOIN的左孩子\FULL JOIN左右孩子进行上拉 支持使用上述有效值的组合值,如3表示同时进行1和2的优化
VIEW_PULLUP_MAX_TAB 7 动态,会话级 对视图进行上拉优化支持的表的个数。有效值范围:(1~16)
STR_NULL_OPS_COMPATIBLE 0 动态,会话级 当两个字符串相加时,若两个字符串中有一个为NULL,是否将结果置为NULL。0:否;1:是
GROUP_OPT_FLAG 4 动态,会话级 分组项优化参数开关。0:不优化;1:非MYSQL兼容模式下(即COMPATIBLE_MODE不等于4),支持查询项不是GROUP BY表达式;2:外层分组项下放到内层派生表中提前分组优化;4:表示对于多级分区,并行下允许尝试不生成多个AGR;8:进行哈希分组时,依赖分组项列中的核心项分组列来分组;16:位图索引覆盖简单分组查询中的所有列时,允许使用位图索引对查询进行优化。 支持使用上述有效值的组合值,如3表示同时进行1和2的优化
FROM_OPT_FLAG 0 动态,会话级 控制一些涉及FROM项的优化0:不优化;1:尝试将FROM项替换为单个DUAL表
HAGR_PARALLEL_OPT_FLAG 0 动态,会话级 MPP、并行下对GROUP BY、分析函数等的优化开关。0:不优化;1:无DISTINCT时HAGR按照分组列分发;2:有DISTINCT时,HAGR按照分组列分发;4:去除多余的通讯操作符;8:同4,仅限于外连接操作;16:分析函数按照PARTITION BY列分发;32:MPP+LPQ下,AAGR的优化处理;64:始终进行MPP DISTRIBUTE分发(取值为1时仅在组数大于或等于1000时分发);128:有UNION ALL且存在MPP DISTRIBUTE和MPP GATHER时,各个站点/线程先处理部分数据后再汇总,此优化必须同时包含取值1才有效;256:始终进行HAGR->MPP DISTRIBUTE->HAGR的分发操作;512:查询有特殊集函数时,数据汇总到主站点/主线程后再执行计算。其中,带KEEP子句的集函数或FIRST_VALUE集函数两种情况,不论HAGR_PARALLEL_OPT_FLAG的值是否为512,执行计划都会采用MPP COLLECT->HAGR2这种方式。 支持使用上述有效值的组合值,如5表示同时进行1和4的优化
HAGR_DISTINCT_OPT_FLAG 2 动态,会话级 0:MPP下不对HAGR+DISTINCT进行优化;1:MPP下,如果分组列是分布列,则进行生成两个HAGR,顶层HAGR去掉DISTINCT信息的优化,否则保持原始处理方式;2:如果分组列都是字符串类型且总长度小于等于2,则仅依靠分组列的HASH值判断是否为同一组 支持使用上述有效值的组合值,如3表示同时进行1和2的优化
REFED_EXISTS_OPT_FLAG 1 动态,会话级 是否把相关EXISTS优化为非相关IN查询。0:否;1:是;2:特殊场景下,通过将相关表+DISTINCT构造为派生表添加到子查询中,将相关EXISTS转换为非相关IN
支持使用上述有效值的组合值,如3表示同时进行1和2的优化
REFED_OPS_SUBQUERY_OPT_FLAG 0 动态,会话级 是否将OP ALL/SOME/ANY相关子查询进行转换处理。0:否;1:转换为EXISTS相关子查询;2:将包含PARTITION JOIN连接的相关子查询转换为EXISTS相关子查询(已废弃,不进行转换);4:转换为包含分析函数的派生表
支持使用上述有效值的组合值,如3表示同时进行1和2的优化,当组合值中包含1且不包含4时,优先按照值为1进行转换处理,当组合值中包含4时优先按照值为4进行转换处理
MAX_PHC_BE_NUM 512 动态,会话级 优化阶段存放临时布尔表达式的个数。有效值范围(512~ 20480000)
PARTIAL_JOIN_EVALUATION_FLAG 1 动态,会话级 是否对去除重复值操作的下层连接进行转换优化。0:不优化;1:优化 此参数仅在参数OPTIMIZER_MODE为1时才有效
USE_FK_REMOVE_TABLES_FLAG 1 动态,会话级 是否利用外键约束消除冗余表,支持多列主键。0:不启用;1:启用
USE_FJ_REMOVE_TABLE_FLAG 0 动态,会话级 是否启用使用过滤表消除表及自连接消除优化。0:不启用;1:启用;2:等值条件的左右两边是不同的表时才进行优化
SLCT_ERR_PROCESS_FLAG 1 动态,会话级 控制如何处理过滤时产生的错误。0:正常处理错误,返回错误码;1:忽略错误,视为数据不匹配
MPP_HASH_LR_RATE 10 动态,会话级 MPP下,对HASH JOIN节点,可以根据左右儿子CARD代价的比值,调整HASH_JOIN的左右儿子的MOTION添加,从而影响计划。如果CARD比值超过此值,则小数据量的一方全部收集到主EP来做。有效值范围(1~4294967294)
LPQ_HASH_LR_RATE 30 动态,会话级 LPQ下,对HASH JOIN节点,可以根据左右儿子CARD代价的比值,调整HASH_JOIN的左右儿子的MOTION添加,从而影响计划。 如果CARD比值超过此值,则小数据量的一方全部收集到主EP来做。有效值范围(1~4294967294)
USE_HTAB 1 动态,会话级 表示计划中是否能使用HTAB。0:否;1:是
SEL_ITEM_HTAB_FLAG 0 动态,会话级 当USE_HTAB=1时才有效。 当查询项中有相关子查询时,是否做HTAB优化。0:不优化;1:优化
OR_CVT_HTAB_FLAG 1 动态,会话级 当USE_HTAB=1时才有效。 当查询条件OR中含有公共因子时,是否允许使用HTAB来进行优化。0:不使用;1:使用;2:增强OR表达式转换为HTAB条件检查,当存在嵌套连接时,不生成HTAB,以避免缓存过多数据影响性能
CASE_WHEN_CVT_IFUN 9 动态,会话级 对CASE WHEN查询表达式的优化处理。0:不优化;1:将CASE WHEN查询表达式转换为IFOPERATOR函数;2:将CASE WHEN查询表达式转换为IFOPERATOR函数,且有限制地进行表达式重用;4:CASE WHEN查询表达式在运算符中转换为OR进行处理;8:对于CASE WHEN查询表达式不考虑THEN…ELSE表达式重用 支持使用上述有效值的组合值,如5表示同时进行1和4的优化
OR_NBEXP_CVT_CASE_WHEN_FLAG 0 动态,会话级 是否将OR 转化为CASE WHEN THEN ELSE END语句。0:不转换;1:转换
NONCONST_OR_CVT_IN_LST_FLAG 0 动态,会话级 是否开启 IN LIST优化:将不含有常量的OR表达式转换成IN LIST。0表示不开启,1表示开启
OUTER_CVT_INNER_PULL_UP_COND_FLAG 1 动态,会话级 当外连接转化为内连接时,是否打开连接条件。0:不打开;1:打开
OPT_OR_FOR_HUGE_TABLE_FLAG 1 动态,会话级 是否使用HFSEK优化HUGE表中列的OR过滤条件。0:不使用;1:使用
ORDER_BY_NULLS_FLAG 0 动态,会话级 控制排序时NULL值返回的位置,取值0、1、2。0表示NULL值始终在最前面返回;1表示ASC升序排序时NULL值在最后返回,DESC降序排序时NULL值在最前面返回,在参数等于1的情况下,NULL值的返回与ORACLE保持一致;2表示ASC升序排序时NULL值在最前面返回,DESC降序排序时NULL值在最后返回,在参数等于2的情况下,NULL值的返回与MYSQL保持一致
SUBQ_CVT_SPL_FLAG 1 动态,会话级 控制相关子查询的实现方式,0:不优化;1:使用SPL2方式实现相关子查询;2:DBLINK相关子查询是否转换为函数,由参数ENABLE_DBLINK_TO_INV 取值决定4:将多列IN转换为EXISTS;8:将引用列转换为变量VAR;16:用临时函数替代查询项中的相关查询表达式 支持使用上述有效值的组合值,如5表示同时进行1和4的优化
ENABLE_RQ_TO_SPL 1 动态,会话级 是否将相关子查询转换为SPL2方式,0:不优化;1:优化
MULTI_IN_CVT_EXISTS 0 动态,会话级 多列IN是否转换为等价的EXISTS过滤。0:不转换;1:转换
PRJT_REPLACE_NPAR 1 动态,会话级 是否将引用列转换为变量VAR,并替换查询表达式中的引用列,0:不优化;1:优化
ENABLE_RQ_TO_INV 0 动态,会话级 相关查询表达式是否转换为函数方式实现。0:不转换;1:转换;2:系统根据实际情况决定是否转换
SUBQ_EXP_CVT_FLAG 0 动态,会话级 是否将带有聚集函数且没有GROUP BY的相关查询表达式优化为非相关查询表达式。 0:使用普通的去相关性处理; 1:带有聚集函数且没有GROUP BY的相关查询表达式优化为非相关查询表达式; 2:将子查询列均来自上层查询且子查询中不包含层次查询、ROWNUM、TOP的相关子查询的FROM项改写为(SELECT TOP 1 1 FROM ...)派生表,减少中间结果集; 8:将EXISTS子查询的查询项转换为常量 0,兼容ORACLE处理方式,同时优化子查询对查询项的处理过程。如果子查询为集合查询,则不进行转换; 16:通过原始语句判断查询表达式是否相同;32:带有聚集函数且没有GROUP BY的相关查询表达式在OP_NBEXP中(只有一层),且聚集函数没有COUNT,那么相关拉平可以使用CROSS JOIN替换LEFT JOIN。 支持使用上述有效值的组合值,如3表示同时进行1和2的优化,SUBQ_EXP_CVT_FLAG同时包含1和32时,1的优先级更高
USE_REFER_TAB_ONLY 0 动态,会话级 处理相关子查询时是仅将相关的表下放,或者连同上方的SEMI/HASH JOIN一起下放。0:一起下放;1:仅下放相关表
REFED_SUBQ_CROSS_FLAG 1 动态,会话级 是否将相关子查询与外层表优化为CROSS JOIN,0:不优化;1:优化 注:DM早期版本参数,不再推荐使用
IN_LIST_AS_JOIN_KEY 0 动态,会话级 搜索多表连接方式时,对于索引连接(INDEX JOIN)的探测,NEXP_IN_LST表达式类型可以作为多表连接的KEY。
取值范围:
0:表示搜索多表连接方式时,对于索引连接(INDEX JOIN)的探测,NEXP_IN_LST不可以作为连接KEY;
1:表示搜索多表连接方式时,对于索引连接(INDEX JOIN)的探测,把NEXP_IN_LST当做普通等值KEY的处理方式来生成INDEX JOIN的连接KEY。
OUTER_JOIN_INDEX_OPT_FLAG 0 动态,会话级 外连接优化为索引连接的优化开关。1:优化;0:不优化。
OUTER_JOIN_FLATING_FLAG 0 动态,会话级 优化外连接。 0:不启用优化; 1:启用优化,例如,使得类似这样的连接A LEFT (B CROSS C) ON A.C1=B.C1 优化为A LEFT (B JOIN (DISTINCT A) ON A.C1=B.C1 CROSS C) ON A.C1=B.C1 ,相当于把A和B的过滤器平坦化到了下层查询中,使得B获取的中间结果较小
TOP_ORDER_OPT_FLAG 0 动态,会话级 优化带有TOP和ORDER BY子句的查询,使得SORT操作符可以省略。优化的效果是尽量使得ORDER BY的排序列所对应的基表可以使用包含排序列的索引,从而可以移除排序SORT操作符,减少排序操作。如果排序列不属于同一个基表,或者排序列不是基表列,则肯定是不可以优化。 取值: 0:不启用该优化 1:启用该优化
TOP_DIS_HASH_FLAG 1 动态,会话级 是否通过禁用HASH JOIN方式来优化TOP查询,取值: 0:不优化; 1:当OPTIMIZER_MODE为0时,TOP下方连接禁用HASH JOIN;当OPTIMIZER_MODE为1时,TOP下方最近的连接倾向于不使用HASH JOIN; 2:当OPTIMIZER_MODE为0时,TOP下方连接禁用HASH JOIN;当OPTIMIZER_MODE为1时,TOP下方所有连接都倾向于不使用HASH JOIN
ENABLE_RQ_TO_NONREF_SPL 0 动态,会话级 相关查询表达式转化为非相关查询表达式,目的在于相关查询表达式的执行处理由之前的平坦化方式转化为一行一行处理,类似ORACLE的每行处理机制。 0:不启用该优化;1:对查询项中出现的相关子查询表达式进行优化处理;2:对查询项和WHERE表达式中出现的相关子查询表达式进行优化处理;4:相关查询采用SPL方式去相关性后,可以作为单表过滤条件
支持使用上述有效值的组合值,如3表示同时进行1和2的优化
OPTIMIZER_MODE 1 动态,会话级 DM优化器的模式,0:老优化器模式;1:新优化器模式
NEW_MOTION 1 动态,会话级 是否使用代价计算来决定使用的通讯操作符,0:否;1:是
LDIS_NEW_FOLD_FUN 0 动态,会话级 是否开启LOCAL DISTRIBUTE操作符使用与MPP DISTRIBUTE操作符不同的函数来计算哈希值。0:否;1:是
DYNAMIC_CALC_NODES 0 动态,会话级 是否根据数据量设置LOCAL DISTRIBUTE\ MPP DISTRIBUTE操作符不同的并行度\节点数。0:否;1:是
OPTIMIZER_MAX_PERM 7200 动态,会话级 控制计划探测过程中的最大排列数,如果大于该阙值,则减少相应的排列,减少探测计划的时间,有效值范围(1~4294967294)
ENABLE_INDEX_FILTER 0 动态,会话级 是否进行索引过滤优化,可取值为0、1、2。 0不进行优化; 1使用索引过滤优化,如果过滤条件涉及的列包含在索引中,那么索引进行SSEK2后就可以使用此过滤条件,可以减少中间结果集; 2在取值为1的基础上,将IN查询列表转换为HASH RIGHT SEMI JOIN。
OPTIMIZER_DYNAMIC_SAMPLING 0 动态,会话级 当统计信息不可用时是否启用动态统计信息。取值范围:0~12。0:不启用;1~10:启用,采用率10%~100%;11:启用,由优化器确定采样率(0.1%~99.9%);12:同11,但收集的结果会持久化保存
AUTO_STAT_OBJ 0 动态,系统级 是否监控增删改导致的修改行数和TRUNCATE表操作。0:不监控;1:对所有表进行监控;2:只对用户执行过SET_TABLE_PREFS的表进行监控
NONREFED_SUBQUERY_AS_CONST 0 动态,会话级 是否将非相关子查询转化为常量处理。0:不进行优化,对非相关子查询使用连接方式处理;1:将非相关子查询转换为常量,作为过滤条件使用
HASH_CMP_OPT_FLAG 0 动态,会话级 是否启用静态哈希表的优化。0:不启用优化;1:分组中的DISTINCT开启此优化;2:对HASH连接启用该优化;4:对HAGR分组计算启用该优化;8:DISTINCT操作开启此优化。 支持使用上述有效值的组合值,如5表示同时进行1和4的优化
OUTER_OPT_NLO_FLAG 0 动态,会话级 是否进行外连接和内连接的相关优化。0:不优化;1:满足条件时,将外连接转换为嵌套外连接进行优化;2:满足条件时,将内连接转换为嵌套连接+VAR方式进行优化;4:打开外连接操作符HLO/HRO只返回不满足条件值的优化。 取值1、2仅在OPTIMIZER_MODEE = 0时生效。 支持使用上述有效值的组合值,如5表示同时进行1和4的优化
DISTINCT_USE_INDEX_SKIP 2 动态,会话级 DISTINCT列是否使用索引跳跃扫描(单列索引或复合索引)。专门用于SQL语句中有DISTINCT的场景,DISTINCT列的查询的一种优化方式,在索引上跳跃着扫描。0:不使用;1:强制使用;2:根据代价选择是否使用。 该参数只在OPTIMIZER_MODEE = 1时有效
USE_INDEX_SKIP_SCAN 0 动态,会话级 是否使用复合索引跳跃扫描。专门用于WHERE子句等值条件的查询列中包含了复合索引的列,但该列又不是复合索引的前导列,这种情况下,选择是否使用复合索引跳跃扫描。和INDEX_SKIP_SCAN_RATE搭配使用。 0:不使用; 1:根据代价选择是否使用。通过代价计算选择,倾向于选择前导列DISTINCT值少,搜索列DISTINCT值较多的索引; 2:强制使用。只要能够找到索引可以使用跳跃扫描,就强制使用
INDEX_SKIP_SCAN_RATE 0.0025 动态,会话级 复合索引跳跃扫描的代价调节开关。当列的 (DISTINCT数/总行数)比值大于该值时,就不再使用索引跳跃扫描的方式。取值范围0~1。 和USE_INDEX_SKIP_SCAN搭配使用
SPEED_SEMI_JOIN_PLAN 1 动态,会话级 是否加速半连接的探测过程。 0:不加速;1:加速计划探测;2:加速计划探测和执行 4:调整DISTINCT代价估算,期望更接近实际情况,有利于计划选择。4支持的场景如下: 1)控制半连接转换内连接,生成的DISTINCT代价估算; 2)控制普通DISTINCT代价计算
COMPLEX_VIEW_MERGING 0 动态,会话级 对于复杂视图(一般含有GROUP或者集函数等)会执行合并操作,使得GROUP分组操作在连接之后才执行。0:不启用;1:对不包含别名和同名列的视图进行合并;2:视图定义包含别名或同名列时也进行合并
OP_SUBQ_CVT_IN_FLAG 1 动态,会话级 当查询条件为=(SUBQUERY),是否考虑转换为等价的IN(SUBQUERY)。0:不转换;1:转换
HLSM_FLAG 1 动态,会话级 控制多列非相关NOT IN的查询实现方式,1:当数据量较大,HASH BUF放不下时,采用MTAB方式处理;2:当数据量较大,HASH BUF放不下时,采用B树方式处理,使用细粒度扫描;3:当数据量较大,HASH BUF放不下时,采用B树方式处理,使用粗粒度扫描
DEL_HP_OPT_FLAG 0 动态,会话级 控制分区表的操作优化,0:不优化;1:打开分区表DELETE优化;2:控制范围分区表创建的优化处理,转换为数据流方式实现;4:允许语句块中的间隔分区表自动扩展;8:开启对TRUNCATE分区表的优化处理;16:完全刷新时删除老数据使用DELETE方式 支持使用上述有效值的组合值,如7表示同时进行1、2、4的优化
OPTIMIZER_OR_NBEXP 0 动态 会话级 OR表达式的优化方式。0:不优化;1:生成UNION_FOR_OR操作符时,优化为无KEY比较方式;2:OR表达式优先考虑整体处理方式;4:相关子查询的OR表达也优考虑整体处理方式;8:OR布尔表达式的范围合并优化;16:同一列上同时存在常量范围过滤和IS NULL过滤时的优化,如C1 > 5 OR C1 IS NULL。 支持使用上述有效值的组合值,如7表示同时进行1、2、4的优化
CNNTB_OPT_FLAG 0 动态,会话级 是否使用优化的层次查询执行机制。0:不使用;1:强制使用;2:优化器自动决定是否使用;4:层次查询不支持并行;8:检查层次查询的表达式是否包含ROWNUM,若包含则报错;16:层次查询的条件包含OR时仍尝试使用优化,且将OR连接的条件表达式当做整体处理。 支持使用上述有效值的组合值,如31表示同时进行1、2、4、8、16的优化
ADAPTIVE_NPLN_FLAG 3 动态,会话级 是否启用自适应计划机制,仅OPTIMIZER_MODE=1时生效。0:不启用;1:对索引连接、嵌套含VAR连接等复杂连接启用自适应计划;2:ORDER BY在HASH连接时启用自适应计划;3:同时启用1和2的优化机制
MULTI_UPD_OPT_FLAG 0 动态,会话级 是否使用优化的多列更新。0:不使用,仍按照语句改写方式实现;1:利用多列SPL功能加以实现。
MULTI_UPD_MAX_COL_NUM 128 动态,会话级 利用多列SPL功能以实现多列更新(MULTI_UPD_OPT_FLAG为1)时可更新的最大列数,有效值范围(2~10000)
ENHANCE_BIND_PEEKING 0 静态 是否使用自适应的绑定变量窥探开关。0:不使用;1:使用
NBEXP_OPT_FLAG 3 动态,会话级 控制布尔表达式的一些优化。0:不优化;1:进行根据展开后的项数控制NOT是否下放展开的优化;2:进行AND分支的OR布尔表达式的公因子上拉优化。 支持使用上述有效值的组合值,如3表示同时进行1、2的优化
HAGR_HASH_ALGORITHM_FLAG 0 动态,会话级 HAGR中HASH算法选择标记。0:按照移位方式计算;1:按照异或方式计算
DIST_HASH_ALGORITHM_FLAG 0 动态,会话级 DISTINCT中HASH算法选择标记。0:按照移位方式计算;1:按照异或方式计算
UNPIVOT_ORDER_FLAG 0 动态,会话级 是否对UNPIVOT的结果按照公共列排序,公共列指表中未出现在UNPIVOT的列。0:不排序;1:排序
VIEW_FILTER_MERGING 10 动态,会话级 是否对视图条件进行优化以及如何优化,0:不优化;1:尽可能地进行视图条件合并;2:自动判断是否进行视图条件合并;4:视图包含分析函数时,如果分析函数的PARTITION BY具有唯一性,则外层过滤条件下推到视图内部;8:如果派生表存在集函数,则不进行条件下推优化;16:收集公用表达式相关的所有过滤条件,改写合并所有条件,并下放到公用表达式的内部
支持使用上述有效值的组合值,如10表示同时进行2、8的优化
OPT_MEM_CHECK 0 动态,会话级 内存紧张时,优化器是否缩减计划探测空间,仅OPTIMIZER_MODE=0时生效。0:不缩减计划探测空间;1:缩减计划探测空间;
ENABLE_JOIN_FACTORIZATION 0 动态,会话级 是否启用连接分解,即UNION ALL分支间存在公共部分时是否进行公因子提取。0:不启用;1:启用
ERROR_COMPATIBLE_FLAG 0 动态、会话级 是否对子查询同名列进行报错。取值0或1。 0报错,1不报错
ENABLE_PARTITION_WISE_OPT 0 动态,会话级 是否利用水平分区表的分区信息进行排序、分组的计划优化,即在满足条件的情况下对每个子表单独排序、分组,或者进行子表间的归并排序。0:不启用;1:启用
EXPLAIN_SHOW_FACTOR 1 动态,会话级 显示执行计划的行数和嵌套层数的基数分别为1000和100,实际显示的行数和嵌套层数为 基数* EXPLAIN_SHOW_FACTOR。有效值范围(1~100)
HASH_PLL_OPT_FLAG 0 动态,会话级 当进行HASH SEMI/INNER连接时,若右表为分区表,是否对分区表进行裁剪。0:否;1:是
PLACE_GROUP_BY_FLAG 0 动态,会话级 在含有集函数的查询中,是否允许先分组减少数据量后再进行连接。0:不允许;1:允许,要求是两个表的连接,且基函数的参数只能来自一张表;2:允许,2是1的加强,允许有多张表的连接,且基函数的参数可来自多张表,与MAX_N_GRP_PUSH_DOWN配合使用。此参数仅在OPTIMIZER_MODE=1时有效
ENABLE_NEST_LOOP_JOIN_CACHE 0 动态,会话级 是否对嵌套循环连接进行优化以及如何优化,0:不优化;1:考虑缓存嵌套循环连接的中间结果以加速执行;2:嵌套循环连接执行时优先探测右孩子节点的数据
支持使用上述有效值的组合值,如3表示同时进行1、2的优化
ENABLE_TABLE_EXP_REF_FLAG 1 动态,会话级 是否支持嵌套表表达式或XML表表达式与源表的同层引用。0:不支持;1:支持
ENABLE_DBLINK_TO_INV 0 动态,会话级 DBLINK相关子查询是否转换为函数。0:不转换;1:转换
ENABLE_BLOB_CMP_FLAG 0 动态,会话 是否支持大字段类型的比较。0:不支持;1:支持,此时DISTINCT、ORDER BY、 分析函数和集函数支持对大字段进行处理
ENABLE_CREATE_BM_INDEX_FLAG 1 静态 是否允许创建位图索引。0:不允许创建位图索引,位图索引作为普通B树索引进行创建; 1:允许创建位图索引
CVIEW_STAR_WITH_PREFIX 1 动态,会话 创建视图获取视图定义语句,展开查询项中的 *时,列名前是否添加表名作为前缀。0:不添加前缀;1:添加前缀
ENABLE_ADJUST_NLI_COST 1 动态,会话 是否允许系统自动对嵌套连接的代价进行增大调整。0:不允许;1:不允许
ENABLE_SEQ_REUSE 0 动态,会话 控制是否允许重用相同的序列表达式。0:不允许;1:允许。 例如SELECT SEQ1.NEXTVAL,SEQ1.NEXTVAL FROM DUAL; 当参数取1:返回值两列相同 当参数取0:返回值两列不同
检查点相关参数
CKPT_RLOG_SIZE 100 动态,系统级 产生多大日志文件后做检查点,以M为单位。有效值范围(0~4294967294)
CKPT_DIRTY_PAGES 10000 动态,系统级 产生多少脏页后产生检查点,以页为单位。有效值范围(0~4294967294)
CKPT_INTERVAL 300 动态,系统级 指定检查点的时间间隔。以秒为单位,为0时表示不自动定时做检查点。有效值范围(0~ 2147483647)
CKPT_FLUSH_RATE 5.00 动态,系统级 检查点刷盘比例。有效值范围(0~100.00)
CKPT_FLUSH_PAGES 1000 动态,系统级 检查点刷盘的最小页数。有效值范围(1000~100000)
CKPT_WAIT_PAGES 128 动态,系统级 检查点一次发起的最大写入页数,等待这些页写入磁盘完成、调整检查点信息后,再发起新的刷盘请求,避免过于集中发起写磁盘请求,操作系统IO压力过大,导致IO性能下降。有效值范围(1~1024)
FORCE_FLUSH_PAGES 8 动态,系统级 调度线程启动刷脏页流程时,每个BUFFER POOL写入磁盘的脏页数。有效值范围(0~1000)
IO相关参数
DIRECT_IO 0 静态 非WINDOWS下有效,0:使用OS文件系统缓存;1:不使用OS文件系统缓存,采用系统模拟的异步IO,异步IO的线程数由IO_THR_GROUP控制;2:不使用OS文件系统缓存,采用系统提供的NATIVE AIO机制, 要求LINUX内核2.6以上 注:此参数应根据应用特征谨慎设置,一般保留默认为0即可
IO_THR_GROUPS 2 静态 非WINDOWS下有效,表示IO线程组个数。有效值范围(1~512)
HIO_THR_GROUPS 2 静态 HUGE缓冲区IO线程组数目。 有效值范围 (1 ~ 512)
FAST_EXTEND_WITH_DS LINUX/AIX/BSD缺省为1,其他缺省0 动态,系统级 是否按实际磁盘占用大小扩展文件,非WINDOWS有效 0:扩展文件为空洞文件 1:按DISK SPACE扩展文件,文件的逻辑大小与实际磁盘占用大小一致
FIL_CHECK_INTERVAL 0 动态,系统级 指定检查数据文件是否存在的时间间隔,单位:S。有效值范围(0~4294967294)。0表示不检查。
数据库相关参数
MAX_SESSIONS 100 静态 系统允许同时连接的最大数,同时还受到LICENSE的限制,取二者中较小的值,有效值范围(1~65000)
MAX_CONCURRENT_TRX 0 静态 表示系统支持同时运行事务数的最大值。有效值范围(0~1500),0表示不控制 注:这个参数仅在需要超大数量连接时才需要设置
CONCURRENT_TRX_MODE 0 静态 限流模式,0:以事务为单位进行限流;1:以SQL为单位进行限流
CONCURRENT_DELAY 16 动态,系统级 表示新创建的连接,延迟多少秒之后参与事务限流机制。仅当MAX_CONCURRENT_TRX 非0时生效。取值范围(0~1000), 单位秒。0 表示立即参与
TRX_VIEW_SIZE 512 静态 事务视图中本地事务ID的缓存初始化个数。取值范围(16~65000)
TRX_VIEW_MODE 1 静态 控制MVCC事务可见性判断的方式。0:事务启动前收集当前时刻的活动事务ID构造可见性视图,以确定某一特定事务是否对当前事务可见;1:系统维护事务提交历史,以此判断事务可见性 注:DMDSC环境下,TRX_VIEW_MODE被强制设置为0
TRX_CMTARR_SIZE 10 静态 提交状态事务数组的大小,仅当TRX_VIEW_MODE为1时有效。单位为百万,有效值范围(3~1000)。此参数设置越大,内存消耗越多,当应用为高并发,单位时间内事务完成数量大时,可将此参数值设大
MAX_SESSION_STATEMENT 100 动态,系统级 单个会话上允许同时打开的语句句柄最大数,有效值范围(64~20480)
MAX_SESSION_MEMORY 0 动态,系统级 单个会话的运行内存上限,单位M,有效值范围(0~262144),0表示不限制
MAX_CONCURRENT_OLAP_QUERY 0 静态 OLAP模式下能同时执行的复杂查询个数,超过限制后,复杂查询将在执行阶段进入等待。0表示不做限制。有效值范围(0~100) 注:此处的复杂查询是指计划中存在行数超过参数BIG_TABLE_THRESHHOLD*10000的节点,含有哈希连接、哈希分组等耗内存操作符,且不涉及到系统表
BIG_TABLE_THRESHHOLD 1000 动态,会话级 OLAP环境下对复杂查询最大并发数(参数MAX_CONCURRENT_OLAP_QUERY)进行限制时,认定是否为复杂查询中表的行数下限,以万为单位。取值范围(0~4294967294)
MAX_EP_SITES 64 手动 MPP环境下EP站点的最大数量,有效值范围(2~1024)
PORT_NUM 5236 静态 服务器监听通讯端口号,服务器配置此参数,有效值范围(1024~65534),发起连接端的端口在1024-65535之间随机分配
LISTEN_IP 空串 手动 与PORT_NUM配合使用,监听IP地址。若指定,则连接时必须指定与该值一样的IP,否则创建连接失败
FAST_LOGIN 0 静态 是否在登录时记录登录失败历史信息。0是,同步记录;1否,不记录;2是,异步记录,当同一个用户的登录失败记录数超过100,则清理前面过早的登录失败记录,避免登录相关系统表SYSACCHISTORIES膨胀
DDL_AUTO_COMMIT 1 手动 指定DDL语句是否自动提交,1:自动;0:手动。当COMPATIBLE_MODE=1时,DDL_AUTO_COMMIT的实际值均为0。
COMPRESS_MODE 0 动态,会话级 建表时是否缺省压缩。0:不进行;1:进行
PK_WITH_CLUSTER 1 动态,会话级 在建表语句中指定主关键字时,是否缺省指定为CLUSTER,0:不指定;1:指定 注:该参数对列存储表和堆表无效
EXPR_N_LEVEL 200 动态,会话级 表达式最大嵌套层数。有效值范围(30~1000)
N_PARSE_LEVEL 100 动态,会话级 表示对象PROC、VIEW、PKG、CLASS最大解析层次,如果层次过深则报错返回。有效值范围(30~1000)
MAX_SQL_LEVEL 500 动态,系统级 指定DM虚拟机允许的最大栈帧数。有效值范围(100~1000)。此参数值设置过大可能会导致内存暴涨,管理员需斟酌设置
BDTA_SIZE 1000 静态 BDTA缓存的记录数。有效值范围(1~10000)
OLAP_FLAG 2 动态,会话级 启用联机分析处理,0:不启用;1:启用;2:不启用,同时倾向于使用索引范围扫描
JOIN_HASH_SIZE 500000 动态,会话级 HASH JOIN操作时,HASH表大小,以CELL个数为单位。有效值范围(1~250000000)
HFILES_OPENED 256 静态 设置可以同时打开的列存储表数据文件个数。有效值范围(60-10000)
FAST_COMMIT 0 动态,系统级 批量提交事务的个数,有效值范围(0~100)
ISO_IGNORE 0 动态,会话级 是否忽略显示设置的事务隔离级别,1表示忽略,0不忽略。
TEMP_SIZE 10 静态 默认创建的临时表空间大小,以M为单位。有效值范围(10~1048576)
TEMP_SPACE_LIMIT 0 动态,系统级 临时表空间大小上限,以M为单位。0表示不限制临时表空间大小。 有效范围(0~ 4294967294)。 注:TEMP_SPACE_LIMIT一定要大于等于 TEMP_SIZE
FILE_TRACE 0 静态 日志中是否记录文件操作,0:不记录;1:记录
COMM_TRACE 0 动态,会话级 服务器日志是否记录通信中产生的警告信息。0:不记录;1:记录
ERROR_TRACE 0 动态,会话级 服务器日志中是否记录语法分析出错的语句。1:是,0:否
CACHE_POOL_SIZE 20 静态 SQL缓冲池大小,以M为单位。有效值范围:32位平台下为(1~2048);64位平台下为(1~67108864)。单位:MB
PLN_DICT_HASH_THRESHOLD 20 静态 仅当CACHE_POOL_SIZE参数值大于等于此参数值时,才开启缓存计划的字典关联登记。有效值范围:32位平台下为(1~2048);64位平台下为(1~67108864)。单位:MB
STAT_COLLECT_SIZE 10000 动态,会话级 统计信息收集时,样本的最小行数。有效值范围(0~10000000)
STAT_ALL 0 动态,会话级 在估算分区表行数时,控制一些优化。0:不采样所有分区子表;1:采样所有分区子表;2:优先采用统计信息中的行数。 支持使用上述有效值的组合值,如3表示优先采用统计信息中的行数,如果没有找到对应统计信息,则去采样所有分区子表。
TABLE_STAT_FLAG 0 动态,会话级 MPP环境下,对于RANGE/LIST水平分区表,估算行数时是否优先采用统计信息的收集值。0:否;1:是
PHC_MODE_ENFORCE 0 动态,会话级 控制连接的实现方式。0:优化器根据代价情况自由选择连接方式;1:考虑使用NEST LOOP INNER JOIN;2:考虑使用索引连接;4:考虑使用哈希连接;8:考虑使用归并连接 支持使用上述有效值的组合值,如6表示优化器根据代价情况在索引连接和哈希连接间进行选择
ENABLE_HASH_JOIN 1 动态,会话级 是否允许使用哈希连接,0:不允许;1:允许。
ENABLE_INDEX_JOIN 1 动态,会话级 是否允许使用索引连接,0:不允许;1:允许。
ENABLE_MERGE_JOIN 1 动态,会话级 是否允许使用归并连接,0:不允许;1:允许
MPP_INDEX_JOIN_OPT_FLAG 0 动态,会话级 MPP下,是否可以使用索引左外连接,0:不使用;1:使用
MPP_NLI_OPT_FLAG 0 动态,会话级 MPP下嵌套连接的优化方式,0:嵌套连接操作的左右孩子添加MPP GATHER,汇总到主EP执行, 父节点添加MPP SCATTER;3:嵌套连接操作的左右孩子都添加MPP GATHER和MPP SCATTER
MAX_PARALLEL_DEGREE 1 动态,会话级 用来设置默认并行任务个数。取值范围:1~128。缺省值1,表示无并行任务。当PARALLEL_POLICY值为1时该参数值才有效
PARALLEL_POLICY 0 静态 用来设置并行策略。取值范围:0、1和2,缺省为0。其中,0表示不支持并行;1表示自动并行模式;2表示手动并行模式
PARALLEL_THRD_NUM 10 静态 用来设置并行工作线程个数。有效值范围(1~1024)
PARALLEL_MODE_COMMON_DEGREE 1 动态,会话级 并发模式程度。此值越大,扫描代价将越大,越倾向于使用索引连接而不是哈希连接,需酌情使用。有效值范围(1~1024)
PUSH_SUBQ 0 动态,会话级 是否下放子查询使先做。0:始终不下放;1:相关子查询且不存在单标过滤条件时下放;2:相关子查询始终下放;4:非相关子查询下放
OPTIMIZER_AGGR_GROUPBY_ELIM 1 动态,会话级 当对派生视图进行分组查询,且分组项是派生视图分组项的子集时,是否考虑将两层分组进行合并。0:不优化;1:将两层分组进行合并
UPD_TAB_INFO 0 静态 系统启动时是否更新表信息(如行数),1:启用更新;0:不更新。
ENABLE_IN_VALUE_LIST_OPT 6 动态,会话级 是否允许IN LIST表达式优化。0:不优化。1:将IN LIST表达式在语义分析阶段优化为CONSTV处理; 2:在查询计划确定后,把IN LIST表达式转化为CONSTV;4:允许IN LIST参与等值传递;8:从IN VALUE中构造出范围条件(仅限于HUGE表) 支持使用上述有效值的组合值,如3表示同时进行1和2的优化
ENHANCED_BEXP_TRANS_GEN 3 动态,会话级 0:不允许非等值布尔表达式和外连接ON条件中的传递闭包;1:允许非等值布尔表达式和外连接ON条件中的传递闭包;2:分析阶段针对表达式通过传递闭包产生的表达式进行去重处理
支持使用上述有效值的组合值,如3表示同时进行1和2的优化
ENABLE_DIST_VIEW_UPDATE 0 动态,系统级 是否支持更新含有DISTINCT的视图,1:允许;0:不允许,当COMPATIBLE_MODE=1时,ENABLE_DIST_VIEW_UPDATE的实际值均为1
STAR_TRANSFORMATION_ENABLED 0 动态,会话级 是否允许对星形模型查询改写以使用位图连接索引。0:不启用;1:启用 此参数仅在OLAP_FLAG为1时才有效
MONITOR_INDEX_FLAG 0 动态,会话级 是否对索引进行监控,0:关闭自动监控,可使用ALTER INDEX语句启用索引监控;1:打开自动监控,对用户定义的二级索引进行监控;2:禁止索引监控
RAISE_CASE_NOT_FOUND 0 动态,系统级 CASE语句NOT FOUND是否抛出异常。0:不抛出;1:抛出
FIRST_ROWS 100 动态,系统级 结果集一个消息中返回的最大行数,有效值范围(1~1000)
LIST_TABLE 0 动态,会话级 默认情况下,创建的表是否为堆表,0:否;1:是
ENABLE_SPACELIMIT_CHECK 1 静态 是否启用创建用户和创建表时定义的空间限制DISKSPACE LIMIT功能。1:启用;0:不启用
BUILD_VERTICAL_PK_BTREE 0 手动 HUGE表上创建的主键是否需要创建物理B树。0:不创建;1:创建
BDTA_PACKAGE_COMPRESS 0 动态,会话级 是否启动BDTA压缩传递功能,1:压缩;0:不压缩
HFINS_PARALLEL_FLAG 0 动态,系统级 是否启动HUGE表查询插入优化。0:否;1:对非HUGE分区表进行优化;2:对HUGE分区表也进行优化
HFINS_MAX_THRD_NUM 100 动态,系统级 HUGE表查询插入优化时并行的最大线程数,有效值范围(4~200)
LINK_CONN_KEEP_TIME 15 静态 DBLINK空闲连接保持时间,以分钟为单位,为0时表示不主动释放空闲DBLINK连接。 有效值范围(0~ 2147483647)
DETERMIN_CACHE_SIZE 5 动态,会话级 确定性函数值缓冲区大小,以MB为单位
NTYPE_MAX_OBJ_NUM 1000000 动态,系统级 复合数据类型中包含的对象或者字符串的总个数,以及查询中包含的变量的总个数,有效值范围为(2000~100000000)
CTAB_SEL_WITH_CONS 0 动态,系统级 查询建表时,是否对原始表上的约束进行拷贝。 1:是,0:否。
HLDR_BUF_SIZE 8 动态,系统级 进行HUGE表导入时,缓冲区的大小,单位MB,有效值范围(4~1024)
HLDR_BUF_TOTAL_SIZE 4294967294 动态,系统级 HLDR资源控制,系统所有HLDR使用的HLDR_BUF空间的总量,单位为M。有效值范围(100~ 4294967294)
HLDR_REPAIR_FLAG 0 动态,系统级 使用DMFLDR装载数据时如发生错误,对错误的处理方式:0:完全回滚方式,数据将回到装载前的状态;1:修复方式,系统将数据修复到最后一个完整装载的数据区 注:若此参数为1,DMFLDR装载数据时不能支持支持事务型HUGE表二级索引的维护
HLDR_FORCE_COLUMN_STORAGE 1 动态,系统级 装载最后一个数据区是否强制列存。1:是;0:否
HLDR_FORCE_COLUMN_STORAGE_PERCENT 80 动态,系统级 装载HUGE表时最后一个数据区强制列存的最低数据百分比。取值范围:50~100
HLDR_HOLD_RATE 1.5 动态,系统级 HLDR最多保持重用HLDR_BUF的个数与目标表列数的比例。取值范围:1~65535
HLDR_MAX_RATE 2 动态,系统级 HLDR同时使用的HLDR_BUF的最大个数与目标表列数的比例。取值范围:2~65535
HUGE_ACID 0 动态,系统级 是否支持HUGE表增删改与查询的并发,取值范围:0、1、2。 0:不支持HUGE表增删改与查询的并发; 1:支持HUGE表增删改与查询的并发,操作符HFLKUP检查数据区是否上锁时使用二分查找; 2:支持HUGE表增删改与查询的并发,操作符HFLKUP检查数据区是否上锁时使用遍历查找
HUGE_STAT_MODE 2 动态,会话级 设置默认情况下是否计算WITH DELTA的HUGE表各列的统计信息,取值范围:0、1、2。 0:不计算统计信息; 1:实时计算统计信息; 2:异步计算统计信息
HFS_CHECK_SUM 1 静态 是否为HUGE表数据区进行和校验:0:否;1:是
HBUF_DATA_MODE 0 静态 HUGE表数据缓冲区中缓存数据的格式,取值范围:0、1,默认值为0 0:格式与数据文件中的数据块格式一致 1:当数据块是压缩加密时,缓存解密解压后的数据
DBLINK_OPT_FLAG 509 动态,会话级 控制对DBLINK的优化。0:不进行优化;1:允许DBLINK整体优化,采用原始方式;2:DBLINK局部优化,采用老方式;4:DBLINK局部优化,采用新方式;8:异构数据库情况下进行兼容性检查,根据表达式类型检查是否可以在异构数据库执行,如果不支持,则不对此表达式进行进行收集;16:采用新方式局部优化时,考虑视图、派生表、子查询、查询表达式是否可以整体优化;32:采用新方式局部优化时,支持外连接WHERE过滤条件的优化;64:支持MEMBER_ACCESS转换为变量的优化方式;128:增删改支持新方式优化;256:计划生成阶段增加DBLINK优化,支持连接条件转换为变量的优化方式,并对DBLINK存在过滤条件的场景进行优化;512:支持物化视图明细表是基于DM到异构数据库DBLINK的远程表。 支持使用上述有效值的组合值,如61表示同时进行1、4、8、16、32的优化。取值16和32只有和取值4组合才有意义
DBLINK_LOB_LEN 8 动态,系统级 使用DBLINK访问大字段类型时,大字段的长度限制。以KB为单位,有效值范围(4~1024)
FILL_COL_DESC_FLAG 0 动态,系统级 服务器返回给客户端的结果集是否含有列描述信息,0:否;1:是
BTR_SPLIT_MODE 0 动态,系统级 B树叶子节点分裂方式,0:按对半分裂;1:在插入点进行分裂
BLOB_OUTROW_REC_STOR 5 动态,系统级 大数据行外记录式存储配置参数。如果使用记录式存储,可以在一个数据页中存放多个大数据。有效值范围(0~10),0表示不使用记录式存储;其他设置指定记录式存储的分组数,可提高并发效率
TS_RESERVED_EXTENTS 64 静态 系统为每个表空间提前预留的簇个数,减少系统在执行过程中申请不到空间的情况。有效值范围(2 ~ 1024)。
注:DMDSC环境下,该参数所有站点需要保持一致
TS_SAFE_FREE_EXTENTS 512 静态 系统为每个表空间提前预留的簇个数,减少系统在执行过程中申请不到空间的情况。有效值范围(2 ~ 1024)。
注:DMDSC环境下,该参数所有站点需要保持一致
TS_MAX_ID 8192 限制系统所支持的最大表空间ID,有效值范围(512 ~ 65517),
与系统实际最大ID比较,取大。
如果设置为590,但是系统最大ID已经为1000了,最后结果是1000。
注:DMDSC环境下,该参数所有站点需要保持一致
TS_FIL_MAX_ID 255 限制每个表空间所支持的最大文件个数,有效值范围(2 ~255)。
注:DMDSC环境下,该参数所有站点需要保持一致
DECIMAL_FIX_STORAGE 0 动态,会话级 是否将长度为1~18的DECIMAL/DEC类型转换为定长方式存储。0:否;1:是。 若转换为定长存储,则DECIMAL(P,S)的转换规则为:当0
SQL_SAFE_UPDATE_ROWS 0 动态,系统级 SQL安全更新控制参数。0:关闭SQL安全更新;1~2147483647:启用SQL安全更新,SQL语句每次允许影响行数的最大值为指定的参数值
ENABLE_HUGE_SECIND 1 动态,系统级 是否支持事务型HUGE表二级索引的维护,0:不支持;1:支持
LOB_MAX_INROW_LEN 900 动态,系统级 指定数据库LOB字段的行内数据存放的上限大小,单位为BYTE,有效值范围(900~8000)
RS_PRE_FETCH 1 动态,系统级 查询操作结果集返回时是否进行预填充,仅适用于FORWORD_ONLY游标的结果集。0:不预填充;1:预填充,即在一批数据返回客户端后会自动进行预取下一批数据
TIMER_TRIG_CHECK_INTERVAL 60 动态,系统级 服务器端检查触发器是否触发的时间间隔,单位为秒,即每过设置的秒数检查触发器是否需要触发,有效值范围(1~60)
INNER_INDEX_DDL_SHOW 1 动态,会话级 用于DBMS_METADATA包查询索引结果。0: 查询系统的内部索引定义报错;1:允许查询系统的内部索引定义
HP_STAT_SAMPLE_COUNT 50 动态,系统级 水平分区表采集统计信息时,子表的最大采样数,有效值范围(1~65535)
PWR_FLUSH_PAGES 10000 动态,系统级 控制生成特殊PWR记录的频率,每写入PWR_FLUSH_PAGES页到磁盘,即生成一条特殊的PWR记录,标记之前的PWR记录是有效的。有效值范围(0~4294967294)
REDO_UNTIL_LSN 空串 手动 系统故障重启时,重做REDO日志的最大LSN值。 使用这个参数要十分慎重,一般只在数据库文件系统损坏,系统无法正常启动情况下使用,通过指定这个参数,将数据库恢复到稍早时间点,让数据库可以正常启动,以便抢救部分数据。 注:使用这个参数后,会截断指定LSN之后的所有日志。另外,系统启动后,一定不要忘记将参数值重新修改为缺省值。
IGNORE_FILE_SYS_CHECK 0 静态 系统重启时,是否检查SYSTEM/ROLL/MAIN表空间文件系统;取值范围0,1;默认0,检查文件系统。1,不检查文件系统。在实际使用空间比较大情况下,可以考虑关闭文件系统检查,提高系统启动速度。
FILE_SCAN_PERCENT 100.0 动态,系统级 V$DATAFILE查询时控制抽样比例,最多抽样10000页; 在50页以下的不抽样。有效值范围(0~100.0),0相当于100
STARTUP_CHECKPOINT 0 静态 系统启动时REDO后是否强制做完全检查点。 0:不强制;1:强制
CHECK_SVR_VERSION 1 静态 数据库记录的执行码版本比当前SERVER版本高时,是否报错。0:不报错;1:报错,服务器不能启动成功
ID_RECYCLE_FLAG 0 静态 是否开启ID资源回收功能。在服务器启动后,申请新的表ID、索引ID、约束ID,但是ID最终未成功使用后,ID会暂时加入回收缓存中,以备下次申请使用,服务器关闭后,缓存中的ID全部丢弃。1是,0否。
BAK_USE_AP 1 动态,系统级 备份还原实现策略。 1:DMAP辅助进程方式,要求必须启动DMAP服务,可支持第三方备份。DMAP插件执行,改造了备份还原任务子系统,允许指定并行度,大幅提升了备份还原的效率,特别是加密、压缩的处理效率。 2:无辅助进程方式,不依赖DMAP,由主进程DMSERVER自身执行备份还原,但不支持第三方备份。
TRXID_UNCOVERED 0 动态,会话级 是否禁止二级索引覆盖。0:否,使用二级索引覆盖,当更新不涉及二级索引时,查询最大TRXID可能比聚集索引的最大TRXID小;1:是
GEN_SQL_MEM_RECLAIM 1 动态,系统级 语句块执行是否提前回收空间。0:否;1:是,语句块生成各个SQL计划后,都需尝试回收部分PHA内存空间
预先装载表相关参数
LOAD_TABLE 空串 手动 在服务器启动时预先装载的普通表的完整表名,即“模式名.表名”,多个表之间用逗号分隔,最多可指定10个表
LOAD_HTABLE 空串 手动 在服务器启动时预先装载的HUGE表的完整表名,即“模式名.表名”,多个表之间用逗号分隔
客户端缓存
CLT_CACHE_TABLES 空串 手动 指定可以在客户端缓存的表。表名必须带模式名前缀,如果表名或模式名中包含特殊字符,需要使用双引号包含。如果指定多个缓存表,须以逗号间隔。服务器最多支持指定100个可缓存表。为避免参数值太长导致INI文件分析困难,允许在INI文件中设置多行CLT_CACHE_TABLES参数
REDO日志相关参数
RLOG_BUF_SIZE 512 静态 单个日志缓冲区大小(以日志页个数为单位),取值只能为2的次幂值,最小值为1,最大值为20480
RLOG_POOL_SIZE 256 静态 最大日志缓冲区大小(以M为单位)。有效值范围(1~4096)
RLOG_PARALLEL_ENABLE 0 静态 是否启动并行日志,1:启用;0:不启用
RLOG_IGNORE_TABLE_SET 1 动态,系统级 是否开启记录物理逻辑日志功能。1是,0否
RLOG_APPEND_LOGIC 0 动态,系统级 是否启用在日志中记录逻辑操作的功能,取值范围0、1、2、3 0:不启用;1、2、3启用。 1:如果有主键列,记录UPDATE和DELETE操作时只包含主键列信息,若没有主键列则包含所有列信息;2:不论是否有主键列,记录UPDATE和DELETE操作时都包含所有列的信息;3:记录UPDATE时包含更新列的信息以及ROWID,记录DELETE时只有ROWID
RLOG_APPEND_SYSTAB_LOGIC 0 动态,系统级 是否启用在日志中记录系统表逻辑操作的功能,启用RLOG_APPEND_LOGIC后有效,取值范围0、1。 0:不启用;1:启用
RLOG_CHECK_SPACE 1 动态,系统级 是否检查日志空间,取值范围0、1。 1:日志刷盘时,检查日志空间是否溢出,是则生成错误日志并强制退出,以确保数据文件不被破坏。 0:不检查日志空间是否写溢出
RLOG_SAFE_SPACE 128 静态 安全的可用日志空间大小(以M为单位)。有效值范围(0 ~ 1024)。当系统的可用日志空间小于这个值时,自动触发检查点释放日志空间
RLOG_RESERVE_THRESHOLD 0 动态,系统级 控制是否启动日志空间安全性检查。0:不启动;1~16384:如果系统有效日志量达到设定的值,则启动日志空间预留机制,以提升故障重启和DSC集群节点故障处理速度,单位为M
RLOG_RESERVE_SIZE 4096 静态 控制每次物理事务PTX操作需要预留的REDO空间大小,单位为512 BYTE。有效值范围(0~102400),0表示不再检查剩余REDO可用空间是否安全,假定总是有富余
RLOG_SEND_APPLY_MON 64 静态 数据守护中,对于主库,用于指定统计最近N次主库到每个备库的归档发送时间;对于备库,用于指定统计最近N次备库重演日志的时间,N为此参数设置的值。有效值范围(1~1024)
RLOG_COMPRESS_LEVEL 0 静态 日志压缩级别,有效值范围(0~10)。0表示不压缩,1-9表示ZIP压缩算法,10表示SNAPPY压缩算法
RLOG_ENC_CMPR_THREAD 4 静态 加密、压缩任务线程数,有效值范围(1~64)
RLOG_PKG_SEND_ECPR_ONLY 0 静态 用于主备环境下控制加密压缩环境。0:同时发送原始日志数据和加密压缩后的日志到备库;1:只发送加密压缩后的日志到备库
DFS_RLOG_SEND_POLICY 1 静态 DFS环境下计算节点发送日志的策略。 0:同步发送;1:异步发送
REDO_PWR_OPT 1 静态 系统故障重启,重做REDO日志恢复数据时,是否启动PWR日志优化。0:不启动,重做所有REDO日志;1:启动,跳过已经写入磁盘数据页的REDO日志重演
REDO_IGNORE_DB_VERSION 0 静态 启动重做REDO日志时,是否检查版本信息。0:忽略版本检查,直接使用新版本重做REDO日志;1:正常检查版本,不兼容的库会报错,需要使用对应版本启动并正常关闭后,再用新版本执行码启动
REDO_BUF_SIZE 64 静态 日志加载缓存大小,系统故障重启时根据此参数分配内存,并将REDO日志从文件读取到此缓存。取值范围(0~512),默认64,单位M。0表示无限制
ELOG_REPORT_LINK_SQL 0 动态,会话级 是否记录DBLINK执行的SQL到服务器日志文件中。0:不记录;1:记录
REDOS_BUF_SIZE 1024 静态 待重演日志堆积的内存限制,堆积的日志缓冲区占用内存超过此限制,则新的日志将会被延迟加入重演队列,等待重演释放部分内存后再加入。以M为单位,有效值范围(0~65536),默认1024。0表示无内存限制。 REDOS_BUF_SIZE和REDOS_BUF_NUM同时起作用,只要达到一个条件即会触发延迟处理。
REDOS_BUF_NUM 4096 静态 待重演日志缓冲区允许堆积的数目限制,超过限制则新的日志将会被延迟加入重演队列,等待堆积数减少后再加入。以个数为单位,有效值范围(0~9999),默认4096。0表示无限制。 REDOS_BUF_SIZE和REDOS_BUF_NUM同时起作用,只要达到一个条件即会触发延迟处理。
REDOS_MAX_DELAY 1800 静态 备库重演日志缓冲区的时间限制,超过此限制则认为重演异常,服务器自动宕机,防止日志堆积、主库不能及时响应用户请求。以秒(S)为单位,取值范围(0~7200),默认1800S。0表示无重做时间限制
REDOS_PRE_LOAD 0 动态,系统级 重演REDO日志时是否开启RLOG_PKG预加载功能。0:不开启;1:开启
REDOS_PARALLEL_NUM 1 静态 指定故障重启、还原恢复、备库重演场景下,并行日志重演的线程数,有效值范围(1~64)。1表示不进行并行日志重演
REDOS_ENABLE_SELECT 1 静态 指定是否支持备库查询。0:不支持;1:支持。关闭备库查询功能可提升备库重演性能
事务相关参数
ISOLATION_LEVEL 1 静态 系统默认隔离级别。1:读提交;3:可串行化
DDL_WAIT_TIME 10 动态,会话级 DDL操作的锁超时时间,以秒为单位。有效值范围(0~60)
BLDR_WAIT_TIME 10 动态,会话级 批量装载时锁超时时间,以秒为单位。有效值范围(0~604800)
MPP_WAIT_TIME 10 动态,会话级 设置MPP下默认的封锁等待超时,单位为秒,有效值为(0~600)
FAST_RELEASE_SLOCK 1 动态,系统级 是否启用快速释放S锁,1:启用;0:不启用
SESS_CHECK_INTERVAL 3 动态,会话级 循环检测会话状态的时间间隔,以秒为单位。有效值范围(1~60)
LOCK_TID_MODE 1 动态,系统级 SELECT FOR UPDATE封锁方式。0:结果集记录小于100行,直接封锁TID,否则升级为表锁; 1:不升级表锁,一律使用TID锁
LOCK_TID_UPGRADE 0 动态,系统级 0:事务启动时,用自己的事务号生成的TID锁,以X封锁;DELETE/UPDATE记录触发的TID锁,优先使用S封锁,只有在多个事务同时更新同一行记录场景下,升级为X锁。1:所有TID锁以X方式封锁
NOWAIT_WHEN_UNIQUE_CONFLICT 0 静态 插入数据时,如果和未提交数据有UNIQUE约束的冲突,是否等待未提交事务结束,0:等待,直至未提交事务结束;1:不等待,立即返回错误
UNDO_EXTENT_NUM 4 静态 表示系统启动时,为每个工作线程分配的回滚簇个数。有效值范围(1~ 256)
MAX_DE_TIMEOUT 10 动态,会话级 C、JAVA外部函数的执行超时时间,以秒为单位。有效值范围(1~3600)
TRX_RLOG_WAIT_MODE 0 静态 事务提交时的日志刷盘等待模式。0:保持现有模式;1:主库模式先等待日志刷盘完成,再释放事务上的资源
TRANSACTIONS 75 静态 指定一个会话中可以并发的自治事务数量。有效值范围(1~1000)
MVCC_RETRY_TIMES 5 静态 指定发生MVCC冲突时的最大重试次数。有效值范围(0~4294967294) 注:MPP下此参数无效,发生MVCC冲突时将直接报错
MVCC_PAGE_OPT 1 动态,系统级 控制是否启动数据页可见性优化处理。0:关闭数据页可见性优化;1:启用数据页可见性优化
ENABLE_FLASHBACK 0 动态,系统级 是否启用闪回查询,0:不启用;1:启用
UNDO_RETENTION 90 动态,系统级 事务提交后回滚页保持时间,单位为秒。有效值范围(0~ 86400) 注:类型为DOUBLE,可支持毫秒
PARALLEL_PURGE_FLAG 0 静态 是否启用并行事务清理,0:不启用;1:启用
PURGE_WAIT_TIME 500 动态,系统级 检测到系统清理动作滞后(待清理事务提交时间-当前系统时间>UNDO_RETENTION)情况下,系统等待时间(MS)。有效范围(0 ~ 60000), 0表示不等待
PSEG_RECV 1 动态,系统级 系统故障重启时,对活动事务和已提交事务的处理方式。0:跳过回滚活动事务和PURGE已经提交事务的步骤。在回滚表空间出现异常、损坏、系统无法正常启动时,可将PSEG_RECV设置为0,让系统启动;但存在一定风险,未提交事务的修改将无法回滚,破坏事务的原子性;另外,已提交未PURGE的事务,将导致部分存储空间无法回收;1:回滚活动事务并PURGE已经提交事务;2:延迟PURGE已提交事务,延迟回滚活动事务;3:回滚活动事务,延迟PURGE已提交事务。
ENABLE_IGNORE_PURGE_REC 0 动态,会话级 当返回EC_RN_NREC_PURGED(-7120)错误(回滚记录版本太旧,无法获取用户记录)时的处理策略;0:报错;1:忽略这一条记录,继续执行
ROLL_ON_ERR 0 动态,系统级 服务器执行出错时的回滚策略选择,0:回滚当前语句;1:回滚整个事务
XA_TRX_IDLE_TIME 60 动态,系统级 允许未PRE-COMMITTED的XA事务活动的时间,单位为秒。有效值范围(30~36000)
ENABLE_TMP_TAB_ROLLBACK 1 动态,系统级 临时表操作是否生成回滚记录,0:不生成;1:生成 注:置为0时,临时表的DML操作无法回滚
LOCK_DICT_OPT 0 静态 DICT封锁优化,事务提交或回滚时,不真正释放表上IS锁和IX锁对象。0:不优化;1:单机环境优化,DSC集群环境不优化;2:单机、集群环境都优化
TRX_DICT_LOCK_NUM 64 动态,系统级 开启LOCK_DICT_OPT优化场景下最多可缓存的IX/IS类型字典锁对象数量。有效值范围(0~1024)
安全相关参数
ENABLE_ENCRYPT 1 静态 通讯加密所采用的方式。0:不加密;1:SSL加密,此时如果没有配置好SSL环境,则通讯仍旧不加密;2:SSL认证,不加密,此时如果服务器SSL环境没有配置则服务器无法正常启动,如果客户端SSL环境没有配置则无法连接服务器
MIN_SSL_VERSION 0 静态 允许SSL连接的最低版本。0:支持所有版本;0X0301:TLSV1;0X0302:TLSV1.1;0X0303:TLSV1.2;0X0304:TLSV1.3。 仅当ENABLE_ENCRYPT非0时有效
CLIENT_UKEY 0 静态 是否采用UKEY身份验证。0:支持所有登录方式,是否采用UKEY验证由客户端驱动。当客户端输入UKEY名称和UKEY则采用UKEY验证,否则不使用UKEY验证;1:客户端强制使用UKEY验证
ENABLE_UDP 0 静态 是否支持UDP。0:否;1:单发单收;2:多发多收。缺省使用TCP
UDP_MAX_IDLE 15 静态 UDP最大等待时间,单位秒,超过则认为连接断开。取值范围(5~60)
UDP_BTU_COUNT 8 静态 UDP最大不等待连续发送消息块数,当不连续差值大于它时则等待发送。取值范围(4~32)
AUDIT_FILE_FULL_MODE 1 静态 剩余空间不足时的处理方式:
1:审计文件创建失败,卡住
2:审计文件创建失败,不再审计
AUDIT_SPACE_LIMIT 8192 静态,系统级 审计文件总存储空间大小限制,以M为单位。有效值范围(0~1024*1024),0表示不限制
AUDIT_MAX_FILE_SIZE 100 动态,系统级 单个审计文件的最大大小,以M为单位。有效值范围(1~4096)
AUDIT_IP_STYLE 0 静态 审计记录IP字段显示格式。 0:仅显示IP 1:显示IP和主机名
MSG_COMPRESS_TYPE 2 静态 与客户端的通信消息是否压缩,0:不压缩;1:压缩;2:系统自动决定每条消息是否压缩
LDAP_HOST 空串 手动 LDAP服务器IP
COMM_ENCRYPT_NAME 空串 静态 消息加密算法名。如果为空则不进行通信加密;如果给的加密算法名错误,则用使用加密算法DES_CFB。DM支持的加密算法名可以通过查询动态视图V$CIPHERS获取
COMM_VALIDATE 1 动态,系统级 是否对消息进行校验。0:不检验;1:检验
MESSAGE_CHECK 0 动态,系统级 是否对通信消息启用消息体校验(只有当消息的发送端和接收端都配置为1才启用通信体校验)。0:不启用;1:启用
ENABLE_EXTERNAL_CALL 0 静态 是否允许创建或执行外部函数。0:不允许;1:允许
EXTERNAL_JFUN_PORT 6363 动态,系统级 服务器执行JAVA外部函数时连接DMAGENT使用的端口号,DMAGENT的监听端口,监听方配置此参数,取值范围128~65534,发起连接端的端口在1024-65535之间随机分配
EXTERNAL_AP_PORT 4236 动态,系统级 执行C外部函数或AP备份还原使用的AP的端口号,DMAP的监听端口,监听方配置此参数,取值范围1024~65534,发起连接端的端口在1024-65535之间随机分配
ENABLE_PL_SYNONYM 0 动态,系统级 是否可以通过全局同义词执行非系统用户创建的包或者存储过程。1是,0否。 0的情况下,在解析过程/包名时,如果借助了同义词,则这些对象要么是系统内部创建的,或者其创建者必须为系统用户,否则一律报错
FORCE_CERTIFICATE_ENCRYPTION 0 静态 非加密通讯的情况下是否开启用户名密码强制证书解密。1是,0否。 私钥证书DM_LOGIN.PRIKEY需要提前拷贝到INI参数SYSTEM_PATH指定的目录下
REGEXP_MATCH_PATTERN 0 动态,会话级 指定正则表达式的匹配模式。0:支持非贪婪匹配;1:仅支持贪婪匹配
UNIX_SOCKET_PATHNAME 空串 静态,系统级 LINUX系统中,当服务器与客户端之间使用UNIXSOCETUNIX-IPC方式通信时,用于指定客户端连接的UNIXSOCKET路径文件名
兼容性相关参数
BACKSLASH_ESCAPE 0 动态,会话级 语法分析对字符串中的反斜杠是否需要进行转义处理。0:否;1:是
STR_LIKE_IGNORE_MATCH_END_SPACE 1 动态,会话级 LIKE运算中是否忽略匹配串的结尾0。0:不忽略;1:忽略
CLOB_LIKE_MAX_LEN 31 静态 LIKE语句中CLOB类型的最大长度,单位KB,有效值范围(8~102400)
EXCLUDE_DB_NAME 空串 静态 服务器可以忽略的数据库名列表,各数据库名以逗号“,”隔开,数据库名不需要加引号。
MS_PARSE_PERMIT 0 静态 是否支持MS SQLSERVER的语法。 0:不支持;1:支持; 2:在MS_PARSE_PERMIT =1的基础上,兼容MS SQLSERVER的查询项中支持“标识符=列名”或“@变量名=列名”用法。 注:当COMPATIBLE_MODE=3时,MS_PARSE_PERMIT的实际值为1
COMPATIBLE_MODE 0 静态 是否兼容其他数据库模式。0:不兼容,1:兼容SQL92标准,2:部分兼容ORACLE,3:部分兼容MS SQL SERVER,4:部分兼容MYSQL,5:兼容DM6,6:部分兼容TERADATA
JSON_MODE 0 静态 JSON语法解析兼容模式。0:兼容ORACLE;1:兼容PostgreSQL
DATETIME_FMT_MODE 0 动态,系统级 是否兼容ORACLE日期格式。0:不兼容;1:兼容。注:此参数被动态修改后仅影响新生成的会话
DOUBLE_MODE 0 静态 计算DOUBLE类型的散列值时,是否只使用6个字节。0:否;1:是
CASE_COMPATIBLE_MODE 1 动态,系统级 涉及不同数据类型的CASE运算,是否需要兼容ORACLE的处理策略。 0:不兼容; 1:兼容,本模式下,当函数DECODE()中的多个CASE类型不一致时,DECODE会从其中选择一个类型进行匹配 2:兼容,本模式下,当函数DECODE()中的多个CASE类型不一致时,DECODE根据第一个CASE的类型来决定匹配类型
XA_COMPATIBLE_MODE 0 动态,系统级 XA事务处理是否兼容ORACLE的处理方式。0:不兼容,返回达梦的错误码;1:兼容,返回和ORACLE一样的报错码
EXCLUDE_RESERVED_WORDS 空串 静态 语法解析时,需要去除的保留字列表,保留字之间以逗号分隔
COUNT_64BIT 1 动态,会话级 COUNT和SUM集函数的值是否设置为BIGINT。0:否;1:是
CALC_AS_DECIMAL 0 静态 0:默认值,表示整数类型的除法、整数与字符或BINARY串的所有四则运算,结果都处理成整数 1:表示整数类型的除法全部转换为DEC(0,0)处理 2:表示将整数与字符或BINARY串的所有四则运算都转换为DEC(0,0)处理 注:该参数只有在USE_PLN_POOL为0或1时有效。当USE_PLN_POOL为2或3时,按照CALC_AS_DECIMAL=2处理
CMP_AS_DECIMAL 0 静态 0:默认值,表示不对字符串与整型的比较结果类型做任何修改 1:表示字符串与整型转换为BIGINT比较数据溢出时,则转换为DEC进行比较 2:表示字符串与整型的比较强制转换为DEC进行比较
CAST_VARCHAR_MODE 1 动态,系统级 在字符串向整型转换进行比较时,是否将溢出值转为特殊伪值。0:否;1:是
PL_SQLCODE_COMPATIBLE 0 静态 默认值为0;如果设置为1,则PL的异常处理中,SQLCODE的错误码值需要尽量与ORACLE一致
LEGACY_SEQUENCE 0 动态,系统级 序列兼容参数,0:与ORACLE兼容;1:与旧版本DM兼容,不推荐使用
DM6_TODATE_FMT 0 静态 TO_DATE中的HH格式小时制,0:12小时制; 1:24小时制(与DM6兼容)
MILLISECOND_FMT 1 动态,系统级 TO_CHAR的结果是否显示毫秒值。0:不显示;1:显示
NLS_DATE_FORMAT 静态 指定DATE类型的显示格式,包括DATE列INSERT/SELECT使用的格式、CAST 转换采用的格式。不设置时格式取决于DATETIME_FMT_MODE参数
NLS_TIME_FORMAT 静态 指定TIME类型的显示格式,包括TIME列INSERT/SELECT使用的格式、CAST 转换采用的格式。不设置时格式取决于DATETIME_FMT_MODE参数
NLS_TIMESTAMP_FORMAT 静态 指定TIMESTAMP类型的显示格式,包括TIMESTAMP列INSERT/SELECT使用的格式、CAST 转换采用的格式。不设置时格式取决于DATETIME_FMT_MODE参数
NLS_TIME_TZ_FORMAT 静态 指定TIME_TZ类型的显示格式,包括TIME_TZ列INSERT/SELECT使用的格式、CAST 转换采用的格式。不设置时格式取决于DATETIME_FMT_MODE参数
NLS_TIMESTAMP_TZ_FORMAT 静态 指定TIMESTAMP_TZ类型的显示格式,包括TIMESTAMP_TZ列INSERT/SELECT使用的格式、CAST 转换采用的格式。不设置时格式取决于DATETIME_FMT_MODE参数
PK_MAP_TO_DIS 0 动态,系统级 专门用于MPP环境中,在建表语句中指定了PK列,没有指定分布方式时,是否自动将PK列作为HASH分布列,将整个表转为HASH分布。1是;0否
DROP_CASCADE_VIEW 0 动态,会话级 删除表或者视图的时候级联删除视图,0:只删 除表或者视图;1:删除表或者视图时删除关联的视图,当COMPATIBLE_MODE=1时,DROP_CASCADE_VIEW的实际值为1
PROXY_PROTOCOL_MODE 0 动态,系统级 控制代理模式的开启,0:不开启;1:开启。 开启代理模式后, 服务器才可以解析代理向服务器发送的代理协议消息, 从而才可以获得真实客户端IP, 并且设置限制连接的IP后会检查真实客户端IP是否有效, 查询V$SESSIONS中的CLNT_IP时也会显示真实客户端IP地址
SPACE_COMPARE_MODE 0 静态 是否在查询语句中比较字符串后缀空格。0:维持原有策略;1:进行比较
DATETIME_FAST_RESTRICT 1 动态,系统级 TO_DATE(字符串,FAST格式)或ALTERSESSION设置了DATE的格式为FAST格式后,CAST 字符串 AS DATE时:0: 字符串可以带时间;1.字符串不允许带时间,带时间会报错。其中FAST格式(标准格式)为:YYYY-MM-DD、 YYYY/MM/DD、YYYY:MM:DD、YYYY.MM.DD
用户请求跟踪相关参数
SVR_LOG 0 动态,系统级 是否打开SQL日志功能,0:表示关闭;1:表示打开;2:按文件中记录数量切换日志文件,日志记录为详细模式;3:不切换日志文件,日志记录为简单模式,只记录时间和原始语句
SVR_LOG_NAME SLOG_ALL 动态,系统级 使用SQLLOG.INI中预设的模式的名称
系统跟踪相关参数
GDB_THREAD_INFO 0 静态 系统强制HALT时,是否打印线程堆栈信息到日志文件中。0:不打印;1:打印
TRACE_PATH SYSTEM_PATH 手动 存放系统TRACE文件的路径。不允许指定ASM路径。默认的TRACE_PATH是SYSTEM_PATH;如果SYSTEM_PATH保存在ASM上,则../CONFIG_PATH/TRACE作为TRACE_PATH
SVR_OUTPUT 0 动态,系统级 POINT指令是否在服务器端打印,打印信息会记录到LOG目录下的DMSERVERSERIVCE.LOG文件中。 1是,0否
SVR_ELOG_FREQ 0 动态,系统级 指定文件切换频度。0:按月;1:按天;2:按小时。当SVR_ELOG_FREQ为1或2时,每到切换时间点,系统会自动将当前文件更名后归档
ENABLE_OSLOG 0 静态 是否启用操作系统日志,启用后会在/var/log/secaudit/db目录下生成名为audit_yyyymmdd.log的操作系统日志文件,仅对非WINDOWS系统有效。0:禁用;1:启用
MONITOR监控相关参数
ENABLE_MONITOR 1 动态,系统级 用于打开或者关闭系统的监控功能。1:打开;0:关闭。
MONITOR_TIME 1 动态,系统级 用于打开或者关闭时间监控。该监控项的生效必须是在ENABLE_MONITOR打开的情况下。1:打开;0:关闭。
MONITOR_SYNC_EVENT 0 动态,系统级 用于打开或者关闭同步事件的监控。该监控项的生效必须是在ENABLE_MONITOR打开的情况下。1:打开;0:关闭。该参数涉及到的动态视图为V$SYSTEM_EVENT、V$SESSION_EVENT。
MONITOR_SQL_EXEC 0 动态,会话级 操作符、虚拟机栈帧、执行计划节点的监控开关。该监控项的生效必须是在ENABLE_MONITOR打开的情况下。0:关闭监控;1:打开监控;2:打开监控,在1的基础上,又增加了表达式运行时操作符的统计。该参数涉及的动态视图为V$STKFRM、V$SQL_PLAN_NODE、V$SQL_NODE_HISTORY。
ENABLE_FREQROOTS 0 动态,会话级 指定FAST_POOL的管理方式。0:经典模式,系统启动时装入常用的描述页、索引的根、索引的控制页、指定常驻内存的表以及索引第二层的节点,之后不再变化;1:动态模式A,系统启动时装入常用的描述页、索引的根、指定常驻内存的表, 后续按负载情况动态装入频繁访问的页;2:动态模式B, 预装入的页同经典模式,后续按负载情况动态装入频繁访问的页;3:最大模式,试图把数据页全部装入FAST POOL,如果还有富余,则剩下的空闲FAST POOL空间按各文件实际使用长度按比例预分配,后续不再变化,适合库较小、内存空间大的场景。对于ROLL表空间,最多分配0号文件的前FAST_ROLL_PAGES,其中0、1、2模式下优先分配,3模式下按表空间ID和文件ID依次分配
ENABLE_FREQROOTS 0 静态 指定FAST_POOL的管理方式。0:静态,系统启动时一次性载入内容,之后不再变化;1:动态,根据MAX_FREQ_ROOTS和MIN_FREQ_CNT参数值动态调整FAST_POOL内容
MAX_FREQ_ROOTS 200000 静态 收集常用B树地址的最大数量,仅ENABLE_FREQROOTS不为0时有效,有效值范围(0~10000000)
MIN_FREQ_CNT 100000 静态 最常使用B树地址的阈值,仅在ENABLE_FREQROOTS不为0时有效,有效值范围(0~10000000)
LARGE_MEM_THRESHOLD 1000 动态,系统级 大内存监控阈值。单位K,取值范围(0~10000000)。其中0~100关闭统计,100以上才统计。 一条SQL语句使用的内存值超过这个值,就认为是使用了大内存,此时开启大内存监控。使用了大内存的SQL语句记录在V$LARGE_MEM_SQLS, V$SYSTEM_LARGE_MEM_SQLS视图中
ENABLE_MONITOR_DMSQL 1 动态,会话级 启用动态监控SQL执行时间功能标记, 0:不启用;1:监控。 只监控多条或复杂SQL,例如包含引用包、嵌套子过程、子方法、动态SQL的SQL语句。监控的记过记录在V$DMSQL_EXEC_TIME视图中。
ENABLE_TIMER_TRIG_LOG 0 动态,系统级 是否启动作业时间触发器日志功能,0:不启动;1启动
IO_TIMEOUT 300 动态,系统级 设置IO超时时间。单位秒,取值范围(0~3600)。若设置大于0,调度线程每分钟检测系统内部是否存在IO超时(磁盘读或写磁盘)的数据页信息或者REDO日志刷盘超时信息,如果存在则将信息写入日志文件;如果超时时间大于3倍的IO_TIMEOUT则系统自动HALT
数据守护相关参数
DW_ERROR_TIME 60 动态,系统级 服务器认定守护进程未启动的时间,有效值范围(0~1800),单位为S,默认60S。 如果服务器距离上次收到守护进程消息的时间间隔在设定的时间范围内,则认为守护进程处于活动状态,此时,不允许手工执行修改服务器模式、状态的SQL语句; 如果超过设定时间仍没有收到守护进程消息,则认为守护进程未启动,此时,允许手工方式执行这类SQL语句
DW_PORT 0 手动 服务器监听守护进程连接请求的端口,服务器配置此参数,有效值范围(1024~65534),发起连接端的端口在1024-65535之间随机分配。 数据守护V3.0版本中,此参数仅作为单节点库的兼容参数保留。 对于新配置的数据守护系统,如果是单节点库,建议改用DMMAL.INI中的MAL_INST_DW_PORT参数进行配置,如果是DMDSC集群,此参数不再有用,必须使用DMMAL.INI中的MAL_INST_DW_PORT参数进行配置。
ALTER_MODE_STATUS 1 动态,系统级 是否允许手工修改服务器的模式、状态和OGUID,1:允许;0:不允许。 注:数据守护环境下建议配置为0,实例处于主机或备机模式后,不允许用户直接通过SQL语句修改服务器的模式、状态和OGUID
ENABLE_OFFLINE_TS 1 动态,系统级 是否允许OFFLINE表空间,0:不允许;1:允许;2:备库不允许。 注:数据守护环境下建议配置为2
SESS_FREE_IN_SUSPEND 60 动态,系统级 到备库的归档失败会导致主库挂起,为了防止应用的连接一直挂住不切换到新主库,设置该参数,表示归档失败挂起后隔一段时间自动断开所有连接。有效值范围(0-1800),单位为S,0表示不断开。
SUSPEND_WORKER_TIMEOUT 600 动态,系统级 在一些ALTER DATABASE等操作过程中,需要先暂停所有工作线程,如果超过此设置时间,仍有部分工作线程在执行中,则会报错,并终止当前操作。有效值范围(60~3600),单位为S
SUSPENDING_FORBIDDEN 0 手动 是否禁止挂起工作线程,0:不禁止;1:禁止
DW_CONSISTENCY_CHECK 0 动态,系统级 数据守护中,备库是否检测主库到备库的连接丢失或归档失效,并在检测到上述情况时停止提供只读服务。0:不检测;1:检测
全文索引相关参数
CTI_HASH_SIZE 100000 动态,会话级 使用全文索引查询时,用于设置关键字匹配的哈希表大小。有效值范围(1000~10000000)
CTI_HASH_BUF_SIZE 50 动态,会话级 使用全文索引查询时,用于设置哈希缓存内存大小,以M为单位。有效值范围(1~4000)
USE_FORALL_ATTR 0 动态,会话级 是否使用FORALL语句的游标属性,0:不使用;1:使用
ALTER_TABLE_OPT 0 动态,会话级 是否对加列、修改列、删除列操作进行优化,0:全部不优化;1:全部优化;2:打开快速加列,对于删除列和修改列与1等效;3:打开快速加列,允许指定快速列默认值,其他功能与2时相同
配置文件相关参数
MAL_INI 0 静态 是否启用MAL系统,0:不启用;1:启用
ARCH_INI 0 动态,系统级 是否启用归档,0:不启用;1:启用
REP_INI 0 静态 是否启用复制,0:不启用;1:启用
LLOG_INI 0 静态 是否启用逻辑日志,0:不启用;1:数据复制使用
TIMER_INI 0 静态 是否启用定时器,0:不启用;1:启用
MPP_INI 0 静态 是否启用MPP系统,0:不启用;1:启用
其他
IDLE_MEM_THRESHOLD 50 动态,系统级 可用物理内存的报警阀值,单位为兆,有效值范围(10~6000)
IDLE_DISK_THRESHOLD 1000 动态,系统级 磁盘可用空间的报警阀值,单位为兆,有效值范围(50~50000)
IDLE_SESS_THRESHOLD 5 动态,系统级 有限的会话数阀值,有效值范围(1~10)
ENABLE_PRISVC 0 静态 是否启用服务优先级的功能,0:不启用;1:启用
ENABLE_INJECT_HINT 0 动态,会话级 是否启用SQL指定HINT的功能,0:不启用;1:启用
FETCH_PACKAGE_SIZE 512 动态,系统级 指定FETCH操作时使用的消息包大小,单位为K,有效值范围(32~65536)。该参数修改时仅影响新创建的会话
DSC相关参数
DSC_N_CTLS 4096 静态 LBS/GBS控制页数目。有效值范围(10000~4294967294)
DSC_N_POOLS 2 静态 LBS/GBS池数目。有效值范围(2~1024)
DSC_TRX_CMT_LSN_SYNC 3 动态,系统级 事务提交时LSN同步方式。有效值范围(0~3600),0表示提交时不主动同步LSN;99表示每次提交时强制节点间LSN同步;其他值表示每间隔多少秒同步节点间LSN值
DSC_GBS_REVOKE_OPT 1 动态,系统级 GBS回收LBS权限策略。0:全部回收;1:允许只回收X权限
DSC_ENABLE_MONITOR 1 动态,系统级 是否启用DMDSC请求时间监控,0:不启用;1:启用。监控的内容参见V$DSC_REQUEST_STATISTIC和V$DSC_REQUEST_PAGE_STATISTIC
DSC_TRX_VIEW_SYNC 0 静态 节点间活动事务同步策略。0:无需等待响应;1:需要等待其他节点响应
DSC_REMOTE_READ_MODE 1 静态 DSC环境下REMOTE READ优化模式。0:不优化;1:发出日志刷盘请求后不等待,立即响应,请求节点获取数据页前等待;2:发出日志刷盘请求后不等待,立即响应,请求节点日志写文件前等待
DSC_FILE_INIT_ASYNC 1 手动 是否启用异步ASM文件格式化策略。0:不启用;1:启用
DSC_TRX_CMT_OPT 1 手动 DSC集群事务提交策略。0:不支持事务提交优化;1:支持事务提交优化。DSC集群只有将DSC_TRX_CMT_OPT设置为1时FAST_COMMIT=99才生效,与单节点FAST_COMMIT=99等价,事务提交不等待日志刷盘完成,提前响应用户。
DSC_RESERVE_PERCENT 0.08 动态,系统级 计算启动GBS CTL RESERVE的阈值,当空闲的GBS_CTL数量小于DSC_RESERVE_PERCENT%比例后,提前启动GBS CTL回收流程。有效值范围(0~10),取值为0时不提前回收GBS_CTL
HA_INST_CHECK_IP 需要在HA场景下指定 手动 HA实例启动检测IP,是指HA系统中另外一台机器的IP地址,考虑到多网卡情况,最多允许配置5个IP。如果需要配置多个IP,则编辑多个配置项即可,比如: HA_INST_CHECK_IP = 192.168.0.8 HA_INST_CHECK_IP = 192.168.0.9
HA_INST_CHECK_PORT 65534 手动 HA实例监听端口,数据库实例启动后,监听此端口的连接请求,并使用此端口号连接HA_INST_CHECK_IP判断另外一个HA实例是否已经启动。 只允许配置一个监听端口,所有HA_INST_CHECK_IP使用同一个端口进行检测,有效值范围(1024 ~ 65534),发起连接端的端口在1024~65535之间随机分配
DMTDD相关参数
DFS_BUF_FLUSH_OPT 1 静态 DFS存储时,是否采用优化方式刷页。1是,DMTDD刷盘优化,当需要刷盘的LSN比当前DRS端的小则不再发送刷盘请求;0否
DFS_PAGE_FLUSH_VALIDATE 1 动态,系统级 DMTDD刷盘时是否进行页校验。1是,DS端的页内容与DSS端的页内容进行比对。当开启此选项时DFS_BUF_FLUSH_OPT自动失效;0否
DFS_PATH 始化数据库服务器DS时指定 手动 在DMTDD系统中的数据库文件路径
DFS_INI 0 静态 DMTDD系统配置开关。0表示不启动DMTDD系统,1表示启用DMTDD系统

下表中的 INI 参数较为特殊,没有包含在 dm.ini 文件中,但用户可通过调用系统过程与函数 SP_SET_PARA_VALUE()和 SF_SET_SYSTEM_PARA_VALUE()进行参数值的设置和修改,具体说明见表 2.2。

表2.2 不在dm.ini中的INI配置项
参数名 缺省值 属性 说明
PWD_POLICY 2 动态,系统级 设置系统默认口令策略。0: 无策略;1: 禁止与用户名相同;2: 口令长度不小于9;4: 至少包含一个大写字母(A-Z);8 :至少包含一个数字(0-9);16:至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号;若为其他数字,则表示配置值的和,如3=1+2,表示同时启用第1项和第2项策略。当COMPATIBLE_MODE=1时,PWD_POLICY的实际值均为0
PWD_MIN_LEN 9 动态,系统级 设置用户口令的最小长度,取值范围(9~48)。仅当PWD_POLICY&2!=0时才有效
ENABLE_OBJ_REUSE 0 静态 是否支持客体重用,0:不支持;1:支持。
ENABLE_REMOTE_OSAUTH 0 静态 是否支持远程操作系统认证,0:不支持;1:支持。注:该参数设置仅安全版有效
ENABLE_LOCAL_OSAUTH 0 静态 是否支持本机操作系统认证,0:不支持;1:支持
ENABLE_STRICT_CHECK 0 静态 是否检查存储过程中EXECUTE IMMEDIATE语句的权限,1:表示检查;0:不检查
MAC_LABEL_OPTION 1 动态,系统级 用于控制SP_MAC_LABEL_FROM_CHAR过程的使用范围。0:只有SSO可以调用;1:所有用户都可以调用;2:所有用户可以调用,但是非SSO用户不会主动创建新的LABEL。 注:该参数设置仅安全版有效
ENABLE_EXTERNAL_CALL 0 静态 是否允许创建或执行外部函数。0:不允许;1:允许
ENABLE_DDL_ANY_PRIV 0 动态,系统级 是否可以授予和回收DDL相关的ANY系统权限。0:否;1:是
SEC_PRIV_MODE 0 静态 表示权限管理模式。0:表示传统模式;1:表示专用机模式;2:表示EVAL测评模式。 注:该参数设置仅安全版有效

2) dmmal.ini

dmmal.ini 是 MAL 系统的配置文件。dmmal.ini 的配置项见表 2.3。需要用到 MAL 环境的实例,所有站点 dmmal.ini 需要保证严格一致。

表2.3 dmmal.ini的配置项
项目 项目意义 字段 字段意义
MAL_CHECK_INTERVAL 检测线程检测间隔,默认30s,范围(0-1800),如果配置为0,则表示不进行链路检测
MAL_CONN_FAIL_INTERVAL 检测线程认定链路断开的时间,默认10s,范围(2-1800)
MAL_LEAK_CHECK 是否打开MAL内存泄露检查(0:关闭,1:打开),默认0
MAL_LOGIN_TIMEOUT MPP/DBLINK等实例间登录时的超时检测间隔(3-1800),以秒为单位,默认15s
MAL_BUF_SIZE 单个MAL缓存大小限制,以兆为单位。当此MAL的缓存邮件超过此大小,则会将邮件存储到文件中。有效值范围(0~500000),默认为100
MAL_SYS_BUF_SIZE MAL系统总内存大小限制,单位:M。有效值范围(0~500000),默认为0,表示MAL系统无总内存限制
MAL_VPOOL_SIZE MAL 系统使用的内存初始化大小,以兆为单位。有效值范围(1~500000),默认为10,此值一般要设置的比MAL_BUF_SIZE大一些
MAL_COMPRESS_LEVEL Mal消息压缩等级,取值范围0-10。0代表不进行消息压缩,为默认值 1 – 9表示采用zip算法,从1到9表示压缩速度依次递减,压缩率依次递增。 10表示采用snappy算法,压缩速度高于zip算法,压缩率相对低
MAL_TEMP_PATH 指定临时文件的目录。当邮件使用的内存超过mal_buf_size或者mal_sys_buf_size时,将新产生的邮件保存到临时文件中。如果缺省,则新产生的邮件保存到temp.dbf文件中
MAL_COMBIN_BUF_SIZE 指定MAL消息合并发送的缓冲区大小,单位KB。MAL发送消息时进行合并,减少网络发送次数。有效值范围(0~131072)。0表示不进行消息合并。最小缓冲区大小128k,当设置值大于0小于128时,自动调整为128
MAL_MESSAGE_CHECK 是否对MAL通信消息启用消息体校验(只有当消息的发送端和接收端都配置为1才启用通信体校验)。0:不启用;1:启用。默认为1
[MAL_INST1] 实例配置 MAL_INST_NAME 实例名。MAL系统中的各数据库实例不允许同名。
MAL_HOST 实例主库
MAL_PORT MAL监听端口,用于数据守护、DSC、MPP等环境中各节点实例之间MAL链路配置,监听端端口配置此参数,范围1024~65534,发起连接端的端口在1024~65535之间随机分配
MAL_INST_PORT MAL_INST_NAME实例服务器监听通讯端口号,服务器配置此参数,有效值范围(1024~65534),发起连接端的端口在1024-65535之间随机分配 此参数的配置应与DM.INI中的PORT_NUM保持一致
MAL_INST_HOST 连接数据库服务器使用的IP地址。(在MPP下以及读写分离的即时归档主备系统下一定要配置)
MAL_DW_PORT MAL_INST_NAME实例守护进程的监听端口,其他守护进程或监视器使用MAL_HOST + MAL_DW_PORT创建与该实例守护进程的TCP连接,监听端配置此参数,有效值范围(1024~65534),发起连接端的端口在1024-65535之间随机分配
MAL_LINK_MAGIC MAL链路网段标识,有效值范围(0-65535)。默认0。设置此参数时,同一网段内的节点都设置相同,不同网段内的节点设置的值必须不同。搭建跨网段的DBLINK时,如果内外网不通,则必须配置此参数;如果内外网互通,则可以不配
注意

dmmal.ini和dm.ini中都可配置MAL_LEAK_CHECK,启动时以dmmal.ini中设置为准,如果dmmal.ini中没有配置,则以dm.ini中配置为准,两个都没配置时,则默认0。此参数在dm.ini中可动态更改。

3) dmarch.ini

dmarch.ini 用于本地归档和远程归档。dmarch.ini 的配置项见表 2.4。

表2.4 dmarch.ini的配置项
项目 项目意义 字段 字段意义
全局配置项 ARCH_WAIT_APPLY 是否需要等待备库做完日志,1表示需要,0表示不需要,默认为1
ARCH_RESERVE_TIME 归档日志保留时间,单位分钟,取值范围(0~2147483647)。只对远程归档和本地归档有效。服务器每隔5分钟检查是否存在超过保留时间的归档并删除。默认为0,表示不删除归档
ARCH_LOCAL_SHARE DMDSC 集群本地归档是否共享给远程节点作为远程归档。0表示不共享,1表示共享,默认值为0。此参数值在DMDSC集群各个节点的配置文件中需保持一致。 配置为1时,本地归档路径和远程归档路径均需配置在ASM或共享磁盘上,并且DMARCH.INI中ARCH_INCOMING_PATH为对应节点的本地归档路径; 配置为0时,REMOTE归档路径与对应节点LOCAL归档路径不能指向共享存储的同一个目录
[ARCHIVE_LOCAL1] 本地归档配置 ARCH_TYPE 归档类型
ARCH_DEST 归档路径
ARCH_FILE_SIZE 单个归档文件大小,单位MB,取值范围(64~2048),默认为1024MB,即1G
ARCH_SPACE_LIMIT 本地归档文件空间限制。当同一节点号的本地归档文件达到限制值时,系统自动删除最早生成的本地归档日志文件。0表示无空间限制,取值范围(1024M~2147483647M),缺省为0
ARCH_FLUSH_BUF_SIZE 归档合并刷盘缓存大小,单位MB,取值范围(0-128),默认为0,表示不使用归档合并刷盘
ARCHIVE_REALTIME 实时归档配置 ARCH_TYPE 归档类型
ARCH_DEST 归档目录实例名
ARCHIVE_ASYNC 异步归档 ARCH_TYPE 归档类型
ARCH_DEST 归档目录实例名
ARCH_TIMER_NAME 定时器名称
ARCH_SEND_DELAY 指定源库到异步备库的归档延时发送时间,单位为分钟,取值范围(0~1440),默认为0,表示不启用归档延时发送功能。
注:仅在异步归档类型中支持此配置项,其他归档类型不支持。如果源库是DSC集群,建议用户配置时保证各节点上配置的值是一致的,并保证各节点所在机器的时钟一致,避免控制节点发生切换后计算出的归档延迟发送时间不一致
ARCHIVE_TIMELY 即时归档 ARCH_TYPE 归档类型
ARCH_DEST 归档目录实例名
REMOTE 远程归档配置 ARCH_TYPE 归档类型
ARCH_DEST 归档目录实例名
ARCH_FILE_SIZE 单个归档文件大小,单位MB,取值范围(64~2048),默认为1024MB,即1G
ARCH_SPACE_LIMIT 远程归档文件空间限制。当同一节点号的远程归档文件达到限制值时,系统自动删除最早生成的远程归档日志文件。0表示无空间限制,取值范围(1024M~2147483647M),缺省为0
ARCH_INCOMING_PATH 对应远程归档存放在本节点的实际路径
ARCH_FLUSH_BUF_SIZE 归档合并刷盘缓存大小,单位MB,取值范围(0-128),默认为0,表示不使用归档合并刷盘

相关说明

  1. 归档类型 ARCH_TYPE 有以下几种:

    本地归档 LOCAL(一台主库最多配 8 个)

    远程实时归档 REALTIME(一台主库最多配 8 个)

    远程异步 归档 ASYNC(一台主库最多配 8 个)

    即时归档 TIMELY(一个主库最多配 8 个)

    远程归档 REMOTE(一个主库最多配 8 个)

  2. 配置名[ARCHIVE_*]表示归档名,在配置文件中必须唯一。

  3. 不能存在相同实例名的不同归档;

  4. 不能存在 DEST 相同的不同归档实例;

  5. ARCH_TIMER_NAME 为定制的定时器名称,定时器配置见 dmtimer.ini;

  6. ARCH_SPACE_LIMIT 表示归档文件的磁盘空间限制,如果归档文件总大小超过这个值,则在生成新归档文件前会删除最老的一个归档文件。

4) dm_svc.conf

DM 安装时生成一个配置文件 dm_svc.conf,不同的平台所在目录有所不同。

  1. 32 位的 DM 安装在 Win32 操作平台下,此文件位于 %SystemRoot%\system32 目录;
  2. 64 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\system32 目录;
  3. 32 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\SysWOW64 目录;
  4. 在 Linux 平台下,此文件位于/etc 目录。

dm_svc.conf 文件中包含 DM 各接口及客户端需要配置的一些参数,具体的配置项如表 2.5 所示。

表2.5 dm_svc.conf配置项介绍
配置项 缺省值 简述
服务名 连接服务名,参数值格式为ip[:port],ip[:port],......
TIME_ZONE 操作系统当前时区 指明客户端的默认时区,设置范围为:-779~840m,如60对应+1:00时区
LANGUAGE 操作系统语言 当前数据库服务器使用的语言,会影响帮助信息错误和提示信息。支持的选项为:CN(表示中文)和EN(表示英文)。可以不指定,若不指定,系统会读取操作系统信息获得语言信息,建议有需要才指定。
CHAR_CODE 操作系统编码格式 客户端使用的编码格式,会影响帮助信息和错误提示信息,要与客户端使用的编码格式一致。支持的选项为:PG_UTF8(表示utf8编码);PG_GBK/PG_GB18030(两者都表示GBK编码);PG_BIG5(表示BIG5编码);PG_ISO_8859_9(表示ISO88599编码);PG_EUC_JP(表示EUC_JP编码);PG_EUC_KR(表示EUC_KR编码);PG_KOI8R(表示KOI8R编码);PG_ISO_8859_1(表示ISO_8859_1编码)。 可以不指定,若不指定,系统会读取操作系统信息获得编码信息,建议有需要才指定。
CLUSTER 配合AUTO_RECONNECT=2,EP_SELECTOR=1使用,用于检测DSC集群节点故障恢复是否成功。取值:DSC,说明用于DSC环境中
COMPRESS_MSG 0 是否启用消息压缩。0:不启用;1:启用
LOGIN_ENCRYPT 1 是否进行通信加密。0:不加密;1:加密
DIRECT Y 是否使用快速装载。y:使用;n:不使用
DEC2DOUB 0 指明在DPI、DMODBC、DCI、DMPHP和DM PRO\*C中,是否将DEC类型转换为DOUBLE类型。0:不转换;1:转换
KEYWORDS 标识用户关键字,所有在列表中的字符串,如果以单词的形式出现在sql语句中,则这个单词会被加上双引号。该参数主要用来解决用户需要使用DM8中的保留字作为对象名使用的状况。
ENABLE_RS_CACHE 0 是否进行客户端结果集缓存。0:不进行;1:进行
RS_CACHE_SIZE 10 设置结果集缓冲区大小,以M为单位。有效值为1~65535,如果设置太大,可能导致空间分配失败,进而使缓存失效
RS_REFRESH_FREQ 10 结果集缓存检查更新的频率,以秒为单位,有效值为0~10000,如果设置为0,则不需检查更新
CONNECT_TIMEOUT 5000 连接超时时间,单位为毫秒。0表示无限制
LOGIN_MODE 4 指定优先登录的服务器模式。0:优先连接Primary模式的库,Normal模式次之,最后选择Stantby模式;1:只连接主库;2:只连接备库;3:优先连接Standby模式的库,Primary模式次之,最后选择Normal模式;4:优先连接Normal模式的库,Primary模式次之,最后选择Standby模式
SWITCH_TIMES 1 以服务名连接数据库时,若未找到符合条件的库成功建立连接,将尝试遍历服务名中库列表的次数。有效值范围1~9223372036854775807
SWITCH_INTERVAL 200 在服务器之间切换的时间间隔,单位为毫秒,有效值范围1~9223372036854775807
RW_SEPARATE 0 是否启用读写分离。0:不启用;1:启用;2:启用,备库由客户端进行选择,且只会选择服务名中配置的节点
RW_PERCENT 25 读写分离分发比例,有效值范围0~100
LOGIN_CERTIFICATE 指定登录加密用户名密码公钥所在的路径,一旦配置即认为开启了客户端的证书加密用户名密码模式
CIPHER_PATH 第三方加密算法的路径
LOGIN_DSC_CTRL 0 服务名连接数据库时是否只选择DSC CONTROL节点的库。0:否;1:是
ADDRESS_REMAP 库地址重定向,格式为ADDRESS_REMAP =(IP:PORT, IP:PORT),支持指定多个,格式为:ADDRESS_REMAP =(IP:PORT, IP:PORT) ADDRESS_REMAP =(IP:PORT, IP:PORT)
EP_SELECTOR 0 连接数据库时采用何种模型建立连接。0:依次选取列表中的不同节点建立连接,使得所有连接均匀地分布在各个节点上;1:选择列表中最前面的节点建立连接,只有当前节点无法建立连接时才会选择下一个节点进行连接
AUTO_RECONNECT 0 连接发生异常或一些特殊场景下连接处理策略。0:关闭连接;1:当连接发生异常时自动切换到其他库,无论切换成功还是失败都会抛一个SQLEXCEPTION,用于通知上层应用进行事务执行失败时的相关处理;2 配合EP_SELECTOR=1使用,如果服务名列表前面的节点恢复了,将当前连接切换到前面的节点上
DEXP配置项
DUMMY 2 写文件时,发现文件已存在的处理方式。0:报错;1:直接覆盖文件;2:询问用户,有交互信息
DPC_NEW配置项
DPC_TRACE DPC_NEW的TRACE文件路径,不配置时不写TRACE信息
ENABLE_SSL 0 是否启用SSL。1/Y/y:启用SSL;其他值:不启用
SSL_CONFIG 在启用SSL的前提下,设置SSL值,格式如下:SSL_CONFIG=((USER=(用户名1) SSL_PATH=(SSL路径1) SSL_PWD=(SSL key1)) (USER=(用户名2) SSL_PATH=(SSL路径2) SSL_PWD=(SSL key2)))
DPI配置项
DPI_TRACE 0 是否生成DPI接口调用TRACE信息。0:不生成;1:生成
DCI配置项
DCI_TRACE 0 是否生成DCI接口调用TRACE信息。0:不生成;1:生成
JDBC配置项
* * JDBC连接属性均可进行配置,具体请参考《DM8程序员手册》表4.1
.Net provider配置项
TRACE NONE 是否启用.NET PROVIDER的TRACE功能。NONE:不启用;DEBUG:打印到控制台;NORMAL:打印到执行目录下的“PROVIERTRACE.TXT”文件中;TRACE:打印到执行目录下的“PROVIERTRACE.TXT”文件中,比NORMAL内容要更详细一些;THREAD:每个线程的TRACE分别打印到执行目录下的“PROVIERTRACE线程号.TXT”文件中

dm_svc.conf 配置文件的内容分为全局配置区和服务配置区。全局配置区在前,可配置表 2.5 中所有的配置项,服务配置区在后,以“[服务名]”开头,可配置除了服务名外的所有配置项。服务配置区中的配置优先级高于全局配置区。

下面以一个普通环境中 dm_svc.conf 为例:

##  以##开头的行表示是注释

##  全局配置区
NORMAL=(192.168.0.1:5000,192.168.0.2:5236)
Data_Watch=(192.168.0.3:5236,192.168.0.4:4350)
TIME_ZONE=(+480)     ##表示+8:00时区
LOGIN_ENCRYPT=(0)
DIRECT=(Y)

##  服务配置区
##  常规环境,两个没有关系的IP
[NORMAL]
TIME_ZONE=(+540)     ##表示+9:00时区
LOGIN_MODE=(4)
SWITCH_TIMES=(3)
SWITCH_INTERVAL=(100)

##  服务配置区
##  数据守护环境,一主一备
[Data_Watch]
TIME_ZONE=(+540)     ##表示+9:00时区
LOGIN_MODE=(2)
SWITCH_TIMES=(3)
SWITCH_INTERVAL=(100)

下面以 DSC 场景中 dm_svc.conf 为例:

## 以##开头的行表示是注释

## 全局配置区
DMDSC1=(192.168.1.1:5236,192.168.1.3:5236)
DMDSC2=(192.168.1.5:5236,192.168.1.7:5236)
TIME_ZONE=(+480)   ##表示+8:00时区

##DMDSC1 服务配置区
##以下配置是每次定向连接 DMDSC1 服务器名的的第一个服务,当服务器故障后,尝试 60次,间隔1s 的节奏一直连接第一个服务,若连接不上,在循环下一个服务,连接上之后进行使用。假设2号服务(192.168.1.3)先起来,1号服务(192.168.1.1)后起来。因为AUTO_RECONNECT=(1),所以客户端连接在2号的当前连接不会切回1号服务。
[DMDSC1]
SWITCH_TIMES=(60)
SWITCH_INTERVAL=(1000)
EP_SELECTOR=(1)
AUTO_RECONNECT=(1)

##DMDSC2 服务配置区
##以下配置是每次定向连接 DMDSC2 服务器名的的第一个服务,当服务器故障后,尝试60次,间隔1s 的节奏一直连接第一个服务,若连接不上,在循环下一个服务,连接上之后进行使用。假设2号服务(192.168.1.7)先起来,1号服务(192.168.1.5)后起来。因为AUTO_RECONNECT=(2),所以客户端连接在2号的当前连接会再切回1号服务。
[DMDSC2]
CLUSTER=(DSC)
SWITCH_TIMES=(60)
SWITCH_INTERVAL=(1000)
EP_SELECTOR=(1)
AUTO_RECONNECT=(2)

需要说明的是,如果对 dm_svc.conf 的配置项进行了修改,需要重启客户端程序,修改的配置才能生效。

5) sqllog.ini

sqllog.ini 用于 sql 日志的配置,当且仅当 INI 参数 SVR_LOG=1 时使用。

如果在服务器启动过程中,修改了 sqllog.ini 文件。修改之后的文件,只要调用过程 SP_REFRESH_SVR_LOG_CONFIG() 就会生效。

sqllog.ini 的详细配置请参考表 2.6。

表2.6 sqllog.ini的配置项
参数名 缺省值 属性 说明
SQL_TRACE_MASK 1 动态,系统级 LOG 记录的语句类型掩码,是一个格式化的字符串,表示一个 32 位整数上哪一位将被置为 1,置为 1 的位则表示该类型的语句要记录,格式为:位号:位号:位号。列如:3:5:7 表示第 3,第 5,第 7 位上的值被置为 1。每一位的含义见下面说明(2~17 前提是:sql 标记位 24、25、26、28 也要置):
1 全部记录(全部记录包含 22-30)
2 全部 DML 类型语句
3 全部 DDL 类型语句
4 UPDATE 类型语句(更新)
5 DELETE 类型语句(删除)
6 INSERT 类型语句(插入)
7 SELECT 类型语句(查询)
8 COMMIT 类型语句(提交)
9 ROLLBACK 类型语句(回滚)
10 CALL 类型语句(过程调用)
11 BACKUP 类型语句(备份)
12 RESTORE 类型语句(恢复)
13 创建对象操作(CREATE DDL)
14 修改对象操作(ALTER DDL)
15 删除对象操作(DROP DDL)
16 授权操作(GRANT DDL)
17 回收操作(REVOKE DDL)
22 记录绑定参数
23 记录存在错误的语句(语法错误,语义分析错误等)
24 记录执行语句
25 打印计划和语句执行的时间
26 记录执行语句的时间
27 记录原始语句(服务器从客户端收到的未加分析的语句)
28 记录参数信息,包括参数的序号、数据类型和值
29 记录事务相关事件
30 记录 XA 事务
FILE_NUM 5 动态,系统级 总共记录多少个日志文件,当日志文件达到这个设定值以后,再生成新的文件时,会删除最早的那个日志文件,日志文件的命令格式为 dmsql_实例名_日期_时间.log。 当这个参数配置成 0 时,只会生成两个日志相互切换着记录。有效值范围(0~1024)。例如,当 FILE_NUM=0,实例名为 pdm 时,根据当时的日期时间,生成的日志名称为:
dmsql_pdm_20180719_163701.log,dmsql_pdm_20180719_163702.log
SWITCH_MODE 2 手动 表示 SQL 日志文件切换的模式:
0:不切换
1:按文件中记录数量切换
2:按文件大小切换
3:按时间间隔切换
SWITCH_LIMIT 128 动态,系统级 不同切换模式 SWITCH_MODE 下,意义不同:
1 按数量切换时,一个日志文件中的 SQL 记录条数达到多少条之后系统会自动将日志切换到另一个文件中。一个日志文件中的 SQL 记录条数达到多少条之后系统会自动将日志切换到另一个文件中。有效值范围(1000~10000000)
2 按文件大小切换时,一个日志文件达到该大小后,系统自动将日志切换到另一个文件中,单位为 M。有效值范围(1~2000)
3 按时间间隔切换时,每个指定的时间间隔,按文件新建时间进行文件切换,单位为分钟。有效值范围(1~30000)
ASYNC_FLUSH 1 动态,系统级 是否打开异步 SQL 日志功能。0:表示关闭;1:表示打开
MIN_EXEC_TIME 0 动态,系统级 详细模式下,记录的最小语句执行时间,单位为毫秒。执行时间小于该值的语句不记录在日志文件中。有效值范围(0~ 4294967294)
FILE_PATH ..\log 动态,系统级 日志文件所在的文件夹路径
BUF_TOTAL_SIZE 10240 动态,系统级 SQL 日志 buffer 占用空间的上限,单位为 KB,取值范围(1024~1024000)
BUF_SIZE 1024 动态,系统级 一块 SQL 日志 BUFFER 的空间大小,单位为 KB,取值范围(50~409600)
BUF_KEEP_CNT 6 动态,系统级 系统保留的 SQL 日志缓存的个数,有效值范围(1~ 100)
PART_STOR 0 手动 SQL 日志分区存储,表示 SQL 日志进行分区存储的划分条件。 0 表示不划分;1 表示 user:根据不同用户分布存储
ITEMS 0 手动 配置 SQL 日志记录中的那些列要被记录。 该参数是一个格式化的字符串,表示一个记录中的那些项目要被记录,格式为:列号:列号:列号。列如:3:5:7 表示第 3,第 5,第 7 列要被记录。0 表示记录所有的列
1 TIME 执行的时间
2 SEQNO 服务器的站点号
3 SESS 操作的 sess 地址
4 USER 执行的用户
5 TRXID 事务 ID
6 STMT 语句地址
7 APPNAME 客户端工具
8 IP 客户端 IP
9 STMT_TYPE 语句类型
10 INFO 记录内容
11 RESULT 运行结果,包括运行用时和影响行数(可能没有)
USER_MODE 0 手动 SQL 日志按用户过滤时的过滤模式,取值
0:关闭用户过滤
1:白名单模式,只记录列出的用户操作的 SQL 日志
2:黑名单模式,列出的用户不记录 SQL 日志
USERS 空串 手动 打开 SVR_LOG_USER_MODE 时指定的用户列表。格式为:用户名:用户名:用户名

sqllog.ini 中配置块的使用方法:

sqllog.ini 中配置块在 INI 参数 SVR_LOG=1 时使用。且 INI 参数 SVR_LOG_NAME 必须和 sqllog.ini 中的 SVR_LOG_NAME 名称一样,sqllog.ini 配置块才会生效。若 SVR_LOG 为 1,但不存在 sqllog.ini 或 sqllog.ini 配置错误,则配置无效,此时,使用 DM.INI 中的系统默认值。

例如:下面是一个 SVR_LOG_NAME 为 SLOG_ALL 的 sqllog.ini 的例子:

   BUF_TOTAL_SIZE          = 10240         ##SQLs Log Buffer Total Size(K)(1024~1024000)
   BUF_SIZE                = 1024          ##SQLs Log Buffer Size(K)(50~409600)
   BUF_KEEP_CNT            = 6             ##SQLs Log buffer keeped count(1~100)

   [SLOG_ALL]
   	 FILE_PATH    = ..\log
   	 PART_STOR    = 0
   	 SWITCH_MODE  = 2
   	 SWITCH_LIMIT   = 128
  	 ASYNC_FLUSH   = 1
     FILE_NUM = 5
     ITEMS    = 0 
     SQL_TRACE_MASK  = 1
     MIN_EXEC_TIME = 0 
     USER_MODE   = 0 
     USERS =

2.1.2 复制配置

1) dmrep.ini

dmrep.ini 用于配置复制实例,具体内容请见“数据复制”章节。dmrep.ini 的配置项见表 2.7。

表2.7 dmrep.ini的配置项
项目 项目意义 字段 字段意义
[REP_RPS_INST_NAME] 该复制结点所属的复制服务器的实例名
[REP_MASTER_INFO] 作为主服务器的相关信息,其中一条记录就是一个复制关系 REP_ID 复制关系的ID;同时也是逻辑日志的ID,由复制服务器生成
[REP_SLAVE_INFO] 作为从服务器的相关信息,其中一条记录就是一个复制关系 REP_ID 复制关系的ID
MASTER_INSTNAME 复制关系主服务器的实例名
ADD_TICK 复制关系创建的时间,用于检验复制关系的正确性
[REP_SLAVE_TAB_MAP] 作为从服务器时,记录的复制映射的信息,其中一条记录就是一个复制映射 REP_ID 映射所属的复制的ID
SRC_TAB_ID 复制源对象表的ID
DST_TAB_ID 复制目标对象表的ID
READONLY_MODE 1:只读模式,0:非只读模式
[REP_SLAVE_SRC_COL_INFO] 作为从服务器时,记录的复制映射中使用的复制源对象的列信息 REP_ID 所属映射所在的复制关系的id
SRC_TAB_ID 所属映射的复制源对象的表ID
COL_ID 列ID
SQL_PL_TYPE 列类型
LEN 长度
PREC 精度

2) dmllog.ini

dmllog.ini 用于配置逻辑日志,具体内容请见“数据复制”章节。dmllog.ini 的配置项见表 2.8。

表2.8 dmllog.ini的配置项
项目 项目意义 字段 字段意义
[LLOG_INFO] 逻辑日志的整体信息 ID 逻辑日志ID,若参与复制,则与复制关系ID相同;-1全局逻辑日志
LLOG_PATH 逻辑日志本地归档路径
LOCAL_ARCH_SPACE_LIMIT(G) 本地归档文件的空间限制,以G为单位,-1表示无限制
REMOTE_ARCH_FLAG 逻辑日志远程归档是否有效标识,0表示远程归档无效;1表示远程归档有效
REMOTE_ARCH_INSTNAME 远程归档的归档实例名,若参与复制,即为从服务器的实例名
REMOTE_ARCH_TYPE 远程归档的类型,同步或异步
REMOTE_ARCH_TIMER 远程归档使用的定时器,同步时无意义
[LLOG_TAB_MAP] 逻辑日志记录的对象的信息 LLOG_ID 逻辑日志的ID
SCH_ID 逻辑日志记录的模式ID
TAB_ID 逻辑日志记录的表ID

3) dmtimer.ini

dmtimer.ini 用于配置定时器,用于数据守护中记录异步备库的定时器信息或数据复制中记录异步复制的定时器信息。dmtimer.ini 的配置项见表 2.9。

表2.9 dmtimer.ini的配置项
项目 项目意义 字段 字段意义
[TIMER_NAME1] 定时器信息 TYPE 定时器调度类型:
1:执行一次
2:按日执行
3:按周执行
4:按月执行的第几天
5:按月执行的第一周
6:按月执行的第二周
7:按月执行的第三周
8:按月执行的第四周
9:按月执行的最后一周
10:日历表达式
FREQ_MONTH_WEEK_INTERVAL 间隔月或周数
FREQ_SUB_INTERVAL 间隔天数
FREQ_MINUTE_INTERVAL 间隔分钟数
REPEAT_INTERVAL 日历表达式。语法详见《DM8系统包使用手册》手册DBMS_SCHEDULER包相关章节
START_TIME 开始时间
END_TIME 结束时间
DURING_START_DATE 开始时间点
DURING_END_DATE 结束时间点
NO_END_DATE_FLAG 是否结束标记
DESCRIBE 定时器描述
IS_VALID 有效标记

2.2 控制文件

每个 DM 数据库都有一个名为 dm.ctl 的控制文件。控制文件是一个二进制文件,它记录了数据库必要的初始信息,其中主要包含以下内容:

  1. 数据库名称;
  2. 数据库服务器模式;
  3. OGUID 唯一标识;
  4. 数据库服务器版本;
  5. 数据文件版本;
  6. 数据库的启动次数;
  7. 数据库最近一次启动时间;
  8. 表空间信息,包括表空间名,表空间物理文件路径等,记录了所有数据库中使用的表空间,数组的方式保存起来;
  9. 控制文件校验码,校验码由数据库服务器在每次修改控制文件后计算生成,保证控制文件合法性,防止文件损坏及手工修改。

在服务器运行期间,执行表空间的 DDL 等操作后,服务器内部需要同步修改控制文件内容。如果在修改过程中服务器故障,可能会导致控制文件损坏,为了避免出现这种情况,在修改控制文件时系统内部会执行备份操作。备份策略如下:

  • 策略一
    在修改 dm.ctl 之前,先执行一次备份,确定 dm.ctl 修改成功后,再将备份删除,如果 dm.ctl 修改失败或中途出现故障,则保留备份文件。
  • 策略二
    在修改 dm.ctl 成功之后,根据 dm.ini 中指定的 CTL_BAK_PATH/CTL_BAK_NUM 对最新的 dm.ctl 执行备份,如果用户指定的 CTL_BAK_PATH 是非法路径,则不再生成备份文件,在路径有效的情况下,生成备份文件时根据指定的 CTL_BAK_NUM 判断是否删除老的备份文件。

注意:

  • 如果 dm.ctl 文件存放在裸设备上,则【策略一】不会生效。
  • 如果指定的 CTL_BAK_PATH 是无效路径,则【策略二】也不会生效。
  • 如果【策略一】和【策略二】的条件都满足,则都会生效执行,否则只执行满足条件的备份策略,如果都不满足,则不会再生成备份文件。
  • 如果是初始化新库,在初始化完成后,会在“SYSTEM_PATH/CTL_BAK”路径下对原始的 dm.ctl 执行一次备份。

2.3 数据文件

数据文件以 dbf 为扩展名,它是数据库中最重要的文件类型,一个 DM 数据文件对应磁盘上的一个物理文件或者达梦分布式数据库中的一个逻辑文件,数据文件是真实数据存储的地方,每个数据库至少有一个与之相关的数据文件。在实际应用中,通常有多个数据文件。

当 DM 的数据文件空间用完时,它可以自动扩展。可以在创建数据文件时通过 MAXSIZE 参数限制其扩展量,当然,也可以不限制。但是,数据文件的大小最终会受物理磁盘大小的限制。在实际使用中,一般不建议使用单个巨大的数据文件,为一个表空间创建多个较小的数据文件是更好的选择。

数据文件在物理上按照页、簇和段的方式进行管理,详细结构请参考第一章的内容。

数据文件按数据组织形式,可以分为如下几种:

  1. B 树数据

行存储数据,也是应用最广泛的存储形式,其数据是按 B 树索引组织的。普通表、分区表、B 树索引的物理存储格式都是 B 树。

一个 B 树包含两个段,一个内节点段,存放内节点数据;一个叶子段,存放叶子节点数据。其 B 树的逻辑关系由段内页面上的记录,通过文件指针来完成。

当表上没有指定聚簇索引时,系统会自动产生一个唯一标识 rowid 作为 B 树的 key 来唯一标识一行。

  1. 堆表数据

堆表的数据是以挂链形式存储的,一般情况下,支持最多 128 个链表,一个链表在物理上就是一个段,堆表采用的是物理 rowid,在插入过程中,rowid 在事先已确定,并保证其唯一性,所以可以并发插入,插入效率很高,且由于 rowid 是即时生成,无需保存在物理磁盘上,也节省了空间。

  1. 列存储数据

数据按列方式组织存储,包含每个列对应的存放列数据的一系列数据文件,以及存放列数据控制信息的辅助表。读取列数据时,只需要顺序扫描列数据文件和辅助表数据。在某些特殊应用场景下,其效率要远远高于行存储。

  1. 位图索引

位图索引与 B 树索引不同,每个索引条目不是指向一行数据,而是指向多行数据。每个索引项保存的是一定范围内所有行与当前索引键值映射关系的位图。

数据文件中还有两类特殊的数据文件:ROLL 和 TEMP 文件。

1)ROLL 文件

ROLL 表空间的 dbf 文件,称为 ROLL 文件。ROLL 文件用于保存系统的回滚记录,提供事务回滚时的信息。回滚文件可被分为若干回滚段,每个事务的回滚页在回滚段中各自挂链,页内则顺序存放回滚记录。

2)TEMP 文件

TEMP.DBF 临时数据文件,临时文件可以在 dm.ini 中通过 TEMP_SIZE 配置大小。

当数据库查询的临时结果集过大,缓存已经不够用时,临时结果集就可以保存在 TEMP.DBF 文件中,供后续运算使用。系统中用户创建的临时表也存储在临时文件中。

2.4 重做日志文件

重做日志(即 REDO 日志)指在 DM 数据库中添加、删除、修改对象,或者改变数据,DM 都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件中。重做日志文件以 log 为扩展名。每个 DM 数据库实例必须至少有 2 个重做日志文件,默认两个日志文件为 DAMENG01.log、DAMENG02.log,这两个文件循环使用。

重做日志文件因为是数据库正在使用的日志文件,因此被称为联机日志文件。

重做日志文件主要用于数据库的备份与恢复。理想情况下,数据库系统不会用到重做日志文件中的信息。然而现实世界总是充满了各种意外,比如电源故障、系统故障、介质故障,或者数据库实例进程被强制终止等,数据库缓冲区中的数据页会来不及写入数据文件。这样,在重启 DM 实例时,通过重做日志文件中的信息,就可以将数据库的状态恢复到发生意外时的状态。

重做日志文件对于数据库是至关重要的。它们用于存储数据库的事务日志,以便系统在出现系统故障和介质故障时能够进行故障恢复。在 DM 数据库运行过程中,任何修改数据库的操作都会产生重做日志,例如,当一条元组插入到一个表中的时候,插入的结果写入了重做日志,当删除一条元组时,删除该元组的事实也被写了进去,这样,当系统出现故障时,通过分析日志可以知道在故障发生前系统做了哪些动作,并可以重做这些动作使系统恢复到故障之前的状态。

2.5 归档日志文件

日志文件分为联机日志文件和归档日志文件。DM 数据库可以在归档模式和非归档模式下运行。非归档模式下,数据库会只将重做日志写入联机日志文件中进行存储;归档模式下,数据库会同时将重做日志写入联机日志文件和归档日志文件中分别进行存储。

联机日志文件指的是系统当前正在使用的日志文件。创建数据库时,联机日志文件通常被扩展至一定长度,其内容则被初始化为空,当系统运行时,该文件逐渐被产生的日志所填充。对日志文件的写入是顺序连续的。然而系统磁盘空间总是有限,系统必须能够循环利用日志文件的空间,为了做到这一点,当所有日志文件空间被占满时,系统需要清空一部分日志以便重用日志文件的空间,为了保证被清空的日志所“保护”的数据在磁盘上是安全的,这里需要引入一个关键的数据库概念——检查点。当产生检查点时,系统将系统缓冲区中的日志和脏数据页都写入磁盘,以保证当前日志所“保护”的数据页都已安全写入磁盘,这样日志文件即可被安全重用。

归档日志文件,就是在归档模式下,重做日志被连续写入到归档日志后,所生成了归档日志文件。归档日志文件以归档时间命名,扩展名也是 log。但只有在归档模式下运行时,DM 数据库才会将重做日志写入到归档日志文件中。采用归档模式会对系统的性能产生影响,然而系统在归档模式下运行会更安全,当出现故障时其丢失数据的可能性更小,这是因为一旦出现介质故障,如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点,而如果没有归档日志文件,则只能利用备份进行恢复。

2.6 逻辑日志文件

如果在 DM 数据库上配置了复制功能,复制源就会产生逻辑日志文件。逻辑日志文件是一个流式的文件,它有自己的格式,且不在第一章所述的页,簇和段的管理之下。

逻辑日志文件内部存储按照复制记录的格式,一条记录紧接着一条记录,存储着复制源端的各种逻辑操作。用于发送给复制目的端。详细内容请看“数据复制”章节。

2.7 物理逻辑日志文件

物理逻辑日志,是按照特定的格式存储的服务器的逻辑操作,专门用于 DBMS_LOGMNR 包挖掘获取数据库系统的历史执行语句。当开启记录物理逻辑日志的功能时,这部分日志内容会被存储在重做日志文件中。

要开启物理逻辑日志的功能,需要满足下面两个条件:

首先,要设置 RLOG_APPEND_LOGIC 为 1、2 或者 3;

其次,通过设置参数 RLOG_IGNORE_TABLE_SET=1 或者建表(或修改表)时指定 ADD LOGIC LOG 开启。如果需要记录所有表的物理逻辑日志,设置 INI 参数 RLOG_IGNORE_TABLE_SET 为 1 即可;如果只需要记录某些表的物理逻辑日志,设置 INI 参数 RLOG_IGNORE_TABLE_SET 为 0,并在建表或者修改表的语法中使用 ADD LOGIC LOG。

2.8 备份文件

备份文件以 bak 为扩展名,当系统正常运行时,备份文件不会起任何作用,它也不是数据库必须有的联机文件类型之一。然而,从来没有哪个数据库系统能够保证永远正确无误地运行,当数据库不幸出现故障时,备份文件就显得尤为重要了。

当客户利用管理工具或直接发出备份的 SQL 命令时,DM Server 会自动进行备份,并产生一个或多个备份文件,备份文件自身包含了备份的名称、对应的数据库、备份类型和备份时间等信息。同时,系统还会自动记录备份信息及该备份文件所处的位置,但这种记录是松散的,用户可根据需要将其拷贝至任何地方,并不会影响系统的运行。

2.9 跟踪日志文件

用户在 dm.ini 中配置 SVR_LOG 和 SVR_LOG_SWITCH_COUNT 参数后就会打开跟踪日志。跟踪日志文件是一个纯文本文件,以“dmsql_实例名_日期_时间”命名,默认生成在 DM 安装目录的 log 子目录下面,管理员可通过 ini 参数 SVR_LOG_FILE_PATH 设置其生成路径。

跟踪日志内容包含系统各会话执行的 SQL 语句、参数信息、错误信息等。跟踪日志主要用于分析错误和分析性能问题,基于跟踪日志可以对系统运行状态有一个分析,比如,可以挑出系统现在执行速度较慢的 SQL 语句,进而对其进行优化。

系统中 SQL 日志的缓存是分块循环使用,管理员可根据系统执行的语句情况及压力情况设置恰当的日志缓存块大小及预留的缓冲块个数。当预留块不足以记录系统产生的任务时,系统会分配新的用后即弃的缓存块,但是总的空间大小由 ini 参数 SVR_LOG_BUF_TOTAL_SIZE 控制,管理员可根据实际情况进行设置。

打开跟踪日志会对系统的性能会有较大影响,一般用于查错和调优的时候才会打开,默认情况下系统是关闭跟踪日志的。若需要跟踪日志但对日志的实时性没有严格的要求,又希望系统有较高的效率,可以设置参数 SQL_TRACE_MASK 和 SVR_LOG_MIN_EXEC_TIME 只记录关注的相关记录,减少日志总量;设置参数 SVR_LOG_ASYNC_FLUSH 打开 SQL 日志异步刷盘提高系统性能。

2.10 事件日志文件

DM 数据库系统在运行过程中,会在 log 子目录下产生一个“dm_实例名_日期”命名的事件日志文件。事件日志文件对 DM 数据库运行时的关键事件进行记录,如系统启动、关闭、内存申请失败、IO 错误等一些致命错误。事件日志文件主要用于系统出现严重错误时进行查看并定位问题。事件日志文件随着 DM 数据库服务的运行一直存在。

事件日志文件打印的是中间步骤的信息,所以出现部分缺失属于正常现象。

2.11 数据重演文件

调用系统存储过程 SP_START_CAPTURE 和 SP_STOP_CAPTURE,可以获得数据重演文件。重演文件用于数据重演,存储了从抓取开始到抓取结束时,DM 数据库与客户端的通信消息。使用数据重演文件,可以多次重复抓取这段时间内的数据库操作,为系统调试和性能调优提供了另一种分析手段。

微信扫码
分享文档
扫一扫
联系客服