达梦8 初始化参数与配置建议

本文详细介绍了如何在CentOS7上初始化和配置达梦数据库,包括使用dminit工具创建数据库实例,设置各种参数如数据页大小、日志文件大小等,并提供了数据库参数优化的SQL脚本。此外,还讲解了数据库的备份、归档和SQL日志的开启方法,确保数据的安全和高效管理。
摘要由CSDN通过智能技术生成

前文我们介绍了怎样在centos7上安装部署达梦数据库。 安装完成后我们可以进行基本的使用,但对于创建达梦数据库时应该怎样选择合适的参数? 出现问题时怎样通过一些工具和日志进行分析? 数据丢失怎样恢复?等等。对于这些问题,我们都需要对初始化数据库时的一些参数进行相应了解。

初始化数据库实例参数介绍

dminit

dminit 是DM 数据库初始化工具。在安装DM 的过程中,用户可以选择是否创建初始数据库。如果当时没有创建,那么在安装完成之后,可以利用创建数据库工具 dminit 来创建。
系统管理员可以利用 dminit 工具提供的各种参数,设置数据库存放路径、段页大小、是否对大小写敏感、以及是否使用 UNICODE 等,创建出满足用户需要的数据库。该工具位 于安装目录的/bin 目录下。
dminit命令位于达梦安装目录/bin, 语法如下:


dminit KEYWORD=value { KEYWORD=value }


dminit 使用较为灵活,参数较多。用户可使用“dminit HELP”快速查看 dminit 版
本信息和各参数信息
image.png

参数列表
参数值说明
INI_FILE初始化文件dm.ini存放的路径。
PATH初始数据库存放的路径
CTL_PATH控制文件路径
LOG_PATH日志文件路径
EXTENT_SIZE数据文件使用的簇大小(16),可选值:16,32,64,单位:页
PAGE_SIZE数据页大小(8),可选值:4,8,16,32 单位K
LOG_SIZE日志文件大小(256),单位为:M,范围为:256M~2G
CASE_SENSITIVE大小敏感(Y),可选值:Y/N,1/0
CHARSET/UNICODE_FLAG字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR]
SEC_PRIV_MODE权限管理模式(0),可选值:0[TRADITION],1[BMJ],2[EVAL],3[ZB]
LENGTH_IN_CHARVARCHAR类型长度是否以字符为单位(N),可选值:Y/N,1/0
SYSDBA_PWD设置SYSDBA密码(SYSDBA)
SYSAUDITOR_PWD设置SYSAUDITOR密码(SYSAUDITOR)
DB_NAME数据库名(DAMENG)
INSTANCE_NAME实例名(DMSERVER)
PORT_NUM监听端口号(5236)
BUFFER系统缓存大小(100),单位M
TIME_ZONE设置时区(+08:00)
PAGE_CHECK页检查模式(0),可选值:0/1/2
PAGE_HASH_NAME设置页检查HASH算法
EXTERNAL_CIPHER_NAME设置默认加密算法
EXTERNAL_HASH_NAME设置默认HASH算法
EXTERNAL_CRYPTO_NAME设置根密钥加密引擎
RLOG_ENCRYPT_NAME设置日志文件加密算法,若未设置,则不加密
USBKEY_PIN设置USBKEY PIN
PAGE_ENC_SLICE_SIZE设置页加密分片大小,可选值:0、512、4096,单位:Byte
ENCRYPT_NAME设置全库加密算法
BLANK_PAD_MODE设置空格填充模式(0),可选值:0/1
SYSTEM_MIRROR_PATHSYSTEM数据文件镜像路径
MAIN_MIRROR_PATHMAIN数据文件镜像
ROLL_MIRROR_PATH回滚文件镜像路径
MAL_FLAG初始化时设置dm.ini中的MAL_INI(0)
ARCH_FLAG初始化时设置dm.ini中的ARCH_INI(0)
MPP_FLAGMpp系统内的库初始化时设置dm.ini中的mpp_ini(0)
CONTROL初始化配置文件(配置文件格式见系统管理员手册)
AUTO_OVERWRITE是否覆盖所有同名文件(0) 0:不覆盖 1:部分覆盖 2:完全覆盖
USE_NEW_HASH是否使用改进的字符类型HASH算法(1)
ELOG_PATH指定初始化过程中生成的日志文件所在路径
AP_PORT_NUM分布式环境下协同工作的监听端口
DFS_FLAG初始化时设置dm.ini中的DFS_INI(0)
DFS_PATH启用dfs时指定数据文件的缺省路径
DFS_HOST指定连接分布式系统DFS的服务地址(localhost)
DFS_PORT指定连接分布式系统DFS的服务端口号(3332)
DFS_COPY_NUM指定分布式系统的副本数(3)
DFS_DB_NAME指定分布式系统的中数据库名(默认与DB_NAME一致)
SHARE_FLAG指定分布式系统中该数据库的共享属性(0)
REGION_MODE指定分布式系统中该数据库的系统表空间数据文件的区块策略(0) 0:微区策略 1:宏区策略
HUGE_WITH_DELTA是否仅支持创建事务型HUGE表(1) 1是 0否
RLOG_GEN_FOR_HUGE是否生成HUGE表REDO日志(0) 1是 0否
PSEG_MGR_FLAG是否仅使用管理段记录事务信息(0) 1是 0否
CHAR_FIX_STORAGECHAR是否按定长存储(N),可选值:Y/N,1/0
SQL_LOG_FORBID是否禁止打开SQL日志(N),可选值:Y/N,1/0
DPC_MODE指定DPC集群中的实例角色(0) 0-无 1-MP 2-BP 3-SP

