DM安装实施文档
DM8 linux 单机
确认项 |
版本 |
说明 |
操作系统版本 |
[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 |
|
是否有授权文件 |
否 |
安装选项 |
建议值 |
备注 |
数据库操作系统用户 |
user:dmdba group:dinstall |
|
实例名 |
DM |
数据库实例名 |
PORT |
5236 |
默认端口5236 |
数据库字符集 |
UTF8 |
UTF8或GBK |
页大小 |
32K |
数据库最小I/O单位 |
簇大小 |
32 |
簇中页的个数 |
大小写是否敏感 |
大小写敏感 |
大小写敏感,如果不加“”默认全部转换成大写。 |
数据库安装目录 |
/home/dmdba/dmdbms |
数据库软件安装目录 |
数据文件路径 |
/dmdata |
数据文件、redolog文件和控制文件存放路径。建议和数据库软件安装路径分开存放 |
归档日志文件路径 |
/dmarch |
归档文件路径 |
归档路径大小 |
100G |
|
备份路径 |
/dmbk |
备份文件路径 |
备份策略 |
firewall-cmd --state --查看防火墙状态
systemctl stop firewalld.service --关闭防火墙服务
systemctl disable firewalld.service --禁止开机启动
# vim /etc/sysconfig/selinux 把 SELINUX=enforcing 替换为: SELINUX=disabled 重启操作系统 |
以root用户登录到
groupadd dinstall
groupadd -g 12349 dinstall
useradd -u 12345 -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba
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
然后重启服务器
[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 |
挂在安装镜像
mount -o loop /home/dmdba/dm8_setup_rh6_64_ent_8.1.1.76_20200422.iso /mnt
[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 使环境变量生效
[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
创建数据库相关文件,包括日志文件、系统表空间数据文件等
注:无特殊要求页大小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]$
需要在root用户下执行脚本注册服务
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]$
实例优化脚本,要求内存大于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));
<> null;
end;
执行脚本
SQL> set serveroutput on
SQL> start /home/dmdba/AutoParaAdj.sql
将脚本输出结果单独执行。
执行完成后重新启动服务
DmServiceDMSERVER restart
需要在mount下执行归档开启操作
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>
默认创建的实例,管理员用户 SYSDBA 的密码为 SYSDBA ,实例端口为 5236,字符集为 GB18030,大小写敏感。
登录数据库:disql SYSDBA/SYSDBA@localhost:5236
查询实例状态:select * from v$instance;
通过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')