DM 数据库使用了磁盘上大量的物理存储结构来保存和管理用户数据。典型的物理存储结构包括:用于进行功能设置的配置文件;用于记录文件分布的控制文件;用于保存用户实际数据的数据文件、重做日志文件、归档日志文件、备份文件;用来进行问题跟踪的跟踪日志文件等,如图 2.1 所示。
2.1 配置文件
配置文件是 DM 数据库用来设置功能选项的一些文本文件的集合,配置文件以 ini 为扩展名,它们具有固定的格式,用户可以通过修改其中的某些参数取值来达成如下两个方面的目标:
- 启用/禁用特定功能项;
- 针对当前系统运行环境设置更优的参数值以提升系统性能。
2.1.1 DM 数据库服务配置
2.1.1.1 dm.ini
每创建一个 DM 数据库,就会自动生成 dm.ini 文件。dm.ini 是 DM 数据库启动所必须的配置文件,通过配置该文件可以设置 DM 数据库服务器的各种功能和性能选项,主要的配置模块包括:控制文件相关、实例名、内存相关、线程相关等。
当 dm.ini 中的某参数值设置为非法值时,若设置值与参数类型不兼容,则参数实际取值为默认值;若设置值小于参数取值范围的最小值,则实际取值为最小值;若设置值大于参数取值范围的最大值,则实际取值为最大值。
参数属性分为三种:手动、静态和动态。
手动,不能被动态修改,必须手动修改 dm.ini 参数文件,然后重启才能生效。
静态,可以被动态修改,修改后重启服务器才能生效。
动态,可以被动态修改,修改后即时生效。动态参数又分为会话级和系统级两种。会话级参数被修改后,新参数值只会影响当前会话和新创建的会话,之前创建的会话不受影响;系统级参数的修改则会影响所有的会话。
其中,动态修改是指 DBA 用户可以在数据库服务器运行期间,通过调用系统过程 SP_SET_PARA_VALUE()、SP_SET_PARA_DOUBLE_VALUE()和 SP_SET_PARA_STRING_VALUE()对参数值进行修改。
2.1.1.1.1 控制文件相关
控制文件相关参数。注意:本类参数不建议用户修改。
参数名 | 缺省值 | 属性 | 说明 |
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 | 安装时指定 | 手动 | 备份路径 |
AUD_PATH | 安装时指定 | 手动 | 审计文件的存放路径,缺省使用SYSTEM_PATH路径 |
2.1.1.1.2 实例名
参数名 | 缺省值 | 属性 | 说明 |
INSTANCE_NAME | DMSERVER | 静态 | 实例名。只能由_、$、大写字母A至Z、小写字母A至Z、数字0至9组成,且第一个字符不能是数字。长度不超过16个字节 |
2.1.1.1.3 内存相关
参数名 | 缺省值 | 属性 | 说明 |
MAX_OS_MEMORY | 100 | 静态 | DM服务器能使用的最大内存占操作系统物理内存与虚拟内存总和的百分比,取值范围40~100。当取值100时,服务器不进行内存的检查 注:对于32位版本的DM服务器,虚拟内存最大为2G |
MEMORY_POOL | 500 | 静态 | 共享内存池大小,单位MB。共享内存池是由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 | 15000 | 动态,系统级 | 共享内存池在扩充到此大小以上后,空闲时收缩回此指定大小,单位MB,取值范围:32位平台为0~2000,64位平台为0~67108864,0表示不限制 |
MEMORY_EXTENT_SIZE | 1 | 静态 | 共享内存池每次扩充的大小,单位MB,取值范围1~10240 |
MEMORY_LEAK_CHECK | 0 | 动态,系统级 | 是否开启内存泄漏检测。0:否;1:是,此时系统对每一次内存分配都登记到动态视图V$MEM_REGINFO中, 并在释放时解除登记 |
MEMORY_MAGIC_CHECK | 1 | 静态 | 是否开启对所有内存池的校验。0:不开启;1:开启校验,校验码基于分配出的块地址计算,在被分配空间的头部和尾部写入校验码;2:增强校验,在1的基础上,如果是内存池分配的,则对尾部未使用空间也计算校验码,写入未使用空间的头部 |
HUGEPAGE_THRESHOLD | 16 | 动态,系统级 | 如果从OS申请内存的尺寸大于等于 HUGEPAGE_THRESHOLD * 2MB, 则尝试先申请巨页内存,若失败再申请常规内存; 0表示不尝试使用巨页内存。取值范围0~1024。注:本参数仅对LINUX操作系统有效,使用巨页内存需要对OS进行相关配置 |
MEMORY_BAK_POOL | 4 | 静态 | 系统备份内存池大小,单位MB。系统备份内存池是由DM管理的内存。取值范围2~10000 |
HUGE_MEMORY_PERCENTAGE | 50 | 静态 | 指示HUGE_BUFFER中可以借用作常规内存分配的空间百分比,取值范围0~100 |
HUGE_BUFFER | 80 | 静态 | HUGE表使用的缓冲区大小,单位MB。取值范围80~1048576 |
HUGE_BUFFER_POOLS | 4 | 静态 | HUGE BUFFER系统分区数,每个HUGE BUFFER分区的大小为HUGE_BUFFER/HUGE_BUFFER_POOLS。取值范围1~512 |
BUFFER | 1000 | 静态 | 系统缓冲区大小,单位MB。推荐值:系统缓冲区大小为可用物理内存的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缓冲区大小,单位MB。取值范围8~1048576 |
RECYCLE | 300 | 静态 | RECYCLE缓冲区大小,单位MB。取值范围8~1048576 |
RECYCLE_POOLS | 19 | 静态 | RECYCLE缓冲区分区数,每个RECYCLE分区的大小为RECYCLE/RECYCLE缓冲区分区数。取值范围1~512。一般情况下,每个RECYCLE分区的大小为RECYCLE/RECYCLE_POOLS,但系统也会自动校正RECYCLE缓冲区分区数,以保证每个分区中数据页不少于3000页 |
MULTI_PAGE_GET_NUM | 1 | 静态 | 缓冲区最多一次读取的页面数,当且仅当ENABLE_FREQROOTS=0时有效。取值范围1~64。
当ENABLE_FREQROOTS值非0时,为开启动态FAST POOL填充模式,此时系统会强制调整MULTI_PAGE_GET_NUM=1,并关闭预加载功能。 注:当数据库加密时不支持多页读取,此时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:原排序机制,普通排序方式,按照排序缓冲区SORT_BUF_SIZE大小获取数据,并进行排序; 1:新排序机制,大内存排序方式,将大内存排序缓冲区SORT_BUF_GLOBAL_SIZE按照内存片大小SORT_BLK_SIZE进行分片,并对每个内存片进行排序,再对整个大内存排序缓冲区的数据进行排序; 2:采用SORT_FLAG为0的排序方式的同时,增加递增列,当排序列存在相同值时按递增列进行排序; 3:采用SORT_FLAG为1的排序方式的同时,增加递增列,当排序列存在相同值时按递增列进行排序 |
SORT_ADAPTIVE_FLAG | 0 | 动态,会话级 | 自适应排序区大小的方式。 0:不进行自适应; 1:SORT_FLAG为0、2时,计算待排序数据的实际排序所需要的内存大小,尽可能地分配所需要的内存,如果申请失败则减半申请,直到申请成功,并按照实际申请的内存大小代替SORT_BUF_SIZE大小进行使用。对进行过刷盘的数据进行排序时,计算排序所需要的内存,尽可能地放大排序内存,保证一次排序可以结束排序。SORT_FLAG为1、3时,根据SORT_BUF_GLOBAL_SIZE和分片内存最大10000个的限制,计算SORT_BLK_SIZE的最小值,如果SORT_BLK_SIZE小于最小值,则实际按照最小值来分片。对整个大内存排序缓冲区的数据进行排序时,计算排序所需要的内存,尽可能地放大排序内存,保证一次排序可以结束排序; 2:SORT_FLAG为0、2时,按照行数估算待排序数据的实际排序所需要的内存大小,找到最适合排序算法的内存大小。当待排序的数据行数超过50万时,才开启此优化,数据量太小无需优化; 3:1和2的组合。当SORT_FLAG为0、2,计算待排序数据的实际排序所需要的内存大小时,采用SORT_ADAPTIVE_FLAG为2的按照行数估算待排序所需要内存大小。除此之外的其他情况均保持SORT_ADAPTIVE_FLAG为1的方式 |
SORT_BUF_SIZE | 20 | 动态,会话级 | 原排序机制下,排序缓存区最大值,单位MB。取值范围1~2048 |
SORT_BUF_GLOBAL_SIZE | 1000 | 动态,系统级 | 新排序机制下,排序全局内存使用上限,单位MB。取值范围10~4294967294 |
SORT_BLK_SIZE | 1 | 动态,会话级 | 新排序机制下对数据进行排序的排序缓冲区分片大小,单位MB。取值范围1~50。 SORT_BLK_SIZE一般不需要设置太大,该内存片大小能容纳1万至5万行待排序的数据即可。该值大小不会超过SORT_BUF_SIZE,超过会重置为SORT_BUF_SIZE。为了保证归并排序的效率,对于大内存排序缓冲区的总的分片个数系统上限为10000个,因此,当SORT_BUF_GLOBAL_SIZE足够大的时候,为了保证大内存排序缓冲区能容纳足够多的数据,需要适当调大SORT_BLK_SIZE。例如,当SORT_BLK_SIZE为1时,SORT_BUF_GLOBAL_SIZE的最大可用值为10000。如果SORT_BUF_GLOBAL_SIZE需要20000M可用空间排序时,需要设置SORT_BLK_SIZE最小为2 |
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 | 5000 | 动态,系统级 | HASH 连接操作符的数据总缓存大小(>HJ_BUF_SIZE),系统级参数,单位MB。取值范围10~500000 |
HJ_BUF_SIZE | 500 | 动态,会话级 | 单个HASH连接操作符的数据总缓存大小,单位MB,必须小于HJ_BUF_GLOBAL_SIZE。取值范围2~100000 |
HJ_BLK_SIZE | 2 | 动态,会话级 | HASH连接操作符每次分配缓存(BLK)大小,单位MB,必须小于HJ_BUF_SIZE。取值范围1~50 |
HAGR_BUF_GLOBAL_SIZE | 5000 | 动态,系统级 | HAGR、DIST、集合操作、SPL2、NTTS2以及HTAB操作符的数据总缓存大小(>= HAGR_BUF_SIZE),系统级参数,单位MB。取值范围10~1000000 |
HAGR_BUF_SIZE | 500 | 动态,会话级 | 单个HAGR、DIST、集合操作、SPL2、NTTS2以及HTAB操作符的数据总缓存大小,单位MB。取值范围2~500000。 如果HAGR_BUF_SIZE设置的值满足范围且大于HAGR_BUF_GLOBAL_SIZE,那么会在HAGR_BUF_GLOBAL_SIZE/2和500000两个值中,选出较小的那个,作为新的HAGR_BUF_SIZE值 |
HAGR_BLK_SIZE | 2 | 动态,会话级 | HAGR、DIST、集合操作、SPL2、NTTS2以及HTAB操作符每次分配缓存(BLK)大小,单位MB,必须小于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 | 50 | 静态 | 字典缓冲区大小,单位MB,取值范围1~67108864 |
HFS_CACHE_SIZE | 160 | 动态,系统级 | HUGE表 I/U/D 时HDTA_BUFFER缓存池大小,单位为MB。取值范围160~2000 |
VM_STACK_SIZE | 256 | 静态 | 系统执行时虚拟机堆栈大小,单位KB,堆栈的空间是从操作系统中申请的,取值范围64~256*1024) |
VM_POOL_SIZE | 64 | 静态 | 系统执行时虚拟机内存池大小,单位KB,在执行过程中用到的内存大部分是从这里申请的,它的空间是从操作系统中直接申请的,取值范围32~1024*1024 |
VM_POOL_TARGET | 16384 | 静态 | 虚拟机内存池能扩充到的最大大小,单位KB,取值范围0~10*1024*1024,0表示不限制 |
SESS_POOL_SIZE | 64 | 动态,系统级 | 会话缓冲区大小,单位KB,取值范围16~1024*1024。若所申请的内存超过实际能申请的大小,则系统将按16KB大小重新申请 |
SESS_POOL_TARGET | 16384 | 动态,系统级 | 会话缓冲区能扩充到的最大大小,单位KB,取值范围0~10*1024*1024,0表示不限制 |
RT_HEAP_TARGET | 8192 | 动态,系统级 | 会话上用于动态对象存储的RT_HEAP最大可扩展到的大小,单位KB,取值范围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 |
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 | 0 | 静态 | 整型/浮点型数据排序优化辅助空间大小,对应待排序数组的最大最小差值,单位MB,取值范围0~1024。取值1M时对应待排序数组的最大最小差值为262144,超过则不能使用优化。 |
TSORT_OPT | 1 | 动态,系统级 | 排序优化选项。0:排序操作一律使用估算的行数分配内存(至少2M);1:打开优化,排序操作结果行数较少时,使用实际的记录行数分配内存 |
BIND_PLN_PERCENT | 30 | 静态 | 固定计划占据计划缓存空间的最大比例,取值范围0~100 |
FBACK_HASH_SIZE | 10000 | 动态,系统级 | 闪回系统中HASH表的桶个数。取值范围10000~1000000 |
XBOX_MEMORY_TARGET | 1024 | 动态,系统级 | XBOX 系统内存在扩充到此大小以上后,空闲时收缩回此指定大小,单位MB。取值范围1024~262144 |
2.1.1.1.4 线程相关
参数名 | 缺省值 | 属性 | 说明 |
WORKER_THREADS | 16 | 静态 | 工作线程的数目。取值范围1~64 |
TASK_THREADS | 16 | 静态 | 任务线程个数。取值范围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 | 256 | 静态 | 工作线程预留栈帧大小,单位KB。取值范围200~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:支持 |
ETHD_FLAG | 0 | 静态 | DMDPC专用。是否启用ESESS线程池。取值范围0~1。0:表示关闭;1:表示打开 |
EHTD_THREAD_NUM | 8 | 静态 | DMDPC专用。每个ESESS线程池初始化的线程数量。取值范围1~10000 |
ETHD_GRP_NUM | 8 | 静态 | DMDPC专用。初始化的ESESS线程池数量。取值范围1~64 |
2.1.1.1.5 查询相关
参数名 | 缺省值 | 属性 | 说明 |
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,单位毫秒 |
RS_BDTA_FLAG | 0 | 静态 | 是否以BDTA形式返回结果集。0:以行为单位返回结果集;2:以BDTA形式返回结果集 |
RS_BDTA_BUF_SIZE | 32 | 静态 | 配置消息长度,单位KB。取值范围8~32768 |
RS_TUPLE_NUM_LIMIT | 2000 | 静态 | 控制结果集能在内存中缓存的最大行数,取值范围1~65534。语句块执行时要先填充结果集,填充行数超过该值时会刷盘保存结果集 |
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 | 127 | 动态,会话级 | LIKE查询的优化开关。 0:不优化; 1:对于LIKE表达式首尾存在通配符的情况,优化为POSITION()函数;对于LIKE表达式首部存在通配符,并且条件列存在REVERSE()函数索引时,优化为REVERSE()函数; 2:对于COL1 LIKE COL2 || '%'的情况,如果COL1上没有索引,则优化为POSITION()函数;如果COL1上有索引,则优化为BETWEEN..AND条件; 4:对于COL1 LIKE ‘A’||‘B%’的情况,优化为COL1 LIKE ‘AB%’; 8:对于可计算的LIKE表达式,优化为常量; 16:对于控制函数索引列的LIKE表达式,优化为BETWEEN..AND条件; 32:将LIKE ESCAPE表达式转换为BETWEEN..AND条件,尽可能使用索引; 64:在取值为2的基础上,对于COL1 LIKE COL2 || '%'的情况,如果COL1上有索引,则优化为BETWEEN..AND条件的同时保留LIKE表达式。 支持使用上述有效值的组合值,如31表示同时进行1、2、4、8和16的优化 |
FILTER_PUSH_DOWN | 0 | 动态,会话级 | 对单表条件是否下放的不同处理方式。 0:表示条件不下放; 1:表示在新优化器下,对单表过滤条件进行下放处理; 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:使用NTTS2,用临时表空间的数据页存放中间数据;1:使用FTTS,用临时文件存放缓存的中间数据 |
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子查询中移除与外表相同的内表;8:IN相关子查询中,将WHERE条件的OR合并成一个整体(CASE WHEN形式),期望后面能进行SEMI的规则优化 支持使用上述有效值的组合值,如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:强制允许带变量的查询语句进行视图上拉优化,有可能造成结果集错误; 8:不对LEFT JOIN的右孩子\RIGHT JOIN的左孩子\FULL JOIN左右孩子进行上拉; 16:不对LEFT JOIN的左孩子进行上拉; 32:视图上拉后,从视图符号表删除不被引用的列 支持使用上述有效值的组合值,如3表示同时进行1和2的优化 |
VIEW_PULLUP_MAX_TAB | 7 | 动态,会话级 | 对视图进行上拉优化支持的表的个数。取值范围1~16 |
STR_NULL_OPS_COMPATIBLE | 0 | 动态,会话级 | 当两个字符串相加时,若两个字符串中有一个为NULL,是否将结果置为NULL。0:否;1:是 |
GROUP_OPT_FLAG | 52 | 动态,会话级 | 分组项优化参数开关。 0:不优化; 1:非MYSQL兼容模式下(即COMPATIBLE_MODE不等于4),支持查询项不是GROUP BY表达式; 2:外层分组项下放到内层派生表中提前分组优化; 4:表示对于多级分区,并行下允许尝试不生成多个AGR; 8:进行哈希分组时,依赖分组项列中的核心项分组列来分组; 16:位图索引覆盖简单分组查询中的所有列时,允许使用位图索引对查询进行优化; 32:进行哈希分组时,对TOP查询进行优化,提前返回指定数量的分组。 支持使用上述有效值的组合值,如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时才有效 |
MOTION_OPT_FLAG | 0 | 动态,会话级 | 用于在TPCDS测试中,对某些特定场景进行优化。最大值为1023,最小值为0。取值为0、1、2、4、8、16、32、64、128、256、512及其组合值。 MOTION_OPT_FLAG取不同值时对应不同的处理。具体如下: 0:不优化; 1:用于并行模式下,线程互相发送消息,并且在GROUP,ORDER,AFUN的上层还有GAT时,DIS KEY可以有多个;否则DIS KEY只能有一个; 2:用于将分组操作放到HASH FULL JOIN2操作中进行,分组操作只支持SUM/COUNT函数。计划中出现MIX_AAGR(1)表明使用了该优化; 4:用于MPP/LPQ在选择 MOTION KEY的优先级上会根据估算的比例来设定RANK,否则会根据默认值来设定RANK; 8:用于当分组操作中包含多个分组项时,如果其中部分分组项的值为常量时,将该常量值分组项从分组操作中移除。排序操作同理; 16:用于当多表连接的个数超过MAX_OPT_N_TABLES(缺省为6)时,将每张表按照相关表多少进行排序,最终选出相关表最多的两张表并放入不同的集合中; 32:用于并行场景中,将并行度作为基表的行数的考虑内容之一; 64:用于代价计算中,当MPP+LPQ在计算LPQ的代价时,如果MPP是MDIS,则不调整行数; 128:用于分组操作中,当分组项中有一项为对应表(例如T1)的主键列,分组项其他项中有对应表(T1)的其它非主键列,且该列未被上层引用,则将该列从分组项中移除; 256:用于分组项移除中,当分组项中包含主键列时,将HUGE表的主键列保留而只移除其它分组项;否则移除全部分组项; 512:用于MPP或并行场景中,估算数据广播代价时,修正为按照收集到的全部行数来进行估算广播代价 |
USE_FK_REMOVE_TABLES_FLAG | 1 | 动态,会话级 | 是否利用外键约束消除冗余表,支持多列主键。0:不启用;1:启用 |
USE_FJ_REMOVE_TABLE_FLAG | 0 | 动态,会话级 | 是否启用使用过滤表消除表及自连接消除优化。0:不启用;1:启用;2:等值条件的左右两边是不同的表时才进行优化 |
SLCT_ERR_PROCESS_FLAG | 0 | 动态,会话级 | 控制如何处理过滤时产生的错误。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表达式重用; 16:将参数个数少于30的COALESCE函数转为CASE WHEN表达式,提升执行性能; 32:CASE WHEN的条件表达式中有恒真或恒假的条件时进行简化; 64:将CASE VALUE1 WHEN VALUE2转为CASE WHEN VALUE1=VALUE2,可配合取值1时转为函数进行批量处理,提升性能 支持使用上述有效值的组合值,如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 | 11 | 动态,会话级 | 控制外连接转化内连接的优化。 1:当外连接转化为内连接时,打开连接条件; 2:转化时探测OR布尔表达式是否能优化。即探测OR的每个分支中是否隐式包含IS NOT NULL的条件,若是则也转为内连接; 4:当过滤条件中包含函数时,禁止外连接转换为内连接; 8:当外连接包含层次查询时,禁止转换为内连接。 支持使用上述有效值的组合值,如3表示同时进行1和2的优化 |
OPT_OR_FOR_HUGE_TABLE_FLAG | 1 | 动态,会话级 | 是否使用HFSEK优化HUGE表中列的OR过滤条件。0:不使用;1:使用 |
ORDER_BY_NULLS_FLAG | 0 | 动态,会话级 | 控制排序时NULL值返回的位置,取值0、1、2、3。0表示NULL值始终在最前面返回;1表示ASC升序排序时NULL值在最后返回,DESC降序排序时NULL值在最前面返回,在参数等于1的情况下,NULL值的返回与ORACLE保持一致;2表示ASC升序排序时NULL值在最前面返回,DESC降序排序时NULL值在最后返回,在参数等于2的情况下,NULL值的返回与MYSQL保持一致;3表示在取值为1的基础上,将空串置于NULL值和非空值之间 |
SUBQ_CVT_SPL_FLAG | 1 | 动态,会话级 | 控制相关子查询的实现方式,0:不优化; 1:使用SPL2方式实现相关子查询; 2:DBLINK相关子查询是否转换为函数,由参数ENABLE_DBLINK_TO_INV 取值决定 4:将多列IN转换为EXISTS; 8:将引用列转换为变量VAR; 16:用临时函数替代查询项中的相关查询表达式; 32:存储过程、语句块中的多列表达式过滤条件含有非相关子查询时转换为连接 支持使用上述有效值的组合值,如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; 64:消除没被使用到的非相关查询表达式或者相关列已在同层DISTINCT子句中的相关查询表达式查询项; 128:对于DISTINCT查询表达式,在不影响DISTINCT结果情况下,将查询表达式放在DISTINCT之后做。 支持使用上述有效值的组合值,如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:对最优索引进行优化; 2:优先选择与排序列一致的可以消除排序的索引进行优化; 4:若查询项中包含TOP子句和集函数,且查询语句中不存在分组项,则移除TOP子句。仅当TOP值不为0时进行该优化; 8:当前就有计划是CSCN的TOP_ORDER语句,根据估算需要BLKUP的行数判断是否依然使用TOP_ORDER优化 支持使用上述有效值的组合值,如3表示同时进行1和2的优化 |
TOP_ORDER_ESTIMATE_CARD | 300 | 动态,会话级 | TOP_ORDER_OPT_FLAG=1/2命中优化时,设置叶子节点的预估扫描行数。下层操作符不是简单的BT时,如果优化器预估行数不准,可帮助优化器调整,以便选择最优计划。取值范围0~4294967294 |
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的优化 |
ENABLE_CHOOSE_BY_ESTIMATE_FLAG | 0 | 动态,会话级 | 通过估算引用表/表连接的结果集行数决定是否进行去相关性优化。 0:不进行行数估算;1:引用单表且ENABLE_RQ_TO_NONREF_SPL不为0时进行行数估算,若行数过大则不进行ENABLE_RQ_TO_NONREF_SPL为对应值时的优化;2:引用单表且SUBQ_EXP_CVT_FLAG=1时进行行数估算,若行数过大则不进行SUBQ_EXP_CVT_FLAG=1时的优化;4:引用表连接且ENABLE_RQ_TO_NONREF_SPL不为0时进行行数估算,若行数过大则不进行ENABLE_RQ_TO_NONREF_SPL为对应值时的优化。由于需要通过动态采样的方式估算表连接后的结果集行数,因此第一次执行时速度可能较慢 支持使用上述有效值的组合值,如3表示同时进行1和2的优化 |
OPTIMIZER_MODE | 1 | 动态,会话级 | DM优化器的模式,0:老优化器模式;1:新优化器模式 |
NEW_MOTION | 0 | 动态,会话级 | 是否使用代价计算来决定使用的通讯操作符,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:只对用户通过DBMS_STATS. SET_TABLE_PREFS设置过STALE_PERCENT属性的用户表进行监控 |
MONITOR_MODIFICATIONS | 0 | 动态,系统级 | 是否监控用户表对象的数据变化情况,包括增删改导致的修改行数、TRUNCATE表操作以及最新修改时间等。0:不监控;1:对所有表进行监控;2:只对用户执行过SET_TABLE_PREFS的表进行监控 |
MON_CHECK_INTERVAL | 3600 | 动态,系统级 | 将用户表对象的数据变化情况记录到系统表的时间间隔,单位为秒,即每过设置的秒数便将用户表对象的数据变化情况记录到系统表中。仅当MONITOR_MODIFICATIONS非0时生效 |
NONREFED_SUBQUERY_AS_CONST | 1 | 动态,会话级 | 是否将非相关子查询转化为常量处理。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 | 9 | 动态,会话级 | 是否加速半连接的探测过程。 0:不加速; 1:加速计划探测; 2:加速计划探测和执行 4:调整DISTINCT代价估算,期望更接近实际情况,有利于计划选择。4支持的场景如下: 1)控制半连接转换内连接,生成的DISTINCT代价估算; 2)控制普通DISTINCT代价计算 8:SEMI规则优化增加处理右孩子包含SLCT的情况; 16:SEMI探测消除SORT优化时多探测一次HRS的情况 |
COMPLEX_VIEW_MERGING | 0 | 动态,会话级 | 对于复杂视图(一般含有GROUP或者集函数等)会执行合并操作,使得GROUP分组操作在连接之后才执行。0:不启用;1:对不包含别名和同名列的视图进行合并;2:视图定义包含别名或同名列时也进行合并 |
OP_SUBQ_CVT_IN_FLAG | 1 | 动态,会话级 | 当查询条件为=(SUBQUERY),是否允许转换为等价的IN(SUBQUERY)。0:不转换;1:转换 |
ENHANCED_SUBQ_MERGING | 0 | 动态,会话级 | 是否对子查询进行合并优化,0:不优化;1:对WHERE子句和JOIN ON子句中存在包含关系的子查询进行合并优化;2:对UNION和INTERSECT等集合运算中相同的子查询进行合并优化 支持使用上述有效值的组合值,如3表示同时进行1、2的优化 |
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方式; 32:开启对分区表全局索引DDL操作的优化处理,直接操作索引数据,无须重建全局索引 支持使用上述有效值的组合值,如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连接的条件表达式当做整体处理; 32:根据PRIOR关联列的DISTINCT值与统计信息中总行数的比例自适应选择执行机制; 64:对于简单条件(如:DUAL.LEVEL﹤=10)准确估算层次查询行数; 128:对层次查询的执行计划节点分析时,如果右孩子包含参数无法生成临时表,依然向下分析右孩子的子节点能否生成临时表以提升性能 支持使用上述有效值的组合值,如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功能实现多列更新;2:允许对多表连接视图进行更新;4:相关查询语句利用多列SPL功能实现多列更新。 支持使用上述有效值的组合值,如3表示同时进行1、2的优化 |
MULTI_UPD_MAX_COL_NUM | 128 | 动态,会话级 | 利用多列SPL功能以实现多列更新(MULTI_UPD_OPT_FLAG为1)时可更新的最大列数,取值范围2~10000 |
ENHANCE_BIND_PEEKING | 0 | 动态,会话级 | 是否使用自适应的绑定变量窥探开关。0:不使用;1:使用 |
NBEXP_OPT_FLAG | 7 | 动态,会话级 | 控制布尔表达式的一些优化。0:不优化;1:进行根据展开后的项数控制NOT是否下放展开的优化;2:进行AND分支的OR布尔表达式的公因子上拉优化;4:探测移除和派生表/实体视图内层一样的外层过滤条件。 支持使用上述有效值的组合值,如3表示同时进行1、2的优化 |
HAGR_HASH_ALGORITHM_FLAG | 0 | 动态,会话级 | HAGR中HASH算法选择标记。0:按照移位方式计算;1:按照异或方式计算 |
DIST_HASH_ALGORITHM_FLAG | 0 | 动态,会话级 | DISTINCT中HASH算法选择标记。0:按照移位方式计算;1:按照异或方式计算 |
VIEW_FILTER_MERGING | 138 | 动态,会话级 | 是否对视图条件进行优化以及如何优化。 0:不优化; 1:尽可能地进行视图条件合并; 2:自动判断是否进行视图条件合并; 4:视图包含分析函数时,如果分析函数的PARTITION BY具有唯一性,则外层过滤条件下推到视图内部; 8:如果派生表存在集函数,则不进行条件下推优化; 16:收集公用表达式相关的所有过滤条件,改写合并所有条件,并下放到公用表达式的内部;32:TOP信息下放至派生表内部; 64:外层表达式扩展视图内部IS NOT NULL过滤条件; 128:外层ROWNUM过滤条件转为内层TOP子句; 256:满足条件时,对相关派生表过滤条件进行下推优化。 支持使用上述有效值的组合值,如138表示同时进行2、8、128的优化 |
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:允许HI/HRS进行分区裁剪优化; 2:单个分区列的一级分区等值查询优化; 4:若为ANTI SEMI连接,则不允许使用INDEX JOIN; 8:索引连接支持非等值KEY作为PLL的KEY; 16:分区表根据子表数目粗略调整代价; 32:分析阶段根据KEY和扫描方式获得准确数据行数,精准计算PLL代价; 64:分区表全局索引扫描支持分区裁剪 |
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:支持 |
VIEW_OPT_FLAG | 1 | 动态,会话级 | 视图优化处理参数。0:关闭优化;1:允许不可更新视图输出ROWID;2:允许对物化视图日志表进行INSERT、DELETE、UPDATE以及TRUNCATE操作 |
ENABLE_DBLINK_TO_INV | 0 | 动态,会话级 | DBLINK相关子查询是否转换为函数。0:不转换;1:转换 |
ENABLE_BLOB_CMP_FLAG | 0 | 动态,会话级 | 是否支持大字段类型的比较。0:不支持;1:支持,此时DISTINCT、ORDER BY、 分析函数和集函数支持对大字段进行处理,且当大字段跟字符串比较时,让大字段转换成字符串类型;2:支持,此时DISTINCT、ORDER BY、 分析函数和集函数支持对大字段进行处理,且兼容MYSQL模式下,大字段跟字符串比较时,让字符串转换成大字段类型 |
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:返回值两列不同 |
DPC_SYNC_STEP | 16 | 动态,会话级 | 打开DMDPC限流(MPP_MOTION_SYNC非0)时使用。 表示检查接收端数据堆积的步长,即每发送DPC_SYNC_STEP次BDTA后检查一次是否堆积。取值范围1~5000 |
DPC_SYNC_TOTAL | 0 | 动态,会话级 | 打开DMDPC限流(MPP_MOTION_SYNC非0)时使用。XBOX上所有来源路数(并行线程数)的总限流资源数。取值范围0~10000 |
XBOX_DUMP_THRESHOLD | 0 | 动态,系统级 | XBOX邮件内存阈值,超过该值则保存到文件中。取值范围0~409600。单位 MB。 和XBOX_DUMP_PATH一起设置才生效 |
XBOX_DUMP_PATH | 空串 | 手动 | XBOX邮件保存到临时文件的目录。 和XBOX_DUMP_THRESHOLD一起设置才生效 |
XBOX_SHORT_MSG_SIZE | 1024 | 系统,会话级 | 在配置了XBOX_DUMP_THRESHOLD后,即使内存达到阈值的情况下,小于此长度的短消息也不会保存到文件,防止大量的文件读写。取值范围0~32768。单位MB |
STMT_XBOX_REUSE | 1 | 动态,会话级 | DMDPC会话的语句是否重用BOX_ID。0:否,每个语句都请求分配一个BOX_ID;1:是 |
MAX_HEAP_SIZE | 0 | 静态 | 控制分析阶段允许使用的堆空间大小上限,取值范围0~4294967294,单位MB。设置为0时,表示不进行限制 |
ENABLE_ADJUST_DIST_COST | 0 | 动态,会话级 | 是否对索引连接的DISTINCT值估算行数进行优化调整。0:不优化;1:若索引连接计划中左孩子为DISTINCT或GROUP类型,则使用左孩子的估算行数和右孩子的估算行数相乘作为连接后的DISTINCT行数值;2:索引连接计划中,使用左孩子的估算行数除以3和右孩子的估算行数相乘作为连接后的DISTINCT值 |
PLAN_OP_FLAG | 0 | 动态,会话级 | 控制执行计划中操作符的使用。0:默认使用所有操作符;1:禁用SSCN操作符;2:禁用SSEK操作符。支持使用上述有效值的组合值,如3表示同时进行1和2的操作 |
DUAL_ENABLE_SELECT | 1 | 动态,系统级 | MOUNT状态下是否允许查询DUAL/SYSDUAL/SYS.SYSDUAL2表。0:不允许,1:允许 |
LOAD_BINDED_PLN | 0 | 动态,系统级 | 是否从系统表SYSPLNINFO加载已持久化的绑定计划。1:加载;0:不加载 |
UNPIVOT_OPT_FLAG | 0 | 动态,会话级 | 控制UNPIVOT子句转换处理。0:不进行特殊处理,正常转换;1:结果集按照非UNPIVOT列排序;2:若UNPIVOT子句排除NULL值,则在转换的WITH视图中添加 NOT NULL过滤条件,减少中间结果集 支持使用上述有效值的组合值,如3表示同时进行1、2的优化 |
USE_DHASH_FLAG | 0 | 动态,系统级 | 是否使用动态HASH。0:不使用;1:使用DHASH(不再维护此套方案,再使用该值,转为2);2:使用DHASH2,功能不完善,已不维护;3:使用DHASH3,使用动态HASH时推荐选择3 |
DPC_OPT_FLAG | 16383 | 动态,会话级 | 执行计划优化策略。取值1、2、4、8、16、32、64、128、256、512、1024、2048、4096和8192,或上述任意取值的和。 1:表示忽略UNIONALL,将分支的内容直接发给UNIONALL之上的ERECV; 2:表示根据HSCN的使用情况,对HTAB的分布信息调整,可以减少HSCN之后的数据分发量; 4:表示在通讯符之前将afun转换成两个,可以减少通讯量; 8: 表示按照实际执行的BP个数调整子任务并行度; 16:根据利用统计信息最大、最小值计算相同表不同别名的选择率。例如 t1.c1 + 10 > t1.c1 ==> t1.c1 < max(t1.c1) +10; 32:同时开启SP、MP和BP节点的计划缓存的功能,减少事务密集型应用中计划发送带来的耗时。非32的情况下,只有SP具有计划缓存功能; 64:多列primary key用于连接时的行数估算调整优化; 128:根据估算的行数对连接、分组等使用到的哈希表大小进行缩放优化; 256:哈希连接时,如果连接左边数据来自广播,启用共享哈希表优化减少哈希表构造开销; 512:huge表考虑hfsek与hfscn+slct的代价; 1024:计划只从几个子任务开始,而不是所有的叶子节点; 2048:DISTINCT尝试下放至集合运算的左右侧的子任务先做; 4096:afun/sagr+sort+dis的sort下放到dis下面,变成afun/sagr+dis(归并信息)+sort。sort放到dis下面后,每一路可先做排序,如果子任务并行度比sagr/afun的并行度大时能较快的完成排序; 8192:esend发送时对link_id进行优化。优化后,消息可以多条链路同时发生,而非一条链路串行 |
LIKE_PATTERN_NUM | 300 | 动态,系统级 | 对LIKE模式模糊匹配的长度限制。取值范围100~10000。 (该参数的限制检查在运行时生效。在需匹配的字符串和LIKE模式串比较时,若在到达模糊匹配长度限制前,便提前匹配失败返回,则不会触发长度限制检查) |
2.1.1.1.6 检查点相关
参数名 | 缺省值 | 属性 | 说明 |
CKPT_RLOG_SIZE | 128 | 动态,系统级 | 产生多大日志文件后做检查点,单位MB。取值范围0~4294967294 |
CKPT_DIRTY_PAGES | 0 | 动态,系统级 | 产生多少脏页后产生检查点,单位为页。取值范围0~4294967294 |
CKPT_INTERVAL | 180 | 动态,系统级 | 指定检查点的时间间隔。单位秒,为0时表示不自动定时做检查点。取值范围0~2147483647 |
CKPT_FLUSH_RATE | 5.00 | 动态,系统级 | 检查点刷盘比例。取值范围0~100.00 |
CKPT_FLUSH_PAGES | 1000 | 动态,系统级 | 检查点刷盘的最小页数。取值范围1000~100000 |
CKPT_WAIT_PAGES | 1024 | 动态,系统级 | 检查点一次发起的最大写入页数,等待这些页写入磁盘完成、调整检查点信息后,再发起新的刷盘请求,避免过于集中发起写磁盘请求,操作系统IO压力过大,导致IO性能下降。取值范围1~65534 |
FORCE_FLUSH_PAGES | 8 | 动态,系统级 | 调度线程启动刷脏页流程时,每个BUFFER POOL写入磁盘的脏页数。取值范围0~1000 |
2.1.1.1.7 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 | 8 | 静态 | 非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 | 动态,系统级 | 指定检查数据文件是否存在的时间间隔,单位秒。取值范围0~4294967294。0表示不检查 |
FIL_CHECK_MODE | 0 | 动态,系统级 | 当系统检测到 system、roll、temp表空间或联机日志文件缺失时,是否让服务器崩掉。0:否;1:是。非windows有效 |
2.1.1.1.8 数据库相关
参数名 | 缺省值 | 属性 | 说明 |
---|---|---|---|
MAX_SESSIONS | 10000 | 静态 | 系统允许同时连接的最大数。同时,安全版环境下该参数还受到 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 | 10000 | 动态,系统级 | 单个会话上允许同时打开的语句句柄最大数,取值范围 64~20480) |
MAX_SESSION_MEMORY | 0 | 动态,系统级 | 单个会话的运行内存上限,单位 MB,取值范围 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 | 0 | 动态,会话级 | 在建表语句或增加约束语句中指定主关键字时,是否缺省指定为 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 | 300 | 静态 | 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 表示每次刷盘请求都会触发刷盘。取值范围 0~1024 |
ISO_IGNORE | 0 | 动态,会话级 | 是否忽略显示设置的事务隔离级别,1 表示忽略,0 不忽略 |
TEMP_SIZE | 10 | 静态 | 默认创建的临时表空间大小,单位 MB。取值范围 10~1048576 |
TEMP_SPACE_LIMIT | 0 | 动态,系统级 | 临时表空间大小上限,单位 MB。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 | 100 | 静态 | SQL 缓冲池大小,单位 MB。取值范围:32 位平台下为 1 |
PLN_DICT_HASH_THRESHOLD | 20 | 静态 | 仅当 CACHE_POOL_SIZE 参数值大于等于此参数值时,才开启缓存计划的字典关联登记。取值范围:32 位平台下为 1 |
STAT_COLLECT_SIZE | 10000 | 动态,会话级 | 统计信息收集时,样本的最小行数。取值范围 0~10000000 |
STAT_ALL | 0 | 动态,会话级 | 在估算分区表行数时,控制一些优化。0:不采样所有分区子表;1:采样所有分区子表;2:优先采用统计信息中的行数;4:水平分区表不使用主表统计信息而使用叶子表统计信息。 支持使用上述有效值的组合值,如 3 表示优先采用统计信息中的行数,如果没有找到对应统计信息,则去采样所有分区子表。 |
TABLE_STAT_FLAG | 0 | 动态,会话级 | MPP 环境下,对于 range/list 水平分区表,估算行数时是否优先采用统计信息的收集值。0:否;1:是 |
PHC_MODE_ENFORCE | 0 | 动态,会话级 | 控制连接的实现方式。 0:优化器根据代价情况自由选择连接方式; 1:允许使用 nest loop inner join; 2:允许使用索引连接; 4:允许使用哈希连接; 8:允许使用归并连接 支持使用上述有效值的组合值,如 6 表示优化器根据代价情况在索引连接和哈希连接间进行选择。 当参数值不为 0 或 15 且包含 2/4/8 其中之一或者它们的组合值时,会将包含的值对应的连接模式参数置为 1,没有包含的值对应的连接模式参数置为 0(2 对应 ENABLE_INDEX_JOIN,4 对应 ENABLE_HASH_JOIN,8 对应 ENABLE_MERGE_JOIN)。例如,取值为 6 时没有包含 8,则会将 ENABLE_INDEX_JOIN 和 ENABLE_HASH_JOIN 置为 1,将 ENABLE_MERGE_JOIN 置为 0(仅强制设置内存中的值,不改变 dm.ini 文件中的值) |
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 表达式在语义分析阶段优化为 CONST VALUE LIST; 2:将 IN LIST 表达式在代价优化阶段优化为 CONST VALUE LIST; 4:生成传递闭包优化; 8:将 IN LIST 表达式优化为范围条件,仅限于 HUGE 表; 16:OR 表达式优化为 LIST IN LIST 表达式时,允许 LIST 中的列来源于不同的表; 32:允许 IN list 表达式中的列为分区列时转化为 SEMI JOIN; 64:当 IN LIST 表达式左侧包含多列,并且包含非列类型表达式时,允许将其优化为 CONST VALUE LIST; 128:分析阶段将 in value list 表达式转换为 or 表达式 支持使用上述有效值的组合值,如 3 表示同时进行 1 和 2 的优化 |
ENHANCED_BEXP_TRANS_GEN | 3 | 动态,会话级 | 0:不允许非等值布尔表达式和外连接 ON 条件中的传递闭包;1:允许非等值布尔表达式和外连接 ON 条件中的传递闭包;2:分析阶段针对表达式通过传递闭包产生的表达式进行去重处理;4:允许将 IN LIST 过滤条件传递到非相关子查询内部 支持使用上述有效值的组合值,如 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~1000000 |
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 | 动态,系统级 | 查询建表时,是否对原始表上的相关信息进行拷贝。0:否;1:对原始表上的约束进行拷贝;2:对原始表上的表结构、分区信息、存储信息以及部分表约束进行拷贝 |
HLDR_BUF_SIZE | 8 | 动态,系统级 | 进行 HUGE 表导入时,缓冲区的大小,单位 MB,取值范围 4~1024 |
HLDR_BUF_TOTAL_SIZE | 4294967294 | 动态,系统级 | HLDR 资源控制,系统所有 HLDR 使用的 HLDR_BUF 空间的总量,单位 MB。取值范围 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 的远程表; 1024:若查询包含 DBLINK,则将 LIKE 表达式的数据类型强制转为 VARCHAR(4000),防止查询发给 ORACLE 后字符串超长报错; 2048: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 | 1 | 动态,系统级 | B 树叶子节点分裂方式,0:按对半分裂,B 树插入满一页后从当前页的中间行分裂成两个页,然后重新定位插入;1:在插入点进行分裂,插满一页后重新分配一个新页插入新数据 |
TS_RESERVED_EXTENTS | 64 | 静态 | 系统为每个表空间提前预留的簇个数,减少系统在执行过程中申请不到空间的情况。取值范围 2 ~ 1024。 注:DMDSC 环境下,该参数所有站点需要保持一致 |
ts_SAFE_FREE_EXTENTS | 512 | 系统认为安全的 free extents 空间,取值范围 128~65534。 注:DMDSC 环境下,该参数所有站点需要保持一致 | |
TS_MAX_ID | 8192 | 限制系统所支持的最大表空间 ID,取值范围 512~65517, 与系统实际最大 id 比较,取大。 如果设置为 590,但是系统最大 id 已经为 1000 了,最后结果是 1000。 注:DMDSC 环境下,该参数所有站点需要保持一致 | |
TS_FIL_MAX_ID | 255 | 限制每个表空间所支持的最大文件个数,取值范围 64~8191 注:DMDSC 环境下,该参数所有站点需要保持一致 | |
DECIMAL_FIX_STORAGE | 0 | 动态,会话级 | 是否将长度为 1~18 的 DECIMAL/DEC 类型转换为定长方式存储。0:否;1:是。 若转换为定长存储,则 DECIMAL(P,S)的转换规则为:当 0<P<10 时,存储为 4 字节整形值;当 10<=P<19 时,存储为 8 字节整形值 |
SAVEPOINT_LIMIT | 512 | 动态,系统级 | 单个事务中最大可创建的保存点个数。取值范围 0~10000 |
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 | 0 | 动态,系统级 | 查询操作结果集返回时是否进行预填充,仅适用于 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 |
MAX_SEC_INDEX_SIZE | 16384 | 静态 | 控制二级索引记录的最大长度。取值范围 1~32768 |
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,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 资源回收功能。1 是,即在服务器启动后,对于新申请的表 ID、索引 ID、约束 ID,如果 ID 最终未成功使用,则 ID 会被暂时放入回收缓存中,以备下次申请使用,服务器关闭后,缓存中的 ID 会被全部丢弃;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 内存空间 |
ENABLE_PMEM | 0 | 静态 | 是否使用 Intel 提供的动态库(libpmem.so)读写存储在持久性内存上的联机日志文件。 0:否,使用系统 IO 接口读写; 1:是,安装了非易失性存储介质并且文件存储于持久性内存才使用 Intel 动态库读写,否则仍然使用系统 IO 接口读写。此种情况不支持 RESIZE LOGFILE 语句和 RENAME LOGFILE 语句 |
HP_TAB_COUNT_PER_BP | 1 | 动态,会话级 | 创建一级、二级哈希分区时,如果分区数指定为 DEFAULT 而不是具体数值,系统会根据本参数值决定每个 BP RAFT 上创建的哈希子表个数。 取值范围 1~1024 |
SQC_GI_NUM_PER_TAB | 1 | 动态,会话级 | 每个表拆分的扫描单元个数。取值范围 1~1024。 扫描表对象时,每个表可以被拆分成多个单元以提升并行性能。参数值表示拆分的单元个数,每个单元可以独立用于工作线程的扫描任务。例如:需要扫描一个子表且子表数据量较大,为充分利用工作线程资源,可以调大此参数以使用分区内并行 |
DBLINK_USER_AS_SCHEMA | 1 | 动态,会话级 | 是否将当前用户名作为缺省模式名(或库名)。0:否;1:是。目前仅对 ODBC 类型的 DBLINK 有效 |
CTAB_MUST_PART | 0 | 动态,系统级 | 用户表是否只能创建为分区表。0:否;1:是 |
CTAB_WITH_LONG_ROW | 0 | 动态,系统级 | 是否尝试在建表时隐式指定 USING LONG ROW 来开启超长记录存储功能。0:否;1:是。 当该参数为 1 时,只有满足附加条件的情况下才会成功开启超长记录存储功能,未满足条件的不能开启。 附加条件: 1. 非 HUGE 表、临时表和外部表 2. 建表不包含聚集主键约束 3. 如果是分区表,则不包含 ENABLE ROW MOVEMENT 子句 4. 整行记录总长度超长。长度上限可参考《DM8 SQL 语言使用手册》中表 1.4.1 |
TMP_DEL_OPT | 1 | 动态,系统级 | 是否对临时表删除进行优化。0:不优化;1:如果不要求临时表可回滚,则对于无过滤条件的临时表删除语句,在执行删除时直接清除其临时段数据 |
LOGIN_FAIL_TRIGGER | 0 | 动态,系统级 | 登录失败时是否触发 LOGIN/LOGON 触发器。0:不触发;1:触发 |
INDEX_PARALLEL_FILL | 0 | 动态,系统级 | 控制查询插入时二级索引是否启用并行填充。如果表上存在多个二级索引并且没有全文索引,在插入操作符执行时,一旦检测到本次填充的记录行数大于等于此参数指定值,则为每一个二级索引生成一个异步索引填充任务,由任务线程并行执行,以提升查询插入的执行效率。取值范围 0~10000,0 表示关闭并行填充 |
CIND_CHECK_DUP | 0 | 动态,系统级 | 指定创建索引时检查索引冗余的方式,以及建表时是否检查重复的 UNIQUE 约束。 0:创建索引时已存在同类型且相同索引列的索引则报错,建表时不检查重复的 UNIQUE 约束 1:创建索引时已存在相同索引列的索引则报错,建表时检查重复的 UNIQUE 约束 |
TSMV_RAFIL_SIZE | 64 | 静态 | DMDPC 专用。指定表空间迁移的临时归档文件的最大空间。取值范围 2~1024。单位 Mb |
TSMV_FILE_COPY_PLL | 1 | 动态,系统级 | DMDPC 专用。表空间迁移时物理文件拷贝并行度。取值范围 1~128 |
TSMV_WAIT_TIMEOUT | 120 | 动态,会话级 | DMDPC 专用。表空间中表对象封锁超时的时间。取值范围 0~12000,单位秒 |
TSMV_SEND_BUF_SIZE | 4 | 动态,系统级 | DMDPC 专用。表空间迁移发送文件缓冲区大小。单位 MB,取值范围 1~64。值越小,迁移越慢,但迁移中对并发业务影响越小;值越大迁移速度越快,但迁移中对并发业务影响越大,可结合实际情况设置 |
HUGE_ENABLE_DEL_UPD | 1 | 动态,系统级 | 是否允许对 HUGE 表数据进行删除或更新。0:不允许;1:允许 |
HUGE_DEFAULT_FILE_SIZE | 64 | 动态,系统级 | 创建 HUGE 表时,storage 子句中 filesize 的默认值,取值范围 16~1048576 |
HUGE_DEFAULT_SECTION_SIZE | 65536 | 动态,系统级 | 创建 HUGE 表时,storage 子句中 section 的默认值,取值范围 1024~1048576 |
STAT_OPT_FLAG | 0 | 动态,会话级 | 生成统计信息的优化。0:不优化;1:生成统计信息时不存储左孩子的数据,以在某些场景表实现性能的提升 |
ALLOWED_CLIENT_VERSIONS | 空串 | 静态 | 控制可连接服务器的客户端版本,最多可配置 10 个支持的版本号,用逗号分隔(不带空格)。默认值空串表示支持所有版本的连接,但参数 IFUN_DATETIME_MODE=1 时可能存在版本连接限制 |
DPC_TABLESPACE_BALANCE | 0 | 动态,系统级 | 当在 DPC 下创建分区表,子表个数少于所选择的表空间个数时,是否启用随机选择起始表空间以使得表空间负载均衡。0:不启用;1:启用 |
dpc_dct_refresh_policy | 1 | 动态,系统级 | DMDPC 专用。MP 广播实例字典信息优化开关。 0:表示关闭,MP 会定时广播实例字典信息; 1:表示打开,MP 只会在每次修改实例字典信息时进行广播 |
HANDLE_WARN_RATE | 75 | 动态,系统级 | dmServer 进程使用句柄数报警百分比,超过设定值则写日志警告信息,取值范围 0~100 |
CLOB_MAX_IFUN_LEN | 104857600 | 动态,系统级 | 系统函数中支持的最大 CLOB 长度,取值范围 32767~2147483647,单位 BYTE |
ENET_SESS_CHECK_INTERVAL | 10 | 动态,系统级 | 当 BP/SP 处于 MP 无效服务状态时,BP/SP 断开会话连接的时间间隔阈值。如果 BP/SP 处于 MP 无效服务状态的时间超过该阈值,则会主动断开所有会话连接。取值范围 0~4294967294,单位秒。0 表示关闭 |
CYT_CHECK_FLAG | 0 | 静态 | 是否检查校验加解密过程。0:不检查;1:检查 |
HUGE_DEFAULT_FILE_INIT_SIZE | 1 | 动态,会话级 | 指定 huge 表数据文件的初始化时的默认大小,单位 Mb,取值范围 0~1048576。0 表示关闭,即 huge 表数据文件创建时就使用其文件大小创建;非 0 时有效值是 2 的 n 次幂,会自动进行对齐 |
MAX_UNCOMPRESS_RATIO | 100 | 动态,系统级 | UTL_COMPRESS 包中解压相关方法支持的最大解压比例,取值范围 10~1000 |
MAX_UNCOMPRESS_LENGTH | 1024 | 动态,系统级 | UTL_COMPRESS 包中解压相关方法支持的解压后数据的最大长度,单位 MB,取值范围 1024~102400 |
TS_FIL_USE_ABSOLUTE_PATH | 0 | 静态 | 表空间添加、重命名数据文件是否必须使用绝对路径。0:不强制使用绝对路径;1:必须使用绝对路径 |
LIST_TABLE_BRANCH | 0 | 动态,系统级 | 创建堆表的并发分支数,取值范围 0~64。当 LIST_TABLE 开启时参数配置生效 |
list_table_NON_branch | 0 | 动态,系统级 | 创建堆表的非并发分支数,取值范围 0~64。当 LIST_TABLE 开启时参数配置生效。为 0 时采用系统默认值 1 |
BAK_DIRECT_IO | 0 | 动态,系统级 | 备份还原是否启用 DIRECT_IO 参数。0:不启用;1:启用 |
DHASH3_MAX_CONFLICT | 4 | 动态,会话级 | 动态哈希扩展中允许每个槽上的最大冲突数,取值范围 1~100 |
DHASH3_SIZE_EXTEND_FACTOR | 5 | 动态,会话级 | 动态哈希扩展中指定的扩展因子,取值范围 1~100 |
DB_FILE_NAME_CONVERT | 空串 | 静态 | 指定还原数据库或备库重演日志时表空间数据文件路径的转换规则。参数值必须为偶数个字符串,以逗号为分隔符。每两个字符串分别表示源库数据文件路径中的待替换字符串和替换后的字符串(pattern/replace)。替换后的路径长度不能超过 256 个字节,否则认为当前 pattern/replace 无效,匹配下一对 pattern/replace。进行字符串替换时,只替换匹配成功的第一对 pattern/replace,后续 pattern/replace 不再进行替换。未找到匹配项则不进行字符串替换,可能导致重演或还原失败。参数为空串时不进行路径转换,按照 REDOS_FILE_PATH_POLICY 参数规则或者默认规则进行重演或还原 |
TRC_LOG_MODULE | ALL | 动态,系统级 | 当打开 TRC_LOG 开关时,用于配置 TRACE 日志中记录的内容。该参数为字符类型,最大长度 128。 书写格式为:TRC_LOG_MODULE=服务器记录项,DMDPC 记录项。 服务器记录项和 DMDPC 记录项设置方法相同。缺省表示不记录该模块中的任何内容。 具体记录项和代号: 内存 MEM (0),任务线程 TSK (1), 站点信息 SITE (2), 事务 TRX (3), 通信消息 MSG (4), 会话 SESS (5),计划 PLN_GEN (6), HUGE 文件系统 HFS (7),0 |
DPC_GUP_SESS_TIMEOUT | 180 | 动态,会话级 | 用于 DMdpc 中,表示 sP 升级时事务、会话超时断开时间。取值范围 60~600。单位秒 |
TS_AUTO_EXTEND_SIZE | 64 | 静态 | 表空间自动扩展大小,取值范围 1~1024,单位 MB |
INI_SYNC | 0 | 动态,系统级 | 用于控制备库是否定期从主库同步 INI 参数及每次同步的时间间隔,取值范围 0~1440,单位分钟。0 表示不开启同步 |
TRUNC_CHECK_MODE | 0 | 系统级;动态 | 语句检查并发 TRUNCATE 的方式。 0:分区表根据对应根表的数据版本检查; 1:分区子表各自检查; 2:索引局部进行检查。 注:DM MPP 环境不支持该参数 |
PAGE_CHECK_POLICY | 1 | 系统级;动态 | dminit 工具初始化库时打开 PAGE_CHECK 参数后,数据页校验失败的处理策略。0:忽略失败;1:服务器 HALT |
FAST_START_MTTR_TARGET | 0 | 动态,系统级 | 数据库故障恢复时间,单位秒,取值范围 0~3600,缺省为 0。设置该参数后,系统内部会根据未刷盘日志大小及脏页数量,动态调整 RLOG_RESERVE_THRESHOLD 值 可通过 SP_SET_PARA_VALUE 系统过程设置(最终会转换为 RLOG_RESERVE_THRESHOLD 值) |
CSEK2_CHECK_LOCK | 0 | 动态,系统级 | 对于简单计划(对主键查询的更新与删除),是否需要在检索时锁行。 0:表示关闭; 1:表示尝试在查询期间提前封锁; 2:表示尝试在查询期间提前修改 |
STAT_CACHE_FLAG | 1 | 静态 | SP 是否缓存表行数。 0:不缓存; 1:SP 缓存表行数,而不是每次都向 MP 请求表行数,从本地缓存中获取表行数以降低 MP 的性能瓶颈。和 STAT_CACHE_CAPACITY 搭配使用 |
STAT_CACHE_CAPACITY | 1000 | 动态,系统级 | 当 STAT_CACHE_FLAG=1 时使用。sp 缓存表行数的缓存容量。取值范围 100~100000000,单位为缓存表的个数 |
DEFAULT_FILLFACTOR | 0 | 动态,系统级 | 设置填充比例的默认值,包括所有可以设置 storage 参数的模块如表、索引、物化视图等。指定插入数据时数据页的充满程度,取值范围 0~100。取缺省值 0 时,等价于 100,表示全满填充,未充满的空间可供页内的数据更新时使用 |
SHADOW_CHECK_INTERVAL | 60 | 动态,系统级 | 用于设置清理影子库的本地归档文件的时间间隔,取值范围 0~3600,单位秒。如果设为 0,则关闭自动清理功能。此参数仅对影子库有用 |
BAK_SAFE_CHECK | 0 | 动态,系统级 | 备份是否启用 safe_check。 0:数据文件处于 corrupt 状态时,跳过该数据文件,正常执行后续备份; 1:数据文件处于 corrupt 状态时,直接报错返回 |
WM_CONCAT_LOB | 1 | 静态 | 指定 wm_concat 函数的返回值类型。0:varchar 类型;1:CLOB 类型 |
2.1.1.1.9 预先装载表相关
参数名 | 缺省值 | 属性 | 说明 |
LOAD_TABLE | 空串 | 静态 | 在服务器启动时预先装载的普通表的完整表名,即“模式名.表名”,多个表之间用逗号分隔,最多可指定10个表 |
LOAD_HTABLE | 空串 | 静态 | 在服务器启动时预先装载的HUGE表的完整表名,即“模式名.表名”,多个表之间用逗号分隔 |
2.1.1.1.10 客户端缓存相关
参数名 | 缺省值 | 属性 | 说明 |
CLT_CACHE_TABLES | 空串 | 手动 | 指定可以在客户端缓存的表。表名必须带模式名前缀,如果表名或模式名中包含特殊字符,需要使用双引号包含。如果指定多个缓存表,须以逗号间隔。服务器最多支持指定100个可缓存表。为避免参数值太长导致INI文件分析困难,允许在INI文件中设置多行CLT_CACHE_TABLES参数 |
2.1.1.1.11 REDO 日志生成相关
参数名 | 缺省值 | 属性 | 说明 |
RLOG_BUF_SIZE | 1024 | 静态 | 单个日志缓冲区大小(以日志页个数为单位),取值只能为2的次幂值,最小值为1,最大值为20480 |
RLOG_POOL_SIZE | 256 | 静态 | 最大日志缓冲区大小,单位MB。取值范围1~4096 |
RLOG_PARALLEL_ENABLE | 0 | 静态 | 是否启动并行日志。0:不启用,但是日志刷盘时可能合并为并行日志包刷盘;1:启用;2:一律不生成并行日志包 |
RLOG_IGNORE_TABLE_SET | 1 | 动态,系统级 | 是否开启记录物理逻辑日志功能。1是,0否 |
RLOG_APPEND_LOGIC | 0 | 动态,系统级 | 是否启用在日志中记录逻辑操作的功能,取值范围0、1、2、3、4 0:不启用;1、2、3、4启用。 1:如果有主键列,记录UPDATE和DELETE操作时只包含主键列信息,若没有主键列则包含所有列信息; 2:不论是否有主键列,记录UPDATE和DELETE操作时都包含所有列的信息; 3:记录UPDATE时包含更新列的信息以及ROWID,记录DELETE时只有ROWID; 4:只生成事务以及DDL相关的逻辑日志 |
RLOG_APPEND_SYSTAB_LOGIC | 0 | 动态,系统级 | 是否启用在日志中记录系统表逻辑操作的功能,启用RLOG_APPEND_LOGIC后有效,取值范围0、1。 0:不启用;1:启用 |
RLOG_CHECK_SPACE | 1 | 动态,系统级 | 是否检查日志空间,取值范围0、1。 1:日志刷盘时,检查日志空间是否溢出,是则生成错误日志并强制退出,以确保数据文件不被破坏。 0:不检查日志空间是否写溢出 |
RLOG_SAFE_SPACE | 256 | 静态 | 安全的可用日志空间大小,单位MB。取值范围0~1024。当系统的可用日志空间小于这个值时,自动触发检查点释放日志空间 |
RLOG_RESERVE_THRESHOLD | 0 | 动态,系统级 | 控制是否启动日志空间安全性检查。0:不启动;1~16384:如果系统有效日志量达到设定的值,则启动日志空间预留机制,以提升故障重启和DSC集群节点故障处理速度,单位为M |
RLOG_RESERVE_SIZE | 8192 | 静态 | 控制每次物理事务PTX操作需要预留的REDO空间大小,单位为BYTE。取值范围0~102400,0表示不再检查剩余REDO可用空间是否安全,假定总是有富余。如果初始化库时开启了HUGE表日志(RLOG_GEN_FOR_HUGE=1),在RLOG_RESERVE_SIZE配置值大于0小于32767时(0值仍然不检查),会将其强制调整为32767,避免生成HUGE表日志时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:异步发送 |
RLOG_HASH_NAME | 空串 | 静态 | 日志包完整性校验使用的HASH算法名称,默认为空,使用CRC算法进行校验 |
DPC_LOG_INTERVAL | 0 | 动态,系统级 | MP定时通知各节点生成相同时间点日志的时间间隔。取值范围0~1440(24小时)。以分钟为单位。0表示关闭定时通知功能。 此参数打开后,可支持使用归档恢复到指定时间点功能,在对系统性能有要求的情况下,可以调大或关闭此参数值 |
ELOG_REPORT_LINK_SQL | 0 | 动态,会话级 | 是否记录DBLINK执行的SQL到服务器日志文件中。0:不记录;1:记录 |
RLOG_RAFT_NEED_WAIT | 3 | 动态,系统级 | 主库是否进行日志包发送等待控制,仅RAFT主库生效。 0:主库不进行日志包发送控制; 1:任意备库存在日志堆积时,根据RLOG_RAFT_WAIT_TIME暂缓日志包发送; 2:存在日志堆积的备库个数超过备库总数的半数时,根据RLOG_RAFT_WAIT_TIME暂缓日志包发送; 3:任意归档状态有效的备库存在日志堆积,根据RLOG_RAFT_WAIT_TIME暂缓日志包发送; 4:存在日志堆积的归档状态有效的备库个数超过备库总数的半数时,根据RLOG_RAFT_WAIT_TIME暂缓日志包发送 |
RLOG_RAFT_WAIT_TIME | 1000 | 动态,系统级 | 备库出现堆积后,RAFT主库延迟发送等待时间,取值范围0~3600000,单位毫秒。仅RAFT主库生效 |
LOG_FILE_POSTFIX_NAME | log | 动态,系统级 | 归档日志文扩展名,长度不超过10个字符。默认与数据库初始化参数RLOG_POSTFIX_NAME一致,RLOG_POSTFIX_NAME默认为log |
2.1.1.1.12 REDO 重做/重演相关
本节的 INI 参数为重做或重演所需参数。
其中,以 REDOS_开头的 INI 参数为备库上日志重演专用参数。只需要在备库上设置,主库不需要。
参数名 | 缺省值 | 属性 | 说明 |
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,单位MB。0表示无限制 |
REDOS_BUF_SIZE | 1024 | 静态 | 待重演日志堆积的内存限制,堆积的日志缓冲区占用内存超过此限制,则新的日志将会被延迟加入重演队列,等待重演释放部分内存后再加入。单位MB,取值范围0~65536。0表示无内存限制。 REDOS_BUF_SIZE和REDOS_BUF_NUM同时起作用,只要达到一个条件即会触发延迟处理。 |
REDOS_BUF_NUM | 4096 | 静态 | 待重演日志缓冲区允许堆积的数目限制,超过限制则新的日志将会被延迟加入重演队列,等待堆积数减少后再加入。以个数为单位,有效值范围0~9999。0表示无限制。 REDOS_BUF_SIZE和REDOS_BUF_NUM同时起作用,只要达到一个条件即会触发延迟处理。 |
REDOS_MAX_DELAY | 1800 | 静态 | 备库重演日志缓冲区的时间限制,超过此限制则认为重演异常,服务器自动宕机,防止日志堆积、主库不能及时响应用户请求。单位秒,取值范围0~7200。0表示无重做时间限制 |
REDOS_PRE_LOAD | 0 | 动态,系统级 | 重演REDO日志时是否开启RLOG_PKG预加载功能。0:否;1:是 |
REDOS_PARALLEL_NUM | 1 | 静态 | 指定故障重启、还原恢复、备库重演场景下,并行日志重演的线程数,取值范围1~64。1表示不进行并行日志重演 |
REDOS_ENABLE_SELECT | 1 | 静态 | 指定是否支持备库查询。0:不支持;1:支持。关闭备库查询功能可提升备库重演性能 |
REDOS_FILE_PATH_POLICY | 0 | 静态 | 备库重演日志时表空间数据文件路径策略。0:数据文件创建到SYSTEM_PATH路径下;1:数据文件截掉根路径后,在SYSTEM_PATH下生成相同的路径结构 |
REDOS_PAGE_CRC_CHECK | 0 | 动态 | 是否开启主备页校验功能。0:否;1:是 |
2.1.1.1.13 事务相关
参数名 | 缺省值 | 属性 | 说明 |
ISOLATION_LEVEL | 1 | 静态 | 系统默认隔离级别。1:读提交;3:可串行化 |
DDL_WAIT_TIME | 10 | 动态,会话级 | DDL操作的锁超时时间,单位秒。取值范围0~604800 |
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~8192 |
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 | 3 | 动态,系统级 | 系统故障重启时,对活动事务和已提交事务的处理方式。 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 |
XA_TRX_LIMIT | 1024 | 静态 | XA事务数量上限。取值范围1024~65535 |
ENABLE_TMP_TAB_ROLLBACK | 1 | 动态,系统级 | 临时表操作是否生成回滚记录,0:不生成;1:生成。置为0时,有三项限制:一是临时表的DML操作无法回滚;二是不允许对包含唯一索引的临时表进行增删改操作;三是不允许对临时表创建唯一索引、主键约束和唯一约束 |
LOCK_DICT_OPT | 2 | 静态 | DICT封锁优化,事务提交或回滚时,不真正释放表上IS锁和IX锁对象。0:不优化;1:单机环境优化,DSC集群环境不优化;2:单机、集群环境都优化 |
TRX_DICT_LOCK_NUM | 64 | 动态,系统级 | 开启LOCK_DICT_OPT优化场景下最多可缓存的IX/IS类型字典锁对象数量。取值范围1~100000 |
DEADLOCK_CHECK_INTERVAL | 1000 | 动态,系统级 | 控制死锁检测间隔时间,单位毫秒,取值范围100~60000 |
LOB_MVCC | 1 | 动态,系统级 | 是否支持LOB数据的多版本并发控制访问。0:更新/删除语句会对涉及的大字段进行封锁;1:更新/删除语句不对涉及的大字段进行封锁 |
COMMIT_WRITE | IMMEDIATE,WAIT | 动态,系统级 | 格式为IMMEDIATE|BATCH,WAIT|NOWAIT,第一个参数可以取IMMEDIATE/BATCH,目前仅支持语法解析,无实际作用;第二个参数可以取WAIT/NOWAIT,WAIT表示事务提交等待事务刷盘,NOWAIT表示事务提交不等待事务刷盘 |
DPC_2PC | 1 | 手动 | DMDPC系统是否采用两阶段提交策略及是否使用优化方案。 0:关闭两阶段提交,没有故障的情况下直接提交效率更高,但是出现故障就无法保证事务一致性了; 1:启用两阶段提交; 2或3:启用两阶段提交,启用trxid缓存,启用snap_seq缓存方案优化; 4或5:启用两阶段提交,启用trxid缓存,启用snap_seq本地优化; 6或7:启用两阶段提交,启用trxid缓存,启用snap_seq缓存,启用snap_seq本地优化 |
SWITCH_CONN | 0 | 动态,系统级 | JDBC客户端是否进行连接切换,执行过程中发现计划只和一个BP相关时,客户端是否切换到该BP执行。 0:否;1:是。 此参数需要和JDBC驱动/dm_svc.conf配合使用,只用于BS模式 |
UNDO_BATCH_FAST | 0 | 动态,系统级 | 是否启用批量插入快速回滚功能,0: 不启用; 1: 启用 |
FINS_LOCK_MODE | 1 | 静态 | 快速插入封锁方式。0:保持表锁不放;1:采用NOWAIT方式尝试封锁,当前数据处理完后立即释放锁;2:采用超时方式尝试封锁,当前数据处理完后立即释放锁 |
FLDR_LOCK_RETRY_TIMES | 0 | 动态,系统级 | 指定快速装载产生死锁后自动重试的次数,取值范围0~4294967294,默认值为0表示不自动重试 |
DPC_TRX_TIMEOUT | 10 | 动态,会话级 | 用于DMDPC中,表示事务等待超时时间,单位秒。取值范围0~604800 |
SESSION_READONLY | 0 | 动态,系统级 | 用于设置系统中用户会话SESSION对数据库的读写操作。1:只读;0:可读可写。 对于当前会话,用户还可通过执行SP_SET_SESSION_READONLY (1/0)来重新设置当前会话的读写操作,1:只读;0:可读可写 |
SELECT_LOCK_MODE | 0 | 动态,系统级 | 语句执行时相关表的上锁方式。0:集中上锁;1:查询在操作符中上锁,相比集中上锁的方式,封锁范围较小、频率较高,适用于期望查询语句不阻塞DDL,且能够接受查询语句被打断的场景 注: 1. 不支持MPP环境 2. 若不是DPC环境,那么设置PARALLEL_POLICY参数非0时本参数将失效 3. 当本参数设置为1时,若TRUNC_CHECK_MODE参数设置为0,则会被调整为TRUNC_CHECK_MODE=1 |
ENABLE_SEC_RPTR | 0 | 动态,系统级 | 二级索引是否附加回滚记录地址以优化可见性判断。0:不启用;1:启用该优化,缺省值为0。需要注意,启用该参数后新创建的二级索引(视图SYSOBJECTS INFO1字段第八位设置为1)在执行版本降级前需要手动删除 |
HFI_HP_MODE | 1 | 静态 | 事务型分区HUGE表插入时的并发策略。0:封锁子表策略,各子表之间可以并发插入,但可能出现死锁;1:封锁根表策略,各子表之间不能并发,但不会出现死锁 |
2.1.1.1.14 安全相关
参数名 | 缺省值 | 属性 | 说明 |
ENABLE_ENCRYPT | 0 | 静态 | 用于通信加密。基于传输层的SSL协议通信加密所采用的方式。取值0、1和2。 0:不开启SSL加密和SSL认证; 1:开启SSL加密和SSL认证。此时如果没有配置好SSL环境,则通讯仍旧不加密; 2:开启SSL认证但不开启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 | 静态,系统级 | 审计文件总存储空间大小限制,单位MB。取值范围0~1024*1024,0表示不限制 |
AUDIT_MAX_FILE_SIZE | 100 | 动态,系统级 | 单个审计文件的最大大小,单位MB。取值范围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:检验, 不记录错误内容;2: 检验, 记录错误消息内容 |
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路径文件名 |
RESOURCE_FLAG | 0 | 静态 | 设置用户资源限制项CONNECT_TIME和CONNECT_IDLE_TIME的时间单位。1:分钟;0:秒。 修改该时间单位并不会同步调整限制值,用户需要手动调整已设置的CONNECT_TIME和CONNECT_IDLE_TIME限制项配置值来保持含义不变,因此建议谨慎调整该INI参数 |
2.1.1.1.15 兼容性相关
参数名 | 缺省值 | 属性 | 说明 |
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,7:部分兼容POSTGRES |
ORA_DATE_FMT | 0 | 静态 | 指定DATE类型格式。0:DATE类型使用NLS_TIMESTAMP_FORMAT格式;1:DATE类型使用NLS_DATE_FORMAT格式 注:仅当COMPATIBLE_MODE为2时有效 |
JSON_MODE | 0 | 静态 | JSON语法解析兼容模式。0:兼容ORACLE;1:兼容PostgreSQL;2:兼容MYSQL |
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否 |
MY_STRICT_TABLES | 0 | 静态 | 默认为0,当为1时,即使COMPATIBLE_MODE=4,数据超长或计算错误也会报错 |
IN_CONTAINER | 0 | 动态,系统级 | 当前数据库是否运行于容器中,0:否;1:是。若当前数据库运行于容器中,则将根据CGROUP的限制规则分配CPU和内存资源 |
DROP_CASCADE_VIEW | 0 | 动态,会话级 | 删除表或者视图的时候级联删除视图,0:将待删除的表或视图与其上的视图的依赖关系进行剥离,只删除表或者视图;1:将表或视图作为其上建立的视图的依赖项,删除表或者视图时根据语句的CASCADE选项进行相应处理。当COMPATIBLE_MODE=1时,DROP_CASCADE_VIEW的实际值为1 |
NUMBER_MODE | 0 | 静态 | 控制对FLOAT类型在数据定义(包括表列定义、脚本参数定义等)时的处理方式。0:采用DM现有的处理方式;1:兼容ORACLE的处理方式 |
NLS_SORT_TYPE | 0 | 动态,会话级 | 指定自然语言的排序方式。0:按默认字符集二进制编码排序;1:按中文拼音排序;2:按中文笔画排序;3:按中文部首排序;4:按泰文排序;5:按韩文排序 仅字符集为UTF-8的数据库支持自然语言按泰文排序 |
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 |
BASE64_LINE_FLAG | 1 | 动态,系统级 | BASE64编码时,是否每满64个字节加换行符ODOA\N\R两个字节。0:否;1:是 |
NVARCHAR_LENGTH_IN_CHAR | 1 | 静态 | 列定义中的NVARCHAR和NVARCHAR2数据类型是否自动转换为VARCHAR(N CHAR)数据类型。0:否;1:是 |
PARAM_DOUBLE_TO_DEC | 0 | 动态,系统级 | 是否支持将绑定参数中数据类型为FLOAT/DOUBLE的输入参数转换为DEC精确数据类型,0:不支持转换;1:支持转换,并进行预检查,预检查成功则转换为DEC,否则保持原始数据类型;2:支持转换,不进行预检查,若转换失败则报错 目前仅支持单行绑定参数转换,多行暂不支持 |
INSERT_COLUMN_MATCH | 0 | 动态,系统级 | 指定插入操作的列匹配规则,0:使用DM的列匹配规则;1:兼容ASTER的列匹配规则;2:兼容PG的列匹配规则。 值为1时,值插入支持列使用逗号占位符,查询插入暂不支持使用逗号占位符。 值为1或2时,支持尾部列不完全匹配插入。 若参数打开再关闭,如果语句已生成执行计划则需要手动清理,否则当列不匹配时,预期失败实际成功 |
AUTO_INCREMENT_INCREMENT | 1 | 动态,会话级 | 用于AUTO_INCREMENT自增列中。表示AUTO_INCREMENT的步长。取值范围1~65535 |
AUTO_INCREMENT_OFFSET | 1 | 动态,会话级 | 用于AUTO_INCREMENT自增列中。表示AUTO_INCREMENT的基准偏移。取值范围1~65535 |
NO_AUTO_VALUE_ON_ZERO | 1 | 动态,会话级 | 用于AUTO_INCREMENT自增列中。表示AUTO_INCREMENT列插入0时,是否自动插入自增的下一个值。取值范围0、1。0否,插入0;1是,插入自增值 |
IFUN_DATETIME_MODE | 0 | 静态 | 指定返回值或参数为TIMESTAMP/TIMESTAMP WITH TIME ZONE类型的系统函数的最大精度。0:老版本模式,最大精度为6;1:新版模式,最大精度为9 注:IFUN_DATETIME_MODE为1时,老版本客户端连接新版本服务器可能会导致版本不匹配报错 |
CAST_DIGIT_MODE | 1 | 动态,系统级 | 当弱数值类型的列与强数值类型的常量比较时,是否将常量的类型转为列的类型。0:否;1:是。该参数支持的数据类型,按由弱到强的顺序依次为TINYINT、SMALLINT、INT、BIGINT、DECIMAL、FLOAT、DOUBLE、DATE和TIMESTAMP |
VIEW_ACCESS_MODE | 0 | 静态 | 指定视图的自主访问控制机制。0:兼容DM;1:兼容ORACLE |
ENABLE_FULL_WIDTH | 1 | 动态,系统级 | 是否识别SQL语句中的全角中文字符。0:不识别;1:识别 |
2.1.1.1.16 用户请求跟踪相关
参数名 | 缺省值 | 属性 | 说明 |
SVR_LOG | 0 | 动态,系统级 | 是否打开SQL日志功能,0:关闭;1:打开,并按照SQLLOG.INI中的配置来记录SQL日志;2:打开,按文件中记录数量切换日志文件,日志记录为详细模式;3:打开,不切换日志文件,日志记录为简单模式,只记录时间和原始语句 |
SVR_LOG_NAME | SLOG_ALL | 动态,系统级 | SQLLOG.INI中预设模式的名称。支持指定多个预设模式名,限制如下: 1、最多指定10个预设模式名; 2、预设模式名之间使用逗号分隔,不允许换行; 3、每个预设模式名长度不能超过128个字节,否则该模式名无效; 4、SVR_LOG_NAME参数总长度不能超过256个字节,否则使用默认模式SLOG_ALL; 5、若指定的预设模式名不在SQLLOG.INI文件中,则该预设模式名无效。若指定的多个预设模式名均不在SQLLOG.INI文件中,则按照SQLLOG.INI的默认配置来记录SQL日志 |
2.1.1.1.17 系统跟踪相关
参数名 | 缺省值 | 属性 | 说明 |
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:按小时;3:按文件体积(需配置INI参数ELOG_SWITCH_LIMIT) |
ELOG_FLAG | 1 | 手动 | 指定当前的ELOG日志文件名是否带有时间后缀。 0:是,格式为dm_实例名_年月.log; 1:否,格式为dm_实例名.log |
ENABLE_OSLOG | 0 | 静态 | 是否启用操作系统日志,启用后会在/var/log/secaudit/db目录下生成名为audit_yyyymmdd.log的操作系统日志文件,仅对非WINDOWS系统有效。0:禁用;1:启用 |
LOG_IN_SHOW_DEBUG | 2147483647 | 动态,系统 | 发版为DEBUG版本时,控制RLOG模块日志输出。取值范围0~2147483647。LOG_IN_SHOW_DEBUG转换为二进制后,最低位为1,表示开启RLOG模块日志输出;0表示关闭RLOG模块日志输出。其他位,暂时没有用到 |
TRC_LOG | 0 | 动态,系统级 | TRACE日志开关。需和INI参数TRC_LOG_MODULE配合使用。
0:表示关闭;
非0:为功能组合值,组合规则为:
switch_mod*4 + asyn_flag*2 + 1。其中, |
ELOG_SWITCH_LIMIT | 0 | 动态,系统级 | 事件日志文件体积上限,单位MB。只在INI参数SVR_ELOG_FREQ设置为3时生效;配置为0时不限制日志文件体积 |
ELOG_ERR_ARR | 空串 | 静态 | 指定需要生成ELOG日志的错误码,最多可以指定10个错误码,各错误码之间使用“,”进行分隔 |
2.1.1.1.18 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:动态模式A,系统启动时装入常用的描述页、索引的根、指定常驻内存的表, 后续按负载情况动态装入频繁访问的页;2:动态模式B, 预装入的页同经典模式,后续按负载情况动态装入频繁访问的页;3:最大模式,试图把数据页全部装入FAST POOL,如果还有富余,则剩下的空闲FAST POOL空间按各文件实际使用长度按比例预分配,后续不再变化,适合库较小、内存空间大的场景 对于ROLL表空间,最多分配0号文件的前FAST_ROLL_PAGES,其中0、1、2模式下优先分配,3模式下按表空间ID和文件ID依次分配 |
MAX_FREQ_ROOTS | 200000 | 静态 | 收集常用B树地址的最大数量,仅ENABLE_FREQROOTS不为0时有效,取值范围0~10000000 注:已废弃 |
MIN_FREQ_CNT | 100000 | 静态 | 最常使用B树地址的阈值,仅在ENABLE_FREQROOTS不为0时有效,取值范围0~10000000 注:已废弃 |
LARGE_MEM_THRESHOLD | 10000 | 动态,系统级 | 大内存监控阈值。单位KB,取值范围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 |
ENABLE_MONITOR_BP | 1 | 动态,系统级 | 是否监控绑定参数相关信息。该监控项的生效必须是在ENABLE_MONITOR打开的情况下。0:不监控;1:监控 |
SQL_HISTORY_CNT | 10000 | 动态,系统级 | 动态视图V$SQL_HISTORY的记录数上限,取值范围1000~1000000 |
LONG_EXEC_SQLS_CNT | 1000 | 动态,系统级 | 动态视图V$LONG_EXEC_SQLS的记录数上限,取值范围1000~1000000 |
SYSTEM_LONG_EXEC_SQLS_CNT | 20 | 动态,系统级 | 动态视图V$SYSTEM_LONG_EXEC_SQLS的记录数上限,取值范围10~1000 |
BP_ITEM_MAXSIZE | 50 | 动态,系统级 | 动态视图V$SQL_BINDDATA_HISTORY的BINDDATA列的最大内存空间。取值范围1~500,单位KB |
2.1.1.1.19 数据守护相关
参数名 | 缺省值 | 属性 | 说明 |
DW_ERROR_TIME | 60 | 动态,系统级 | 服务器认定守护进程未启动的时间,取值范围0~1800,单位秒。如果服务器距离上次收到守护进程消息的时间间隔在设定的时间范围内,则认为守护进程处于活动状态,此时,不允许手工执行修改服务器模式、状态的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,单位秒,0表示不断开 |
SUSPEND_WORKER_TIMEOUT | 180 | 动态,系统级 | 在一些ALTER DATABASE等操作过程中,需要先暂停所有工作线程,如果超过此设置时间,仍有部分工作线程在执行中,则会报错,并终止当前操作。取值范围60~3600,单位秒 |
SUSPENDING_FORBIDDEN | 0 | 静态 | 是否禁止挂起工作线程,0:不禁止;1:禁止 |
DW_CONSISTENCY_CHECK | 0 | 动态,系统级 | 备库是否检测主库到备库的连接丢失或归档失效,并在检测到上述情况时停止提供只读服务。0:不检测;1:检测 |
DW_ARCH_SPACE_CHECK | 0 | 动态,系统级 | 备库是否检测本地归档磁盘空间不足,并在磁盘空间不足时主动关闭服务,同时将本地守护进程切换为SHUTDOWN状态。0:不检测;1:检测。 此参数目前仅支持单节点备库的检测 |
RLOG_PKG_SEND_NUM | 1 | 动态,系统级 | 主库启动异步恢复时,连续发送设定值个日志包以后需要等待备库响应。取值范围1~200。缺省值1表示每发送一个日志包就要等待一次响应。如果主备库之间存在比较大的网络延迟,可以通过调大此参数以提升主库的日志发送速度 |
DW_SUSPEND_TIME | 0 | 动态,系统级 | 设置主库在SUSPEND状态下最多保持的时长,单位秒,取值范围0~86400,允许动态修改。
主备进入异步恢复流程时,为了确保备库能够和主库的数据追平,在异步恢复的最后阶段会将主库切换为SUSPEND。此参数开启时,会在切换SUSPEND之前估算剩余待同步的日志量在DW_SUSPEND_TIME时长范围内是否能够同步完成,如果可以,再将主库切换到SUSPEND状态,否则主库仍然保持OPEN状态。 取默认值0时,关闭估算功能,有可能会导致主库长时间处于SUSPEND状态无法正常提供服务 |
RLOG_SYNC_MODE | 0 | 静态 | 设置主库的日志同步模式。0:主库向备库发送日志失败后,需要切换至SUSPEND状态,主库守护进程进入Failover故障处理流程,设置归档失效后再OPEN;1:主库向备库发送日志失败后,直接将备库归档失效,不再切换至SUSPEND状态,主库守护进程不再进入Failover故障处理流程。 参数取值1仅在非自动切换模式下有效 |
2.1.1.1.20 全文索引相关
参数名 | 缺省值 | 属性 | 说明 |
CTI_HASH_SIZE | 100000 | 动态,会话级 | 使用全文索引查询时,用于设置关键字匹配的哈希表大小。取值范围1000~10000000 |
CTI_HASH_BUF_SIZE | 50 | 动态,会话级 | 使用全文索引查询时,用于设置哈希缓存内存大小,单位MB。取值范围1~4000 |
USE_FORALL_ATTR | 0 | 动态,会话级 | 是否使用FORALL语句的游标属性,0:不使用;1:使用 |
ALTER_TABLE_OPT | 0 | 动态,会话级 | 是否对加列、修改列、删除列操作进行优化,0:全部不优化;1:全部优化;2:打开快速加列,对于删除列和修改列与1等效;3:打开快速加列,允许指定快速列默认值,其他功能与2时相同 |
2.1.1.1.21 配置文件相关
参数名 | 缺省值 | 属性 | 说明 |
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:启用 |
2.1.1.1.22 其他
参数名 | 缺省值 | 属性 | 说明 |
IDLE_MEM_THRESHOLD | 50 | 动态,系统级 | 可用物理内存的报警阀值,单位MB,取值范围10~6000 |
IDLE_DISK_THRESHOLD | 1000 | 动态,系统级 | 磁盘可用空间的报警阀值,单位MB,取值范围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操作时使用的消息包大小,单位KB,取值范围32~65536。该参数修改时仅影响新创建的会话 |
ENABLE_RLS | 0 | 静态 | 是否开启策略管理RLS功能。0:不开启;1:开启 |
RLS_CACHE_SIZE | 100000 | 动态,系统级 | 指定策略缓存空间能够存放对象结点数量的最大值。取值范围1000~1000000 |
TCP_ACK_TIMEOUT | 0 | 动态,系统级 | 指定LINUX系统下TCP链路的心跳超时时间。取值范围0~100,单位秒 |
ENHANCE_RECLAIM | 1 | 动态,系统级 | 是否采用增强的垃圾回收策略。0:否;1:是 |
CODE_CONVERSE_MODE | 1 | 动态,系统级 | DBLINK对不完整字符的处理。0:丢弃;1:报错 |
ENABLE_CS_CVT | 0 | 静态 | 是否使用用户自定义的CONVERT方法替换系统默认CONVERT方法。0:不替换;1:替换 |
INI_SYNC | 0 | 动态,系统级 | 用于控制备库是否定期从主库同步INI参数及每次同步的时间间隔,取值范围0~1440,单位分钟。0表示不开启同步 |
AP_PORT_NUM | 6000 | 静态 | 分布式环境下协同工作的监听端口,SP/BP本地设置的AP_PORT_NUM如果和自身在MP上注册的AP_PORT_NUM不一致,按照在MP上实际注册的为准,启动时会自动覆盖 |
2.1.1.1.23 DMDSC 相关
参数名 | 缺省值 | 属性 | 说明 |
DSC_N_CTLS | 132096 | 静态 | LBS/GBS控制页数目。取值范围4096~4294967294 |
DSC_N_POOLS | 19 | 静态 | 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:需要等待其他节点响应 ;2表示采用定时同步策略,每隔1秒同步一次 |
DSC_TRX_VIEW_BRO_INTERVAL | 1000 | 动态,系统级 | 控制TRX VIEW广播间隔时间,单位毫秒,取值范围1~60000 |
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 |
DSC_TABLESPACE_BALANCE | 0 | 动态,会话级 | 是否开启DSC服务器端基于表空间的负载均衡。0:不开启;1:开启。开启时,DSC环境下服务器自动检查执行的查询语句是否满足特定条件,满足时系统会自动重连至指定的优化节点执行,且自动重连前服务器会返回运行时错误EC_SWITCH_CONN_NODE(-613) |
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之间随机分配 |
DSC_FREQ_INTERVAL | 30 | 动态,系统级 | DSC数据页访问冲突统计间隔时间,单位毫秒,取值范围1~10000 |
DSC_FREQ_CONFLICT | 8 | 动态,系统级 | DSC数据页高频冲突认定次数,取值范围1~1000 |
DSC_FREQ_DELAY | 0 | 动态,系统级 | DSC高频冲突数据页延迟处理时间,单位毫秒,取值范围0~1000。0:关闭DSC高频冲突数据页延迟处理机制。 在DSC_FREQ_INTERVAL指定时间间隔内,若数据页访问冲突次数超过DSC_FREQ_CONFLICT指定次数,则延迟DSC_FREQ_DELAY指定时间后再回收被授权节点的访问权限,使得被授权节点在DSC_FREQ_DELAY指定时间内可以连续访问冲突数据页,提升并发执行效率 |
DSC_INSERT_LOCK_ROWS | 0 | 动态,系统级 | DSC集群插入操作符单次插入记录数大于等于此参数指定值时,增加额外的封锁,将多个节点针对同一张表的插入操作串行执行,以减少节点间冲突,提升并发插入性能。取值范围0~10000,0表示不进行优化处理。需要注意的是,开启此参数后,DSC集群单个节点的并发插入性能会有一定程度下降 |
DSC_CRASH_RECV_POLICY | 0 | 静态 | 故障处理策略。0:故障处理时重演所有节点REDO日志,且日志重演期间服务挂起;1,故障处理时仅重演故障节点REDO日志,日志重演期间服务挂起;2,故障处理时仅重演故障节点日志,且日志重演期间正常提供服务。需要注意,故障处理策略1和2不适用于备库,且仅适用于单节点故障,不满足约束条件时将自动切换到故障处理策略0 |
DSC_LBS_REVOKE_DELAY | 0 | 动态,系统级 | DSC集群优先满足本地LBS请求,延迟响应LBS REVOKE请求的时间。取值范围0~1000,单位ms。数据页节点间冲突比较严重场景,可以开启此LBS REVOKE延迟响应机制,确保冲突数据页在一段时间内保持在某个节点运行,以提升整体性能 |
2.1.1.1.24 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系统 |
2.1.1.1.25 未列在 dm.ini 中的 INI 配置项
下表中的 INI 参数较为特殊,没有包含在 dm.ini 文件中,但用户可通过调用系统过程与函数 SP_SET_PARA_VALUE()和 SF_SET_SYSTEM_PARA_VALUE()进行参数值的设置和修改。
参数名 | 缺省值 | 属性 | 说明 |
PWD_POLICY | 2 | 动态,系统级 | 设置系统默认口令策略。 0: 无限制。但总长度不得超过48个字节; 1: 禁止与用户名相同; 2: 口令长度需大于等于PWD_MIN_LEN设置的值; 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测评模式;3:表示ZB模式。 注:该参数设置仅安全版有效 |
2.1.1.2 dmmal.ini
dmmal.ini 是 MAL 系统的配置文件。dmmal.ini 的配置项见表 2.26。需要用到 MAL 环境的实例,所有站点 dmmal.ini 需要保证严格一致。
项目 | 项目意义 | 字段 | 字段意义 |
MAL_CHECK_INTERVAL | 检测线程检测间隔,缺省为30s,取值范围0~1800,单位秒,如果配置为0,则表示不进行链路检测 | 无 | 无 |
MAL_SEND_THRESHOLD | 最大待发送邮件数,用于控制待发送邮件总数,防止发送邮件堆积。取值范围1024~10000,缺省值2048 | 无 | 无 |
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缓存大小限制,单位MB。当此MAL的缓存邮件超过此大小,则会将邮件存储到文件中。取值范围0~500000,缺省为100 | 无 | 无 |
MAL_SYS_BUF_SIZE | MAL系统总内存大小限制,单位MB。取值范围0~500000,缺省为0,表示MAL系统无总内存限制 | 无 | 无 |
MAL_VPOOL_SIZE | MAL 系统使用的内存初始化大小,单位MB。取值范围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中可动态更改。
2.1.1.3 dmarch.ini
dmarch.ini 用于本地归档和远程归档。dmarch.ini 的配置项见表 2.27。
项目 | 项目意义 | 字段 | 字段意义 |
全局配置项 | 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归档路径不能指向共享存储的同一个目录 | ||
ARCH_LOCAL_SHARE_CHECK | 是否进行LOCAL归档和REMOTE归档路径校验,默认值等于ARCH_LOCAL_SHARE,且只在ARCH_LOCAL_SHARE值为1时该参数才有意义。此参数值在DMDSC集群各个节点的配置文件中需保持一致。 配置为1时,会进行LOCAL归档和REMOTE归档路径的一致性校验;配置为0时,不进行LOCAL归档和REMOTE归档的一致性校验,由用户自己保证归档配置的正确性。 | ||
[ARCHIVE_LOCAL1] | 本地归档配置 | ARCH_TYPE | 归档类型 |
ARCH_DEST | 归档路径 | ||
ARCH_FILE_SIZE | 单个归档文件大小,单位MB,取值范围64~2048,缺省为1024MB,即1G | ||
ARCH_SPACE_LIMIT | 本地归档文件空间限制。当同一节点号的本地归档文件达到限制值时,系统自动删除最早生成的本地归档日志文件。0表示无空间限制,取值范围1024~2147483647,缺省为0,单位MB | ||
ARCH_FLUSH_BUF_SIZE | 归档合并刷盘缓存大小,单位MB,取值范围0~128,缺省为0,表示不使用归档合并刷盘 | ||
ARCH_HANG_FLAG | 本地归档写入失败时系统是否挂起。取值0或1。0不挂起;1挂起。缺省为1。第一路本地归档系统内固定设为1,设0实际也不起作用 | ||
ARCHIVE_REALTIME | 实时归档配置 | ARCH_TYPE | 归档类型 |
ARCH_DEST | 归档目录实例名 | ||
WAIT_APPLY | 若归档目标未配置WAIT_APPLY,则以全局ARCH_WAIT_APPLY为准;若某一个归档目标配置了WAIT_APPLY,则对应归档目标是否是事务一致由配置的WAIT_APPLY为准。取值:0:表示高性能模式;1:表示事务一致模式 | ||
ARCHIVE_ASYNC | 异步归档 | ARCH_TYPE | 归档类型 |
ARCH_DEST | 归档目录实例名 | ||
ARCH_TIMER_NAME | 定时器名称 | ||
ARCH_SEND_DELAY | 指定源库到异步备库的归档延时发送时间,单位分钟,取值范围0~1440,缺省为0,表示不启用归档延时发送功能。 注:仅在异步归档类型中支持此配置项,其他归档类型不支持。如果源库是DSC集群,建议用户配置时保证各节点上配置的值是一致的,并保证各节点所在机器的时钟一致,避免控制节点发生切换后计算出的归档延迟发送时间不一致 |
||
ARCHIVE_SYNC | 同步归档 | ARCH_TYPE | 归档类型 |
ARCH_DEST | 归档目录实例名 | ||
ARCH_RECOVER_TIME | 主库向同步备库发起异步恢复的时间间隔,单位秒,取值范围1~86400,缺省为1,表示主库每隔1秒检查一次同步备库的归档状态,若为INVALID且和同步备库通信正常,则发起异步恢复。 注:仅在同步归档类型中支持配置此项,其他归档类型不支持 |
||
ARCHIVE_TIMELY | 即时归档 | ARCH_TYPE | 归档类型 |
ARCH_DEST | 归档目录实例名 | ||
WAIT_APPLY | 若归档目标未配置WAIT_APPLY,则以全局ARCH_WAIT_APPLY为准;若某一个归档目标配置了WAIT_APPLY,则对应归档目标是否是事务一致由配置的WAIT_APPLY为准。取值:0:表示高性能模式;1:表示事务一致模式 | ||
REMOTE | 远程归档配置 | ARCH_TYPE | 归档类型 |
ARCH_DEST | 归档目录实例名 | ||
ARCH_FILE_SIZE | 单个归档文件大小,单位MB,取值范围64~2048,缺省为1024MB,即1G | ||
ARCH_SPACE_LIMIT | 远程归档文件空间限制。当同一节点号的远程归档文件达到限制值时,系统自动删除最早生成的远程归档日志文件。0表示无空间限制,取值范围1024~2147483647,缺省为0,单位MB | ||
ARCH_INCOMING_PATH | 对应远程归档存放在本节点的实际路径 | ||
ARCH_FLUSH_BUF_SIZE | 归档合并刷盘缓存大小,单位MB,取值范围0~128,缺省为0,表示不使用归档合并刷盘 |
相关说明
-
归档类型 ARCH_TYPE 有以下几种:
本地归档 LOCAL(一台主库最多配 8 个)
远程实时归档 REALTIME(一台主库最多配 8 个)
远程异步归档 ASYNC(一台主库最多配 8 个)
同步归档 SYNC(一台主库最多配 8 个)
即时归档 TIMELY(一个主库最多配 8 个)
远程归档 REMOTE(一个主库最多配 8 个)
-
配置名[ARCHIVE_*]表示归档名,在配置文件中必须唯一。
-
不能存在相同实例名的不同归档;
-
不能存在 DEST 相同的不同归档实例;
-
ARCH_TIMER_NAME 为定制的定时器名称,定时器配置见 dmtimer.ini;
-
ARCH_SPACE_LIMIT 表示归档文件的磁盘空间限制,如果归档文件总大小超过这个值,则在生成新归档文件前会删除最老的一个归档文件。
2.1.1.4 dm_svc.conf
dm_svc.conf 是一个客户端配置文件,它包含了 DM 各接口和客户端工具所需要配置的一些参数。它必须和接口/客户端工具位于同一台机器上才能生效。
初始 dm_svc.conf 文件在 DM 安装时自动生成。不同平台的生成目录有所不同。
- 32 位的 DM 安装在 Win32 操作平台下,此文件位于 %SystemRoot%\system32 目录;
- 64 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\system32 目录;
- 32 位的 DM 安装在 Win64 操作平台下,此文件位于 %SystemRoot%\SysWOW64 目录;
- 在 Linux 平台下,此文件位于/etc 目录。
可以通过设置操作系统环境变量 DM_SVC_PATH 来修改 dm_svc.conf 文件路径。
2.1.1.4.1 dm_svc.conf 配置项
dm_svc.conf 具体的配置项如表 2.28 所示。
配置项 | 缺省值 | 简述 |
通用配置项 | ||
服务名 | 无 | 用于连接的服务名,参数值格式为:
服务名=(IP[:PORT],IP[:PORT],......)。IP为数据库所在的IP地址,如果是IPV6地址,为了区分端口,需要用[]封闭IP地址。PORT为数据库使用的TCP连接端口,可选配置,不配置则使用默认的端口 注:若配置服务名时没有指定端口,后续在工具或接口的命令中使用服务名时,在服务名后增加的“:XXXX”端口号会被忽略,这样指定的端口号是无效的 |
WALLET_LOCATION | 无 | wallet文件的路径 |
TIME_ZONE | 操作系统当前时区 | 指明客户端的默认时区,取值范围:-779~840,单位分钟。如设置为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编码)。 可以不指定,若不指定,系统会读取操作系统信息获得编码信息,建议有需要才指定 |
COMPRESS_MSG | 0 | 是否启用消息压缩。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 | 设置结果集缓冲区大小,单位MB。取值范围为1~65535,如果设置太大,可能导致空间分配失败,进而使缓存失效 |
RS_REFRESH_FREQ | 10 | 结果集缓存检查更新的频率,单位秒,取值范围为0~10000,如果设置为0,则不需检查更新 |
CONNECT_TIMEOUT | 5000 | 连接超时时间,单位为毫秒。0表示无限制 |
LOGIN_MODE | 4 | 指定优先登录的服务器模式。0:优先连接Primary模式的库,Normal模式次之,最后选择Standby模式;1:只连接主库;2:只连接备库;3:优先连接Standby模式的库,Primary模式次之,最后选择Normal模式;4:优先连接Normal模式的库,Primary模式次之,最后选择Standby模式 |
SWITCH_TIMES | 1 | 指定自动重连次数。如果无法成功连接到单节点数据库,则按照SWITCH_TIMES指定次数尝试自动重连。如果无法成功连接到数据库服务名,则按照SWITCH_TIMES指定的次数遍历服务名中库列表,遍历到活动的数据库则自动重连。取值范围1~9223372036854775807 |
SWITCH_INTERVAL | 200 | 在服务器之间切换的时间间隔,单位毫秒,取值范围1~9223372036854775807 |
RW_SEPARATE | 0 | 是否启用读写分离。0:不启用;1:启用;2:启用,备库由客户端进行选择,且只会选择服务名中配置的节点;4:启用,备库由客户端进行选择,只连接事务一致性备库 |
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) …… 例如,设置ADDRESS_REMAP =(192.168.1.60:5236,192.168.1.64:5236),使用DIsql连接IP为60的数据库:DIsql SYSDBA/SYSDBA@192.168.1.60:5236,经重定向之后,DIsql实际连接的是IP为64的数据库 |
EP_SELECTOR | 0 | 连接数据库时采用何种模型建立连接。0:依次选取列表中的不同节点建立连接,使得所有连接均匀地分布在各个节点上;1:选择列表中最前面的节点建立连接,只有当前节点无法建立连接时才会选择下一个节点进行连接 |
AUTO_RECONNECT | 0 | 连接发生异常或一些特殊场景下连接处理策略。0:关闭连接;1:当连接发生异常时自动切换到其他库,无论切换成功还是失败都会抛一个SQLEXCEPTION,用于通知上层应用进行事务执行失败时的相关处理 |
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))) |
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”文件中 |
DPI配置项 | ||
TCP_ACK_TIMEOUT | 0 | 指定LINUX系统下TCP链路的心跳超时时间。取值范围0~100,单位秒 |
2.1.1.4.2 dm_svc.conf 用法
dm_svc.conf 配置文件的内容分为全局配置区和服务配置区。全局配置区在前,可配置表 2.28 中所有的配置项,服务配置区在后,以“[服务名]”开头,可配置除了服务名和 WALLET_LOCATION 外的所有配置项。“服务名”配置项可以在全局配置区,也可以在此服务名对应的服务配置区之前,即在其对应的“[服务名]”之前。
服务配置区中的配置优先级高于全局配置区。
下面以一个普通环境中 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时区
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 服务名的第一个服务(192.168.1.1:5236),以间隔 1000 毫秒的节奏尝试遍历服务名中的各服务进行连接,若在遍历中成功连上符合要求的服务则立即返回;若没有,则继续。一共尝试 60 次遍历,若60次尝试后依然未连接上目标服务,则根据LOGIN_MODE的配置进行下一种连接的尝试。若连接建立时连上的是2号服务,而一段时间后 1 号服务可以正常连接了,当前连接也不会自动切换到 1 号服务。
[DMDSC1]
LOGIN_MODE=(4) #若是DSC主+单机备,注意这里需要配置成0
SWITCH_TIMES=(60)
SWITCH_INTERVAL=(1000)
EP_SELECTOR=(1)
AUTO_RECONNECT=(1)
#DMDSC2 服务配置区
#以下配置目标连接 DMDSC2 服务名的第一个服务(192.168.1.5:5236),以间隔 1000 毫秒的节奏尝试遍历服务名中的各服务进行连接,若在遍历中成功连上符合要求的服务则立即返回;若没有,则继续。一共尝试 60 次遍历,若60次尝试后依然未连接上目标服务,则根据LOGIN_MODE的配置进行下一种连接的尝试。假设2号服务先连接成功,由于AUTO_RECONNECT=(2),因此当1号服务可以正常连接后当前连接会切换到1号服务。
[DMDSC2]
CLUSTER=(DSC)
LOGIN_MODE=(4) #若是DSC 主+单机备,注意这里需要配置成0
SWITCH_TIMES=(60)
SWITCH_INTERVAL=(1000)
EP_SELECTOR=(1)
AUTO_RECONNECT=(2)
需要说明的是,如果对 dm_svc.conf 的配置项进行了修改,需要重启客户端程序,修改的配置才能生效。另外,如果 dm_svc.conf 配置文件中包含中文,则必须保证该配置文件的编码与客户端编码一致。
2.1.1.5 sqllog.ini
sqllog.ini 用于 SQL 日志的配置,当且仅当 INI 参数 SVR_LOG=1 时使用。
如果在服务器启动过程中,修改了 sqllog.ini 文件。修改之后的文件,只要调用过程 SP_REFRESH_SVR_LOG_CONFIG() 就会生效。
sqllog.ini 的详细配置请参考表 2.29。
参数名 | 缺省值 | 属性 | 说明 |
---|---|---|---|
SQL_TRACE_MASK | 1 | 动态,系统级 | 指定 SQL 日志中需要被记录的语句类型。指定方式为 SQL_TRACE_MASK=位号:位号:位号……。例如:3:5:7 表示第 3,第 5,第 7 位号代表的类型需要被记录在 SQL 日志中。 位号 24、25、26、28 需和 2~17 搭配使用。例如:SQL_TRACE_MASK=3:24:26;SQL_TRACE_MASK=4:5:24:25:28 等。 位号 22、23、27、29、30 可分别单独使用,也可和 2~30 的其它位号同时使用。例如:SQL_TRACE_MASK=27;SQL_TRACE_MASK=2:27 等。 位号的含义如下所示: 1 全部记录(等同于同时设置 4~30) 2 DML 类型相关语句(等同于同时设置 4~10) 3 DDL 类型相关语句(等同于同时设置 11~17) 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 记录执行语句的时间、语句的影响行数(只有增删改查有行数,其它语句无行数)。25 和 26 二者只能选择其一。25 和 26 同时存在时,只有 25 有效 27 记录原始语句(服务器从客户端收到的未加分析的语句) 28 记录参数信息,包括参数的序号、数据类型和值 29 记录事务相关事件,包括锁类型、锁等待时间等 30 记录 XA 事务 |
FILE_NUM | 5 | 动态,系统级 | 总共记录多少个日志文件,当日志文件达到这个设定值以后,再生成新的文件时,会删除最早的那个日志文件。日志文件名称中将包含日期时间信息,关于日志文件命名格式的详细介绍请参考 2.9 SQL 日志文件。 当这个参数配置成 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 按文件大小切换时,一个日志文件达到该大小后,系统自动将日志切换到另一个文件中,单位 MB。取值范围 1~2000 3 按时间间隔切换时,每个指定的时间间隔,按文件新建时间进行文件切换,单位分钟。取值范围 1~30000 |
ASYNC_FLUSH | 1 | 动态,系统级 | 是否打开 SQL 日志异步刷盘功能。0:否,采用实时刷盘;1:是,采用异步刷盘 |
MIN_EXEC_TIME | 0 | 动态,系统级 | 详细模式下,记录的最小语句执行时间,单位毫秒。执行时间小于该值的语句不记录在日志文件中。取值范围 0~4294967294 |
FILE_PATH | ../log | 动态,系统级 | SQL 日志文件所在的文件夹路径 |
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 日志中应包含的内容。指定方式为 ITEMS=位号:位号:位号……。 例如:ITEMS=3:5:7。表示应包含第 3、第 5、第 7 位代表的内容。 0 表示记录所有的列(等同于同时设置 1~12) 1 TIME 执行的时间 2 SEQNO 服务器的站点号 3 SESS 操作的会话地址 4 THRD 线程地址 5 USER 执行的用户 6 TRXID 事务 ID 7 STMT 语句地址 8 APPNAME 客户端工具 9 IP 客户端 IP 10 STMT_TYPE 语句类型。分别为[ORA]表示原始语句(服务器从客户端收到的未加分析的语句) 、[DDL]表示 DDL 语句、[INS]表示 INSERT 语句、[DML]表示 DML 语句、[CAL]表示 CALL 语句、[UPD] 表示 UPDATE 语句、[DEL] 表示 DELETE 语句和[SEL]表示 SELECT 语句 11 INFO 记录当前执行的 SQL 语句 12 RESULT 运行结果,包括运行用时和影响行数(可能没有) |
USER_MODE | 0 | 手动 | SQL 日志按用户过滤时的过滤模式,取值 0:关闭用户过滤 1:白名单模式,只记录列出的用户操作的 SQL 日志 2:黑名单模式,列出的用户不记录 SQL 日志 |
USERS | 空串 | 手动 | 打开 SVR_LOG_USER_MODE 时指定的用户列表。格式为:用户名:用户名:用户名 |
sqllog.ini 中配置块的使用方法:
sqllog.ini 中配置块在 INI 参数 SVR_LOG=1 时使用。sqllog.ini 中可以配置多个模式,不同模式可以有不同的配置项,例如:记录过滤掩码,刷盘方式,文件切换方式等。当各模式的 items 设置不同时,使用其并集。仅当配置的模式名存在于 INI 参数 SVR_LOG_NAME 中时,该模式名对应配置才会生效。当配置为多模式时,会在日志文件名中的实例名后面加上该日志文件对应的模式名。
缺省情况下,SVR_LOG_NAME 为 SLOG_ALL。若 SVR_LOG 为 1,但不存在 sqllog.ini 或 sqllog.ini 中配置的多个模式名均不在 INI 参数 SVR_LOG_NAME 中时,按照各配置项的系统默认值记录 SQL 日志。
例 下面是一个模式名为 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 复制配置
2.1.2.1 dmrep.ini
dmrep.ini 用于配置复制实例,具体内容请见“数据复制”章节。dmrep.ini 的配置项见表 2.30。
项目 | 项目意义 | 字段 | 字段意义 |
[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.1.2.2 dmllog.ini
dmllog.ini 用于配置逻辑日志,具体内容请见“数据复制”章节。dmllog.ini 的配置项见表 2.31。
项目 | 项目意义 | 字段 | 字段意义 |
[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 |
2.1.2.3 dmtimer.ini
dmtimer.ini 用于配置定时器,用于数据守护中记录异步备库的定时器信息或数据复制中记录异步复制的定时器信息。dmtimer.ini 的配置项见表 2.32。
配置项 | 配置含义 |
---|---|
[TIMER_NAME1] | 定时器名称。例如,名为 RT 的定时器,名称书写方式为[RT] |
TYPE | 定时器调度类型: 1:执行一次。时间上只需要指定 DURING_START_DATE 即可,不需要指定 START_TIME、END_TIME 和 DURING_END_DATE 2:按日执行 3:按周执行 4:按月执行的第几天 5:按月执行的第一周 6:按月执行的第二周 7:按月执行的第三周 8:按月执行的第四周 9:按月执行的最后一周 10: 按 REPEAT_INTERVAL 指定的日历表达式的频率进行。不再需要通过 START_TIME、END_TIME、DURING_START_DATE 和 DURING_END_DATE 指定时间 |
FREQ_MONTH_WEEK_INTERVAL | 间隔月或周数。这个列的可选值与上面的不同调度类型有关。表示执行的频率。 说明如下: 当 TYPE=1 时,这个值无效,系统不会做检查。 当 TYPE=2 时,表示每隔几天执行,值的有效范围为 1 到 100。 当 TYPE=3 时,表示的是每隔几个星期执行,值的范围没有具体的限制。 当 TYPE=4 时,表示每几个月中的某一天执行,值的范围没有具体的限制。 当 TYPE 为 5、6、7、8 或 9 时,都表示每几个月的某一周执行,值的范围也没有具体的限制 |
FREQ_SUB_INTERVAL | 间隔天数。这个列的可选值与上面的不同调度类型有关。表示执行的频率,在 FREQ_MONTH_WEEK _INTERVAL 基础上,继续指定更为精细的频率。 说明如下: 当 TYPE=1 或 2 时,这个值无效,系统不会做检查。 当 TYPE=3 时,表示的是某一个星期的星期几执行,可以同时选中七天中的任意几天。取值范围 1~127。具体如何取值,请用户参考如下规则。因为每周有七天,所以 DM 用七位二进制来表示选中的日子。从最低位开始算起,依次表示周日、周一...周五、周六。选中周几,就将该位置 1,否则 0。例如:选中周二和周六,7 位二进制就是 1000100,转化成十进制就是 68,所以 FREQ_SUB_INTERVAL 就取值 68。 当 TYPE=4 时,表示将在一个月的第几天执行,此时这个列的有效值范围为 1 到 31 当 TYPE 为 5、6、7、8 或 9 时,都表示将在某一周内第几天执行,有效值为 1 到 7,分别表示从周一到周日 |
FREQ_MINUTE_INTERVAL | 间隔分钟数。 当 TYPE 为 2、3、4、5、6、7、8 或 9 时,在 FREQ_MONTH_WEEK_INTERVALHE 和 FREQ_SUB_INTERVAL 的基础上,继续指定更为精细的频率。表示一天内每隔多少分钟执行一次。取值范围 0~1439,0 表示一天内执行一次 |
REPEAT_INTERVAL | 当 TYPE 为 10 时使用,用来指定的日历表达式。语法详见《DM8 系统包使用手册》手册 DBMS_SCHEDULER 包中关于 REPEAT_INTERVAL 的介绍 |
START_TIME | 定时器开始时间,TIME 类型。例如:20:59:59.999999 |
END_TIME | 定时器结束时间,TIME 类型 |
DURING_START_DATE | 指定定时器的有效日期范围的起始日期,必须是有效的日期字符串,不可以为空。TIMESTAMP 类型。例如:2021-12-15 10:00:00 |
DURING_END_DATE | 指定定时器的有效日期范围的结束日期,可以为空。如果不为空,必须是有效的日期字符串,同时必须是在 DURING_START_DATE 日期之后。TIMESTAMP 类型 |
NO_END_DATE_FLAG | 是否结束标记。1 是,0 否 |
DESCRIBE | 定时器描述 |
IS_VALID | 定时器有效标记,缺省为 0。 0:表示已关闭定时器 1:表示已启用定时器 |
2.2 控制文件
每个 DM 数据库都有一个名为 dm.ctl 的控制文件。控制文件是一个二进制文件,它记录了数据库必要的初始信息,其中主要包含以下内容:
- 数据库名称;
- 数据库服务器模式;
- OGUID 唯一标识;
- 数据库服务器版本;
- 数据文件版本;
- 数据库的启动次数;
- 数据库最近一次启动时间;
- 表空间信息,包括表空间名,表空间物理文件路径等,记录了所有数据库中使用的表空间,数组的方式保存起来;
- 控制文件校验码,校验码由数据库服务器在每次修改控制文件后计算生成,保证控制文件合法性,防止文件损坏及手工修改。
在服务器运行期间,执行表空间的 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 参数限制其扩展量,当然,也可以不限制。但是,数据文件的大小最终会受物理磁盘大小的限制。在实际使用中,一般不建议使用单个巨大的数据文件,为一个表空间创建多个较小的数据文件是更好的选择。
数据文件在物理上按照页、簇和段的方式进行管理,详细结构请参考第一章的内容。
数据文件按数据组织形式,可以分为如下几种:
- B 树数据
行存储数据,也是应用最广泛的存储形式,其数据是按 B 树索引组织的。普通表、分区表、B 树索引的物理存储格式都是 B 树。
一个 B 树包含两个段,一个内节点段,存放内节点数据;一个叶子段,存放叶子节点数据。其 B 树的逻辑关系由段内页面上的记录,通过文件指针来完成。
当表上没有指定聚集索引时,系统会自动产生一个唯一标识 rowid 作为 B 树的 key 来唯一标识一行。
- 堆表数据
堆表的数据是以挂链形式存储的,一般情况下,支持最多 128 个链表,一个链表在物理上就是一个段,堆表采用的是物理 rowid,在插入过程中,rowid 在事先已确定,并保证其唯一性,所以可以并发插入,插入效率很高,且由于 rowid 是即时生成,无需保存在物理磁盘上,也节省了空间。
- 列存储数据
数据按列方式组织存储,包含每个列对应的存放列数据的一系列数据文件,以及存放列数据控制信息的辅助表。读取列数据时,只需要顺序扫描列数据文件和辅助表数据。在某些特殊应用场景下,其效率要远远高于行存储。
- 位图索引
位图索引与 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 为扩展名,可在初始化数据库时使用建库参数 RLOG_POSTFIX_NAME 指定重做日志文件的扩展名。每个 DM 数据库实例必须至少有 2 个重做日志文件,默认两个日志文件为 DAMENG01.log、DAMENG02.log,这两个文件循环使用。
重做日志文件因为是数据库正在使用的日志文件,因此被称为联机日志文件。
重做日志文件主要用于数据库的备份与恢复。理想情况下,数据库系统不会用到重做日志文件中的信息。然而现实世界总是充满了各种意外,比如电源故障、系统故障、介质故障,或者数据库实例进程被强制终止等,数据库缓冲区中的数据页会来不及写入数据文件。这样,在重启 DM 实例时,通过重做日志文件中的信息,就可以将数据库的状态恢复到发生意外时的状态。
重做日志文件对于数据库是至关重要的。它们用于存储数据库的事务日志,以便系统在出现系统故障和介质故障时能够进行故障恢复。在 DM 数据库运行过程中,任何修改数据库的操作都会产生重做日志,例如,当一条元组插入到一个表中的时候,插入的结果写入了重做日志,当删除一条元组时,删除该元组的事实也被写了进去,这样,当系统出现故障时,通过分析日志可以知道在故障发生前系统做了哪些动作,并可以重做这些动作使系统恢复到故障之前的状态。
2.5 归档日志文件
日志文件分为联机日志文件和归档日志文件。DM 数据库可以在归档模式和非归档模式下运行。非归档模式下,数据库会只将重做日志写入联机日志文件中进行存储;归档模式下,数据库会同时将重做日志写入联机日志文件和归档日志文件中分别进行存储。
联机日志文件指的是系统当前正在使用的日志文件。创建数据库时,联机日志文件通常被扩展至一定长度,其内容则被初始化为空,当系统运行时,该文件逐渐被产生的日志所填充。对日志文件的写入是顺序连续的。然而系统磁盘空间总是有限,系统必须能够循环利用日志文件的空间,为了做到这一点,当所有日志文件空间被占满时,系统需要清空一部分日志以便重用日志文件的空间,为了保证被清空的日志所“保护”的数据在磁盘上是安全的,这里需要引入一个关键的数据库概念——检查点。当产生检查点时,系统将系统缓冲区中的日志和脏数据页都写入磁盘,以保证当前日志所“保护”的数据页都已安全写入磁盘,这样日志文件即可被安全重用。
归档日志文件,就是在归档模式下,重做日志被连续写入到归档日志后,所生成了归档日志文件。归档日志文件以归档时间命名,扩展名默认与初始化数据库时指定的参数 RLOG_POSTFIX_NAME 一致,也可通过 INI 参数 LOG_FILE_POSTFIX_NAME 指定归档日志文件的扩展名。只有在归档模式下运行时,DM 数据库才会将重做日志写入到归档日志文件中。采用归档模式会对系统的性能产生影响,然而系统在归档模式下运行会更安全,当出现故障时其丢失数据的可能性更小,这是因为一旦出现介质故障,如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点,而如果没有归档日志文件,则只能利用备份进行恢复。
2.6 逻辑日志文件
如果在 DM 数据库上配置了复制功能,复制源就会产生逻辑日志文件。逻辑日志文件是一个流式的文件,它有自己的格式,且不在第一章所述的页,簇和段的管理之下。
逻辑日志文件内部存储按照复制记录的格式,一条记录紧接着一条记录,存储着复制源端的各种逻辑操作。用于发送给复制目的端。详细内容请看“数据复制”章节。
2.7 物理逻辑日志文件
物理逻辑日志,是按照特定的格式存储的服务器的逻辑操作,专门用于 DBMS_LOGMNR 包挖掘获取数据库系统的历史执行语句。当开启记录物理逻辑日志的功能时,这部分日志内容会被存储在重做日志文件中。
要开启物理逻辑日志的功能,需要满足下面两个条件:
首先,要设置 RLOG_APPEND_LOGIC 为 1、2、3 或者 4;
其次,通过设置参数 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 SQL 日志文件
用户在 dm.ini 中配置 SVR_LOG 参数后就会打开 SQL 日志。
SQL 日志文件是一个纯文本文件。命名格式为“dmsql_实例名[_模式名][_用户名][_日期_时间].log”。当 sqllog.ini 中存在多个有效模式名时,日志文件名中会添加“_模式名”,否则不添加;当 sqllog.ini 参数 PART_STOR=1 时,日志文件名中会添加“_用户名”,否则不添加;当 sqllog.ini 参数 SWITCH_MODE 不为 0 时,日志文件名中会添加“_日期_时间”,否则不添加。
SQL 日志文件缺省生成在 DM 安装目录的 log 子目录下面,管理员可通过 sqllog.ini 参数 FILE_PATH 设置其生成路径。
SQL 日志内容包含系统各会话执行的 SQL 语句、参数信息、错误信息等。跟踪日志主要用于分析错误和分析性能问题,基于跟踪日志可以对系统运行状态有一个分析,比如,可以挑出系统现在执行速度较慢的 SQL 语句,进而对其进行优化。
系统中 SQL 日志的缓存是分块循环使用,管理员可根据系统执行的语句情况及压力情况设置恰当的日志缓存块大小及预留的缓冲块个数。当预留块不足以记录系统产生的任务时,系统会分配新的用后即弃的缓存块,但是总的空间大小由 sqllog.ini 参数 BUF_TOTAL_SIZE 控制,管理员可根据实际情况进行设置。
打开 SQL 日志会影响系统的性能,因此一般在需要查错和调优的时候才会打开。缺省情况下系统是关闭 SQL 日志的。若用户需要打开 SQL 日志,同时对日志的实时性并没有严格的要求,又希望系统性能好,此时可以从两方面进行改进:一设置 sqllog.ini 参数 SQL_TRACE_MASK 和 MIN_EXEC_TIME 只记录关注的相关记录,减少日志总量;二设置 sqllog.ini 参数 ASYNC_FLUSH 打开 SQL 日志异步刷盘提高系统性能。
2.10 事件日志文件
事件日志文件记录了 DM 数据库运行时的关键事件。例如:系统启动、关闭、内存申请失败、IO 错误等一些致命错误;数据库运行过程中的日志信息;备份还原过程中备份还原操作的阶段性信息等。
事件日志文件主要用于系统出现严重错误时进行查看并定位问题。事件日志简称 ELOG。事件日志文件随着 DM 数据库服务的运行一直存在。
事件日志文件打印的是中间步骤的信息,所以出现部分缺失属于正常现象。事件日志信息格式为:时间 + 日志类型(INFO/WARNING/ERROR/FATAL)+ 进程(database)+ 进程 ID(P 开头)+ 线程(dm_sql_thd/main_thread 等)+ 日志内容。
初始化过程中产生的 ELOG 会保存在 ELOG_PATH 参数指定的目录下,名称为“dmini+ 日期 + 时间”。例如:dminit20220914090452.log。
系统启动和运行过程中产生的 ELOG 保存在系统 log 目录下。
系统启动时,如遇到 dm.key、dm.ini 不存在等原因无法正常启动,因尚未获取到实例名,因此将生成的事件日志文件命名为“dm_unknown_年月”。例如:dm_unknown_202212。
图 2.2 展示了 ELOG_FLAG 设为 0 时,9 月份的月度日志和分时日志。运行过程中,ELOG 日志文件的生成分两步完成:
第一步,系统将所有 ELOG 内容生成到当月的月度 ELOG 日志文件中,命名为“dm_实例名_年月”。例如:9 月的月度 ELOG 日志文件为 dm_DMSERVER_202209.log。
第二步,当符合 SVR_ELOG_FREQ 切换频率的切换点来临时,系统将月度 ELOG 日志文件中最近生成的(1 月/1 日/1 时)日志,剪切并归档到新的(分月/分日/分时)ELOG 日志文件中,命名为“dm*实例名*日期_整点”,其中后缀中的整点为该日志首条记录的时间。不论切换频率为月、日或时,切换的时间点均为某时 0 分。例如:设置 SVR_ELOG_FREQ=2 按小时进行切换,则归档后的分时 ELOG 日志文件名为 dm_DMSERVER_20220914_09.log。
通过查询动态视图 V$ELOG_FILE 可以获得当前实例的日志文件的信息。可以使用系统过程 SP_ELOG_FILE_DELETE 删除指定文件名的 ELOG 日志文件。