麒麟V10安装部署达梦数据库(单机版)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

麒麟V10安装部署达梦数据库单机安装的安装步骤如下:


1.单机部署过程

1.1部署规划

服务ip数据库名实例名
192.168.0.100dmdbdmdb

端口规划:

实例名实例端口
dmdb5236

目录规划:(在对应服务器上创建目录owner为dmdba组为dinstall)

valueValue
数据库软件安装目录/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 = /dm8/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

修改用户资源限制
执行以下命令,修改 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

使环境变量生效

source  /home/dmdba/.bash_profile 

1.2.2数据库软件安装

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

mkdir -p /dmsoft
mount -o dm8_20230112_HWarm_centos7_64.iso /dmsoft

使用dmdba用户安装软件

su - dmdba

执行以下命令,切换到 /dmsoft目录下

cd /dmsoft

执行 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 case_sensitive=0 log_size=2048 LENGTH_IN_CHAR=1 db_name=dmdb instance_name=dmdb

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

1.4 注册服务并启动实例

以系统服务方式启动实例,DM 提供脚本将数据库实例注册为操作系统服务。
root 用户下切换到 /home/dmdba/dmdbms/script/root/:

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

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

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

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

systemctl start DmServiceDM

1.5 登录数据库

dmdba用户下执行以下命令:

disql SYSDBA/SYSDBA

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

使用dmdba用户创建备份目录

mkdir -p /dm8/dmbak

登录主数据库

disql SYSDBA/SYSDBA

创建作业系统表

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', 'bak01', 6, '00000000/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-07 12:13:00', NULL, '');
call SP_ADD_JOB_SCHEDULE('bakfull', 'once1', 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, '40000000/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, '2022-10-21 14:38:00', 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, '2022-10-21 14:38:00', 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-11-08 14:54:37', NULL, '');
call SP_JOB_CONFIG_COMMIT('statistics');

注意:上线前,必须提前48小时,完成数据迁移和统计信息收集。

检查作业

SELECT * FROM sysjob.sysjobs;

删除作业

call SP_DROP_JOB('delbak');

如有数据迁移,需要收集一下统计信息

