本人使用达梦数据库有一段时间了,下面将从使用命令行和图形化界面来说明Linux安装DM8单机库的详细步骤,其实安装DM8非常简单,不过需要注意一些细节。同时也将介绍DM8的一些简单使用以及达梦工具manager的用法。
关闭防火墙
systemctl stop firewalld
复制
关闭防火墙开机自启
systemctl disable firewalld
复制
关闭SELinux
SELinux 组件可用来加强系统安全性。在 Linux 中,SELinux 凌驾于 root 权限之上,设置了很多额外的配置项。如果了解这些配置项,可以进行相应设置,但如果不了解,那么 SELinux 可能不仅没有一些实际性的帮助,反而会带来很多不确定因素。
查看SELinux当前状态:getenforce
永久关闭 SELinux 需修改配置文件:/etc/selinux/config,修改 SELINUX=disabled
cat /etc/selinux/config
#SELINUX= can take one of these three values:
#enforcing - SELinux security policy is enforced.
#permissive - SELinux prints warnings instead of enforcing.
#disabled - No SELinux policy is loaded.
SELINUX=disabled 修改为disa### bled
#SELINUXTYPE= can take one of three two values:
#targeted - Targeted processes are protected,
#minimum - Modification of targeted policy. Only selected processes are protected.
#mls - Multi Level Security protection.
SELINUXTYPE=targeted
复制
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba
复制
使用vim编辑器打开/etc/security/limits.conf 文件并在文件最后添加四条语句:
dmdba hard nofile 65536
dmdba soft nofile 65536
dmdba hard stack 32768
dmdba soft stack 16384
复制
切换到dmdba用户查看是否生效
su - dmdba
ulimit -a
复制
切换到root用户,将DM数据库的iso安装包挂载到/mnt目录下
mount -o loop /opt/dm8_20230418_x86_rh6_64.iso /mnt
复制
新建安装目录并修改权限
mkdir /dm
chown dmdba:dinstall -R /dm/
chmod -R 755 /dm
复制
切换至dmdba用户,在/mnt目录下执行命令
su - dmdba
cd /mnt/
./DMInstall.bin -i
复制
按需求选择安装语言,默认为中文。本地安装选择【不输入 Key 文件】,选择【默认时区 21】
选择【1-典型安装】,按已规划的安装目录 /dm8 完成数据库软件安装,不建议使用默认安装目录
数据库安装完成后,需要切换至 root 用户执行命令创建 DmAPService,否则会影响数据库备份
/dm/script/root/root_installer.sh
复制
进入 dmdba 用户的根目录下,配置对应的环境变量。DM_HOME 变量和动态链接库文件的加载路径在程序安装成功后会自动导入。
cd /home/dmdba/
vim .bash_profile
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm/bin"
export DM_HOME="/dm"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
复制
切换至dmdba用户下,让环境变量生效
su - dmdba
source .bash_profile
复制
使用 dmdba 用户配置实例,进入到 DM 数据库安装目录下的 bin 目录中,使用 dminit 命令初始化实例。
dminit 命令可设置多种参数,可执行如下命令查看可配置参数。
./dminit help
关键字 说明(默认值)
--------------------------------------------------------------------------------
INI_FILE 初始化文件dm.ini存放的路径
PATH 初始数据库存放的路径
CTL_PATH 控制文件路径
LOG_PATH 日志文件路径
EXTENT_SIZE 数据文件使用的簇大小(16),可选值:16, 32, 64,单位:页
PAGE_SIZE 数据页大小(8),可选值:4, 8, 16, 32,单位:K
LOG_SIZE 日志文件大小(256),单位为:M,范围为:256M ~ 8G
CASE_SENSITIVE 大小敏感(Y),可选值:Y/N,1/0
CHARSET/UNICODE_FLAG 字符集(0),可选值:0[GB18030],1[UTF-8],2[EUC-KR]
SEC_PRIV_MODE 权限管理模式(0),可选值:0[TRADITION],1[BMJ],2[EVAL],3[ZB]
LENGTH_IN_CHAR VARCHAR类型长度是否以字符为单位(N),可选值:Y/N,1/0
SYSDBA_PWD 设置SYSDBA密码(SYSDBA)
SYSAUDITOR_PWD 设置SYSAUDITOR密码(SYSAUDITOR)
DB_NAME 数据库名(DAMENG)
INSTANCE_NAME 实例名(DMSERVER)
PORT_NUM 监听端口号(5236)
BUFFER 系统缓存大小(100),单位M
TIME_ZONE 设置时区(+08:00)
PAGE_CHECK 页检查模式(3),可选值:0/1/2/3
PAGE_HASH_NAME 设置页检查HASH算法
EXTERNAL_CIPHER_NAME 设置默认加密算法
EXTERNAL_HASH_NAME 设置默认HASH算法
EXTERNAL_CRYPTO_NAME 设置根密钥加密引擎
RLOG_ENCRYPT_NAME 设置日志文件加密算法,若未设置,则不加密
RLOG_POSTFIX_NAME 设置日志文件后缀名,长度不超过10。默认为log,例如DAMENG01.log
USBKEY_PIN 设置USBKEY PIN
PAGE_ENC_SLICE_SIZE 设置页加密分片大小,可选值:0、512、4096,单位:Byte
ENCRYPT_NAME 设置全库加密算法
BLANK_PAD_MODE 设置空格填充模式(0),可选值:0/1
SYSTEM_MIRROR_PATH SYSTEM数据文件镜像路径
MAIN_MIRROR_PATH MAIN数据文件镜像
ROLL_MIRROR_PATH 回滚文件镜像路径
MAL_FLAG 初始化时设置dm.ini中的MAL_INI(0)
ARCH_FLAG 初始化时设置dm.ini中的ARCH_INI(0)
MPP_FLAG Mpp系统内的库初始化时设置dm.ini中的mpp_ini(0)
CONTROL 初始化配置文件(配置文件格式见系统管理员手册)
AUTO_OVERWRITE 是否覆盖所有同名文件(0) 0:不覆盖 1:部分覆盖 2:完全覆盖
USE_NEW_HASH 是否使用改进的字符类型HASH算法(1)
ELOG_PATH 指定初始化过程中生成的日志文件所在路径
AP_PORT_NUM 分布式环境下协同工作的监听端口
DFS_FLAG 初始化时设置dm.ini中的DFS_INI(0)
DFS_PATH 启用dfs时指定数据文件的缺省路径
DFS_HOST 指定连接分布式系统DFS的服务地址(localhost)
DFS_PORT 指定连接分布式系统DFS的服务端口号(3332)
DFS_COPY_NUM 指定分布式系统的副本数(3)
DFS_DB_NAME 指定分布式系统的中数据库名(默认与DB_NAME一致)
SHARE_FLAG 指定分布式系统中该数据库的共享属性(0)
REGION_MODE 指定分布式系统中该数据库的系统表空间数据文件的区块策略(0) 0:微区策略 1:宏区策略
HUGE_WITH_DELTA 是否仅支持创建事务型HUGE表(1) 1:是 0:否
RLOG_GEN_FOR_HUGE 是否生成HUGE表REDO日志(1) 1:是 0:否
PSEG_MGR_FLAG 是否仅使用管理段记录事务信息(0) 1:是 0:否
CHAR_FIX_STORAGE CHAR是否按定长存储(N),可选值:Y/N,1/0
SQL_LOG_FORBID 是否禁止打开SQL日志(N),可选值:Y/N,1/0
DPC_MODE 指定DPC集群中的实例角色(0) 0:无 1:MP 2:BP 3:SP,取值1/2/3时也可以用MP/BP/SP代替
HELP 打印帮助信息
复制
现在使用默认参数初始化一个实例,需要指定实例创建的路径。
./dminit path=/dm/data
复制
注册服务需使用 root 用户进行注册。使用 root 用户进入数据库安装目录的 /script/root 下,使用installer.sh注册服务
cd /dm/script/root
./dm_service_installer.sh -t dmserver -dm_ini /dm/data/DAMENG/dm.ini -p DMSERVER
其中-t为服务类型,-dm_ini为dm.ini的路径,-p为服务名
复制
启动、停止服务
进入 DM 安装目录下的 bin 目录下,启动/停止/重启数据库
cd /dm/bin
./DmServiceDMSERVER start/stop/restart
复制
查看数据库状态
./DmServiceDMSERVER status
复制
#在root用户下
echo $DISPLAY
xhost +
#切换为dmdba用户
su - dmdba
export DISPLAY=(上面DISPLAY输出的数字)
复制
groupadd dinstall
useradd -g dintall dmdba
passwd dmdba
复制
mkdir -p /dm8
chown dmdba:dinstall -R /dm8
复制
./DMInstall.bin
根据自己的需求安装数据库,并在安装完之后在root用户下执行脚本创建dmap服务。
/dm8/script/root/root_installer.sh
复制
使用达梦数据库配置助手来创建实例。
cd /dm8/tool
./dbca.sh
复制
根据自己的需求(目录,端口号,初始化参数等)来创建实例,并设置数据库密码。
创建完实例后需要使用root用户执行以下脚本。
mv /dm8/bin/DmServiceDMSERVER.service /usr/lib/systemd/system/DmServiceDMSERVER.service
systemctl enable DmServiceDMSERVER.service
systemctl start DmServiceDMSERVER.service
复制
查看表空间视图可以看到数据库所有的表空间。
select * from v$tablespace;
复制
可以选择打开自动扩充,根据需求选择每次自动扩充的大小和扩充上限。创建好后需要扩大数据文件和迁移表空间数据文件可以在此界面修改文件大小或者添加一个表空间数据文件,以及修改文件路径来实现迁移表空间数据文件。
SQL语句如下:
create tablespace "AAA" datafile '/dm/data/DAMENG/AAA.DBF' size 32 autoextend on next 1 maxsize 1024 CACHE = NORMAL;
复制
TEMP表空间存放的是临时表,数据库在每次启动之前都会重建TEMP表空间,要修改TEMP表空间大小只能使用SQL语句来修改,且此为静态参数需要重启数据库才能生效。
SP_SET_PARA_VALUE(2,‘TEMP_SIZE’,256);
复制
用户分为数据库管理员(SYSDBA)、系统用户(SYS)、数据库安全员(SYSSO)、数据库审计员(SYSAUDITOR)。普通的用户就是数据库管理员;系统用户可以存放数据字典和动态性能视图;数据库安全员可以创建安全规则;数据库审计员是创建审计账号、创建审计规则、查看审计记录。
创建用户名(大写)和密码,可以根据要求设置默认的表空间、索引表空间。
授予给该用户权限
设置资源限制
创建角色名,并给予角色权限
角色是一组权限的集合,使用角色方便做权限管理。角色可以被授予给角色,也可以被授予给用户。
模式就是一组数据库对象的集合,一个用户可以拥有多个模式,一个模式只能属于一个用户,创建用户时会自动创建一个同名的模式。
使用图形化来建表会比较繁琐,建议用SQL语句来建表,语法如下:
create table 表名 (列名,类型,约束);
复制
约束主要有非空约束(not null)、唯一约束(unique)、主键约束(primary key)、外键约束(foreign key references 表名(‘列名’))、检查约束(check(限制项))。
视图就是一个查询语句,是一张虚拟表,不会占用数据库的存储空间。因此属兔使用SQL语句来创建较为方便,语法如下:
create view 视图名 as select 查询语句;
复制
索引要在模式下的表里面的索引进行创建。
备份可以分为物理备份和逻辑备份,物理备份是备份数据库的文件,逻辑备份是备份数据库对象。
备份还可以分为完全备份和增量备份,完全备份就是一次备份整个库的所有数据或者是一次备份一个表空间的所有数据;增量备份就是在一次完全备份或者上一次增量备份后,以后每次只备份修改过的文件。
备份还有冷备和热备两种方式,冷备也叫脱机备份,是在数据库关闭的状态下备份;热备也叫联机备份,是在数据库运行状态下备份。
需要关闭数据库服务并创建备份路径
mkdir -p /dm8/backup
复制
使用dmrman工具备份
cd /dm8/bin
./dmrman
backup database ‘/dm8/data/DAMENG/dm.ini’ backupset ‘/dm8/backup’;
复制
需要先将数据库的归档模式打开
进入管理服务器的系统管理,将状态切为配置并转换。
进入到归档配置,将归档模式且为归档并添加归档的文件路径。
最后再将数据库模式切换为打开。
备份可以对库、表空间、表进行备份,在备份里选择对应的新建备份。
还原恢复需要关闭数据库,可以使用console工具或者是dmrman工具。
依次进行还原、恢复、更新magic。
cd /dm8/bin
./dmrman
restore database ‘/dm8/data/DAMENG/dm.ini’ database from backupset ‘/dm8/backup’;
recover database ‘/dm8/data/DAMENG/dm.ini’ database from backupset ‘/dm8/backup’;
recover database ‘/dm8/data/DAMENG/dm.ini’ update db_magic;
复制
可以选择数据库、用户、模式、表进行导出。
在数据库软件的bin目录下,利用dexp和dimp工具逻辑导出导入。
导出导入整个schema
#导出
dexp USERID=<用户>/<密码>@<IP>:<port> FILE=<文件名> LOG=<执行日志文件名> SCHEMAS=<schema> DIRECTORY=<备份文件所在路径>
#导入
dimp USERID=<用户>/<密码>@<IP>:<port> FILE=<备份文件绝对路径> LOG=<执行日志文件名> SCHEMAS=<schema> DIRECTORY=<执行日志存放的路径> IGNORE=<是否忽略创建错误>
复制
导出导入指定表
#导出
dexp USERID=<用户>/<密码>@<IP>:<port> FILE=<文件名> LOG=<执行日志文件名> TABLES=<table1,table2> DIRECTORY=<备份文件所在路径>
#导入
dimp USERID=<用户>/<密码>@<IP>:<port> FILE=<备份文件绝对路径> LOG=<执行日志文件名> TABLES=<table1,table2> DIRECTORY=<执行日志存放的路径> IGNORE=<是否忽略创建错误>
复制
作业相当于服务器的计划任务,需要先在代理这创建代理环境。
创建作业。
根据需求创建作业步骤。
根据需求创建作业调度。
#创建代理环境
SP_INIT_JOB_SYS(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, '04040000/dm/dmbak', 3, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bakfull', 'std1', 1, 2, 1, 64, 0, '00:30:00', NULL, '2023-11-01 21:17:22', NULL, '');
call SP_ADD_JOB_SCHEDULE('bakfull', 'once_test', 1, 0, 0, 0, 0, NULL, NULL, sysdate+1/1440, NULL, '');
call SP_JOB_CONFIG_COMMIT('bakfull');
#创建增量备份作业
call SP_CREATE_JOB('bakincr',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('bakincr');
call SP_ADD_JOB_STEP('bakincr', 'bak2', 6, '44040000/dm/dmbak|/dm/dmbak', 3, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('bakincr', 'std2', 1, 2, 1, 63, 0, '00:30:00', NULL, '2023-11-01 21:19:30', NULL, '');
call SP_JOB_CONFIG_COMMIT('bakincr');
#创建删除备份作业
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'',''/dm/dmbak'');call sp_db_bakset_remove_batch(''DISK'',now()-7);', 3, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('delbak', 'del01', 1, 1, 1, 0, 0, '00:30:00', NULL, '2023-11-02 14:48:41', NULL, '');
call SP_JOB_CONFIG_COMMIT('delbak');
复制
安装数据库软件的操作较为简单,需要注意的地方为安装的路径不要写错,涉及到的有初始化实例PATH的路径以及服务脚本DmServer里面的路径。在初始化实例时尤其需要注意几个参数:EXTENT_SIZE(簇大小)、PAGE_SIZE(页大小)、CASE_SENSITIVE(大小写敏感)、CHARSET(字符集),这些参数在创建实例后将不能修改(需要修改只能重初始化);还有端口是否被占用也需要排查,否则会导致启动数据库失败。
在其他复杂一些的环境,在安装前需要先检查好环境,例如防火墙、SELinux、透明大页、swap、numa等一些设置的关闭,其中一些设置会影响数据库的性能。
关于启动数据库失败的问题,可以尝试使用前台启动的方式查看启动失败的错误,本人遇到的绝大多数都是dm.ini文件配置错误导致数据库启动失败。还有一个情况是虚拟机内存太小,出现can not create buffer pools,out of memory,需要将dm.ini的BUFFER设置小一点才解决启动失败的问题。
文章
阅读量
获赞