1.1部署规划

单机部署规划

IP规划:

主机名

服务ip

数据库名

实例名

dmdb

192.169.154.128

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

实例安装目录

/dm8/

归档日志存放目录

/dm8/arch

备份文件存放目录

/dm8/dmbak/

1.2 数据库软件安装

单机上安装数据库软件:

1.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.%p
vm.swappiness=10
vm.dirty_background_ratio = 0
vm.min_free_kbytes = 2097152

使参数生效,执行

sysctl -p

新建数据库管理用户和组

执行以下命令,新建用户组 dinstall。

groupadd dinstall -g 2001

执行以下命令,新建用户 dmdba。

useradd  -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba

执行以下命令,修改 dmdba 用户密码。

passwd dmdba

Hn@dameng123

修改用户资源限制

执行以下命令,修改 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

1.2.2数据库软件安装

1.使用root用户挂载数据库软件的iso文件

mkdir -p /dmiso
mount -o loop dm8_20210924_FTarm_kylin10_sp1_64_sec_8.1.2.70_pack2.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

1.3使用 dminit 工具初始化实例

执行以下命令

dminit path=/dm8 page_size=32 extent_size=32 charset=1 log_size=2048 db_name=dmdb instance_name=dmdb SYSDBA_PWD="Hn@dameng123" SYSAUDITOR_PWD="Hn@dameng123"

注意:

初始化参数中除了 path 参数必须指定,其它参数都有默认值,如果需求与默认值不同,初始化的时候请指定需要的值。因为部分参数初始化后是无法修改的例如:page_size(页大小),charset(字符集),case_sensitive(大小写敏感)等。更多参数./dminit help 查看,是否无法修改的参数可以查询 v$dm_ini 视图,para_type=’READ ONLY’ 表示无法修改。

1.4 注册服务并启动实例

以系统服务方式启动实例,DM 提供脚本将数据库实例注册为操作系统服务。

root 用户下切换到 /home/dmdba/dmdbms/script/root/:

cd /home/dmdba/dmdbms/script/root/

执行以下命令,执行脚本注册服务:

./dm_service_installer.sh -t dmserver -p dmdb -dm_ini /dm8/dmdb/dm.ini

执行以下命令,以服务方式启动实例:

systemctl start DmServicedmdb

1.5 登录数据库

dmdba用户下执行以下命令:

./disql SYSDBA/'"Hn@dameng123"'@localhost:5236

说明:密码使用单引号+双引号包围起来

1.6 归档配置

生产环境必须开启归档日志,且必须限制归档日志保留量,限制方法:

  1. 设置归档空间大小限制即指定 SPACE_LIMIT 参数(单位是 MB)。
  2. 定期删除归档日志(设置定时作业)。

例如开启归档并限制归档空间为 100 G(按实际存储空间给合适的值),如下所示

alter database mount;
 alter database add archivelog 'dest=/dm8/arch ,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=102400';
 alter database archivelog;
 alter database open;

1.7 定制备份策略

根据应用需求,定制备份策略如下所示

备份类型

备份周期

备份时间

全量备份

每周

每周六 23 点

增量备份

每天

除周六外每天 23 点

删除备份

每天

每天 23 点 30

登录数据库执行以下命令,创建作业系统表

SP_INIT_JOB_SYS(1);

全量备份(每周六 23 点全备):其中有1分钟后的一次性全备调度,执行完成后检查备份是否成功。

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/dm8/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/dm8/dmbak|/dm8/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'',''/dm8/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小时,完成数据迁移和统计信息收集。

1.8 配置sql日志

修改sqllog.ini

到实例路径下

cd /dmdata/dmdb/

vi sqllog.ini(记录1.5s以上sql)

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 =