select 'DBMS_STATS.GATHER_SCHEMA_STATS('''||username||''',100,TRUE,''FOR ALL COLUMNS SIZE AUTO'');'  from all_users;

查看各表的记录

select t.table_name,t.num_rows from user_tables t

1.8数据库参数优化

登录数据库执行以下脚本,脚本会更新,清获取最新脚本
在这里插入图片描述

如果服务器上需要创建多个实例,请调整每个实例占用物理内存的百分比,再执行脚本。
注意,执行完成需要重启数据库生效。
参数检查

select
        PARA_NAME,
        PARA_VALUE
from
        v$dm_ini
where
        para_name in('FAST_POOL_PAGES', 'ENABLE_FREQROOTS', 'BUFFER', 'RECYCLE', 'MAX_BUFFER', 'MAX_SESSION', 'MAX_SESSION_STATEMENT', 'USE_PLN_POOL', 'OLAP_FLAG', 'OPTIMIZER_MODE', 'VIEW_PULLUP_FLAG', 'MAX_OS_MEMORY', 'BUFFER_POOLS', 'RECYCLE_POOLS', 'HJ_BUF_GLOBAL_SIZE', 'HJ_BUF_SIZE', 'DICT_BUF_SIZE', 'TEMP_SIZE', 'VM_POOL_SIZE', 'SESS_POOL_SIZE', 'CACHE_POOL_SIZE', 'MEMORY_TARGET', 'VM_POOL_TARGET', 'SESS_POOL_TARGET', 'RT_HEAP_TARGET', 'ADAPTIVE_NPLN_FLAG', 'PARALLEL_PURGE_FLAG', 'PARALLEL_POLICY', 'UNDO_EXTENT_NUM', 'ENABLE_INJECT_HINT');

检查字符集、大小写敏感、页大小,VARCHAR长度是否以字符为单位

SELECT ID_CODE,PERMANENT_MAGIC,SF_GET_UNICODE_FLAG() AS CHARSET,SF_GET_CASE_SENSITIVE_FLAG() AS CASE_SENSITIVE,SF_GET_PAGE_SIZE() AS PAGE_SIZE ,SF_GET_LENGTH_IN_CHAR() as LENGTH_IN_CHAR;

ssl登录失败

sp_set_para_value(2,'ENABLE_ENCRYPT',0);

兼容模式

sp_set_para_value(2,'COMPATIBLE_MODE',4);

是否兼容其他数据库模式。0:不兼容,1:兼容 SQL92 标准,2:部分兼容 ORACLE,3:部分兼容 MS SQL SERVER,4:部分兼容 MYSQL,5:兼容 DM6,6:部分兼容 TERADATA

1.9 配置sql日志

修改sqllog.ini到实例路径下

vi /dm8/dmdb/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:28
MIN_EXEC_TIME = 1500
USER_MODE = 0
USERS = 

开启慢日志

SP_SET_PARA_VALUE(1,'SVR_LOG',1);

如果对 sqllog.ini 进行了修改,可通过调用以下函数即时生效,无需重启数据库

SP_REFRESH_SVR_LOG_CONFIG();

1.10迁移信息统计查询

如有数据迁移,需要收集一下统计信息,收集指定用户下所有表所有列的统计信息:

select 'DBMS_STATS.GATHER_SCHEMA_STATS('''||username||''',100,TRUE,''FOR ALL COLUMNS SIZE AUTO'');'  from all_users;

迁移信息统计
–根据指定用户统计用户下的各对象类型和数目

select object_type,count(*) from all_objects where owner='SYSDBA' group by object_type;

–统计指定用户下所有的对象,并记录到新的记录表中

create table dm_objects(obj_owner varchar(100),obj_name varchar(100),obj_type varchar(50));
insert into dm_objects select owner,object_name,object_type from all_objects where  owner='SYSDBA';

–统计所有表及每个表的数据量到表数据记录表

create table dm_tables(tab_owner varchar(100),tab_name varchar(100),tab_count int);
declare
begin
for rec in (select owner,object_name from all_objects where owner='SYSDBA'--用户名
and object_type='TABLE') loop
execute immediate 'insert into dm_tables select '''|| rec.owner ||''','''||
rec.object_name ||''',count(*) from '|| rec.owner || '.' || rec.object_name;
end loop;
end;
select * from dm_tables;

–统计所有视图及视图的数据量到表数据记录表

create table dm_view(tab_owner varchar(100),tab_name varchar(100),tab_count int);
declare
begin
for rec in (select owner,object_name from all_objects where owner='SYSDBA'--用户名
and object_type='VIEW') loop
execute immediate 'insert into dm_view select '''|| rec.owner ||''','''||
rec.object_name ||''',count(*) from '|| rec.owner || '.' || rec.object_name;
end loop;
end;
select * from dm_view;

–统计用户下的全部存储过程

select owner,object_name from all_objects where owner='SYSDBA'--用户名
and object_type='PROCEDURE'

–统计索引

CREATE TABLE SYSDBA.XPDI AS
select
        TABLE_OWNER TAO,
        TABLE_NAME TAB ,
        INDEX_NAME IND ,
        LISTAGG('"'||COLUMN_NAME||'"', ',')WITHIN GROUP(
ORDER BY
        COLUMN_POSITION) CCF
from
        dba_ind_columns
where
        TABLE_OWNER NOT LIKE '%SYS%'
GROUP BY
        TABLE_OWNER,
        TABLE_NAME ,
        INDEX_NAME

–序列

select  owner,object_name,OBJECT_TYPE from all_objects  where OBJECT_TYPE='SEQUENCE'  

总结

麒麟V10安装部署达梦数据库单机安装的安装步骤,下次讲解一下主备安装的步骤。

  • 21
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值