目录一、环境信息二、说点什么三、实操步骤1、用户组创建2、创建逻辑卷3、创建目录并挂载4、开机自动挂载5、赋予目录权限5、自动化部署脚本下载链接6、运行自动化部署脚本1单机部署-兼容Oracle2主备部署-兼容Oracle3单机部署-兼容SQL SERVER7、调参脚本8、其他参数调整9、DSCDG需调整参数10、DG需调整参数一、环境信息名称值CPUX86操作系统Centos 7.9二、说点什么标准化部署保证了数据库性能、稳定的下限也一定程度上避免了事故的发生所以写了这篇文章来记录一下实操的过程。三、实操步骤1、用户组创建groupadd dinstall -g 2000 useradd dmdba -g 2000 -u 2000 echo Dameng123|passwd --stdin dmdba2、创建逻辑卷假设/dev/vdb为达梦使用的数据盘。容量的划分安装实际情况来修改。#查看磁盘 fdisk -l #查看磁盘使用情况 lsblk #创建pv pvcreate /dev/vdb #查看pv pvs #查看lv名称与vg名称 lvs #将磁盘加入现有vg --vgextend /dev/mapper/dm_vg /dev/vdb #创建卷组 vgcreate dm_vg /dev/vdb #查看pv,vg已加入 vgs #创建lv lvcreate -L 50G -n /dev/mapper/dm_vg-lv_dm dm_vg lvcreate -L 50G -n /dev/mapper/dm_vg-lv_dmarch dm_vg lvcreate -L 100G -n /dev/mapper/dm_vg-lv_dmbak dm_vg --lvcreate -L 500G -n /dev/mapper/dm_vg-lv_dmdata dm_vg lvcreate -l 100%FREE -n /dev/mapper/dm_vg-lv_dmdata dm_vg3、创建目录并挂载#创建dm,dmdata目录 cd / mkdir dm mkdir dmdata mkdir dmarch mkdir dmbak #格式化磁盘 mkfs.xfs /dev/mapper/dm_vg-lv_dm mkfs.xfs /dev/mapper/dm_vg-lv_dmdata mkfs.xfs /dev/mapper/dm_vg-lv_dmbak mkfs.xfs /dev/mapper/dm_vg-lv_dmarch #挂载目录 mount /dev/mapper/dm_vg-lv_dm /dm mount /dev/mapper/dm_vg-lv_dmdata /dmdata mount /dev/mapper/dm_vg-lv_dmbak /dmbak mount /dev/mapper/dm_vg-lv_dmarch /dmarch4、开机自动挂载#开机自动挂起 vim /etc/fstab /dev/mapper/dm_vg-lv_dm /dm xfs defaults 0 0 /dev/mapper/dm_vg-lv_dmdata /dmdata xfs defaults 0 0 /dev/mapper/dm_vg-lv_dmbak /dmbak xfs defaults 0 0 /dev/mapper/dm_vg-lv_dmarch /dmarch xfs defaults 0 05、赋予目录权限chown -R dmdba:dinstall /dm chown -R dmdba:dinstall /dmbak chown -R dmdba:dinstall /dmdata chown -R dmdba:dinstall /dmarch5、自动化部署脚本下载链接达梦自动化部署脚本6、运行自动化部署脚本记得把iso安装包拷贝到soft目录下。[rootdw01:/opt/Pkg/soft]# ll 总用量 983436 -rw-r--r-- 1 root root 219 5月 25 13:50 auto_install.xml -rw-rw-rw- 1 root root 1006358528 3月 23 13:52 dm8_20260312_x86_centos7_64.iso -rw-r--r-- 1 root root 27732 5月 25 13:56 dmData.js -rw-r--r-- 1 root root 137688 8月 4 2025 DMReport.html -rw-r--r-x 1 root root 340767 5月 25 13:44 DMShellInstall -rw-r--r-- 1 root root 11545 9月 22 2025 lvm.sh -rw-r--r-- 1 root root 8594 9月 22 2025 parted.sh -rw-r--r-- 1 root root 136163 5月 25 13:56 print_dm_install_20260525134956.log [rootdw01:/opt/Pkg/soft]# pwd /opt/Pkg/soft权限记得给上。chmod ux DMShellInstall1单机部署-兼容Oracle只需改iso安装包名。./DMShellInstall -hn dmdb # 主机名\ -dp Dameng123 # dmdba用户密码\ -d /dm/dmdbms # 软件安装目录\ -dd /dmdata/dmdbms # 数据库文件目录\ -ad /dmarch/dmdbms # 数据库归档目录\ -bd /dmbak/dmdbms # 数据库备份目录\ -dn DAMENG # 数据库名称\ -es 32 # 数据文件簇大小\ -ps 32 # 数据页大小\ -cs Y # 字符串大小写敏感\ -c 0 # 数据库字符集\ -lic N # VARCHAR类型长度是否以字符为单位\ -ls 2048 # 日志文件大小单位M\ -sl 20480 # 归档空间大小\ -pn 5236 # 监听端口号\ -sp Dameng123 # 数据库SYSDBA用户密码\ -bm 2 # 数据库备份模式 1全备 2增量\ -opd Y # 优化数据库参数\ -mp 90 # 优化数据库物理内存占比\ -di dm8_20260417_HWarm_kylin10_sp1_64.iso # 达梦ISO镜像名称\ -iso N # 挂载操作系统ISO镜像\ -cm 2 # 是否兼容其他数据库模式\ -bpm 1 # 设置结尾空格填充模式当等于1时默认兼容ORACLE即[-cm 2]2主备部署-兼容Oracle只需改iso安装包名、IP、root密码密码要用单引号包围。./DMShellInstall -hn dw # 主备主机名前缀\ -dpi 10.xx.xx.xxx,10.xx.xx.xxx # 主备业务IP\ -dmi 10.xx.xx.xxx,10.xx.xx.xxx # 主备MAL IP\ -dgn GRP1 # 数据守护组名\ -mpn 5336 # MAL 监听端口\ -mdpn 5436 # 守护进程端口号\ -midpn 5536 # 实例监听守护进程端口号\ -rp xxxx # 主备 root 用户密码\ -dp Dameng123 # dmdba用户密码\ -d /dm/dmdbms # 软件安装目录\ -dd /dmdata/dmdbms # 数据库文件目录\ -ad /dmarch/dmdbms # 数据库归档目录\ -bd /dmbak/dmdbms # 数据库备份目录\ -dn DAMENG # 数据库名称\ -es 32 # 数据文件簇大小\ -ps 32 # 数据页大小\ -cs Y # 字符串大小写敏感\ -c 0 # 数据库字符集\ -lic N # VARCHAR类型长度是否以字符为单位\ -ls 2048 # 日志文件大小单位M\ -sl 20480 # 归档空间大小\ -pn 5236 # 监听端口号\ -sp Dameng123 # 数据库SYSDBA用户密码\ -bm 2 # 数据库备份模式 1全备 2增量\ -opd Y # 优化数据库参数\ -mp 90 # 优化数据库物理内存占比\ -di dm8_20260417_x86_kylin10_sp1_64.iso # 达梦ISO镜像名称\ -iso N # 挂载操作系统ISO镜像\ -cm 2 # 是否兼容其他数据库模式\ -bpm 1 # 设置结尾空格填充模式当等于1时默认兼容ORACLE即[-cm 2]3单机部署-兼容SQL SERVER字符集编码建议在SQL SERVER查一下--字符集编码 SELECT COLLATIONPROPERTY ( Chinese_PRC_Stroke_CI_AI_KS_WS, CodePage) /* 936 简体中文GBK950 繁体中文BIG5437 美国/加拿大英语 932 日文949 韩文866 俄文65001 unicode UFT-8 */只需改iso安装包名。./DMShellInstall -hn dmdb # 主机名\ -dp Dameng123 # dmdba用户密码\ -d /dm/dmdbms # 软件安装目录\ -dd /dmdata/dmdbms # 数据库文件目录\ -ad /dmarch/dmdbms # 数据库归档目录\ -bd /dmbak/dmdbms # 数据库备份目录\ -dn DAMENG # 数据库名称\ -es 32 # 数据文件簇大小\ -ps 32 # 数据页大小\ -cs Y # 字符串大小写敏感\ -c 0 # 数据库字符集\ -ls 2048 # 日志文件大小单位M\ -sl 20480 # 归档空间大小\ -pn 5236 # 监听端口号\ -sp Dameng123 # 数据库SYSDBA用户密码\ -bm 2 # 数据库备份模式 1全备 2增量\ -opd Y # 优化数据库参数\ -mp 90 # 优化数据库物理内存占比\ -di dm8_20260708_HWarm920_kylin10_sp1_64.iso # 达梦ISO镜像名称\ -iso N # 挂载操作系统ISO镜像\ -cm 3 # 是否兼容其他数据库模式7、调参脚本关注is_dsc 、v_mem_mb、v_cpus、MAX_SESSIONS即可调整完执行运行结果在所有节点运行然后重启数据库服务。/* ************************************************************************** * * * Auto parameter adjustment 5.6 for dm8* * [Jun. 2, 2026] * Take effect after restart dmserver * * ************************************************************************** */ declare --本脚本为安全生产环境设置参数作为参考并不追求极致性能 exec_mode int: 1; --0表示脚本自动获取机器的内存和CPU配置直接执行脚本修改参数1表示不直接修改参数只打印设置参数的语句设置为1后必须调整v_mem_mb和v_cpus is_dsc int : 0; --是否是dsc集群,如果是dsc集群请设置为1将自动调整dsc相关参数 mem_per int: 80; --默认机器80%内存归达梦数据库使用可根据实际需求调整此参数; MAX_OS_MEMORY强制100不与此参数挂钩 v_mem_mb int: 64000; --exec_mode为1时请自行根据机器实际内存调整此参数单位为Mv_mem_mb*(mem_per/100)小于4G,将不做调整 v_cpus int: 64; --exec_mode为1时请自行根据机器实际CPU核数调整此参数 oltp_mode int:0; --并发量较高的OLTP类型系统此参数设置为1并发量不高的一般业务系统和OLAP类的系统此参数设置为0,影响SORT_FLAG和UNDO_RETENTION pk_cluster_mode int:1; --是否使用聚集主键性能要求高且大字段较少的业务场景强烈建议设置为1大字段多的场景设置为0 ini_bak int:0; --是否建一个表备份老的dm.ini,1为保存0为不保存默认不保存 tname varchar(100); MAX_SESSIONS INT :100; --本脚本根据内存参数自动计算能支持的最大连接数MAX_SESSIONS如计算出的MAX_SESSIONS不满足生产要求建议给机器加内存资源 MEMORY_POOL int; MEMORY_N_POOLS int; MEMORY_TARGET int; BUFFER INT; MAX_BUFFER INT; RECYCLE int; CACHE_POOL_SIZE int; BUFFER_POOLS int; RECYCLE_POOLS int; SORT_BUF_SIZE int; SORT_BUF_GLOBAL_SIZE INT; DICT_BUF_SIZE INT:50; HJ_BUF_SIZE INT; HAGR_BUF_SIZE INT; HJ_BUF_GLOBAL_SIZE INT; HAGR_BUF_GLOBAL_SIZE INT; SORT_FLAG INT; SORT_BLK_SIZE INT; RLOG_POOL_SIZE INT; TASK_THREADS INT; IO_THR_GROUPS INT; FAST_POOL_PAGES INT :3000; FAST_ROLL_PAGES INT :1000; UNDO_RETENTION INT :90; VM_POOL_TARGET INT : 8192; SESS_POOL_TARGET INT : 8192; CNT INT; VER0 INT :0; VER1 INT :0; VER2 INT :0; flag INT :0; begin CNT :0; if exec_mode0 then SELECT TOP 1 N_CPU,TOTAL_PHY_SIZE/1024/1024 INTO v_cpus,v_mem_mb FROM V$SYSTEMINFO; end if; if v_mem_mb 128000 then flag:1; end if; v_mem_mb : v_mem_mb * (mem_per/100.0); v_mem_mbround(v_mem_mb,-3); --内存4G以下的不做调整采用默认参数 IF v_mem_mb 4000 THEN goto return_2000; END IF; --MEMORY_TARGETround(cast(v_mem_mb * 0.10 as int),-3); MEMORY_TARGETGREAT(FLOOR(cast(v_mem_mb * 0.10 as int)/1000)*1000,500); TASK_THREADS :4; IO_THR_GROUPS :8; IF v_cpus 64 THEN v_cpus : 64; TASK_THREADS : 16; IO_THR_GROUPS : 32; ELSIF v_cpus 8 THEN IO_THR_GROUPS : 16; TASK_THREADS : 8; ELSE TASK_THREADS : 4; IO_THR_GROUPS : 8; END IF; --BUFFER : round(cast(v_mem_mb * 0.4 as int),-3); BUFFER : FLOOR(cast(v_mem_mb * 0.4 as int)/1000)*1000; RECYCLE :cast(v_mem_mb * 0.04 as int); IF v_mem_mb 70000 THEN with t as ( select rownum rn from dual connect by level 100 ) , t1 as ( select * from t where rn 1 minus select ta.rn * tb.rn from t ta, t tb where ta.rn tb.rn and ta.rn 1 and tb.rn 1 ) select top 1 rn into BUFFER_POOLS from t1 where rn v_mem_mb/800 order by 1; ELSE BUFFER_POOLS : 101; END IF; --修改内存池 IF v_mem_mb 16000 THEN IF v_mem_mb 16000 THEN MEMORY_POOL : 1000; SORT_BUF_GLOBAL_SIZE : 1000; MEMORY_N_POOLS : 3; CACHE_POOL_SIZE : 512; DICT_BUF_SIZE : 256; ELSE MEMORY_POOL : 2000; SORT_BUF_GLOBAL_SIZE : 2000; MEMORY_N_POOLS : 11; CACHE_POOL_SIZE : 1024; DICT_BUF_SIZE : 512; END IF; FAST_POOL_PAGES :9999; SORT_FLAG 0; SORT_BLK_SIZE1; SORT_BUF_SIZE : 10; RLOG_POOL_SIZE : 1024; HJ_BUF_GLOBAL_SIZE : cast(v_mem_mb * 0.0625 as int); HAGR_BUF_GLOBAL_SIZE : cast(v_mem_mb * 0.0625 as int); HJ_BUF_SIZE :250; HAGR_BUF_SIZE :250; IF v_mem_mb 64000 THEN VM_POOL_TARGET : 8192; SESS_POOL_TARGET : 8192; FAST_POOL_PAGES :99999; FAST_ROLL_PAGES :9999; BUFFER :BUFFER-3000; CACHE_POOL_SIZE : 2048; RLOG_POOL_SIZE : 2048; DICT_BUF_SIZE : 1024; SORT_FLAG 0; SORT_BLK_SIZE1; SORT_BUF_SIZE20; SORT_BUF_GLOBAL_SIZE cast(v_mem_mb * 0.04 as int); HJ_BUF_GLOBAL_SIZE : cast(v_mem_mb * 0.1 as int); HAGR_BUF_GLOBAL_SIZE : cast(v_mem_mb * 0.0625 as int); HJ_BUF_SIZE :512; HAGR_BUF_SIZE :512; MEMORY_N_POOLS : 59; IF v_mem_mb 128000 OR flag1 THEN SORT_FLAG 1; SORT_BLK_SIZE1; SORT_BUF_SIZE50; SORT_BUF_GLOBAL_SIZE cast(v_mem_mb * 0.1 as int); END IF; IF v_mem_mb 256000 THEN SORT_FLAG 1; SORT_BLK_SIZE2; SORT_BUF_SIZE50; SORT_BUF_GLOBAL_SIZE cast(v_mem_mb * 0.1 as int); END IF; END IF; HJ_BUF_GLOBAL_SIZE :round(HJ_BUF_GLOBAL_SIZE,-3); HAGR_BUF_GLOBAL_SIZE :round(HAGR_BUF_GLOBAL_SIZE,-3); SORT_BUF_GLOBAL_SIZE :round(SORT_BUF_GLOBAL_SIZE,-3); RECYCLE :round(RECYCLE,-3); ELSE MEMORY_POOL :GREAT(cast(v_mem_mb * 0.0625 as int),100); MEMORY_POOL :round(MEMORY_POOL,-2); MEMORY_N_POOLS : 2; CACHE_POOL_SIZE : 200; RLOG_POOL_SIZE : 256; SORT_BUF_SIZE : 10; SORT_BUF_GLOBAL_SIZE : 500; DICT_BUF_SIZE : 128; SORT_FLAG 0; SORT_BLK_SIZE1; HJ_BUF_GLOBAL_SIZE : round(GREAT(cast(v_mem_mb * 0.0625 as int),500),-2); HAGR_BUF_GLOBAL_SIZE : round(GREAT(cast(v_mem_mb * 0.0625 as int),500),-2); HJ_BUF_SIZE : round(GREAT(cast(v_mem_mb * 0.00625 as int),50),-2); HAGR_BUF_SIZE :round(GREAT(cast(v_mem_mb * 0.00625 as int),50),-2); MAX_SESSIONS :100; VM_POOL_TARGET : 8192; SESS_POOL_TARGET : 8192; END IF; --设置根据RECYCLE情况RECYCLE_POOLS参数 with t as ( select rownum rn from dual connect by level 100 ) , t1 as ( select * from t where rn 1 minus select ta.rn * tb.rn from t ta, t tb where ta.rn tb.rn and ta.rn 1 and tb.rn 1 ) select top 1 rn into RECYCLE_POOLS from t1 where rn great(RECYCLE*1024/3000/(page()/1024),2) order by 1 desc; tname :BAK_DMINI_ || to_char(sysdate,yymmdd); execute IMMEDIATE select count(*) from USER_ALL_TABLES where table_name ? into CNT using tname; if exists(select 1 from V$INSTANCE where MODE$ in (NORMAL,PRIMARY)) then IF CNT0 and ini_bak1 THEN execute IMMEDIATE CREATE TABLE BAK_DMINI_ || to_char(sysdate,yymmdd) || as select *,sysdate uptime from v$dm_ini; ELSE IF CNT1 THEN execute IMMEDIATE INSERT INTO BAK_DMINI_ || to_char(sysdate,yymmdd) || select *,sysdate uptime from v$dm_ini; COMMIT; END IF; END IF; end if; --如果oltp_mode设置为1采用旧的排序模式,undo_relation采用默认值 if oltp_mode1 then SORT_FLAG 0; SORT_BUF_SIZE : 2; end if; --如果oltp_mode设置为0undo_relation适当放大,采用新的排序方法 if oltp_mode0 then UNDO_RETENTION 900; end if; MAX_BUFFER : BUFFER; SELECT TO_NUMBER(SUBSTR(VER,1,2),XX), TO_NUMBER(SUBSTR(VER,5,2),XX), TO_NUMBER(SUBSTR(VER,7,2),XX) into VER0,VER1,VER2 FROM (SELECT RAWTOHEX(CAST(SUBSTR(VER,3) AS INT)) AS VER FROM (SELECT REGEXP_SUBSTR(ID_CODE,[^-],1,1) AS VER)); select round((v_mem_mb-(MEMORY_TARGETBUFFERRECYCLEHJ_BUF_GLOBAL_SIZEHAGR_BUF_GLOBAL_SIZECACHE_POOL_SIZE DICT_BUF_SIZESORT_BUF_GLOBAL_SIZERLOG_POOL_SIZE))/((VM_POOL_TARGETSESS_POOL_TARGET)/1024),-2) into MAX_SESSIONS; MAX_SESSIONS:GREAT(MAX_SESSIONS,100); IF exec_mode0 THEN --修改cpu相关参数 SP_SET_PARA_VALUE(2,WORKER_THREADS,v_cpus); SP_SET_PARA_VALUE(2,IO_THR_GROUPS,IO_THR_GROUPS); --将此参数改为0 SP_SET_PARA_VALUE(2,GEN_SQL_MEM_RECLAIM,0); --修改内存池相关参数 SP_SET_PARA_VALUE(2,MAX_OS_MEMORY, 100); SP_SET_PARA_VALUE(2,MEMORY_POOL, MEMORY_POOL); SP_SET_PARA_VALUE(2,MEMORY_N_POOLS, MEMORY_N_POOLS); SP_SET_PARA_VALUE(2,MEMORY_TARGET, MEMORY_TARGET); --修改内存检测参数为1 SP_SET_PARA_VALUE(2,MEMORY_MAGIC_CHECK, 1); --修改缓冲区相关参数 SP_SET_PARA_VALUE(2,BUFFER, BUFFER); --新版本已去掉MAX_BUFFER参数如果存在就修改 IF EXISTS (SELECT * FROM V$DM_INI WHERE PARA_NAMEMAX_BUFFER) THEN SP_SET_PARA_VALUE(2,MAX_BUFFER, MAX_BUFFER); END IF; SP_SET_PARA_VALUE(2,BUFFER_POOLS, BUFFER_POOLS); SP_SET_PARA_VALUE(2,RECYCLE, RECYCLE); SP_SET_PARA_VALUE(2,RECYCLE_POOLS, RECYCLE_POOLS); --修改fast_pool相关参数如果是dsc环境适当放小以免影响启动速度 IF is_dsc 1 THEN SP_SET_PARA_VALUE(2,FAST_POOL_PAGES, 10000); SP_SET_PARA_VALUE(2,FAST_ROLL_PAGES, 3000); SP_SET_PARA_VALUE(2,TASK_THREADS, 16); SP_SET_PARA_VALUE(2,DSC_INSERT_LOCK_ROWS, 0); ELSE SP_SET_PARA_VALUE(2,FAST_POOL_PAGES, FAST_POOL_PAGES); SP_SET_PARA_VALUE(2,FAST_ROLL_PAGES, FAST_ROLL_PAGES); SP_SET_PARA_VALUE(2,TASK_THREADS,TASK_THREADS); --如果不是dsc环境开启热页动态加载关闭预读 SP_SET_PARA_VALUE(2,ENABLE_FREQROOTS,1); SP_SET_PARA_VALUE(2,MULTI_PAGE_GET_NUM,1); SP_SET_PARA_VALUE(2,PRELOAD_SCAN_NUM,0); SP_SET_PARA_VALUE(2,PRELOAD_EXTENT_NUM,0); END IF; --修改HASH相关参数 SP_SET_PARA_VALUE(1,HJ_BUF_GLOBAL_SIZE, HJ_BUF_GLOBAL_SIZE); SP_SET_PARA_VALUE(1,HJ_BUF_SIZE, HJ_BUF_SIZE ); SP_SET_PARA_VALUE(1,HAGR_BUF_GLOBAL_SIZE,HAGR_BUF_GLOBAL_SIZE); SP_SET_PARA_VALUE(1,HAGR_BUF_SIZE, HAGR_BUF_SIZE ); --修改排序相关参数 SP_SET_PARA_VALUE(2,SORT_FLAG,SORT_FLAG); SP_SET_PARA_VALUE(2,SORT_BLK_SIZE,SORT_BLK_SIZE); SP_SET_PARA_VALUE(2,SORT_BUF_SIZE, SORT_BUF_SIZE); SP_SET_PARA_VALUE(2,SORT_BUF_GLOBAL_SIZE, SORT_BUF_GLOBAL_SIZE); --修改其他内存参数 SP_SET_PARA_VALUE(2,RLOG_POOL_SIZE, RLOG_POOL_SIZE); SP_SET_PARA_VALUE(2,CACHE_POOL_SIZE, CACHE_POOL_SIZE); SP_SET_PARA_VALUE(2,DICT_BUF_SIZE, DICT_BUF_SIZE); SP_SET_PARA_VALUE(2,VM_POOL_TARGET, VM_POOL_TARGET); SP_SET_PARA_VALUE(2,SESS_POOL_TARGET, SESS_POOL_TARGET); --修改实例相关参数 SP_SET_PARA_VALUE(2,USE_PLN_POOL, 1); SP_SET_PARA_VALUE(2,ENABLE_MONITOR, 1); SP_SET_PARA_VALUE(2,SVR_LOG, 0); SP_SET_PARA_VALUE(2,TEMP_SIZE, 1024); SP_SET_PARA_VALUE(2,TEMP_SPACE_LIMIT, 102400); SP_SET_PARA_VALUE(2,MAX_SESSIONS, MAX_SESSIONS); SP_SET_PARA_VALUE(2,MAX_SESSION_STATEMENT, 20000); --性能要求高且大字段较少的业务场景建议设置为1大字段多的场景设置为0 if pk_cluster_mode 1 then SP_SET_PARA_VALUE(2,PK_WITH_CLUSTER,1); else SP_SET_PARA_VALUE(2,PK_WITH_CLUSTER,0); end if; SP_SET_PARA_VALUE(2,ENABLE_ENCRYPT,0); --修改优化器相关参数 SP_SET_PARA_VALUE(2,OLAP_FLAG,2); SP_SET_PARA_VALUE(2,OPTIMIZER_MODE,1); SP_SET_PARA_VALUE(2,ADAPTIVE_NPLN_FLAG,0); --禁用索引监控和位图索引 SP_SET_PARA_VALUE(2,MONITOR_INDEX_FLAG,2); SP_SET_PARA_VALUE(2,ENABLE_CREATE_BM_INDEX_FLAG,0); IF VER08 and VER10 AND VER13 AND VER2163 THEN SP_SET_PARA_VALUE(2,OPTIMIZER_OR_NBEXP,0); END IF; --3.175之前的版本BIND_PARAM_OPT_FLAG参数改为0 IF VER08 and VER10 AND VER13 AND VER2175 THEN SP_SET_PARA_VALUE(2,BIND_PARAM_OPT_FLAG,0); END IF; IF VER08 and VER10 AND VER13 AND VER2153 THEN IF EXISTS (SELECT * FROM V$DM_INI WHERE PARA_NAME GROUP_OPT_FLAG and DEFAULT_VALUE60) THEN SP_SET_PARA_VALUE(2,GROUP_OPT_FLAG,52); END IF; END IF; IF EXISTS (SELECT * FROM V$DM_INI WHERE PARA_NAME MEM_POOL_EXTEND_MODE) THEN SP_SET_PARA_VALUE(2,MEM_POOL_EXTEND_MODE,0); END IF; --8.1.4.189以前的版本OPERATION_NEW_MOTION参数改为0隐藏参数 IF VER08 and VER10 AND VER14 AND VER2189 THEN PRINT -- 8.1.4.189以前的版本OPERATION_NEW_MOTION参数改为0隐藏参数需要在dm.ini中添加 OPERATION_NEW_MOTION0; END IF; -- V8.1.4.111以前的版本HASH_JOIN_LOOP_TIMES参数改为1隐藏参数 IF VER08 and VER10 AND VER14 AND VER2111 THEN PRINT -- V8.1.4.111以前的版本HASH_JOIN_LOOP_TIMES参数改为1隐藏参数需要在dm.ini中添加 HASH_JOIN_LOOP_TIMES1; END IF; --开启并行PURGE SP_SET_PARA_VALUE(2,PARALLEL_PURGE_FLAG,1); --开启手动并行 SP_SET_PARA_VALUE(2,PARALLEL_POLICY,2); SP_SET_PARA_DOUBLE_VALUE(2,UNDO_RETENTION,UNDO_RETENTION); --UNDO_RETENTION如果放大可以适当调大UNDO_EXTENT_NUM。负载高的时候减少文件系统的申请/释放操作。 SP_SET_PARA_VALUE(2,UNDO_EXTENT_NUM,16); --开启SQL 注入HINT功能 SP_SET_PARA_VALUE(2,ENABLE_INJECT_HINT,1); SP_SET_PARA_VALUE(2,FAST_LOGIN,1); SP_SET_PARA_VALUE(2,BTR_SPLIT_MODE,1); --关闭参数监控 SP_SET_PARA_VALUE(2,ENABLE_MONITOR_BP,0); --SLCT_OPT_FLAG参数设置为0 IF EXISTS (SELECT * FROM V$DM_INI WHERE PARA_NAMESLCT_OPT_FLAG) THEN SP_SET_PARA_VALUE(1,SLCT_OPT_FLAG,0); END IF; IF is_dsc 1 THEN SP_SET_PARA_VALUE(2,ENABLE_FREQROOTS,0); SP_SET_PARA_VALUE(2,BUFFER_MODE,1); SP_SET_PARA_VALUE(2,FAST_RW_LOCK,2); --DSC关闭数据页预加载参数 SP_SET_PARA_VALUE(2,MULTI_PAGE_GET_NUM,1); SP_SET_PARA_VALUE(2,PRELOAD_SCAN_NUM,0); SP_SET_PARA_VALUE(2,PRELOAD_EXTENT_NUM,0); SP_SET_PARA_VALUE(2,DSC_N_POOLS,MEMORY_N_POOLS); IF EXISTS (SELECT * FROM V$DM_INI WHERE PARA_NAMEDSC_GBS_REVOKE_OPT) THEN SP_SET_PARA_VALUE(2,DSC_GBS_REVOKE_OPT,0); END IF; SP_SET_PARA_VALUE(2,DSC_HALT_SYNC,0); SP_SET_PARA_VALUE(2,DSC_N_CTLS,50000); SP_SET_PARA_VALUE(2,DSC_ENABLE_MONITOR,0); SP_SET_PARA_VALUE(2,TRX_DICT_LOCK_NUM,5); SP_SET_PARA_VALUE(2,DIRECT_IO,1); END IF; ELSE --修改cpu相关参数 PRINT SP_SET_PARA_VALUE(2,WORKER_THREADS,||v_cpus||);; PRINT SP_SET_PARA_VALUE(2,IO_THR_GROUPS,||IO_THR_GROUPS||);; PRINT SP_SET_PARA_VALUE(2,GEN_SQL_MEM_RECLAIM,0);; --修改内存池相关参数 PRINT SP_SET_PARA_VALUE(2,MAX_OS_MEMORY, ||100||);; PRINT SP_SET_PARA_VALUE(2,MEMORY_POOL, ||MEMORY_POOL||);; PRINT SP_SET_PARA_VALUE(2,MEMORY_N_POOLS, ||MEMORY_N_POOLS||);; PRINT SP_SET_PARA_VALUE(2,MEMORY_TARGET, ||MEMORY_TARGET||);; --修改缓冲区相关参数 PRINT SP_SET_PARA_VALUE(2,BUFFER, ||BUFFER||);; --新版本已去掉MAX_BUFFER参数如果存在就修改 IF EXISTS (SELECT * FROM V$DM_INI WHERE PARA_NAMEMAX_BUFFER) THEN PRINT SP_SET_PARA_VALUE(2,MAX_BUFFER, ||MAX_BUFFER||);; END IF; PRINT SP_SET_PARA_VALUE(2,BUFFER_POOLS, ||BUFFER_POOLS||);; PRINT SP_SET_PARA_VALUE(2,RECYCLE, ||RECYCLE||);; PRINT SP_SET_PARA_VALUE(2,RECYCLE_POOLS, ||RECYCLE_POOLS||);; --修改fast_pool相关参数如果是dsc环境适当放小以免影响启动速度 IF is_dsc 1 THEN PRINT SP_SET_PARA_VALUE(2,FAST_POOL_PAGES, 10000);; PRINT SP_SET_PARA_VALUE(2,FAST_ROLL_PAGES, 3000);; PRINT SP_SET_PARA_VALUE(2,TASK_THREADS, 16);; PRINT SP_SET_PARA_VALUE(2,DSC_INSERT_LOCK_ROWS, 0);; ELSE PRINT SP_SET_PARA_VALUE(2,FAST_POOL_PAGES, ||FAST_POOL_PAGES||);; PRINT SP_SET_PARA_VALUE(2,FAST_ROLL_PAGES, ||FAST_ROLL_PAGES||);; --如果不是dsc环境开启热页动态加载关闭预读 PRINT SP_SET_PARA_VALUE(2,ENABLE_FREQROOTS,1);; PRINT SP_SET_PARA_VALUE(2,MULTI_PAGE_GET_NUM,1);; PRINT SP_SET_PARA_VALUE(2,PRELOAD_SCAN_NUM,0);; PRINT SP_SET_PARA_VALUE(2,PRELOAD_EXTENT_NUM,0);; PRINT SP_SET_PARA_VALUE(2,TASK_THREADS,||TASK_THREADS||);; END IF; --修改内存检测参数为1 PRINT SP_SET_PARA_VALUE(2,MEMORY_MAGIC_CHECK, 1);; --修改HASH相关参数 PRINT SP_SET_PARA_VALUE(1,HJ_BUF_GLOBAL_SIZE, ||HJ_BUF_GLOBAL_SIZE||);; PRINT SP_SET_PARA_VALUE(1,HJ_BUF_SIZE, ||HJ_BUF_SIZE||);; PRINT SP_SET_PARA_VALUE(1,HAGR_BUF_GLOBAL_SIZE,||HAGR_BUF_GLOBAL_SIZE||);; PRINT SP_SET_PARA_VALUE(1,HAGR_BUF_SIZE, ||HAGR_BUF_SIZE||);; --修改排序相关参数 PRINT SP_SET_PARA_VALUE(2,SORT_FLAG,||SORT_FLAG||);; PRINT SP_SET_PARA_VALUE(2,SORT_BLK_SIZE,||SORT_BLK_SIZE||);; PRINT SP_SET_PARA_VALUE(2,SORT_BUF_SIZE, ||SORT_BUF_SIZE||);; PRINT SP_SET_PARA_VALUE(2,SORT_BUF_GLOBAL_SIZE, ||SORT_BUF_GLOBAL_SIZE||);; --修改其他内存参数 PRINT SP_SET_PARA_VALUE(2,RLOG_POOL_SIZE, ||RLOG_POOL_SIZE||);; PRINT SP_SET_PARA_VALUE(2,CACHE_POOL_SIZE, ||CACHE_POOL_SIZE||);; PRINT SP_SET_PARA_VALUE(2,DICT_BUF_SIZE, ||DICT_BUF_SIZE||);; PRINT SP_SET_PARA_VALUE(2,VM_POOL_TARGET, ||VM_POOL_TARGET||);; PRINT SP_SET_PARA_VALUE(2,SESS_POOL_TARGET, ||SESS_POOL_TARGET||);; --修改实例相关参数 PRINT SP_SET_PARA_VALUE(2,USE_PLN_POOL, 1);; PRINT SP_SET_PARA_VALUE(2,ENABLE_MONITOR, 1);; PRINT SP_SET_PARA_VALUE(2,SVR_LOG, 0);; PRINT SP_SET_PARA_VALUE(2,TEMP_SIZE, 1024);; PRINT SP_SET_PARA_VALUE(2,TEMP_SPACE_LIMIT, 102400);; PRINT SP_SET_PARA_VALUE(2,MAX_SESSIONS, ||MAX_SESSIONS||);; PRINT SP_SET_PARA_VALUE(2,MAX_SESSION_STATEMENT, 20000);; --性能要求高且大字段较少的业务场景建议设置为1大字段多的场景设置为0 if pk_cluster_mode 1 then PRINT SP_SET_PARA_VALUE(2,PK_WITH_CLUSTER, 1);; else PRINT SP_SET_PARA_VALUE(2,PK_WITH_CLUSTER, 0);; end if; PRINT SP_SET_PARA_VALUE(2,ENABLE_ENCRYPT,0);; --修改优化器相关参数 PRINT SP_SET_PARA_VALUE(2,OLAP_FLAG,2);; PRINT SP_SET_PARA_VALUE(2,OPTIMIZER_MODE,1);; PRINT SP_SET_PARA_VALUE(2,ADAPTIVE_NPLN_FLAG,0);; --禁用索引监控和位图索引 PRINT SP_SET_PARA_VALUE(2,MONITOR_INDEX_FLAG,2);; PRINT SP_SET_PARA_VALUE(2,ENABLE_CREATE_BM_INDEX_FLAG,0);; --3.163 之前的版本OPTIMIZER_OR_NBEXP不能包含16 IF VER08 and VER10 AND VER13 AND VER2163 THEN PRINT SP_SET_PARA_VALUE(2,OPTIMIZER_OR_NBEXP,0);; END IF; --3.175之前的版本BIND_PARAM_OPT_FLAG参数改为0 IF VER08 and VER10 AND VER13 AND VER2175 THEN PRINT SP_SET_PARA_VALUE(2,BIND_PARAM_OPT_FLAG,0);; END IF; --3.153 之前的版本GROUP_OPT_FLAG不能包含8 IF VER08 and VER10 AND VER13 AND VER2153 THEN IF EXISTS (SELECT * FROM V$DM_INI WHERE PARA_NAME GROUP_OPT_FLAG and DEFAULT_VALUE60) THEN PRINT SP_SET_PARA_VALUE(2,GROUP_OPT_FLAG,52);; END IF; END IF; IF EXISTS (SELECT * FROM V$DM_INI WHERE PARA_NAME MEM_POOL_EXTEND_MODE) THEN PRINT SP_SET_PARA_VALUE(2,MEM_POOL_EXTEND_MODE,0);; END IF; --开启并行PURGE PRINT SP_SET_PARA_VALUE(2,PARALLEL_PURGE_FLAG,1);; --开启手动并行 PRINT SP_SET_PARA_VALUE(2,PARALLEL_POLICY,2);; PRINT SP_SET_PARA_DOUBLE_VALUE(2,UNDO_RETENTION,||UNDO_RETENTION||);; --UNDO_RETENTION如果放大可以适当调大UNDO_EXTENT_NUM。负载高的时候减少文件系统的申请/释放操作。 PRINT SP_SET_PARA_VALUE(2,UNDO_EXTENT_NUM,16);; --开启INJECT HINT功能 PRINT SP_SET_PARA_VALUE(2,ENABLE_INJECT_HINT,1);; PRINT SP_SET_PARA_VALUE(2,BTR_SPLIT_MODE,1);; PRINT SP_SET_PARA_VALUE(2,FAST_LOGIN,1);; --关闭参数监控 PRINT SP_SET_PARA_VALUE(2,ENABLE_MONITOR_BP,0);; --SLCT_OPT_FLAG参数设置为0 IF EXISTS (SELECT * FROM V$DM_INI WHERE PARA_NAMESLCT_OPT_FLAG) THEN PRINT SP_SET_PARA_VALUE(1,SLCT_OPT_FLAG,0);; END IF; IF is_dsc 1 THEN PRINT SP_SET_PARA_VALUE(2,ENABLE_FREQROOTS,0);; PRINT SP_SET_PARA_VALUE(2,BUFFER_MODE,1);; PRINT SP_SET_PARA_VALUE(2,FAST_RW_LOCK,2);; --DSC环境下统一关闭数据页预加载参数 PRINT SP_SET_PARA_VALUE(2,MULTI_PAGE_GET_NUM,1);; PRINT SP_SET_PARA_VALUE(2,PRELOAD_SCAN_NUM,0);; PRINT SP_SET_PARA_VALUE(2,PRELOAD_EXTENT_NUM,0);; PRINT SP_SET_PARA_VALUE(2,DSC_N_POOLS, ||MEMORY_N_POOLS ||);; IF EXISTS (SELECT * FROM V$DM_INI WHERE PARA_NAMEDSC_GBS_REVOKE_OPT) THEN PRINT SP_SET_PARA_VALUE(2,DSC_GBS_REVOKE_OPT,0);; END IF; PRINT SP_SET_PARA_VALUE(2,DSC_HALT_SYNC,0);; PRINT SP_SET_PARA_VALUE(2,DSC_N_CTLS,50000);; PRINT SP_SET_PARA_VALUE(2,DSC_ENABLE_MONITOR,0);; PRINT SP_SET_PARA_VALUE(2,TRX_DICT_LOCK_NUM,5);; PRINT SP_SET_PARA_VALUE(2,DIRECT_IO,1);; END IF; --8.1.4.189以前的版本OPERATION_NEW_MOTION参数改为0隐藏参数 IF VER08 and VER10 AND VER14 AND VER2189 THEN PRINT -- 8.1.4.189以前的版本OPERATION_NEW_MOTION参数改为0隐藏参数需要在dm.ini中添加 OPERATION_NEW_MOTION0; END IF; -- V8.1.4.111以前的版本HASH_JOIN_LOOP_TIMES参数改为1隐藏参数 IF VER08 and VER10 AND VER14 AND VER2111 THEN PRINT -- V8.1.4.111以前的版本HASH_JOIN_LOOP_TIMES参数改为1隐藏参数需要在dm.ini中添加 HASH_JOIN_LOOP_TIMES1; END IF; END IF; select MEMORY_TARGETBUFFERRECYCLEHJ_BUF_GLOBAL_SIZEHAGR_BUF_GLOBAL_SIZECACHE_POOL_SIZE DICT_BUF_SIZESORT_BUF_GLOBAL_SIZERLOG_POOL_SIZEMAX_SESSIONS*((VM_POOL_TARGETSESS_POOL_TARGET)/1024); exception when others then raise_application_error (-20001,substr( 执行失败, ||SQLCODE|| ||SQLERRM|| ||dbms_utility.format_error_backtrace , 1, 400)); return_2000 null; end; /8、其他参数调整记得重启数据库服务。sp_set_para_value(2,BATCH_PARAM_OPT,0); sp_set_para_value(2,BEXP_CALC_ST_FLAG,0); sp_set_para_value(1,OPERATION_NEW_MOTION,23); sp_set_para_string_value(2,LOG_FILE_POSTFIX_NAME,log); sp_set_para_value(2,ENABLE_MONITOR_BP,0); sp_set_para_value(2,BAK_SAFE_CHECK,1); sp_set_para_value(2,GDB_THREAD_INFO,1); sp_set_para_value(2,CORE_DUMP_FLAG,1);9、DSCDG需调整参数sp_set_para_value(1,INI_SYNC,0); -- DSCDG需调整10、DG需调整参数sp_set_para_value(1,REDOS_BUF_NUM,0); sp_set_para_value(1,REDOS_BUF_SIZE,5120);