创建实例与服务:

创建实例:
# 创建一个数据页大小为32、日志文件大小为2g、数据文件簇大小为16、
# 实例名称为DMSERVICE、大小写敏感、数据集采用UTF-8、端口号为5236、
# DBA的密码为xxxx 的数据库实例
cd /dm8/bin
./dminit \
PATH=/dm8/data PAGE_SIZE=32 LOG_SIZE=2048 \
EXTENT_SIZE=16 INSTANCE_NAME=DMSERVICE PORT_NUM=5236 \
CHARSET=1 CASE_SENSITIVE=Y \
SYSDBA_PWD=tqsc123456

# 如果已经存在实例的话创建是不成功的,需要删除已经存在的
# 这里的DmServiceDMSERVER是服务名,改成你自己的
cd /dm8/script/root
./dm_service_uninstaller.sh -n DmServiceDMSERVER
# 切换为达梦用户,删除数据目录, DMDB是我这里的数据目录,改成你自己的
# 删除完成后切换回root用户重新创建实例
su dmdba
cd /dm8/data/
rm -rf DMDB/

创建实例成功页面:

image.png

创建实例服务:
/dm8/script/root/dm_service_installer.sh \
-t dmserver -p DMSERVER \
-dm_ini /dm8/data/DAMENG/dm.ini

# 参数说明
-t 注册服务类型,支持的有dmap、 dmamon、 dmserver 、dmwatcher、dmmonitor 、
dmasmsvr 、 dmcss 、dmcssm、dmdrs、dmdras、dmdcs、dmdss
-p 服务名后缀 指定服务名后缀,生成的操作系统服务名为“服务脚本模 板名称+服务名后缀”
-dm_ini 指定服务所需要的 dm.ini 文件路径。

# 相关命令
systemctl status DmServiceDMSERVER
systemctl start DmServiceDMSERVER
systemctl stop DmServiceDMSERVER
systemctl restart DmServiceDMSERVER

创建实例服务成功页面:

image.png

执行参数优化脚本:

达梦官方提供了数据库参数优化调整的脚本。可下载下来自己修改下执行。
这里主要要修改的有两个参数
v_mem_mb、v_cpus 根据数据库服务器 cpu 核数和物理内存大小进行调整,我这里使用的是两核、8g。
修改后可通过达梦连接工具直接运行脚本

