网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
Linux 环境,数据库实例服务开启状态下,使用 dmdba 用户在 bin 目录下启动 DMRMAN 工具,执行备份命令报错 [-137]: 服务器正在运行或者存在其他进程正在操作同一个库。
【问题原因】:
DmServerDMSERVER 服务没有关闭。DMRMAN 是脱机备份,备份时一定要关闭数据库。
【解决方法】:
使用 root 执行如下命令关闭数据库实例服务(DMSERVER 是数据库实例名)即可。
Copy[root@localhost ~]# systemctl stop DmServiceDMSERVER.service
【问题现象】:
Windows 10 环境,数据库实例服务开启状态下,在 bin 目录下启动 DMRMAN 工具,执行备份命令报错 [-135]: 创建信号量失败。
【问题原因】:
DmServerDMSERVER 服务没有关闭。
【解决方法】:
使用 DM 服务查看器关闭 DmServerDMSERVER 服务。
Copy--周日全备
call SP_CREATE_JOB( 'back_up_db_full',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('back_up_db_full');
call SP_ADD_JOB_STEP('back_up_db_full', 'back_up_full_on_sunday', 5, '01000E:\dbdata\DAMENG\bak', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('back_up_db_full', 'back_full_once_a_week', 1, 2, 1, 1, 0, '20:20:20', NULL, '2019-11-08 16:20:41', NULL, '');
call SP_JOB_CONFIG_COMMIT('back_up_db_full');
--周一至周六增备
call SP_CREATE_JOB('back_up_db_incr',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('back_up_db_incr');
call SP_ADD_JOB_STEP('back_up_db_incr', 'back_db_inc_days', 5, '11100E:\dbdata\DAMENG\bak|E:\dbdata\DAMENG\bak', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('back_up_db_incr', 'once_a_day', 1, 2, 1, 126, 0, '20:20:20', NULL, '2019-11-08 16:22:28', NULL, '');
call SP_JOB_CONFIG_COMMIT('back_up_db_incr');
也可以通过定时作业设置调度执行的。
在进行表空间备份还原时,表空间名如果未选择,直接进行还原,会报【表空间名不能为空】错误,并且在查看还原表空间的 DDL 时发现,表空间名不存在。
正确还原表空间的方法如下:
在联机还原表空间时,选择需要还原的表空间备份,在表空间名选项中,下拉框中选择需要还原的表空间名即可进行还原。
还原成功后,会弹出提示界面。
DM 数据库安装完成后,在程序目录 bin 下有自带的 dmbackup/dmresore 工具,这两个工具一般用来选择 DM 数据库早期的备份还原,不是基于备份集组织的备份还原,即适用于 V1.0 版本备份还原。
而新版 DM 数据库引入了备份片、元数据文件、备份集等概念,提供第三方备份(TAPE 类型)接口,支持 RAC 备份,使用 DMRMAN 工具进行脱机备份还原,即 V2.0 版本备份还原。综合性能和灵活性优先推荐使用 V2.0 版本备份还原方式。
查看当前环境备份最便捷的方式是,查看每一次备份目录下是否有 .meta 元数据文件,如果有则是 V2.0 备份集备份方式,如果没有则是 V1.0 备份方式。
具体使用方法和配置方法详见《DM 备份与还原手册》。(手册位于数据库安装路径 /dmdbms/doc/special
文件夹下)。
类似于 Oracle 的 rman 工具,DM 数据库提供了脱机备份还原管理工具 dmrman,由它来统一负责库级脱机备份、脱机还原、数据库恢复等相关操作,该工具支持命令行指定参数方式和控制台交互方式执行,降低了用户的操作难度。
当安装 DM 数据库后,dmrman 可执行程序就位于程序目录 bin 下,直接使用 ./dmrman 就可以进入 dmrman 命令行交互环境中,具体使用方法和配置方法详见《DM 备份与还原手册》。(手册位于数据库安装路径 /dmdbms/doc/special
文件夹下)。
【问题描述】
DM 数据库通过备份集方式进行的物理完全备份时,报错:“CMD END.CODE: [-7105],DESC: [管道连接超时] [-7105]: 管道连接超时”。
【问题分析】
该故障一般发生于 restore 阶段,需要检查以下两点:
【问题解决】
提示管道文件已经存在。
dmdbms/bin
目录下面,执行 ./dmap
启动 DMAP 服务,否则备份数据库报错 Pipe connect failure!
【问题现象】:
中标麒麟 7 环境,在将 DM 数据库 bin 路径配置到环境变量 path 中,可以在任意目录下执行 DMRMAN 命令,但是进入 DMRMAN 后执行备份命令,会有如下报错 [-7103]: 创建命名管道失败。
【问题原因】:
当执行 DMRMAN 命令进行备份操作的时,会根据 DMRMAN 命令所在路径下寻找由 DM_PIPE_
开头的管道文件,而不是通过 path 设置的环境变量路径来寻找对应的管道文件,DM_PIPE_ 一般是在 bin 目录下生成。
【解决方法 1】:
使用 DM 数据库安装用户 dmdba 进入 DM 数据库安装路径 .../bin 目录下启动 DMRMAN 工具,执行备份脚本提示成功。
【解决方法 2】:
DM 数据库备份还原依赖 DMAP 服务,必须启动,且一定要正确的用户启动。
Copycd /home/dmdba/dmdbms/bin
./dmap
Copysystemctrl start DmAPService
否则会报错,如下所示:
Copyos_pipe2_create_server_with_name, name:[ /DM_PIPE_DMRMAN-3676_1_RD], error:[2]
假如 1、2 或者 1、3 都无问题,依旧报错:
Copyos_pipe2_create_server_with_name, name:[ /DM_PIPE_DMRMAN-3676_1_RD], error:[2]
可进行以下操作:
Copycd /home/dmdba/dmdbms/bin
rm -rf DM_PIPE_*
完成后再依次进行 1、2 或者 1、3 操作步骤。
【问题现象】:
中标麒麟 7 环境,dmdba 在 bin 目录下启动 DMRMAN 工具,执行备份命令报错 [-8109]: 创建 DMAP 管道失败,请检查 DMAP 是否已经启动。
【问题原因】:
没有启动 DmAPService 服务。
【解决方法】:
使用 root 用户执行如下命令启动 DmAPService 服务,启动后执行备份命令正常。
Copy[root@localhost ~]# systemctl start DmAPService.service
如若 Windows 10 环境下,DmAPService 服务已启动,仍然报这个错误,请使用以管理员身份运行 cmd 命令;同样如果在控制台工具上也报此错误,请使用以管理员身份运行控制台工具。
【解决方法】:
未找到基备份,如果未指定基备份,DM 数据库会去默认的路径下查找基备份,默认路径可执行以下语句。
Copyselect para_name,para_value from v$dm_ini where para_name='BAK_PATH';
【解决方法】:
增量备份时指基备份集,使用以下命令。
Copybackup database increment with backupdir ‘基备份路径‘ backupset ‘备份路径’;
可以参考链接:参考文献
同时注意全量备份后需要对数据操作一下,例如加一条数据之类的,要不然没有增量,自然不能增量备份。
【用户场景】:
用户用的是 root 安装 DM 数据库,用 root 启动的 DM 数据库服务,用 root 做的备份操作,用 root 在 bin 目录下启动的 DMAP 服务并且可以看到 DMAP 服务已经启动。
【解决方法】:
举例如下:
CopyALTER DATABASE ADD ARCHIVELOG 'DEST = d:/test, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';
报错:归档目标无效
【解决方法】:
CopyALTER DATABASE ADD ARCHIVELOG 'DEST = D:/test, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';
修改 DEST 路径,建议选择路径的时候直接复制文件路径,不要自己写,避免写错。
远程备份要到本地只能逻辑导出。备份到本地的步骤如下:
可以设置定时备份作业。
可参考定时备份,或《DM 作业系统使用手册》,手册位于数据库安装路径 /dmdbms/doc
文件夹。
可以;不过最好保持初始化参数一致。
比如字符集:源数据库的字符集,导入数据库的字符集,导入数据库的系统字符集要一直。否则容易出现中文乱码问题。
【问题 1】:DmAPService 服务主要作用是什么呢?如果数据库正在提供业务,重启这个服务会影响业务运行吗?
【解答】:DmAPService 服务主要是备份数据库时候会用到。重启这个服务不影响业务运行。
【问题 2】:服务查看器中 DmAPService 服务路径怎么修改,或者服务怎么删除?
【解答】:这个是系统带的辅助服务,路径是不可以修改的,如果用不到的话,不启动就可以。通过操作系统自带的服务管理功能可以删除此服务。
【问题 3】:在服务查看器上怎么启动这个服务?
【解答】:那直接右键启动就可以了,DMAP 服务不需要 ini 文件。
【问题描述】:
利用 dmrman 工具执行还原操作时报错:[-8024]: 数据文件读写出错。报错截图如下:
【问题解决】:
./DmAPService stop
)后重新用 root 用户启动 dmap 服务(./DmAPService start
),或者在使用 dmrman 命令时添加参数 use_ap=2,不使用 dmap 辅助服务,这样可以避免由于 dmap 服务权限不够引发该报错。建议统一使用 dmdba 用户对数据库进行管理和维护。有两种启动的方式
./damp
。需要把整个的备份集目录复制到对应目录,然后执行 dmrman ,对备份集进行校验,校验备份集是否存在及合法。
Copy./dmrman CTLSTMT="CHECK BACKUPSET '/data/dmbak/BACKUP_FULL_20210223'"
备注:
备份集用来存放备份过程中产生的备份数据及备份信息。
一个备份集对应了一次完整的备份。
一般情况下,一个备份集就是一个目录,备份集包含一个或多个备份片文件,以及一个备份元数据文件。
备份片文件后缀为.BAK,用来存放备份数据。
元数据文件用来存放备份信息,元数据文件的后缀为.META。
这个报错可能是备份有问题,需要确认怎么生成的备份文件,还原的时候需要用完整的备份集进行还原。
在进行数据库还原的时候,需要用对数据备份文件有权限的用户来做还原,比如 dmdba 用户。
需要完整的备份集以及完整连续的归档才能还原,详细信息可以参考安装目录 doc 目录下的 DM 备份还原手册。
需要开启归档,参考:配置本地归档
【问题解决】:
联机备份时,关闭已配置的本地归档之后再重新打开,会造成归档文件中部分日志缺失,备份时检查归档文件连续性时将会报错。
在执行联机数据库备份过程中,如果报错归档不连续,则需要先执行生成检查点操作,才能正常备份。例如:checkpoint(100);或者,重启数据库。
【问题原因】:
物理全库备份还原后,启动目的端数据库报错:
db version mismatch,database version [0x7000c]>dmserver support db_version[0x7000b]
此为高版本向低版本降级报错,一般不建议做数据库降级。
【解决方案】:
将目的端数据库升级和源端一致,然后再做全库物理备份还原。或者做逻辑导入导出,将源端高版本 bin 目录拷贝到目的端低版本的数据库中,再执行 dimp 导入工作。
【问题说明】:
dm8 企业版的脱机备份,用物理备份恢复还原到安全版,在做新建表插入数据的时候,会报错提示标记不匹配。
【解决方法】:
跨版本问题,重新初始一个新库,用 DTS 迁移。
【问题原因】:
一般是新建备份作业的设置问题。
检查新建作业调度是否启用,如下图所示的位置:
同时在新建作业步骤--高级选项中--作业,检查作业步骤完成后的操作,如下图所示的位置:
当作业调度未启用,且设置作业完成后,无论成功与失败均“不报告执行成功并结束作业”,则会导致作业未运行且看不到历史运行记录。
【问题分析】:
登录账号密码也属于实例的对象成员之一,因此从数据库实例 A 备份还原到已有的数据库实例 B 后,原实例 B 的所有对象成员已变成 A 实例的对象成员,所以原账号不能登录,用备份实例 A 的系统账号密码登录即可。
【问题描述】
在达梦数据库中如何对备份进行加密?如果使用作业备份又如何加密备份?
【问题解决】:
DM 支持对备份数据进行加密处理,备份加密包括加密密码、加密类型和加密算法三个要素。加密密码通过使用 IDENTIFIED BY< 加密密码 > 来指定,使用备份集的时候必须输入对应密码。加密类型分为不加密、简单加密和完全加密。简单加密仅仅对部分数据进行加密,加密速度快;完全加密对所有数据执行加密,安全系数高。
CopyBACKUP DATABASE BACKUPSET '/dm/dmbak/dbbak_scprit' IDENTIFIED BY "abc123456" WITH ENCRYPTION 2 ENCRYPT WITH RC4;
在全量备份执行成功后进行删除备份操作,若全量备份执行失败,则结束作业。
(1)通过以下 SQL 创建备份作业存储过程
CopyCREATE OR REPLACE PROCEDURE FULLBAK AS
DECLARE
V_DATE VARCHAR2(30);
STR VARCHAR2(200);
BEGIN
SELECT TO_CHAR(SYSDATE(),'YYYYMMDDHH24MISS') INTO V_DATE;
STR:= 'backup database backupset ''/dmbak/full_bak'||V_DATE||''' IDENTIFIED BY "SYSDBA123";';
EXECUTE IMMEDIATE STR;
END;
(2)登录管理工具——右键点击代理——创建代理环境
(3)右键点击作业——新建作业
(4)创建步骤一为全量备份调用刚才创建的全备存储过程
Copycall"SYSDBA"."FULLBAK"();
(5)在步骤一中点击“高级”设置成功时“报告执行成功并继续执行下一步”,以及失败时“报告执行失败并结束作业”。
(7)创建步骤二,删除备份,在作业步骤中继续添加删除作业。
(8)配置删除策略中的路径和保留时间,按照实际要求填写即可,30 即保留 30 天的备份作业。
CopySF_BAKSET_BACKUP_DIR_ADD('DISK','/dmbak');
call SP_DB_BAKSET_REMOVE_BATCH('DISK',SYSDATE-30);
(9)可在高级中设置成功时“报告执行成功并结束作业”,以及失败时“报告执行失败并结束作业”。方便在历史作业信息中查看备份情况。
(10)设置作业调度,设置作业每周六晚 22:00 执行作业。
达梦数据库日志无限增长
在执行完以上步骤后,过了一段时间发现sqllog日志只生成了一个,且这个日志的大小不断增大,想要打开查看日志信息的时候,却因为文件太大加载不出来,这就是配置文件未生效的原因。
sqllog.ini配置文件一般修改三个地方:FILE_PATH、SWITCH_LIMIT、FILE_NUM,但是可能在修改过程中,大家对于配置文件不熟悉,所以会修改其他地方,比如将SWITCH_MODE=2、ASYNC_FLUSH=1都改为0,这样的话,即便是数据库调用了该配置文件也不会生效
这两个参数的含义如下:
(以上两张图均截自达梦官方文档《DM8系统管理员手册》,大家有需求可以在数据库安装目录中查找对应版本的手册文件,版本不同,手册中的内容会有所变化)
如果在安装配置的时候没有对sqllog.ini配置文件有特殊要求,那么尽量不要改动这两个参数,导致日志文件无法按照既定的大小生成。
不知是否符合您的问题
加入交流群
请使用微信扫一扫!