由于疫情的原因,原计划学习达梦数据库一推再推,最后迫于无奈,最终选择了远程学习的方式,为了让自己更有动力,报名的时候就直接请老师帮忙给约了考试,整个学习加考试的时间也就20多天,真是不逼自己一把,就不知道自己到底有少潜力。
刚接触达梦数据库的时候,感觉既陌生又熟悉,陌生的是接触一个新产品,熟悉的是有许多地方和oracle有相似。两者结合起来对比学习,很容易入门,当然是对于oracle有一定基础的人来说,但没有基础的学习起来也很容易,不用受其他产品的干扰,总得来说,虽然达梦感觉很神秘,但真正学习起来是一件很容易的事。
达梦DCA考试主要是分为软件安装、创建数据库、参数配置、创建表空间、创建用户、创建表、创建视图、创建索引、开启归档、备份恢复、作业、逻辑数据导入导出以及最后的ODBC安装和配置几部分,全部是采用上机实操,相比于其他厂商,含金量交高,因为确实是需要对达梦熟练到一定的程度后才能通过的。下面就安装学习思路做一个总结。
一、软件安装
1.1 安装前的环境准备
学习环境为操作系统银河麒麟V10,达梦8最新版本,要求系统以桌面方式安装。
#查看操作系统版本
[root@kylin ~]# cat /etc/kylin-release
Kylin Linux Advanced Server release V10 (Sword)
#查看文件系统,文件系统最好分配20G以上,tmp 1.2G以上,
#如果tmp过小,达梦在安装时会把解压文件放到tmp下,
#空间不足会报错,需要重置tmp大小
[root@kylin ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs 1.5G 0 1.5G 0% /dev/shm
tmpfs 1.5G 9.5M 1.5G 1% /run
tmpfs 1.5G 0 1.5G 0% /sys/fs/cgroup
/dev/mapper/klas-root 27G 11G 17G 38% /
tmpfs 1.5G 4.0K 1.5G 1% /tmp
/dev/sda1 1014M 211M 804M 21% /boot
tmpfs 289M 0 289M 0% /run/user/993
tmpfs 289M 0 289M 0% /run/user/0
#重置tmp大小
[root@kylin ~]# mount -o remount,size=2G /tmp
[root@kylin ~]# df -h /tmp
文件系统 容量 已用 可用 已用% 挂载点
tmpfs 2.0G 4.0K 2.0G 1% /tmp
#关闭防火墙
[root@kylin ~]# systemctl stop firewalld
[root@kylin ~]# systemctl disable firewalld
#关闭selinux
[root@kylin ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# 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
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# ukmls - Multi Level Security protection.
# ukmcs -ukmcs variants of the SELinux policy.
SELINUXTYPE=ukmcs
# SETLOCALDEFS= Check local definition changes
SETLOCALDEFS=0
#检查gcc,后面安装odbc的时候需要
[root@kylin ~]# rpm -qa |grep gcc
libgcc-7.3.0-20190804.35.p02.ky10.x86_64
gcc-7.3.0-20190804.35.p02.ky10.x86_64
#挂载达梦iso介质,考试的时候解压好的,可以直接执行
[root@kylin ~]# mount /opt/dmxxx.iso /mnt
1.2 创建用户和安装目录
[root@kylin ~]# groupadd dinstall
[root@kylin ~]# useradd -g dinstall dmdba
[root@kylin ~]# echo "Dameng123"|passwd --stdin dmdba
更改用户 dmdba 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@kylin ~]# mkdir /dm8
[root@kylin ~]# chown dmdba.dinstall /dm8
1.3 安装达梦数据库软件
1.3.1 图形界面安装
这里选择取消,后面使用dbca.sh调用图形界面来初始化数据库,也可以直接选择初始化。
#安装完成后,可以添加达梦的PATH环境变量,方便后面的使用
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
1.3.2 文本方式安装
达梦的软件安装不仅提供了图形化的方式,同时也为了避免某些情况无法使用图形,也支持文本方式交互式安装,当然也有响应文件安装(主要是应对自动化场景,考试不考,平时也不用),对于经常敲命令的朋友来说,文本方式更快捷和方便。
[dmdba@kylin opt]$ ./DMInstall.bin -i
请选择安装语言(C/c:中文 E/e:英文) [C/c]:
解压安装程序..........
欢迎使用达梦数据库安装程序
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n
是否设置时区? (Y/y:是 N/n:否) [Y/y]:
设置时区:
[ 1]: GTM-12=日界线西
[ 2]: GTM-11=萨摩亚群岛
[ 3]: GTM-10=夏威夷
[ 4]: GTM-09=阿拉斯加
[ 5]: GTM-08=太平洋时间(美国和加拿大)
[ 6]: GTM-07=亚利桑那
[ 7]: GTM-06=中部时间(美国和加拿大)
[ 8]: GTM-05=东部部时间(美国和加拿大)
[ 9]: GTM-04=大西洋时间(美国和加拿大)
[10]: GTM-03=巴西利亚
[11]: GTM-02=中大西洋
[12]: GTM-01=亚速尔群岛
[13]: GTM=格林威治标准时间
[14]: GTM+01=萨拉热窝
[15]: GTM+02=开罗
[16]: GTM+03=莫斯科
[17]: GTM+04=阿布扎比
[18]: GTM+05=伊斯兰堡
[19]: GTM+06=达卡
[20]: GTM+07=曼谷,河内
[21]: GTM+08=中国标准时间
[22]: GTM+09=汉城
[23]: GTM+10=关岛
[24]: GTM+11=所罗门群岛
[25]: GTM+12=斐济
[26]: GTM+13=努库阿勒法
[27]: GTM+14=基里巴斯
请选择设置时区 [21]:
安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:
所需空间: 1178M
请选择安装目录 [/home/dmdba/dmdbms]:
可用空间: 16G
是否确认安装路径(/home/dmdba/dmdbms)? (Y/y:是 N/n:否) [Y/y]:y
安装前小结
安装位置: /home/dmdba/dmdbms
所需空间: 1178M
可用空间: 16G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):y
2022-09-30 05:30:52
[INFO] 安装达梦数据库...
2022-09-30 05:30:52
[INFO] 安装 基础 模块...
2022-09-30 05:30:54
[INFO] 安装 服务器 模块...
2022-09-30 05:30:54
[INFO] 安装 客户端 模块...
2022-09-30 05:30:55
[INFO] 安装 驱动 模块...
2022-09-30 05:30:55
[INFO] 安装 手册 模块...
2022-09-30 05:30:56
[INFO] 安装 服务 模块...
2022-09-30 05:30:57
[INFO] 移动日志文件。
2022-09-30 05:30:57
[INFO] 安装达梦数据库完成。
请以root系统用户执行命令:
/home/dmdba/dmdbms/script/root/root_installer.sh
安装结束
[dmdba@kylin opt]$
#以root用户执行/home/dmdba/dmdbms/script/root/root_installer.sh
[root@kylin opt]# /home/dmdba/dmdbms/script/root/root_installer.sh
移动 /home/dmdba/dmdbms/bin/dm_svc.conf 到/etc目录
修改服务器权限
创建DmAPService服务
创建服务(DmAPService)完成
启动DmAPService服务
[root@kylin opt]#
#安装完成后,可以添加达梦的PATH环境变量,方便后面的使用
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
1.4 初始化达梦数据库
1.4.1 图形界面初始化数据库
使用dbca.sh调出图形界面
如果对redo日志文件有多个需要,可以在上图这里选择增加。
使用root用户执行上图中的命中,执行完成后点击确定按钮
[root@kylin opt]# mv /dm8/bin/DmServiceDMSERVER.service /usr/lib/systemd/system/DmServiceDMSERVER.service
[root@kylin opt]#
[root@kylin opt]# systemctl enable DmServiceDMSERVER.service
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service → /usr/lib/systemd/system/DmServiceDMSERVER.service.
[root@kylin opt]# systemctl start DmServiceDMSERVER.service
[root@kylin opt]#
查看数据库状态
[root@kylin opt]# systemctl status DmServiceDMSERVER.service
● DmServiceDMSERVER.service - DM database instance service
Loaded: loaded (/usr/lib/systemd/system/DmServiceDMSERVER.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2022-09-30 05:49:20 CST; 1min 53s ago
Process: 8163 ExecStart=/dm8/bin/DmServiceDMSERVER start (code=exited, status=0/SUCCESS)
Main PID: 8187 (dmserver)
Tasks: 51
Memory: 448.4M
CGroup: /system.slice/DmServiceDMSERVER.service
└─8187 /dm8/bin/dmserver /dm8/data/DAMENG/dm.ini -noconsole
9月 30 05:49:05 kylin systemd[1]: Starting DM database instance service...
9月 30 05:49:20 kylin DmServiceDMSERVER[8163]: [39B blob data]
9月 30 05:49:20 kylin systemd[1]: Started DM database instance service.
[root@kylin opt]#
1.4.2 文本方式初始化数据库
mkdir -p /dm8/data/DAMENG/
dminit INI_FILE=/dm8/data/DAMENG/dm.ini path=/dm8/data LOG_PATH=/dm8/data/DAMENG/DAMENG01.log LOG_PATH=/dm8/data/DAMENG/DAMENG02.log LOG_PATH=/dm8/data/DAMENG/DAMENG03.log EXTENT_SIZE=16 PAGE_SIZE=16 LOG_SIZE=500 CHARSET=0 SYSDBA_PWD=Dameng123 DB_NAME=DAMENG INSTANCE_NAME=DMSERVER PORT_NUM=5236
[dmdba@kylin ~]$ mkdir -p /dm8/data/DAMENG/
[dmdba@kylin ~]$ dminit INI_FILE=/dm8/data/DAMENG/dm.ini path=/dm8/data LOG_PATH=/dm8/data/DAMENG/DAMENG01.log LOG_PATH=/dm8/data/DAMENG/DAMENG02.log LOG_PATH=/dm8/data/DAMENG/DAMENG03.log EXTENT_SIZE=16 PAGE_SIZE=16 LOG_SIZE=500 CHARSET=0 SYSDBA_PWD=Dameng123 DB_NAME=DAMENG INSTANCE_NAME=DMSERVER PORT_NUM=5236
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-14
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /dm8/data/DAMENG/DAMENG01.log
log file path: /dm8/data/DAMENG/DAMENG02.log
log file path: /dm8/data/DAMENG/DAMENG03.log
write to dir [/dm8/data/DAMENG].
create dm database success. 2022-09-30 05:56:34
#以root用户注册服务
[root@kylin opt]# /dm8/script/root/dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DAMENG/dm.ini -p DMSERVER
Created symlink /etc/systemd/system/multi-user.target.wants/DmServiceDMSERVER.service → /usr/lib/systemd/system/DmServiceDMSERVER.service.
创建服务(DmServiceDMSERVER)完成
[root@kylin opt]#
达梦的dminit参数说明,需要注意的是达梦许多参数都是通过数字来表示的,需要先查询各个数字所代表的含义。
[dmdba@kylin ~]$ dminit help
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-10-14
格式: ./dminit KEYWORD=value
例程: ./dminit PATH=/public/dmdb/dmData PAGE_SIZE=16
关键字 说明(默认值)
--------------------------------------------------------------------------------
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,范围为:64M ~ 2G
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]
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 页检查模式(0),可选值:0/1/2
EXTERNAL_CIPHER_NAME 设置默认加密算法
EXTERNAL_HASH_NAME 设置默认HASH算法
EXTERNAL_CRYPTO_NAME 设置根密钥加密引擎
RLOG_ENC_FLAG 设置日志文件是否加密(N),可选值:Y/N,1/0
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 ECS模式下AP协同工作的监听端口
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日志(0) 1:是 0:否
PSEG_MGR_FLAG 是否仅使用管理段记录事务信息(0) 1:是 0:否
CHAR_FIX_STORAGE CHAR是否按定长存储(N),可选值:Y/N,1/0
HELP 打印帮助信息
二、数据库配置
2.1 修改数据库参数
达梦数据库的参数有四种类型:
只读参数 read only db在运行过程中,只读参数不能修改,
静态参数 in file 只能修改dm.ini文件,修改后重启生效。
动态参数 sys和session dm.ini文件和内存可同时修改,修改后立即生效,sys为系统级参数,修改后影响所有会话;session为会话级参数,修改后只影响新创建的会话。
参数修改方式一:直接修改参数文件,系统层修改(vi)
参数修改方式二:使用sql修改参数,静态参数只有在指定spfile的情况才能修改
常用的参数修改一般通过这两种方式修改即可,当然也可以通过函数去修改,这里不再深入。
select name, value from v$parameter where name='SORT_BUF_SIZE';
alter system set 'soft_buf_size'=20 ;
alter system set 'PWD_POLICY'=6 both;--修改密码策略
alter system set 'COMPATIBLE_MODE'=2 spfile; --修改数据库兼容模式
密码策略
PWD_POLICY 默认: 2
1:禁止与用户名相同;
2:口令长度需大于等于 PWD_MIN_LEN 设置的值;
4:至少包含一个大写字母(A-Z);
8:至少包含一个数字(0-9);
16:至少包含一个标点符号(英文输入法状态下,除―和空格外的所有符号;若为其他数字,则表示配置值的和,如 3=1+2,表示同时启用第 1 项和第 2 项策略。当 COMPATIBLE_MODE=1 时,PWD_POLICY的实际值均为 0
密码长度策略
PWD_MIN_LEN 默认: 9
设置用户口令的最小长度,取值范围(9~48)。仅当 PWD_POLICY&2!=0 时才有效
兼容模式参数
COMPATIBLE_MODE 默认:0
是否兼容其他数据库模式。0:不兼容,1:兼容 SQL92 标准,2:部分兼容 ORACLE,3:部分兼容 MS SQL SERVER,4:部分兼容 MYSQL,5:兼容 DM6,6:部分兼容 TERADATA
2.2 创建表空间
达梦提供了友好的操作界面工具manager,基本都是点点点的操作,如果对manager工具熟悉了后,推荐使用命令的方式,命令的方式能更好的理解数据库。
2.2.1 图形方式创建
2.2.2 命令方式
使用disql命令行工具连接登录数据库,类似于oracle的sqlplus
[dmdba@kylin ~]$ disql sysdba/Dameng123@localhost:5236
服务器[localhost:5236]:处于普通打开状态
登录使用时间 : 1.173(ms)
disql V8
create tablespace "TBS" datafile '/dm8/data/DAMENG/TBS01.DBF' size 32 autoextend on next 1 maxsize 1024 CACHE = NORMAL;
2.3 创建用户
为了更深入的学习达梦,也为了熟悉各个操作之间的语法及参数的意义,后面能使用命令的,优先使用命令,有困难的再使用图形界面。
create user "TEST" identified by "Dameng123" password_policy 6
limit failed_login_attemps 3, password_lock_time 1,
default tablespace "TBS";
--failed_login_attemps 密码错误次数
--password_lock_time 密码锁定时间分钟
grant "PUBLIC","RESOURCE","VTI" to "TEST";
2.4 创建表
CREATE TABLE "EMPLOYEE"
(
"EMPLOYEE_ID" DECIMAL(6) NOT NULL,
"EMPLOYEE_NAME" VARCHAR(20) NULL,
"EMAIL" VARCHAR(25) NOT NULL,
"PHONE_NUM" VARCHAR(20),
"HIRE_DATE" DATETIME NOT NULL,
"JOB_ID" VARCHAR(10) NOT NULL,
"SALARY" DECIMAL(8,2),
"COMMISSION_PCT" DECIMAL(2,2),
"MANAGER_ID" DECIMAL(6),
"DEPARTMENT_ID" DECIMAL(4),
primary key("EMPLOYEE_ID")
)storage(ON "TBS");
CREATE TABLE "DEPARTMENT"
(
"DEPARTMENT_ID" DECIMAL(4)NOT NULL,
"DEPARTMENT_NAME" VARCHAR(30) NOT NULL,
"MANAGER_ID" DECIMAL(6) NULL,
"LOCATION_ID" DECIMAL(4) NULL,
primary key("DEPARTMENT_ID")
)storage(ON "TBS");
--设置外键
alter table EMPLOYEE
add constraint FK_DEPARTMENT_ID
foreign key(DEPARTMENT_ID) references DEPARTMENT(DEPARTMENT_ID);
2.5 执行脚本
达梦的执行脚本不同于oracle,在命令行中使用start /opt/script.sql方式执行。
2.6 创建视图
创建视图语法与oracle一样
create view VIEW_HIREDATE as select * from emp where HIRE_DATE>=to_date('2006-01-01','yyyy-mm-dd') and HIRE_DATE<=to_date('2009-01-01','yyyy-mm-dd');
2.7 创建索引
create index IND_EMP_NAME on EMP(EMP_NAME) storage(on "DMTBS");
三、备份恢复
3.1 开启归档
alter database mount;
alter database add archivelog 'type=local,dest=/dm8/arch,file_size=64,space_limit=0';
alter database archivelog;
alter database open;
3.2 完全备份
如果涉及到修改备份路径,需要修改dm.ini文件中BAK_PATH的值,默认在 D M H O M E / d a t a / DM_HOME/data/ DMHOME/data/DBNAME/bak下
backup database full to "20220925_bak" backupset '20220925_bak';
--查询备份信息
select BACKUP_NAME,BACKUP_PATH from v$backupset;
3.3 作业
作业因有些参数难以理解,建议使用图形操作
命令行方式参考,都是数字,不好理解到底是什么意思。
call SP_CREATE_JOB('JOB1',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('JOB1');
call SP_ADD_JOB_STEP('JOB1', 's1', 6, '00000000/dm8/data/DAMENG/bak', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('JOB1', 's2', 1, 2, 1, 9, 0, '23:00:00', NULL, '2022-09-30 06:48:04', NULL, '');
call SP_JOB_CONFIG_COMMIT('JOB1');
3.4 恢复
恢复使用console工具调用图形界面,命令的方式更快捷。
命令方式
su - dmdba
dmrman
check backupset '/dm8/backup/20210616_bak';
RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' tablespace "TBS" FROM BACKUPSET '/dm8/backup/20210616_bak' DEVICE TYPE disk;
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' TABLESPACE TBS WITH ARCHIVEDIR '/dm8/arch';
exit
3.5 ODBC安装配置
# 安装odbc
cd /opt/
tar zxf unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0/
./configure --enable-gui=no
make && make install
odbc_config --version
odbcinst -j
#配置odba参数文件,考试的时候提供的有模版。
vi /usr/local/etc/odbc.ini
[dm8]
Description = DM ODBC DSND
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = Dameng123
TCP_PORT=5237
vi /usr/local/etc/odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /dm8/bin/libdodbc.so
su - dmdba
isql dm8
select * from v$instance;
quit