达梦数据库DCA概述
达梦数据库是一款完全自主原创的国产数据库,国产的操作系统及国产的数据库在国内使用不断扩大,升级及发展也日新月异,其中达梦数据库在政府及事业单位就得到广泛应用。
DCA课程学习使用的操作系统是银河麒麟V10,达梦数据库版本是DM8
下面我们来了解一下达梦数据库的归档日志配置、数据库物理(脱机和联机)备份还原、逻辑备份还原;DM 作业、 ODBC 配置等。
一、达梦数据库归档日志
开启归档模式是达梦数据库完全备份必须条件之一,只有开启归档模式,才能进行完全备份。达梦数据库归档日志配置方法目前有三种方式:达梦控制台工具、命令开启以及编写dmarch.ini和dm.ini初始化文件配置。
1.1、使用控制台开始归档模式
选择管理服务器
从打开模式转换到配置模式
将归档模式设置为归档,并设置归档目标的路径,点击确定。
从配置模式转换到打开模式
1.2、使用sql开启归档模式
1.3、修改配置文件开启归档日志
查看当前数据库实例使用的dm.ini配置文件是是
修改/dm8/data/DAMENG/dm.ini
tia/dm8/data/DAMENG/dmarch.ini文件
注释:通过修改配置文件方式开启归档日志,修改完配置文件后需要重启数据库(不重启是不生效的)
二、数据库备份
备份包含物理备份和逻辑备份。
物理备份: 该方法实现数据库的完整恢复,通过数据库内部的存储结构,完整的复制数据页,它涉及到组成数据库的文件(如数据文件、控制文件和日志文件等),但不考虑逻辑内容(如表、视图和存储过程等数据库对象)。 (数据库可以是联机或脱机状态,也称为热备和冷备)
逻辑备份: 是利用SQL语言从数据库中抽取数据并存于二进制文件的过程。(要求数据库是联机状态)
2.1、物理备份
脱机状态(需要关闭数据库)
[root@ecs-301110 bin]# systemctl stop DmServicePROD
[root@ecs-301110 bin]# pwd
/dm8/bin
[root@ecs-301110 bin]$ ./dmrman CTLSTMT="BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/backup/BACKUP_FILE_01'"
dmrman V8
BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dm8/backup/BACKUP_FILE_01'
file dm.key not found, use default license!
Global parameter value of COMPRESS_MODE is illegal, use default value!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[41750], file_lsn[41750]
Processing backupset /dm8/backup/BACKUP_FILE_01
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
backup successfully!
time used: 00:00:01.062
[root@ecs-301110 bin]# systemctl start DmServicePROD
备份后启动数据库并删除TEST用户
关闭数据库并还原刚才的备份
[root@ecs-301110 bin]# su - dmdba
Last login: Fri Aug 19 17:14:08 CST 2022 on pts/2
[dmdba@ecs-301110 ~]$ cd /dm8/bin
[dmdba@ecs-301110 bin]$ ./dmrman CTLSTMT="RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/backup/BACKUP_FILE_01'"
dmrman V8
RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/backup/BACKUP_FILE_01'
file dm.key not found, use default license!
Global parameter value of COMPRESS_MODE is illegal, use default value!
os_file_open_normal_rw error! path: '/dm8/data/DAMENG/ctl_bak/dm_20220819234826_615531.ctl', code: 13, desc: Permission denied
os_file_open_normal_rw error! path: '/dm8/data/DAMENG/ctl_bak/dm_20220819234557_434299.ctl', code: 13, desc: Permission denied
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
os_file_open_low_real at (/home/test/xzq1/trunk8_rel_2110/bak2/res2.c: 1949) error! desc: Permission denied, path: /dm8/data/DAMENG/DAMENG01.log, code: 13
os_file_open_low_real at (/home/test/xzq1/trunk8_rel_2110/bak2/res2.c: 1949) error! desc: Permission denied, path: /dm8/data/DAMENG/DAMENG02.log, code: 13
os_file_open_low_real at (/home/test/xzq1/trunk8_rel_2110/bak2/res2.c: 1949) error! desc: Permission denied, path: /dm8/data/DAMENG/DAMENG03.log, code: 13
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]os_file_open_normal_rw error! path: '/dm8/data/DAMENG/ctl_bak/dm_20220819234826_615531.ctl', code: 13, desc: Permission denied
os_file_open_normal_rw error! path: '/dm8/data/DAMENG/ctl_bak/dm_20220819234557_434299.ctl', code: 13, desc: Permission denied
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.547
[dmdba@ecs-301110 bin]$ ./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/backup/BACKUP_FILE_01'"
dmrman V8
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/backup/BACKUP_FILE_01'
file dm.key not found, use default license!
Global parameter value of COMPRESS_MODE is illegal, use default value!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[41750], file_lsn[41750]
备份集[/dm8/backup/BACKUP_FILE_01]备份过程中未产生日志
recover successfully!
time used: 268.508(ms)
[dmdba@ecs-301110 bin]$ ./dmrman CTLSTMT="RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
dmrman V8
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' UPDATE DB_MAGIC
file dm.key not found, use default license!
Global parameter value of COMPRESS_MODE is illegal, use default value!
Database mode = 0, oguid = 0
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
EP[0]'s cur_lsn[41750], file_lsn[41750]
recover successfully!
time used: 00:00:01.015
[dmdba@ecs-301110 bin]$ exit
logout
[root@ecs-301110 bin]# systemctl start DmServicePROD
查看TEST用户是否已经恢复
物理联机状态备份
注:联机物理备份还原方式和上面一样
2.2、逻辑备份
Dexp 逻辑导出 dimp 逻辑导入
Dexp和dimp是DM自带的工具,分为四种级别:
数据库级,用户级、模式级和表级。四种级别独立互斥,不能同时存在。四种级别所提供的功能:
数据库级(full):导出或导入整个数据库中的访问对象。
用户级(owner):导出或导入一个或多个用户所拥有的所有对象。
模式级(schemas):导出或导入一个或多个模式下的所有对象。
表级(table):导出或导入一个或多个指定的表或表分区。
数据库要在开启的状态才行:全库导出:full=y; 按用户导出:owner=XXX; 按模式导出:schemas=XXX; 按表导出:tables=XXX
#使用dexp逻辑备份全库
[dmdba@ecs-301110 bin]$ ./dexp userid=sysdba/dAMENG123:5237 directory=/dm8/backup file=full_03.dmp log=full_03.log full=y
#使用dimp恢复逻辑备份
[dmdba@ecs-301110 bin]$ ./dimp userid=sysdba/dAMENG123:5237 directory=/dm8/backup file=full_03.dmp log=impfull.log full=y
三、DM8作业管理
DM8作业系统包含作业、警报和操作员三部分。用户需要为作业配置步骤和调度。还可以创建警报,当发生警报时,将警报信息通知操作员,以便操作员能够及时做出响应。使用达梦数据库作业管理工具可以完成定期备份数据库。
作业是指定一系列操作,定时执行,包括:
创建作业:指定作业名和作业描述
开始作业配置:客户端配置会自动执行这一步骤
配置作业步骤:需要执行的操作
配置作业调度:定义执行的时间
完成作业配置:客户端配置会自动执行这一步骤
新建全量备份作业
右键点击“代理”,创建代理环境;
右键点击“作业”“新建作业”
新建增量备份作业
右键点击“代理”,创建代理环境;
右键点击“作业”“新建作业”
可以使用命令设置作业
#创建代理
SP_INIT_JOB_SYS (1);
#设置全量作业
call SP_CREATE_JOB('JOB1',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('JOB1');
call SP_JOB_SET_EP_SEQNO('JOB1', 0);
call SP_ADD_JOB_STEP('JOB1', 'BAK', 6, '00000000/dm8/backup', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('JOB1', 'TEST', 1, 2, 1, 9, 0, '23:00:00', NULL, '2022-08-19 10:08:14', NULL, '');
call SP_JOB_CONFIG_COMMIT('JOB1');
#设置增量备份
call SP_CREATE_JOB('JOB2',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('JOB2');
call SP_JOB_SET_EP_SEQNO('JOB2', 0);
call SP_ADD_JOB_STEP('JOB2', 'bak2', 6, '10000000/dm8/backup|/dm8/backup1', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('JOB2', 'bak2', 1, 2, 1, 118, 0, '23:00:00', NULL, '2022-08-19 10:17:37', NULL, '');
call SP_JOB_CONFIG_COMMIT('JOB2');
三、编译安装ODBC及使用ODBC连接达梦数据库
ODBC为异构数据库访问提供统一接口,允许应用程序以SQL为数据存取标准,存取不同DBMS管理的数据;使应用程序直接操纵DB中的数据,免除随DB的改变而改变。
#检查是否安装gcc
rpm -ap |grep gcc
#解压安装包
tar -xzvf unixODBC-2.3.0.tar.gz
#配置ODBC
./configure --enable-gui=no
#编译安装ODBC
make && make install
ODBC默认安装在/usr/local/etc/,进入/usr/local/etc/目录,可以看到odbc.ini和odbcinst.ini两个文件,有特殊情况可能会安装在/etc目录下,可以输入odbcinst -j进行确认配置文件
查看 odbc 配置文件路径
odbcinst -j
查看 odbc 版本
odbc_config --version
配置 odbc.ini 和 odbcinst.ini
[dmdba@ecs-301110 bin]$ cd /usr/local/etc/
[dmdba@ecs-301110 etc]$ cat odbc.ini
[dm8]
Description = DM ODBS DSND
Driver = DM8 ODBC DRIVER #需要和odbcinst.ini 文件中标题一样
SERVER = 127.0.0.1 #数据库地址
UID = TEST #数据库用户
PWD = Dameng123 #数据库TEST用户密码
TCP_PORT = 5237 #数据库端口号
[dmdba@ecs-301110 etc]$ cat odbcinst.ini
[DM8 ODBC DRIVER] #需要和odbc.ini文件中 Driver参数一样
Description = ODBC DRIVER FOR DM8
DRIVER = /dm8/bin/libdodbc.so
验证ODBC
[dmdba@ecs-301110 etc]$ isql dm8
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
四、配置数据库用户密码规则
4.1、数据库参数概述
达梦数据库初始化参数分为手动、 静态和动态三种类型,分别对应V$PARAMETER视图中 TYPE列的READ ONLY、 IN FILE、 SYS/SESSION。服务器运行过程中,手动(READ ONLY) 参数不能被修改,静态和动态参数可以修改。
READONLY:只读参数,不能通过系统函数或SQL修改;只能修改dm.ini文本文件,需重启数据库才能生效。
INFILE:静态参数,可以通过系统函数或SQL修改,但是只能修改参数文件中的值,不能修改内存中的值,所以静态参数的修改需要重启数据库才能生效。
SESSION:动态参数(会话级)可以通过系统函数或SQL修改即可以修改内存中的值,也可以修改参数文件的值可以单独对某个会话修改该参数值
SYS:动态参数(系统级)可以通过系统函数或SQL修改即可以修改内存中的值,也可以修改参数文件的值。修改后影响整个系统,不能精确到会话
达梦数据库的参数修改的方式:
(1)编辑dm.ini文本文件重启生效
(2)DM控制台工具修改(重启生效)
(3)SQL语句(alter system set XXX both|spfile|memory)
both:表示修改内存和参数文件中的值;
spfile修改参数文件
memory修改内存
达梦数据库提供SF_GET_PARA_VALUE、SF_GET_PARA_DOUBLE_VALUE和SF_GET_PARA_STRING_VALUE这三个函数来获取系统的当前配置参数
提供SP_SET_PARA_VALUE和SP_SET_PARA_DOUBLE_VALUE过程来修改静态/动态配置参数。
4.2、修改数据库用户密码策略
达梦数据库系统默认口令策略:
0: 无策略;
1: 禁止与用户名相同;
2: 口令长度不小于 9;
4: 至少包含一个大写字母(A-Z);
8 :至少包含 一个数字(0-9);
16:至少包含一个标点符 号
若为其他数字,则表示配置值的和,如 3 =1+2,表示同时启用第 1 项和第 2 项策略。当 COMPATIBLE_MODE=1 时,PWD_POLICY 的实 际值均为 0。
#查询数据库当前用户密码策略并修改为口令长度不小于9,禁止与用户名相同,至少包含一个大写字母
[root@ecs-141585 bin]# ./disql SYSDBA/Dameng123@localhost:5237
服务器[localhost:5237]:处于普通打开状态
登录使用时间 : 1.101(ms)
disql V8
SQL> select PARA_VALUE from v$dm_ini where para_name ='PWD_POLICY';
行号 PARA_VALUE
---------- ----------
1 2
已用时间: 4.489(毫秒). 执行号:600.
SQL> sp_set_para_value(1,'PWD_POLICY',7);
DMSQL 过程已成功完成
已用时间: 5.997(毫秒). 执行号:601.
SQL> select PARA_VALUE from v$dm_ini where para_name ='PWD_POLICY';
行号 PARA_VALUE
---------- ----------
1 7
已用时间: 3.315(毫秒). 执行号:602.
SQL>
创建用户test002验证是否修改成功
从图片中可以看出来,无论里面设置成dameng123和dame_g123都是不符合当前的用户密码策略,只有密码中同时满足有一个大写字母、口令长度不小于 9、 禁止与用户名相同
总结:
经历了三天的培训,了解了DM8系统的更多知识,此次培训让自己收获很多,弥补上了之前学习DM的一些漏洞。
达梦公司安排的培训讲师,讲的很详细、回答问题很耐心。
参加完培训对数据库用户权限、表空间、数据库初始化参数、表空间的创建修改等、数据库参数的修改、归档日志修改与添加、重做日志的添加、使用作业定时完成全库备份与定时增量备份、ODBR的安装及使用、数据库的物理(联机及脱机)备份恢复及逻辑备份与恢复、数据库各种图形化工具的使用有了更深得了解。
分享一个小知识,可以提前了解达梦数据库(安装完dm数据库,在安装目录下有一个doc的目录,这里面都是达梦数据库的使用文档)
通过上图可以看到DM8_dexp和dimp使用手册,这是逻辑备份使用的命令,里面有关于逻辑备份的参数,有需要备份的需求可以去看一下,还有实时守护与读写分立的使用手册这里面是达梦数据库的主备,达梦数据库的主备还可以使用自带的dmmonitor组件实现自动切换主备与手动切换主备,只需要一条命令就可以了,感兴趣的同学可以一起讨论使用哈。
还有DMDSC集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。这也是我正在学习的,在doc目录中关于这些集群的文档都事有的就是共享存储集群.pdf
我这有一个问题需要说一下,要是想使用图形化安装的方式安装数据库,我使用dmdba用户启动管理工具无法使用。
遇到的时候我有点懵,这是什么玩意,因为按照我的DISPLAY dmdba和root用户已经设置成一样的了,也都执行了xhost + ,还是不行然后我想是不是环境变量的问题,因为我在切换dmdba用户的时候使用的是su - dmdba 这么使用的dmdba的环境变量,后来我使用su dmdba 这样就可以启动图像化页面了。注意一下这个,碰到这个问题后不要慌
更多内容可访问达梦官方社区地址:https://eco.dameng.com