最近由于工作需要,开始接触并学习达梦数据库,对达梦数据库有了一些初步的认识,在这里对达梦数据库进行一些简单的介绍。
此次安装均以Linux操作系统为例
# 创建数据库目录
mkdir /dm8
简单安装达梦数据库时,我们可以创建一个用户管理大梦相关操作的专属用户,下面以用户名dmdba和用户组dinstall为例。
# 创建用户组dinstall
groupadd dinstall
# 创建一个用户
# -g指定用户组、-m -d自动生成并指定家目录(有的系统默认生成家目录,有的不生成)、-s指定shell
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
#如果忘记指定用户组了可以使用如下命令
usermod -g dinstall dmdba
#为dmdba用户设置登录密码
passwd dmdba
# 将/dm8目录设为dmdba所有
chown dmdba:dinstall /dm8
# 若缺少权限则赋予权限
chmod 755 /dm8
前往达梦数据库官网提供的下载地址下载安装包
官网下载地址: https://eco.dameng.com/download/
这里我们假设安装镜像为dm8.iso,所在路径为/home/dmdba/install
将镜像挂载到mnt下,建议在mnt下先新建一个目录名为dm,避免挂载时覆盖整个mnt
# 挂载镜像
mount /home/dmdba/install/dm8.iso /mnt/dm
# 查看挂载是否成功
df -h
数据库可以通过图形化工具安装也可以通过命令行的方式安装,此处我们切换到dmdba用户来安装。
注意:如果切换用户后无法使用图形化界面请切回root用户并按以下方式配置
注意:如果之前暴力删除过数据库,即没有通过uninstall.sh来卸载,那么会导致安装失败,此时需要手动删除/etc/dm_svc.conf
# 让其他用户接入到图形化界面,虚拟机第一次启动
xhost +
# 此变量为空会导致当前用户无法使用图形化界面
# 需要在root用户下手动查询该值,最后切到dmdba用户手动赋值
echo $DISPLAY
# 手动赋值DISPLAY, 仅仅对当前会话生效,退出后会失效,若需要永久生效需要写入环境变量文件
export DISPLAY=原来查到的值
# 这个DISPLAY也可以设置为其他主机的地址,比如export DISPLAY=ip:x.x
# 进入挂载目录/mnt/dm
cd /mnt/dm
# 执行安装命令
./DMInstall.bin
注意:
这里可能会出现当前用户不支持图形化界面的错误,需要为dmdba用户赋予权限
# 让其他用户接入到图形化界面,虚拟机第一次启动
# 在root用户下执行
xhost +
# 此变量为空会导致当前用户无法使用图形化界面
# 需要手动查询正常的值,最后手动赋值
# 在root用户下执行
echo $DISPLAY
# 手动赋值DISPLAY, 仅仅对当前会话生效,退出后会失效,需要重新设置,需要永久生效需要写入文件
# 在dmdba用户下执行
export DISPLAY=之前查到的值
# 这个DISPLAY也可以设置为其他主机的地址,比如export DISPLAY=ip:x.x
默认为中文
选择典型安装
选择好安装目录
在使用图形化工具安装完毕后会自动弹出配置助手,使用它可以快速管理数据库实例或数据库服务。
# 命令行安装依然是使用/mnt/dm/DMInstall.bin,但区别是需要添加一个-i
/mnt/dm/DMInstall.bin -i
时区默认选择中文
使用典型安装
选择数据库安装目录,这里我们选择之前创建好的/dm8目录
按照要求执行最后一条命令即可完成数据库的安装。
这里我们使用的图形化工具为数据库配置助手,也就是我们之前用图形化安装完毕后自动弹出的那个工具。
# 进入数据库安装目录
cd /dm8/tool
# 打开DBCA图形化界面(打开数据库配置助手)
./dbca.sh
这里选择创建数据库实例
这里一般无需修改
按照规划定在/dm8/data下
配置数据库名称及开放端口号
选择数据库各文件的路径
配置数据库基本信息
配置数据库用户
在最后按照要求执行命令,这三个命令用于创建数据库服务,并设为开机自启动。
# 数据库安装完毕后还需要使用dminit初始化数据库实例
# 包括指定数据库实例的安装路径、簇大小、页大小、大小写敏感、字符集、数据库名、实例名等
# 这个dminit在数据库安装目录的bin下边,在这里也就是/dm8/bin目录下
cd /dm8/bin
# path 实例路径,PAGE_SIZE页大小,SYSDBA_PWD 系统管理员密码 这些和图形界面里的配置都是对应的
./dminit path=/dm8/data PAGE_SIZE=16 SYSDBA_PWD=Dameng123 DB_NAME=DBTest INSTANCE_NAME=myInst port_num=5236
至此,数据库的实例及服务就创建完毕
注册服务依然可以通过图形化和命令行两种方式
使用的工具还是数据库配置助手,太好用了
# 注册和卸载服务的命令位置如下,假设安装目录为/dm8
# 那么命令路径为/dm8/script/root/dm_service_installer.sh
# 注册数据库服务命令名称
dm_service_installer.sh
# 例子,所谓后缀名比如 我现在有个数据库服务叫DmServiceDMSERVER,那么DMSERVER就是后缀名
./dm_service_installer.sh -t dmserver -p 服务名后缀 -dm_ini /dm8/data/我的数据库/dm.ini
# 卸载数据库服务命令名称
dm_service_installer.sh
# 例子
./dm_service_uninstaller.sh -n 服务名
至此数据库的服务注册也完成了
下述客户端工具全部位于DM安装目录的tool目录下。
安装目录下有两个disql
一个在安装目录的bin下,以此处的演示为例,那么路径就为/dm8/bin/disql,另一个是/dm8/tool/disql
/dm8/tool/disql与/dm8/bin/disql有明显区别,tool下的disql需要进入后使用conn命令才能真正连接到数据库,当然bin下的也可以使用conn命令来连接其他数据库
# conn命令格式如下
conn username/password
DM管理工具、联机工具,图形化界面创建管理用户、角色、表空间、模式、模式下对象、联机备份还原数据库等工具。
这个工具是达梦自带的专用图形化管理工具,功能齐全,操作方便,能完美管理整个数据库。
DM控制台工具,脱机工具,可以脱机备份和还原数据库,修改数据库参数功能。
注意:只显示已经注册为服务的数据库实例
DM数据迁移工具,支持多种数据迁移方式(DM之间的迁移、其他数据库迁移到DM、DM迁移到文件、DM迁移到Oracle等)
备份参数相关操作
# 查询当前备份默认路径
# 备份的两个参数(READ ONLY就只能修改dm.ini文件)
# BAK_PATH:备份文件路径
# BAK_USE_AP:值1代表备份是是否使用AP辅助进程,大幅提升备份效率,需要开启MDAP服务。值2代表使用数据库主进程进行备份。
select name, value, type from v$parameter t where t.name in ('BAK_PATH', 'BAK_USE_AP');
# 查询备份路径
select * from SYS."v$backupset";
# 查看备份函数,v$ifun存了很多函数
select * from v$ifun t where t.name like '%BAKSET%'
# 根据上边的查询得到添加备份路径的函数
SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/backup/');
开始备份
在disql里或者manager里都行
命令行方式
# 开始备份,默认是全量备份
backup database;
backup database full to fullbak01 backupset '/dm8/backup/fullbak01';
# 开始增量备份(默认差异增量)
backup database increment to incrbak01 backupset '/dm8/backup/incrback01';
# 开始增量备份(累计增量)
backup database increment cumulative to incrbak03 backupset '/dm8/backup/incrbak03';
# 以上各种增量备份前提是备份路径里有之前的全量或其他的备份集,不然无法找到基础备份集,这种情况需要使用with backupdir指定基础备份集路径
backup database increment with backupdir '/dm8/backup/full' to incrbak04 backupset '/dm8/backup/incrbak04';
图形化方式
图形化界面在数据库上右键新建备份即可。
# 表空间全量备份
backup tablespace tbs to fullbackupbackupset '/backup/fullbackup';
# 表的备份
backup table employee to tablebackup backupset '/backup/tablebackup';
# 进行归档
backup archive log all to archbackup backupset '/backup/archbackup ';
# 若提示收集到的归档日志不连续,就代表中途有数据库异常关闭,查询归档范围,手动校验是否连续,看ARCH_LSN和CLSN
select * from SYS."v$arch_file";
# 实在不行就删除归档
sf_archivelog_delete_before_lsn(指定的ARCH_LSN);
图形化界面在指定的表空间或者表上右键备份下即可
脱机需要关闭数据库,只能进行库级备份,表空间备份只能联机备份。
命令行执行的dmrman
# 启动dmrman
/dm8/bin/dmrman
# dmrman内 开始脱机全量备份
backup database '/dm8/data/DANEBG/dm.ini' to FULLBAK03 backupset '/dm8/back/FULLBAK03'
图形化界面Console也可以进行脱机备份,若备份数据太大,可以使用备份拆分(分片)或、压缩操作、并行备份
注意:Console里的DFS_INI是用于集群的,不用配置。
魔数发生变化会导致表空间无法还原,只能在魔数相同的库还原。
# 查看表所在的表空间,图形化管理工具区分大小写,建议全大写
select * from dba_tables where table_name = '你的表名'
表空间的还原与恢复只能在原库进行,不能到其他库还原,但是库级还原可以跨库。
DM8恢复表空间只能在脱机下进行
# 1、关闭数据库
DMServiceAZJ stop;
# 2、进入dmrman进行还原
restore database '/dm8/data/DAMENG/dm.ini' tablespace tbs from backupset '/d,8/backup/FULLBAK01';
# 3、恢复表空间
revocer database '/dm8/data/DAMENG/dm.ini' tablespace tbs;
# 还原数据库
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup/FULLBAK01';
recover database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/backup/FULLBAK01';
# 进行库级还原后需要更新数据库魔数,不然数据库无法启动
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
# 查询魔数
# 数据库魔数每次经过库级还原与恢复都会变
select db_magic;
图形化还原
依然是使用Console工具,需要先关闭数据库,选择还原功能,右侧有对应的功能按钮,按照依然是按照restore->recover->update db_magic的顺序操作即可。
逻辑导出导入都需要启动数据库。
# 命令路径
# 逻辑导出
/dm8/bin/dexp
# 逻辑导入
/dm8/bin/dimp
逻辑导出支持4种,全部导出、按表导出、按模式导出、按用户导出
简单操作
# 进入命令所在目录
cd /dm8/bin
# 导出,全量
./dexp sysdba/sysdba:5236 file=/dm8/kackup/dexp.dmp log=/dm8/backup/dexp/dexp.log full=y
# 导入
# remap_schema讲源模式的数据导入到目标模式,其中还有权限问题
# schemas指定需要导入哪个模式的数据
./dimp dmtest/sysdba:5236 file=/dm8/kackup/dexp.dmp log=/dm8/backup/dexp/dexp.log schemas=DMHR remap_schema=DMHR:DMTEST
由于本人刚接触达梦数据库,了解还不算太多,因此本博客只是简单介绍了下基本的功能,达梦数据库还提供数据交换平台、数据同步等等各种强大而好用的工具,实现了 B1 级安全特性,十分可靠。