declare
exec_mode int:= 1;   
mem_per int:= 80;   
v_mem_mb int:= 8192; 
v_cpus int:= 2;       

tname varchar(100);
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;
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;
CNT INT;


begin
    CNT :=0;
    if exec_mode=0 then 
	  SELECT TOP 1 N_CPU,TOTAL_PHY_SIZE/1024/1024 INTO v_cpus,v_mem_mb FROM V$SYSTEMINFO;
	end if;
	
	v_mem_mb := v_mem_mb * (mem_per/100.0);
	
	v_mem_mb=round(v_mem_mb,-3);
	
	IF v_mem_mb <= 2000  THEN
	  goto return_2000;
	END IF;
	
	IF v_mem_mb > 512000 THEN  
	   v_mem_mb :=v_mem_mb*0.8;
	END IF;
	
	MEMORY_TARGET=round(cast(v_mem_mb * 0.12 as int),-3);
	
	TASK_THREADS :=4;
	IO_THR_GROUPS :=4;
	IF v_cpus < 8  THEN   
	  TASK_THREADS :=4;
	  IO_THR_GROUPS :=2;
	END IF;
	
	IF v_cpus >= 64 THEN 
	   v_cpus := 64; 
	   TASK_THREADS :=16;
	   IO_THR_GROUPS :=8;
	END IF;
	
	
	
	
	BUFFER := round(cast(v_mem_mb * 0.4 as int),-3);
	MAX_BUFFER := BUFFER;
	
	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;

	  
		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 > v_mem_mb/800/3 order by 1;
      
        
    ELSE
       BUFFER_POOLS := 101;
       RECYCLE_POOLS := 41;
    END IF;
    
   
	
	
	IF v_mem_mb >= 16000  THEN 
	   IF v_mem_mb= 16000 THEN
	      MEMORY_POOL := 1500;
	      SORT_BUF_GLOBAL_SIZE := 1000;
		  MEMORY_N_POOLS := 3;
		  CACHE_POOL_SIZE := 512;
	   ELSE
	      MEMORY_POOL := 2000;
	      SORT_BUF_GLOBAL_SIZE := 2000;
		  MEMORY_N_POOLS := 11;
		  CACHE_POOL_SIZE := 1024;
	   END IF;
	   
	   FAST_POOL_PAGES :=9999;
	   SORT_FLAG = 0;
	   SORT_BLK_SIZE=1;
	   SORT_BUF_SIZE := 10;
	   RLOG_POOL_SIZE := 1024;
	   
	   HJ_BUF_GLOBAL_SIZE := LEAST(cast(v_mem_mb * 0.0625 as int),10000);
	   HAGR_BUF_GLOBAL_SIZE := LEAST(cast(v_mem_mb * 0.0625 as int),10000);
	   HJ_BUF_SIZE  :=250;
       HAGR_BUF_SIZE :=250;
       RECYCLE :=round(RECYCLE,-3);
	   
	   IF v_mem_mb >= 64000 THEN
	      FAST_POOL_PAGES :=99999;
	      FAST_ROLL_PAGES :=9999;
	      BUFFER :=BUFFER-3000;
	      MAX_BUFFER :=BUFFER;
	      CACHE_POOL_SIZE := 2048;
		  RLOG_POOL_SIZE := 2048;
	      SORT_FLAG = 1;
	      SORT_BLK_SIZE=1;
	      SORT_BUF_SIZE=50; 
	      SORT_BUF_GLOBAL_SIZE= cast(v_mem_mb * 0.02 as int); 
	      
	      HJ_BUF_GLOBAL_SIZE := cast(v_mem_mb * 0.15625 as int);
	      HAGR_BUF_GLOBAL_SIZE := cast(v_mem_mb * 0.04 as int);
	      HJ_BUF_SIZE  :=512;
          HAGR_BUF_SIZE :=512;
		  MEMORY_N_POOLS := 59;
	   END IF;
	   
	   DICT_BUF_SIZE := 50;
       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 := 1;
	   CACHE_POOL_SIZE := 200;
	   RLOG_POOL_SIZE  := 256;
	   SORT_BUF_SIZE := 10;
	   SORT_BUF_GLOBAL_SIZE := 500;
	   DICT_BUF_SIZE := 50;
	   SORT_FLAG = 0;
	   SORT_BLK_SIZE=1;
	   
	   HJ_BUF_GLOBAL_SIZE := GREAT(cast(v_mem_mb * 0.0625 as int),500);
	   HAGR_BUF_GLOBAL_SIZE := GREAT(cast(v_mem_mb * 0.0625 as int),500);
       HJ_BUF_SIZE := GREAT(cast(v_mem_mb * 0.00625 as int),50);
       HAGR_BUF_SIZE :=GREAT(cast(v_mem_mb * 0.00625 as int),50);
	END IF;	
	
	
	
	tname :='BAK_DMINI_' || to_char(sysdate,'yymmdd');
	
	execute IMMEDIATE 'select count(*) from USER_ALL_TABLES where table_name= ?' into CNT using tname;
    IF CNT=0 THEN 
	 execute IMMEDIATE 'CREATE TABLE BAK_DMINI_' || to_char(sysdate,'yymmdd') || ' as select *,sysdate uptime from v$dm_ini';
	ELSE 
	 execute IMMEDIATE  'INSERT INTO  BAK_DMINI_' || to_char(sysdate,'yymmdd') || ' select *,sysdate uptime from v$dm_ini';
	END IF;
	
	
	IF exec_mode=0 THEN
		
		SP_SET_PARA_VALUE(2,'WORKER_THREADS',v_cpus);
		SP_SET_PARA_VALUE(2,'TASK_THREADS',TASK_THREADS);
		SP_SET_PARA_VALUE(2,'IO_THR_GROUPS',IO_THR_GROUPS);
		
		
		
		SP_SET_PARA_VALUE(2,'MAX_OS_MEMORY',       mem_per);
		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);
       		
		SP_SET_PARA_VALUE(2,'MEMORY_MAGIC_CHECK',       1);
		
		
		if exists(select 1 from v$instance where dsc_role = 'NULL') then
           SP_SET_PARA_VALUE(2,'ENABLE_FREQROOTS',        1); 
        end if;
		
		
		
		SP_SET_PARA_VALUE(2,'BUFFER',              BUFFER);
		SP_SET_PARA_VALUE(2,'MAX_BUFFER',          MAX_BUFFER);
		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);
		
		
		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(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',       16384); 
		SP_SET_PARA_VALUE(2,'SESS_POOL_TARGET',       16384); 
		
		
		
		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',        1500); 
		SP_SET_PARA_VALUE(2,'MAX_SESSION_STATEMENT', 20000); 
		SP_SET_PARA_VALUE(2,'PK_WITH_CLUSTER',		0); 
		SP_SET_PARA_VALUE(2,'ENABLE_ENCRYPT',0); 
		
		
		SP_SET_PARA_VALUE(2,'OLAP_FLAG',2); 
		SP_SET_PARA_VALUE(2,'VIEW_PULLUP_FLAG',1);  
		SP_SET_PARA_VALUE(2,'OPTIMIZER_MODE',1); 
		SP_SET_PARA_VALUE(2,'ADAPTIVE_NPLN_FLAG',0); 
		
		
		SP_SET_PARA_VALUE(2,'PARALLEL_PURGE_FLAG',1);
		
		SP_SET_PARA_VALUE(2,'PARALLEL_POLICY',2);
		
		SP_SET_PARA_VALUE(2,'UNDO_EXTENT_NUM',16);
		
		SP_SET_PARA_VALUE(2,'ENABLE_INJECT_HINT',1);
		

	ELSE
		
		PRINT 'SP_SET_PARA_VALUE(2,''WORKER_THREADS'','||v_cpus||');';
		PRINT 'SP_SET_PARA_VALUE(2,''TASK_THREADS'','||TASK_THREADS||');';
		PRINT 'SP_SET_PARA_VALUE(2,''IO_THR_GROUPS'','||IO_THR_GROUPS||');';
		
		
		
		PRINT 'SP_SET_PARA_VALUE(2,''MAX_OS_MEMORY'',       '||mem_per||');';
		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||');';
		PRINT 'SP_SET_PARA_VALUE(2,''MAX_BUFFER'',          '||MAX_BUFFER||');';
		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||');';
		
		
		PRINT 'SP_SET_PARA_VALUE(2,''FAST_POOL_PAGES'',     '||FAST_POOL_PAGES||');';	
		PRINT 'SP_SET_PARA_VALUE(2,''FAST_ROLL_PAGES'',     '||FAST_ROLL_PAGES||');';
		
				
		PRINT 'SP_SET_PARA_VALUE(2,''MEMORY_MAGIC_CHECK'',       1);';
		
		if exists(select 1 from v$instance where dsc_role = 'NULL') then
        PRINT 'SP_SET_PARA_VALUE(2,''ENABLE_FREQROOTS'',        1);'; 
        end if;
		
		
		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'',       16384);';
		PRINT 'SP_SET_PARA_VALUE(2,''SESS_POOL_TARGET'',       16384);';
		
		
		
		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'',        1500);';
		PRINT 'SP_SET_PARA_VALUE(2,''MAX_SESSION_STATEMENT'', 20000);';
		PRINT 'SP_SET_PARA_VALUE(2,''PK_WITH_CLUSTER'',		0);';
		PRINT 'SP_SET_PARA_VALUE(2,''ENABLE_ENCRYPT'',0);';
		
		
		PRINT 'SP_SET_PARA_VALUE(2,''OLAP_FLAG'',2);';
		PRINT 'SP_SET_PARA_VALUE(2,''VIEW_PULLUP_FLAG'',1);';
		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,''PARALLEL_PURGE_FLAG'',1);';
		
		PRINT 'SP_SET_PARA_VALUE(2,''PARALLEL_POLICY'',2);';
		
		PRINT 'SP_SET_PARA_VALUE(2,''UNDO_EXTENT_NUM'',16);';
		
		PRINT 'SP_SET_PARA_VALUE(2,''ENABLE_INJECT_HINT'',1);';
		
		
	END IF;
	
	
	select MEMORY_TARGET+BUFFER+RECYCLE+HJ_BUF_GLOBAL_SIZE+HAGR_BUF_GLOBAL_SIZE+CACHE_POOL_SIZE
	+DICT_BUF_SIZE+SORT_BUF_GLOBAL_SIZE+RLOG_POOL_SIZE;
	exception
      when others then
         raise_application_error (-20001,substr( ' 执行失败, '||SQLCODE||' '||SQLERRM||' '||dbms_utility.format_error_backtrace  , 1, 400));
	
	<<return_2000>> null;
