1.部署规划
单机部署规划
IP规划:
| 主机名 | 服务ip | 数据库名 | 实例名 |
|---|---|---|---|
| dmdb | dmdb |
端口规划:
| 实例名 | 实例端口 |
|---|---|
| dmdb | 5236 |
本地存储LVM磁盘规划:(按实际需求调整磁盘空间)
| 磁盘 | LVM磁盘名/用途 |
|---|---|
| /dev/sdc(100G) | /dev/dmappvg/dmapplv (数据库安装磁盘) |
| /dev/sde(500G) | /dev/dmdatavg/dmdatalv (数据磁盘) |
| /dev/sdf(500G) | /dev/dmbakvg/dmbaklv (备份磁盘) |
目录规划:(在对应服务器上创建目录owner为dmdba组为dinstall)
| 目录名 | 目录 |
|---|---|
| 数据库软件安装目录 | /home/dmdba/dmdbms |
| 实例安装目录 | /dmdata/ |
| 归档日志存放目录 | /dmdata/arch |
| 备份文件存放目录 | /dmdata/dmbak/ |
2 数据库软件安装
单机上安装数据库软件
2.1 操作系统配置
修改内核参数
vi /etc/sysctl.conf
添加以下内容
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
kernel.core_pattern = /dmdata/core.dmdb.%e_%p_%t
vm.swappiness=10
vm.dirty_background_ratio = 0
vm.min_free_kbytes = 2097152
使参数生效,执行
sysctl -p
新建数据库管理用户和组
执行以下命令,新建用户组 dinstall。
groupadd dinstall -g 2001
执行以下命令,新建用户组 dmdba。
groupadd dmdba -g 2002
执行以下命令,新建用户 dmdba。
useradd -g dinstall -G dmdba -m -d /home/dmdba -s /bin/bash -u 2001 dmdba
执行以下命令,修改 dmdba 用户密码。
passwd dmdba
此处使用Hn@d****g123
修改用户资源限制
执行以下命令,修改 dmdba 用户资源限制。
vim /etc/security/limits.conf
文件末尾添加如下内容:
dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
此外需要检查/etc/security/limits.d/目录下是否有其他限制资源的配置文件,如果有也需要修改。
执行以下命令,修改 dmdba 用户环境变量。
vi /home/dmdba/.bash_profile
文件末尾添加如下内容:
export DM_HOME=/home/dmdba/dmdbms
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
2.2数据库软件安装
1.使用root用户挂载数据库软件的iso文件
mkdir -p /dmiso
mount -o loop dm8_20200930_x86_rh6_64_ent_8.1.1.134.iso /dmiso
2.使用dmdba用户安装软件
su - dmdba
执行以下命令,切换到 /dmiso 目录下
cd /dmiso
执行 DMInstall.bin 文件开始安装,选择【-i】参数以命令行方式安装。
./DMInstall.bin -i
选择安装程序的语言 c/C 为中文,e/E 为英文。
提示是否安装 key 文件,输入 N 跳过。
选择时区,21 即东 8 区。
选择安装类型,默认典型安装(包含所有内容)。
选择软件安装目录,默认/home/dmdba/dmdbms
确认安装
安装完成提示使用root执行脚本:
/home/dmdba/dmdbms/script/root/root_installer.sh
3使用 dminit 工具初始化实例
执行以下命令
dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=dmdb instance_name=dmdb SYSDBA_PWD="Hn@d****g123" SYSAUDITOR_PWD="Hn@d****g123"
–安全版需要SYSSSO_PWD=“Hn@d****g123” 参数
注意:
- 1.初始化参数中除了 path 参数必须指定,其它参数都有默认值,如果需求与默认值不同,初始化的时候请指定需要的值。因为部分参数初始化后是无法修改的例如:page_size(页大小),charset(字符集),case_sensitive(大小写敏感)等。
更多参数./dminit help 查看,是否无法修改的参数可以查询 v$dm_ini 视图,para_type=’READ ONLY’ 表示无法修改。 - 2.key与版本一定要匹配,key也是区分企业版和安全版
- 3.SYSDBA、SYSAUDITOR_PWD、SYSSSO_PWD三个用户初始化时都需要设置密码,避免弱口令推荐三种类型及以上(大写、小写、字母、数字等)
4 注册服务并启动实例
以系统服务方式启动实例,DM 提供脚本将数据库实例注册为操作系统服务。
root 用户下切换到 /home/dmdba/dmdbms/script/root/:
cd /home/dmdba/dmdbms/script/root/
执行以下命令,执行脚本注册服务:
./dm_service_installer.sh -t dmserver -p dmdb -dm_ini /dmdata/dmdb/dm.ini
执行以下命令,以服务方式启动实例:
systemctl start DmServicedmdb
5 登录数据库
dmdba用户下执行以下命令:
./disql SYSDBA/'"Hn@d****g123"'@localhost:5236
说明:密码使用单引号+双引号包围起来
安全起见一般就执行:
./disql SYSDBA
然后手动输入密码。
6 归档配置
生产环境必须开启归档日志,且必须限制归档日志保留量,限制方法:
1.设置归档空间大小限制即指定 SPACE_LIMIT 参数(单位是 MB)。
2.定期删除归档日志(设置定时作业)。
例如开启归档并限制归档空间为 100 G(按实际存储空间给合适的值),如下所示
alter database mount;
alter database add archivelog 'dest=/dmdata/arch ,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=102400';
alter database archivelog;
alter database open;
7 定制备份策略
根据应用需求,定制备份策略如下所示
备份类型 备份周期 备份时间
全量备份 每周 每周六 23 点
增量备份 每天 除周六外每天 23 点
删除备份 每天 每天 23 点 30
登录数据库执行以下命令,创建作业系统表
SP_INIT_JOB_SYS(1);
注:否则是没有SYSJOB模式。
全量备份(每周六 23 点全备):其中有1分钟后的一次性全备调度(once),执行完成后检查备份是否成功。
call SP_CREATE_JOB('bakfull',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('bakfull');
call SP_ADD_JOB_STEP('bakfull', 'bak1', 6, '01020000/dmbak', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bakfull', 'std1', 1, 2, 1, 64, 0, '23:00:00', NULL, '2021-11-01 21:17:22', NULL, '');
call SP_ADD_JOB_SCHEDULE('bakfull', 'once', 1, 0, 0, 0, 0, NULL, NULL, sysdate+1/1440, NULL, '');
call SP_JOB_CONFIG_COMMIT('bakfull');
增量备份(每周除周六外每天 23 点增量备份):
call SP_CREATE_JOB('bakincr',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('bakincr');
call SP_ADD_JOB_STEP('bakincr', 'bak2', 6, '41010000/dmbak|/dmbak', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bakincr', 'std2', 1, 2, 1, 63, 0, '23:00:00', NULL, '2021-11-01 21:19:30', NULL, '');
call SP_JOB_CONFIG_COMMIT('bakincr');
备份定期删除(每天 23:30 删除 14 天前备份):
call SP_CREATE_JOB('delbak',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('delbak');
call SP_ADD_JOB_STEP('delbak','bak1',0, 'SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/dmdata/dmbak'');call sp_db_bakset_remove_batch(''DISK'',now()-14);', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('delbak', 'del01', 1, 1, 1, 0, 0, '23:30:00', NULL, '2020-11-02 14:48:41', NULL, '');
call SP_JOB_CONFIG_COMMIT('delbak');
另外添加自动收集统计信息的任务(每天1点收集全库统计信息)
call SP_CREATE_JOB('statistics',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('statistics');
call SP_ADD_JOB_STEP('statistics', 'statistics1', 0, 'begin
for rs in (select ''sf_set_SESSION_para_value(''''HAGR_HASH_SIZE'''',(select cast(
case when max(table_rowcount(owner,table_name))<=(select max_value from v$dm_ini
where para_Name=''''HAGR_HASH_SIZE'''') and max(table_rowcount(owner,table_name))>=(
select min_value from v$dm_ini where para_Name=''''HAGR_HASH_SIZE'''') then
max(table_rowcount(owner,table_name)) when max(table_rowcount(owner,table_name))<(
select min_value from v$dm_ini where para_Name=''''HAGR_HASH_SIZE'''') then
(select min_value from v$dm_ini where para_Name=''''HAGR_HASH_SIZE'''') else
(select max_value from v$dm_ini where para_Name=''''HAGR_HASH_SIZE'''') end as bigint)
from dba_tables where owner=''''''||NAME||''''''));''
sql1,''DBMS_STATS.GATHER_SCHEMA_STATS(''''''||NAME||'''''',100,TRUE,''''FOR ALL COLUMNS SIZE AUTO'''');''
sql2
from SYS.SYSOBJECTS where TYPE$=''SCH'' ) loop
execute immediate rs.sql1;
execute immediate rs.sql2;
end loop;
end;', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('statistics', 'statistics1', 1, 2, 1, 64, 0, '01:00:00', NULL, '2021-06-09 22:54:37', NULL, '');
call SP_JOB_CONFIG_COMMIT('statistics');
说明:每周6凌晨1点开始收集。
注意:上线前,必须提前48小时,完成数据迁移和统计信息收集。
8 数据库参数优化
登录数据库执行最新脚本。(最新脚本需联系达梦获取)
如果服务器上需要创建多个实例,请调整每个实例占用物理内存的百分比,再执行脚本。
注意,执行完成需要重启数据库生效。
9 配置sql日志
修改sqllog.ini
到实例路径下
cd /dmdata/dmdb/
vi sqllog.ini
记录1.5s以上sql(MIN_EXEC_TIME)
BUF_TOTAL_SIZE = 10240
BUF_SIZE = 1024
BUF_KEEP_CNT = 6
[SLOG_ALL]
FILE_PATH = ../log
PART_STOR = 1
SWITCH_MODE = 2
SWITCH_LIMIT = 512
ASYNC_FLUSH = 1
FILE_NUM = 5
ITEMS = 0
SQL_TRACE_MASK = 2:3:25
MIN_EXEC_TIME = 1500
USER_MODE = 0
USERS =
[SLOG_ERROR]
SQL_TRACE_MASK = 23
[SLOG_DDL]
SQL_TRACE_MASK = 3
[SLOG_LONG_SQL]
SQL_TRACE_MASK = 25




