达梦数据库-学习-61-标准化部署
目录一、环境信息二、说点什么三、实操步骤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);

相关新闻

读半导体简史04晶体管

读半导体简史04晶体管

1. 雷达1.1. Watson-Watt1.1.1. 英国的科学家Watson-Watt在研究“死光”的过程中,发现使用电磁波可以定位飞行器1.1.2. 1935年2月,他向英国军方展示了这一成果,雷达从这一刻起正式诞生,并受到了极大的关注1.2. 在第二次世界大战中…

2026/8/10 16:35:53 阅读更多 →
AES-ECB模式安全漏洞实战:从CTF靶场到Python复现攻击链

AES-ECB模式安全漏洞实战:从CTF靶场到Python复现攻击链

1. 项目概述:为什么AES-ECB会成为CTF中的“经典靶子”?如果你玩过CTF(Capture The Flag)网络安全竞赛,尤其是Web或Crypto方向的题目,那么“AES-ECB”这个组合对你来说一定不陌生。它就像一个老朋友&#xf…

2026/8/10 6:22:49 阅读更多 →
分布式任务调度:远程启动Ability实战(65)

分布式任务调度:远程启动Ability实战(65)

在鸿蒙(HarmonyOS)生态中,分布式任务调度的核心思想是“把合适的任务,交给合适的设备去做”。开发者无需关心底层的网络连接、设备发现或断线重连,只需通过构造包含远端设备标识的 Want 对象,即可将任务分发…

2026/8/10 17:57:56 阅读更多 →

最新新闻

17-线上Bug热修复流程:紧急分支、补丁合并、版本快速回退方案

17-线上Bug热修复流程:紧急分支、补丁合并、版本快速回退方案

17-线上Bug热修复流程:紧急分支、补丁合并、版本快速回退方案 前言 大家好,我是黒漂技术佬。 线上出 Bug 这种事,就像你正吃着火锅唱着歌,突然接到电话说"柜子门打不开了"。炸不炸?慌不慌?别急&a…

2026/8/13 0:01:10 阅读更多 →
15-SaaS系统灰度发布:滚动更新、金丝雀发布、不停机迭代

15-SaaS系统灰度发布:滚动更新、金丝雀发布、不停机迭代

15-SaaS系统灰度发布:滚动更新、金丝雀发布、不停机迭代 一、为什么需要不停机发布? 传统发布方式:停服务 → 替换包 → 启服务。在内部系统里勉强能用,但在SaaS系统中是灾难。 我们的无人售货柜SaaS平台服务全国几千台设备&#…

2026/8/13 0:01:10 阅读更多 →
电商毛利率别再手动算了!2026年3种自动分析工具实测对比

电商毛利率别再手动算了!2026年3种自动分析工具实测对比

一、开篇:毛利率——电商运营最该盯但最难盯的指标 电商运营中有一个指标,几乎所有老板都会问,但几乎所有运营都回答得不够确定——毛利率。不是"店铺毛利率",而是"每条链接的毛利率""每个品类的毛利率…

2026/8/13 0:01:10 阅读更多 →
14-Docker镜像版本管理:微服务镜像标签规范、版本留存与清理

14-Docker镜像版本管理:微服务镜像标签规范、版本留存与清理

14-Docker镜像版本管理:微服务镜像标签规范、版本留存与清理 一、为什么镜像标签需要规范? 先看一个反面教材: registry/smart-agri/user-service:latest registry/smart-agri/user-service:latest registry/smart-agri/user-service:v1 regi…

2026/8/13 0:01:10 阅读更多 →
2026好用的ai做网站工具推荐,你更看好哪一个?

2026好用的ai做网站工具推荐,你更看好哪一个?

2026好用的ai做网站工具推荐,你更看好哪一个?艾瑞咨询《2026年中国企业数字化建站行业白皮书》显示,国内AI建站渗透率已破68%,但抽样超1200家中小企业里,仅31%在生成站点后半年仍持续续费且搜索流量正向增长。某东莞五…

2026/8/13 0:01:10 阅读更多 →
KubeVela实战深度解析:构建现代化云原生应用交付平台的终极指南

KubeVela实战深度解析:构建现代化云原生应用交付平台的终极指南

KubeVela实战深度解析:构建现代化云原生应用交付平台的终极指南 【免费下载链接】kubevela The Modern Application Platform. 项目地址: https://gitcode.com/gh_mirrors/ku/kubevela 在当今混合多云环境中,应用交付面临着前所未有的复杂性挑战。…

2026/8/13 0:00:09 阅读更多 →

日新闻

Visual Studio新建项目解决方案为空:系统性排查与修复指南

Visual Studio新建项目解决方案为空:系统性排查与修复指南

1. 问题现象与本质剖析如果你是一位.NET开发者,或者正准备踏入这个领域,那么Visual Studio(后面简称VS)绝对是你绕不开的伙伴。但有时候,这个伙伴会跟你开一个不大不小的玩笑:你满怀期待地点击“创建新项目…

2026/8/13 0:00:09 阅读更多 →
长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

长春建设厅网站:普通人买房办事必看的真实指南与避坑攻略

说实话,每次提起“长春建设厅网站”这几个字,我心里都挺有感触的。不是因为它有多高大上,也不是因为那里藏着什么不可告人的秘密,恰恰相反,是因为它太“接地气”了,或者说,它是咱们普通人想要在这个城市好好生活、安稳买房时,必须得翻过的一座“数据山”。很多新朋友第…

2026/8/13 0:00:09 阅读更多 →
Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案

Windows家庭版远程桌面多用户破解完整指南:RDPWrap终极解决方案 【免费下载链接】rdpwrap.ini RDPWrap.ini for RDP Wrapper Library by StasM 项目地址: https://gitcode.com/GitHub_Trending/rd/rdpwrap.ini 你是否曾为Windows家庭版无法支持多用户远程桌面…

2026/8/13 0:00:09 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/12 1:11:09 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 1:11:09 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/12 1:11:08 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/11 17:09:45 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/12 1:11:10 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/11 17:09:45 阅读更多 →