end;

执行脚本:

image.png
将执行结果粘贴出来新打开个窗口再执行
image.png
脚本执行成功后,需要重启数据库后生效。
systemctl restart DmServiceDMSERVER

开启数据归档

概述:

在达梦数据库归档模式下,数据库会同时将重做日志写入联机日志文件和归档日志文件中分别进行存储。采用归档模式会对系统的性能产生影响,然而系统在归档模式下运行会更安全,当出现故障时其丢失数据的可能性更小,这是因为一旦出现介质故障,如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻, 也可以还原到指定的时间点, 而如果没有归档日志文件,则只能利用备份进行恢复。归档还是数据守护功能的核心,数据守护中的备库就是通过重做归档日志中的 REDO 日志来完成与主库的数据同步的
一般生产环境一定要开启,本地和测试环境可以不开,自己进行数据备份。

开启方式
  1. 管理服务器

image.png

  1. 选择系统管理,选择“配置”状态并切换;

image.png

  1. 等待后提示“转换状态成功”,此时数据库切换为mount状态

image.png

  1. 选择“归档配置”,归档模式选择“归档”,点击“+”,配置归档目标,归档类型,文件大小,空间限制大小等信息;

image.png

  1. 选择“系统管理”,选择“打开”状态并切换,点击“确定”,配置归档完成。

