达梦数据库-学习-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/10/17 7:56:24 阅读更多 →
AES-ECB模式安全漏洞实战:从CTF靶场到Python复现攻击链

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

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

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

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

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

2026/10/11 16:15:40 阅读更多 →

最新新闻

第 3 章 环境准备与集群部署

第 3 章 环境准备与集群部署

第 3 章 环境准备与集群部署 章节定位:实操第一章。把前两章立起来的架构图,变成一个能连通、能读写的真实集群——从 Docker 五分钟体验,一路推到生产级分布式部署 + 远程存储 + 协调器高可用 + Lakestream 开关。 版本基线:Fluss 1.0.0 + Flink 2.3(connector fluss-fli…

2026/10/17 7:57:15 阅读更多 →
ROS2焊接机械臂视觉识别与抓取系统设计与实践

ROS2焊接机械臂视觉识别与抓取系统设计与实践

开头做ROS2焊接机械臂做到第六篇,前面几篇如果是按顺序跟下来的,大家应该已经把手臂的建模、运动学、底层控制和基本运动跑通了。到了这一步,很多人会卡在一个问题前面:手臂动起来了,但它怎么知道该去抓什么、在哪儿抓…

2026/10/17 7:57:15 阅读更多 →
AI Agent安全治理实战:动态信任防线与交互安全机制解析

AI Agent安全治理实战:动态信任防线与交互安全机制解析

1. 从一次内部技术分享聊起:AI交互安全到底在解决什么问题前阵子参加了一场小范围的技术沙龙,席间有位做企业安全架构的朋友抛出一个问题:现在公司内部已经有三个团队在跑AI Agent项目,有做智能客服的,有做代码辅助的&…

2026/10/17 7:57:15 阅读更多 →
AI从给答案到替人办事:Anthropic政策调整与智能体合规开发指南

AI从给答案到替人办事:Anthropic政策调整与智能体合规开发指南

1. 从“给答案”到“替人办事”:一次政策修订背后的行业信号“AI 从给答案到替人办事,Anthropic 把使用政策改了一遍”——这个标题第一次出现在我信息流里的时候,我正在调试一个自动化工作流。说实话,当时第一反应不是“哦&#…

2026/10/17 7:57:15 阅读更多 →
AI Agent 交互安全实战:动态信任防线与提示注入防护

AI Agent 交互安全实战:动态信任防线与提示注入防护

1. 从一次内部技术分享聊起:AI Agent 交互安全到底在防什么前阵子参加了一个小范围的技术沙龙,席间有位做企业安全架构的朋友抛出一个问题:现在公司内部已经有十几个 AI Agent 在跑,有的对接客服工单系统,有的直接操作…

2026/10/17 7:57:15 阅读更多 →
WinForm工作流设计器:GDI+自绘、拖拽与性能优化实践

WinForm工作流设计器:GDI+自绘、拖拽与性能优化实践

作为多年来一直在用 C# 做桌面工具开发的人,我陆陆续续做过不少和图形绘制、拖拽交互相关的项目。最近在帮一位同行完善一个工作流引擎的可视化前端时,正好把 WinForm GDI 这套工作流程图设计器从头到尾又梳理了一遍。这个东西看起来就是“画几个框、连…

2026/10/17 7:56:15 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →