DM 标准单机安装手册

DM安装实施文档

DM8 linux 单机

  1. 安装前准备
    1. 环境确认

确认项

版本

说明

操作系统版本

[root@VM-20-13-centos ~]# uname -a

Linux VM-20-13-centos 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

服务器内存

2G

服务器存储空间

40G

数据库安装包

dm8_20210712_x86_rh6_64_ent_8.1.2.38_pack1.iso

是否有授权文件

    1. 安装前配置规划

安装选项

建议值

备注

数据库操作系统用户

user:dmdba  group:dinstall

实例名

DM

数据库实例名

PORT

5236

默认端口5236

数据库字符集

UTF8

UTF8或GBK

页大小

32K

数据库最小I/O单位

簇大小

32

簇中页的个数

大小写是否敏感

大小写敏感

大小写敏感,如果不加“”默认全部转换成大写。

数据库安装目录

/home/dmdba/dmdbms

数据库软件安装目录

数据文件路径

/dmdata

数据文件、redolog文件和控制文件存放路径。建议和数据库软件安装路径分开存放

归档日志文件路径

/dmarch

归档文件路径

归档路径大小

100G

备份路径

/dmbk

备份文件路径

备份策略

  1. DM8单机的安装配置
    1. 关闭防火墙

firewall-cmd --state  --查看防火墙状态

systemctl stop firewalld.service  --关闭防火墙服务

systemctl disable firewalld.service  --禁止开机启动

    1. 关闭selinux

# vim /etc/sysconfig/selinux

把 SELINUX=enforcing  替换为: SELINUX=disabled

重启操作系统

    1. 创建用户和用户组

以root用户登录到

groupadd dinstall

groupadd -g 12349 dinstall

useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba

passwd dmdba

    1.  修改内核参数

vi /etc/systemd/system.conf

DefaultLimitCORE=infinity

DefaultLimitNOFILE=100000

DefaultLimitNPROC=100000

vim /etc/security/limits.conf

文件末尾添加如下内容:

dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc  65536
dmdba hard nproc  65536
dmdba soft stack  65536
dmdba hard stack  65536

 然后重启服务器

    1. 创建所需目录并授权

[root@L602PC01 inspur]$mkdir /dmdata

[root@L602PC01 inspur]$mkdir /dmarch

[root@L602PC01 inspur]$mkdir /dmbk

[root@L602PC01 inspur]$chown dmdba:dinstall /dmdata -R

[root@L602PC01 inspur]$chown dmdba:dinstall /dmarch -R

[root@L602PC01 inspur]$chown dmdba:dinstall /dmbk -R

    1. 挂在镜像文件

挂在安装镜像

mount -o loop /home/dmdba/dm8_setup_rh6_64_ent_8.1.1.76_20200422.iso  /mnt

    1. 配置.bash_profile

[dmdba@L602PC01 ~]$ vi .bash_profile

####################### KDB #########################

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/dmdba/dmdbms/bin"

export DM_HOME="/home/dmdba/dmdbms"

export PATH=$PATH:/home/dmdba/dmdbms/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin

source .bash_profile 使环境变量生效

    1. 命令行安装数据库软件

[dmdba@VM-20-13-centos mnt]$cd /mnt

[dmdba@VM-20-13-centos mnt]$ ./DMInstall.bin -i 

Please select the installer's language (E/e:English C/c:Chinese) [E/e]:C

解压安装程序..........

欢迎使用达梦数据库安装程序

是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n  

是否设置时区? (Y/y:是 N/n:否) [Y/y]:y

设置时区:

[ 1]: GTM-12=日界线西

[ 2]: GTM-11=萨摩亚群岛

[ 3]: GTM-10=夏威夷

[ 4]: GTM-09=阿拉斯加

[ 5]: GTM-08=太平洋时间(美国和加拿大)

[ 6]: GTM-07=亚利桑那

[ 7]: GTM-06=中部时间(美国和加拿大)

[ 8]: GTM-05=东部部时间(美国和加拿大)

[ 9]: GTM-04=大西洋时间(美国和加拿大)

[10]: GTM-03=巴西利亚

[11]: GTM-02=中大西洋

[12]: GTM-01=亚速尔群岛

[13]: GTM=格林威治标准时间

[14]: GTM+01=萨拉热窝

[15]: GTM+02=开罗

[16]: GTM+03=莫斯科

[17]: GTM+04=阿布扎比

[18]: GTM+05=伊斯兰堡

[19]: GTM+06=达卡

[20]: GTM+07=曼谷,河内

[21]: GTM+08=中国标准时间

[22]: GTM+09=汉城

[23]: GTM+10=关岛

[24]: GTM+11=所罗门群岛

[25]: GTM+12=斐济

[26]: GTM+13=努库阿勒法

[27]: GTM+14=基里巴斯

请选择设置时区 [21]:

安装类型:

1 典型安装

2 服务器

3 客户端

4 自定义

请选择安装类型的数字序号 [1 典型安装]:

所需空间: 1181M

请选择安装目录 [/home/dmdba/dmdbms]:

可用空间: 28G

是否确认安装路径(/home/dmdba/dmdbms)? (Y/y:是 N/n:否)  [Y/y]:y

安装前小结

安装位置: /home/dmdba/dmdbms

所需空间: 1181M

可用空间: 28G

版本信息:

有效日期:

安装类型: 典型安装

是否确认安装? (Y/y:是 N/n:否):y

2022-03-15 15:21:24

[INFO] 安装达梦数据库...

2022-03-15 15:21:24

[INFO] 安装 基础 模块...

2022-03-15 15:21:28

[INFO] 安装 服务器 模块...

2022-03-15 15:21:28

[INFO] 安装 客户端 模块...

2022-03-15 15:21:35

[INFO] 安装 驱动 模块...

2022-03-15 15:21:37

[INFO] 安装 手册 模块...

2022-03-15 15:21:37

[INFO] 安装 服务 模块...

2022-03-15 15:21:38

[INFO] 移动日志文件。

2022-03-15 15:21:38

[INFO] 安装达梦数据库完成。

请以root系统用户执行命令:

/home/dmdba/dmdbms/script/root/root_installer.sh

安装结束

[dmdba@VM-20-13-centos mnt]$

在root用户下执行

/home/dmdba/dmdbms/script/root/root_installer.sh

    1. 初始化数据库

创建数据库相关文件,包括日志文件、系统表空间数据文件等

注:无特殊要求页大小32,簇大小32,大小写敏感,UTF-8

dmdba用户下执行        

[dmdba@VM-20-13-centos mnt]$ dminit PATH=/dmdata PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=2048 CHARSET=0 CASE_SENSITIVE=Y

initdb V8

db version: 0x7000c

file dm.key not found, use default license!

License will expire on 2022-07-09

Normal of FAST

Normal of DEFAULT

Normal of RECYCLE

Normal of KEEP

Normal of ROLL

 log file path: /dmdata/DAMENG/DAMENG01.log

 log file path: /dmdata/DAMENG/DAMENG02.log

write to dir [/dmdata/DAMENG].

create dm database success. 2022-03-15 15:28:31

[dmdba@VM-20-13-centos mnt]$

         

    1. 创建实例服务

需要在root用户下执行脚本注册服务

  1. -dm_ini指定dm.ini文件位置
  2. -t 指定服务类型
  3. -p 服务宁后缀

su - root

[root@VM-20-13-centos root]# ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/DAMENG/dm.ini -p DMSERVER

Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service to /usr/lib/systemd/system/DmServiceDMSERVER.service.

创建服务(DmServiceDMSERVER)完成

启动服务-切回到dmdba用户

/home/dmdba/dmdbms/script/root

[dmdba@VM-20-13-centos root]$ DmServiceDMSERVER start

Starting DmServiceDMSERVER:                                [ OK ]

[dmdba@VM-20-13-centos root]$

    1. 数据库参数优化

实例优化脚本,要求内存大于2否则不会输出调整参数

脚本中需要调整的参数

/*
 **************************************************************************
 * *
 * Auto parameter adjustment 2.6 *
 * [November 16, 2021 ]
 * Written by Mr. Huanghaiming *
 * Take effect after restart dmserver
 * *
 **************************************************************************
*/
declare
exec_mode int:= 1;   --0表示直接执行脚本修改参数,1表示不直接修改参数,打印设置参数的语句,设置为1后,必须调整v_mem_mb和v_cpus
mem_per int:= 60;   --默认所有的内存归达梦数据库使用,如实际不能100%可用,可以调整此参数
v_mem_mb int:= 1837; --根据机器实际内存调整此参数
v_cpus int:= 2;       --根据机器实际CPU核数调整此参数

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;
  -- 如果选择立即执行参数修改,内存和cpu的值需要从系统视图中查询获得
    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);
	-- 如果计算后的内存值小于2G 直接采用默认设置
	IF v_mem_mb <= 2000  THEN
	  goto return_2000;
	END IF;
	-- 如果计算后的内存值大于500G ,在计算结果基础上再*0.8
	IF v_mem_mb > 512000 THEN  
	   v_mem_mb :=v_mem_mb*0.8;
	END IF;
	-- 设置共享内存池上限值,取值为分配数据库内存值*0.12
	MEMORY_TARGET=round(cast(v_mem_mb * 0.12 as int),-3);
	
	-- 任务线程数个数和I/O 线程组个数设置
	TASK_THREADS :=4;
	IO_THR_GROUPS :=4;
	--如果cpu核数小于8 设置任务线程数为4,I/O线程组个数设置为2
	IF v_cpus < 8  THEN   
	  TASK_THREADS :=4;
	  IO_THR_GROUPS :=2;
	END IF;
	-- 如果CPU核数大于等于64 设置任务线程数为16,I/O线程组个数设置为8(都是默认值)
	IF v_cpus >= 64 THEN 
	   v_cpus := 64; 
	   TASK_THREADS :=16;
	   IO_THR_GROUPS :=8;
	END IF;
	
	
-- 缓冲区设置,缓冲区的值设置为数据库总共内存值的40%	
	
	BUFFER := round(cast(v_mem_mb * 0.4 as int),-3);
	MAX_BUFFER := BUFFER;
-- 回收区设置为 数据库总内存的4%
	RECYCLE :=cast(v_mem_mb * 0.04 as int);
	
-- 计算buffer_pools 值,大于70G时 BUFFER_POOLS为101 ,RECYCLE_POOLS为41. 
--小于70G时 首选计算100以内的质数,然后取大于v_mem_mb/800的第一个质数,平均每800M一个BUFFER_POOLS
  IF v_mem_mb < 70000 THEN
-- 求100以内的质数	
       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
        )
      --计算最接近v_mem_mb/800的质数
      select top 1 rn into BUFFER_POOLS from t1 where rn > v_mem_mb/800 order by 1;

	  --设置根据内存情况RECYCLE_POOLS参数,计算方法是BUFFER_POOLS值再除以3
		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;
    
   
	
	--修改内存池
	--数据库内存大于等于16G时,设置方式
	IF v_mem_mb >= 16000  THEN 
	--数据库内存等于16G时的,共享内存池初始大小设置为1500M,排序全局内存使用上限1000M,共享内存池划分为3个内存取
	--sql缓冲池大小512M:SQL 缓冲区提供在执行 SQL 语句过程中所需要的内存,包括计划、SQL 语句和结果集缓存
	   IF v_mem_mb= 16000 THEN
	      MEMORY_POOL := 1500;  
	      SORT_BUF_GLOBAL_SIZE := 1000;
		  MEMORY_N_POOLS := 3;
		  CACHE_POOL_SIZE := 512;
	   ELSE
	   --大于16G时设置方法
	      MEMORY_POOL := 2000;
	      SORT_BUF_GLOBAL_SIZE := 2000;
		  MEMORY_N_POOLS := 11;
		  CACHE_POOL_SIZE := 1024;
	   END IF;
	   
	   --快速缓冲区页数9999
	   FAST_POOL_PAGES :=9999;
	   --排序机制标识位
	   SORT_FLAG = 0;
	   --新排序机制下每个排序分区大小
	   SORT_BLK_SIZE=1;
	   --排序缓冲区总大小
	   SORT_BUF_SIZE := 10;
	   --日志缓冲区大小
	   RLOG_POOL_SIZE := 1024;
	   --hash join 缓冲区总大小
	   HJ_BUF_GLOBAL_SIZE := LEAST(cast(v_mem_mb * 0.0625 as int),10000);
	   --HAGR、DIST、集合操作、SPL2、NTTS2 以及HTAB 操作符的数据总缓存大小
	   HAGR_BUF_GLOBAL_SIZE := LEAST(cast(v_mem_mb * 0.0625 as int),10000);
	   --单个hash join占用内存最大大小
	   HJ_BUF_SIZE  :=250;
	   --单个hager DIST操作占用内存大小
       HAGR_BUF_SIZE :=250;
     --临时表空间缓存大小
       RECYCLE :=round(RECYCLE,-3);
	   --当数据库内存大于等于64G时,快速缓冲区页数和快速缓冲区回滚页数是指为99999和9999,缓冲区值减小3G ,sql缓冲区2G,redo缓冲区2G,
	   --采用新的排序机制,新排序机制单个排序占1M,就排序机制单个内存50M
	   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; 
	      --新排序机制下排序内存上限为数据库内存的2%
	      SORT_BUF_GLOBAL_SIZE= cast(v_mem_mb * 0.02 as int); 
	      --hash join内存是总内存的15.626%,hagr、dist类型内存占数据库内存的4%
	      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;
          --共享内存池个数为59
		  MEMORY_N_POOLS := 59;
	   END IF;
	   --数据字典缓冲区设置为50M
	   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
	--数据库内存大于2G小于16G时的内存参数设置
	   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;	
	
	
	--备份现有的系统参数到BAK_DMINI_表中
	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
		--修改cpu相关参数
		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);
        --修改内存检测参数为1		
		SP_SET_PARA_VALUE(2,'MEMORY_MAGIC_CHECK',       1);
		
		--非DSC环境将ENABLE_FREQROOTS设置为1,注意DM7 v$instance视图没有dsc_role字段,DM7这部分可以删掉
		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);
		
		--修改fast_pool相关参数
		SP_SET_PARA_VALUE(2,'FAST_POOL_PAGES',     FAST_POOL_PAGES);	
		SP_SET_PARA_VALUE(2,'FAST_ROLL_PAGES',     FAST_ROLL_PAGES);
		
		--修改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',       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); 
		--不打开sql日志
		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);
		--建表语句制定逐渐是是否默认转换为cluster ,0不转换 
		SP_SET_PARA_VALUE(2,'PK_WITH_CLUSTER',		0); 
		--通讯加密方式0不加密 1 ssl,但是不强制 2、SSL如果服务器不配置则不能启动,客户端不配置则不能连接
		SP_SET_PARA_VALUE(2,'ENABLE_ENCRYPT',0); 
		
		--修改优化器相关参数
		--是否开启联机事务分析 0 不开启 1开启 2 不开启,同时默认走全表扫描
		SP_SET_PARA_VALUE(2,'OLAP_FLAG',2); 
		
		SP_SET_PARA_VALUE(2,'VIEW_PULLUP_FLAG',1);  
		--优化器模式1 新优化器模式
		SP_SET_PARA_VALUE(2,'OPTIMIZER_MODE',1); 
		--是否启用自适应执行计划 0 不启用
		SP_SET_PARA_VALUE(2,'ADAPTIVE_NPLN_FLAG',0); 
		
		--开启并行PURGE
		SP_SET_PARA_VALUE(2,'PARALLEL_PURGE_FLAG',1);
		--开启手动并行
		SP_SET_PARA_VALUE(2,'PARALLEL_POLICY',2);
		--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);
		

	ELSE
		--修改cpu相关参数
		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||');';
		
		--修改fast_pool相关参数
		PRINT 'SP_SET_PARA_VALUE(2,''FAST_POOL_PAGES'',     '||FAST_POOL_PAGES||');';	
		PRINT 'SP_SET_PARA_VALUE(2,''FAST_ROLL_PAGES'',     '||FAST_ROLL_PAGES||');';
		
		--修改内存检测参数为1		
		PRINT 'SP_SET_PARA_VALUE(2,''MEMORY_MAGIC_CHECK'',       1);';
		--非DSC环境将ENABLE_FREQROOTS设置为1,注意DM7 v$instance视图没有dsc_role字段,DM7这部分可以删掉
		if exists(select 1 from v$instance where dsc_role = 'NULL') then
        PRINT 'SP_SET_PARA_VALUE(2,''ENABLE_FREQROOTS'',        1);'; 
        end if;
		
		--修改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'',       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);';
		
		--开启并行PURGE
		PRINT 'SP_SET_PARA_VALUE(2,''PARALLEL_PURGE_FLAG'',1);';
		--开启手动并行
		PRINT 'SP_SET_PARA_VALUE(2,''PARALLEL_POLICY'',2);';
		--UNDO_RETENTION如果放大,可以适当调大UNDO_EXTENT_NUM。负载高的时候,减少文件系统的申请/释放操作。
		PRINT 'SP_SET_PARA_VALUE(2,''UNDO_EXTENT_NUM'',16);';
		--开启SQL 注入HINT功能
		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;


 

执行脚本

SQL> set serveroutput on

SQL> start /home/dmdba/AutoParaAdj.sql

将脚本输出结果单独执行。

执行完成后重新启动服务

DmServiceDMSERVER restart

    1. 开启归档

需要在mount下执行归档开启操作

  1. 要保证路径权限正确
  2. 要保证space_limit值小于实际空间大小

alter database mount;
alter database add archivelog 'dest=/dmarch,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=10240';
alter database archivelog;
alter database open;

SQL> alter database mount;

操作已执行

已用时间: 342.600(毫秒). 执行号:0.

SQL> alter database add archivelog 'dest=/dmarch,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=10240';

操作已执行

已用时间: 3.715(毫秒). 执行号:0.

SQL> alter database archivelog;

操作已执行

已用时间: 6.661(毫秒). 执行号:0.

SQL> alter database open;

操作已执行

已用时间: 408.518(毫秒). 执行号:0.

SQL>

    1. 验证

默认创建的实例,管理员用户 SYSDBA 的密码为 SYSDBA ,实例端口为 5236,字符集为 GB18030,大小写敏感。

登录数据库:disql SYSDBA/SYSDBA@localhost:5236

查询实例状态:select * from v$instance;

    1. 制定备份策略

通过DM 控制台工具图形化安装

命令行备份方式如下:

说明:每月第一个周六23:00全量备份。每天(除周六)23:00增量备份、删除30天前的增量备份、删除40天前的全量备份

注意:开归档、在bak目录下手动创建all、add文件夹

全量备份路径:/dmbak/all

增量备份路径:/dmbak/add

全量备份

call SP_CREATE_JOB('bakall',1,0,'',0,0,'',0,'每月第一个周六23:00全量备份');

call SP_JOB_CONFIG_START('bakall');

call SP_ADD_JOB_STEP('bakall', 'bakall', 6, '01020000/opt/dmdbms/data/DAMENG/bak/all', 1, 1, 0, 0, NULL, 0);

call SP_ADD_JOB_SCHEDULE('bakall', 'bakall_time01', 1, 4, 1, 7, 0, '23:00:00', NULL, '2019-01-01 01:01:01', NULL, '');

call SP_JOB_CONFIG_COMMIT('bakall');

增量备份+删除备份

call SP_CREATE_JOB('bakadd_delbak',1,0,'',0,0,'',0,'每天(除周六)23:00增量备份、删除30天前的增量备份、删除40天前的全量备份');

call SP_JOB_CONFIG_START('bakadd_delbak');

call SP_ADD_JOB_STEP('bakadd_delbak', 'bakadd', 6, '11020000/opt/dmdbms/data/DAMENG/bak/all|/opt/dmdbms/data/DAMENG/bak/add', 3, 1, 0, 0, NULL, 0);

call SP_ADD_JOB_STEP('bakadd_delbak', 'delbak', 0, 'SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/opt/dmdbms/data/DAMENG/bak/add'');

CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'',SYSDATE-30);

SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/opt/dmdbms/data/DAMENG/bak/all'');

CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'',SYSDATE-40);', 1, 1, 0, 0, NULL, 0);

call SP_ADD_JOB_SCHEDULE('bakadd_delbak', 'bakadd_delbak_time01', 1, 2, 1, 63, 0, '23:00:00', NULL, '2019-01-01 01:01:01', NULL, '');

call SP_JOB_CONFIG_COMMIT('bakadd_delbak')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值