image.png

配置数据库SQLLOG日志

  1. 创建日志文件的存放目录 mkdir /dm8/data/DAMENG/log/sqllog -p
  2. 修改配置文件(文件是已经存在的)

vi /dm8/data/DAMENG/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 = /dm8/data/DAMENG/log/sqllog  #sql 日志生成路径
PART_STOR = 0
SWITCH_MODE = 2
SWITCH_LIMIT = 1024  #每个日志文件 1024M
ASYNC_FLUSH = 1
FILE_NUM = 20  #循环收集 20 个可以根据实际情况做调整
ITEMS = 0
SQL_TRACE_MASK = 1
MIN_EXEC_TIME = 0
USER_MODE = 0
USERS =
  1. 在达梦连接工具下执行以下存储过程,开启sql日志,然后检查开启情况

SP_REFRESH_SVR_LOG_CONFIG();
sp_set_para_value(1,‘SVR_LOG’,1);

检查 SVR_LOG 参数:

select * from v$parameter where name like 'SVR_LOG';

image.png

  1. 检查日志是否生成

cd /dm8/data/DAMENG/log/sqllog && ls
image.png

数据库备份

概述

达梦数据库中的数据存储在数据库的物理数据文件中,数据文件按照页、簇和段的方式进行管理,数据页是最小的数据存储单元。任何一个对达梦数据库的操作,其根本都是对某个数据文件页的读写操作。因此,DM 备份的本质就是从数据库文件中拷贝有效的数据页保存到备份集中,这里的有效数据页包括数据文件的描述页和被分配使用的数据页。
数据库备份时,对于不同的数据量,建议采用不同的备份方式。
当数据量小于 100G 时,建议采用每天全量备份方式;
当数据量大于 100G 并且小于 3T 时,建议采用每周的全量 + 每天的增量的备份方式;
当数据量大于 3T 时,备份效率较低,建议修改备份的架构,比如主备集群、备份一体机、或者关键表进行冷备等方式。

操作步骤
  1. 打开图形化界面
  2. 创建代理环境

image.png

  1. 新建作业

image.png
image.png
image.png
image.png
每晚11点30分进行全量备份
image.png

# 每晚11点30分全量备份
call SP_CREATE_JOB('DB_FULL_BACK',1,0,'',0,0,'',0,'定时全量备份');
call SP_JOB_CONFIG_START('DB_FULL_BACK');
call SP_ADD_JOB_STEP('DB_FULL_BACK', 'step01', 6, '/dm/bak', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('DB_FULL_BACK', 'step02', 1, 1, 1, 0, 0, '23:10:12', NULL, '2022-09-07 10:10:12', NULL, '每天晚上11点10分开始全量备份');
call SP_JOB_CONFIG_COMMIT('DB_FULL_BACK');

# 删除10日前的备份
call SP_CREATE_JOB('JOB_DEL_BAK_TIMELY',1,0,'',0,0,'',0,'JOB_DEL_BAK_TIMELY');
call SP_JOB_CONFIG_START('JOB_DEL_BAK_TIMELY');
call SP_ADD_JOB_STEP('JOB_DEL_BAK_TIMELY', 'JOB_DEL_BAK_TIMELY', 0, 'call SF_BAKSET_BACKUP_DIR_ADD(''DISK'', ''/dm/bak'');
call SP_DB_BAKSET_REMOVE_BATCH(''DISK'', NOW()-10);', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('JOB_DEL_BAK_TIMELY', 'JOB_DEL_BAK_TIMELY', 1, 1, 1, 0, 0, '00:00:00', NULL, '2022-09-07 10:10:13', NULL, '');
call SP_JOB_CONFIG_COMMIT('JOB_DEL_BAK_TIMELY');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值