达梦单库, log里的dm_BAKRES这个日志,一直刷无法获取一行数据 ,一直增大,导致硬盘满载,这个是什么原因?


含羞草懦弱
含羞草懦弱 2024-04-12 17:05:59 47884
分类专栏: 问题

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=53255
赞同 0
评论 2 条
  • 1843880570 2024-04-12 17:11:09

    Linux 环境,数据库实例服务开启状态下,使用 dmdba 用户在 bin 目录下启动 DMRMAN 工具,执行备份命令报错 [-137]: 服务器正在运行或者存在其他进程正在操作同一个库。

    报错信息

    【问题原因】

    DmServerDMSERVER 服务没有关闭。DMRMAN 是脱机备份,备份时一定要关闭数据库。

    【解决方法】

    使用 root 执行如下命令关闭数据库实例服务(DMSERVER 是数据库实例名)即可。

    Copy[root@localhost ~]# systemctl stop DmServiceDMSERVER.service
    

    执行备份命令报错[-135]

    【问题现象】

    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 时发现,表空间名不存在。

    报错信息

    DDL 语句

    正确还原表空间的方法如下:

    在联机还原表空间时,选择需要还原的表空间备份,在表空间名选项中,下拉框中选择需要还原的表空间名即可进行还原。

    选择表空间名

    还原成功后,会弹出提示界面。

    恢复成功

    自带的备份还原工具与 dmrman 的区别

    DM 数据库安装完成后,在程序目录 bin 下有自带的 dmbackup/dmresore 工具,这两个工具一般用来选择 DM 数据库早期的备份还原,不是基于备份集组织的备份还原,即适用于 V1.0 版本备份还原。

    而新版 DM 数据库引入了备份片、元数据文件、备份集等概念,提供第三方备份(TAPE 类型)接口,支持 RAC 备份,使用 DMRMAN 工具进行脱机备份还原,即 V2.0 版本备份还原。综合性能和灵活性优先推荐使用 V2.0 版本备份还原方式。

    查看当前环境备份最便捷的方式是,查看每一次备份目录下是否有 .meta 元数据文件,如果有则是 V2.0 备份集备份方式,如果没有则是 V1.0 备份方式。

    具体使用方法和配置方法详见《DM 备份与还原手册》。(手册位于数据库安装路径 /dmdbms/doc/special 文件夹下)。

    dmrman 的用途

    类似于 Oracle 的 rman 工具,DM 数据库提供了脱机备份还原管理工具 dmrman,由它来统一负责库级脱机备份、脱机还原、数据库恢复等相关操作,该工具支持命令行指定参数方式和控制台交互方式执行,降低了用户的操作难度。

    当安装 DM 数据库后,dmrman 可执行程序就位于程序目录 bin 下,直接使用 ./dmrman 就可以进入 dmrman 命令行交互环境中,具体使用方法和配置方法详见《DM 备份与还原手册》。(手册位于数据库安装路径 /dmdbms/doc/special 文件夹下)。

    备份集还原报错:[管道连接失败]

    【问题描述】

    DM 数据库通过备份集方式进行的物理完全备份时,报错:“CMD END.CODE: [-7105],DESC: [管道连接超时] [-7105]: 管道连接超时”。

    【问题分析】

    该故障一般发生于 restore 阶段,需要检查以下两点:

    1. DMAP 是否启动,需要使用 DMAP 来进行备份集还原。
    2. 使用正确的用户启动 DMAP,需要保证存放备份集文件的备份集目录有读取权限。

    【问题解决】

    1. DMAP 服务的启动用户,必须是 DM 数据库的安装用户。例如:数据库是用 dmdba 用户安装的,那么就要用 dmdba 用户去启动;如果是 root 用户安装的,就用 root 用户去启动。
    2. 确定备份集保存目录的所有备份集文件有读取权限。

    DMAP 启动报管道已存在连接失败

    • DMAP 服务启动报错: [-7157] Name pipe exits

    报错信息

    提示管道文件已经存在。

    • 原因分析:DMAP 服务没有正常关闭,如直接 kill DMAP 服务,管道文件没有释放。
    • 解决方法:切换到 dmdbms/bin 下面,找到原来的管道文件,删除,重新启动 DMAP 服务。

    成功信息

    • DMAP 服务的启动用户,必须是 DM 数据库的安装用户。例如:数据库是用 dmdba 用户安装的,那么就要用 dmdba 用户去启动;如果是 root 用户安装的,就用 root 用户去启动。
    • 如果命令配置了环境变量,则必须到 dmdbms/bin 目录下面,执行 ./dmap 启动 DMAP 服务,否则备份数据库报错 Pipe connect failure!

    启动服务

    [-7103]: 创建命名管道失败

    【问题现象】

    中标麒麟 7 环境,在将 DM 数据库 bin 路径配置到环境变量 path 中,可以在任意目录下执行 DMRMAN 命令,但是进入 DMRMAN 后执行备份命令,会有如下报错 [-7103]: 创建命名管道失败。

    创建失败

    【问题原因】

    当执行 DMRMAN 命令进行备份操作的时,会根据 DMRMAN 命令所在路径下寻找由 DM_PIPE_ 开头的管道文件,而不是通过 path 设置的环境变量路径来寻找对应的管道文件,DM_PIPE_ 一般是在 bin 目录下生成。

    【解决方法 1】

    使用 DM 数据库安装用户 dmdba 进入 DM 数据库安装路径 .../bin 目录下启动 DMRMAN 工具,执行备份脚本提示成功。

    执行备份

    【解决方法 2】

    DM 数据库备份还原依赖 DMAP 服务,必须启动,且一定要正确的用户启动。

    1. 如果 dmserver 是 dmdba 用户启动的,则 DMAP 也要用 dmdba 用户启动。
    2. 前端命令启动方式
    Copycd /home/dmdba/dmdbms/bin
    ./dmap
    
    1. 也可通过操作系统服务的方式启动
    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 操作步骤。

    [-8109]: 创建 DMAP 管道失败

    【问题现象】

    中标麒麟 7 环境,dmdba 在 bin 目录下启动 DMRMAN 工具,执行备份命令报错 [-8109]: 创建 DMAP 管道失败,请检查 DMAP 是否已经启动。

    失败信息

    【问题原因】

    没有启动 DmAPService 服务。

    【解决方法】

    使用 root 用户执行如下命令启动 DmAPService 服务,启动后执行备份命令正常。

    Copy[root@localhost ~]# systemctl start DmAPService.service
    

    信息

    如若 Windows 10 环境下,DmAPService 服务已启动,仍然报这个错误,请使用以管理员身份运行 cmd 命令;同样如果在控制台工具上也报此错误,请使用以管理员身份运行控制台工具。

    管理员身份运行

    备份报错 [-8084]: 起始 LSN [47619] 小于等于基备份结束 LSN [47631]

    【解决方法】

    未找到基备份,如果未指定基备份,DM 数据库会去默认的路径下查找基备份,默认路径可执行以下语句。

    Copyselect para_name,para_value from v$dm_ini where para_name='BAK_PATH';
    

    【解决方法】

    增量备份时指基备份集,使用以下命令。

    Copybackup database increment with backupdir ‘基备份路径‘ backupset ‘备份路径’;
    

    可以参考链接:参考文献

    同时注意全量备份后需要对数据操作一下,例如加一条数据之类的,要不然没有增量,自然不能增量备份。

    备份的时候报错:创建 DMAP 管道失败

    【用户场景】

    用户用的是 root 安装 DM 数据库,用 root 启动的 DM 数据库服务,用 root 做的备份操作,用 root 在 bin 目录下启动的 DMAP 服务并且可以看到 DMAP 服务已经启动。

    【解决方法】

    1. 按照安装手册,用 dmdba 用户安装并启动 DM 数据库服务,用 dmdba 启动 DMAP 服务,不要使用 root 用户。
    2. dm.ini 里面 BAK_USE_AP 改成 2 ,重启实例(如果您用 dmran 话,需要将 dmrman use_ap 修改为 2)。

    Windows 下配置归档目录报错:归档目标无效

    举例如下:

    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 路径,建议选择路径的时候直接复制文件路径,不要自己写,避免写错。

    远程备份:如何用控制台远程备份数据库到本地

    远程备份要到本地只能逻辑导出。备份到本地的步骤如下:

    1. 将备份文件备份到数据库所在那台服务器上。
    2. 通过 shell 脚本将备份文件分发到指定的服务器上面。

    达梦数据库的自动备份机制

    可以设置定时备份作业。

    可参考定时备份,或《DM 作业系统使用手册》,手册位于数据库安装路径 /dmdbms/doc 文件夹。

    Windows 中达梦导出的数据库能否在 Linux 下还原

    可以;不过最好保持初始化参数一致。

    比如字符集:源数据库的字符集,导入数据库的字符集,导入数据库的系统字符集要一直。否则容易出现中文乱码问题。

    关于 DmAPService 服务的相关问题

    【问题 1】:DmAPService 服务主要作用是什么呢?如果数据库正在提供业务,重启这个服务会影响业务运行吗?

    【解答】:DmAPService 服务主要是备份数据库时候会用到。重启这个服务不影响业务运行。

    【问题 2】:服务查看器中 DmAPService 服务路径怎么修改,或者服务怎么删除?

    【解答】:这个是系统带的辅助服务,路径是不可以修改的,如果用不到的话,不启动就可以。通过操作系统自带的服务管理功能可以删除此服务。

    【问题 3】:在服务查看器上怎么启动这个服务?

    【解答】:那直接右键启动就可以了,DMAP 服务不需要 ini 文件。

    还原报错:-8024 数据文件读写出错

    【问题描述】:

    利用 dmrman 工具执行还原操作时报错:[-8024]: 数据文件读写出错。报错截图如下:

    image.png

    【问题解决】:

    1. 检查当前还原所用用户是否是 dmdba 用户。
    2. 检查当前数据目录所有者是否是 dmdba 用户。dmdba 用户能否读写数据目录下的文件。
    3. 检查备份集所有者是否是 dmdba 用户。检查备份集所在目录是否对 dmdba 用户可读可写。
    4. 检查是否使用的是 dmdba 用户调用的 dmrman。若使用的是 root 用户调用 dmrman 服务执行备份和恢复,应确保 dmap 服务也是 root 用户执行。可以停止 dmap 服务(./DmAPService stop)后重新用 root 用户启动 dmap 服务(./DmAPService start),或者在使用 dmrman 命令时添加参数 use_ap=2,不使用 dmap 辅助服务,这样可以避免由于 dmap 服务权限不够引发该报错。建议统一使用 dmdba 用户对数据库进行管理和维护。

    命令行如何开启 dmap 服务

    有两种启动的方式

    1. 直接进入安装目录的 bin 目录下执行 ./damp
    2. 注册 damp 服务,用服务的方式启动 damp 服务。具体的操作可以参考安装目录 doc 目录下的:“ DM_Linux 服务脚本使用手册”。

    -8273 无效的备份集目录

    需要把整个的备份集目录复制到对应目录,然后执行 dmrman ,对备份集进行校验,校验备份集是否存在及合法。

    Copy./dmrman CTLSTMT="CHECK BACKUPSET '/data/dmbak/BACKUP_FULL_20210223'"
    

    备注:
    备份集用来存放备份过程中产生的备份数据及备份信息。
    一个备份集对应了一次完整的备份。
    一般情况下,一个备份集就是一个目录,备份集包含一个或多个备份片文件,以及一个备份元数据文件。
    备份片文件后缀为.BAK,用来存放备份数据。
    元数据文件用来存放备份信息,元数据文件的后缀为.META。
    这个报错可能是备份有问题,需要确认怎么生成的备份文件,还原的时候需要用完整的备份集进行还原。
    在进行数据库还原的时候,需要用对数据备份文件有权限的用户来做还原,比如 dmdba 用户。

    arch 归档的 log 日志可以恢复到之前的数据状态吗

    需要完整的备份集以及完整连续的归档才能还原,详细信息可以参考安装目录 doc 目录下的 DM 备份还原手册。

    警告窗口:库、表空间的联机备份操作需要数据库实例运行在归档模式并处于打开状态,检测到当前实例不满足备份条件,请调整实例状态然后再进行备份操作

    需要开启归档,参考:配置本地归档

    备份报错:归档日志不连续

    【问题解决】

    联机备份时,关闭已配置的本地归档之后再重新打开,会造成归档文件中部分日志缺失,备份时检查归档文件连续性时将会报错。

    在执行联机数据库备份过程中,如果报错归档不连续,则需要先执行生成检查点操作,才能正常备份。例如:checkpoint(100);或者,重启数据库。

    物理全库备份还原后,启动目的端数据库报错版本不匹配

    【问题原因】

    物理全库备份还原后,启动目的端数据库报错:

    db version mismatch,database version [0x7000c]>dmserver support db_version[0x7000b]

    此为高版本向低版本降级报错,一般不建议做数据库降级。

    【解决方案】

    将目的端数据库升级和源端一致,然后再做全库物理备份还原。或者做逻辑导入导出,将源端高版本 bin 目录拷贝到目的端低版本的数据库中,再执行 dimp 导入工作。

    DM8 企业版还原到安全版报错:标记不匹配

    【问题说明】
    dm8 企业版的脱机备份,用物理备份恢复还原到安全版,在做新建表插入数据的时候,会报错提示标记不匹配。

    【解决方法】
    跨版本问题,重新初始一个新库,用 DTS 迁移。

    新建的备份作业未运行,没有报错,也看不到历史运行记录

    【问题原因】

    一般是新建备份作业的设置问题。
    检查新建作业调度是否启用,如下图所示的位置:

    作业调度启用

    同时在新建作业步骤--高级选项中--作业,检查作业步骤完成后的操作,如下图所示的位置:

    作业步骤完成后的操作

    当作业调度未启用,且设置作业完成后,无论成功与失败均“不报告执行成功并结束作业”,则会导致作业未运行且看不到历史运行记录。

    从数据库实例 A 备份还原到已有的数据库实例 B 上,用原实例 B 的数据库账号密码登录报错

    【问题分析】

    登录账号密码也属于实例的对象成员之一,因此从数据库实例 A 备份还原到已有的数据库实例 B 后,原实例 B 的所有对象成员已变成 A 实例的对象成员,所以原账号不能登录,用备份实例 A 的系统账号密码登录即可。

    如何对备份进行加密

    【问题描述】

    在达梦数据库中如何对备份进行加密?如果使用作业备份又如何加密备份?

    【问题解决】

    DM 支持对备份数据进行加密处理,备份加密包括加密密码、加密类型和加密算法三个要素。加密密码通过使用 IDENTIFIED BY< 加密密码 > 来指定,使用备份集的时候必须输入对应密码。加密类型分为不加密、简单加密和完全加密。简单加密仅仅对部分数据进行加密,加密速度快;完全加密对所有数据执行加密,安全系数高。

    1. 例如:创建加密密码为“abc123456”,加密算法为“rc4”的完全加密全备:
    CopyBACKUP DATABASE BACKUPSET '/dm/dmbak/dbbak_scprit' IDENTIFIED BY "abc123456" WITH ENCRYPTION 2 ENCRYPT WITH RC4;
    
    1. 当使用作业备份时可以通过创建存储过程,备份作业调用的方式来对备份进行加密,具体方法如下示例:
    • 全量备份及删除策略配置

    在全量备份执行成功后进行删除备份操作,若全量备份执行失败,则结束作业。

    (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)登录管理工具——右键点击代理——创建代理环境

    image.png

    (3)右键点击作业——新建作业

    image.png

    (4)创建步骤一为全量备份调用刚才创建的全备存储过程

    Copycall"SYSDBA"."FULLBAK"();
    

    image.png

    (5)在步骤一中点击“高级”设置成功时“报告执行成功并继续执行下一步”,以及失败时“报告执行失败并结束作业”。

    image.png

    (7)创建步骤二,删除备份,在作业步骤中继续添加删除作业。

    image.png

    (8)配置删除策略中的路径和保留时间,按照实际要求填写即可,30 即保留 30 天的备份作业。

    CopySF_BAKSET_BACKUP_DIR_ADD('DISK','/dmbak');
    call SP_DB_BAKSET_REMOVE_BATCH('DISK',SYSDATE-30);
    

    image.png

    (9)可在高级中设置成功时“报告执行成功并结束作业”,以及失败时“报告执行失败并结束作业”。方便在历史作业信息中查看备份情况。

    image.png

    (10)设置作业调度,设置作业每周六晚 22:00 执行作业。

    image.png

    赞同 0 反对 0
    回复

  • 无为 2024-04-12 23:10:45

    达梦数据库日志无限增长

    在执行完以上步骤后,过了一段时间发现sqllog日志只生成了一个,且这个日志的大小不断增大,想要打开查看日志信息的时候,却因为文件太大加载不出来,这就是配置文件未生效的原因。

    sqllog.ini配置文件一般修改三个地方:FILE_PATH、SWITCH_LIMIT、FILE_NUM,但是可能在修改过程中,大家对于配置文件不熟悉,所以会修改其他地方,比如将SWITCH_MODE=2、ASYNC_FLUSH=1都改为0,这样的话,即便是数据库调用了该配置文件也不会生效

    这两个参数的含义如下:

    (以上两张图均截自达梦官方文档《DM8系统管理员手册》,大家有需求可以在数据库安装目录中查找对应版本的手册文件,版本不同,手册中的内容会有所变化)

    如果在安装配置的时候没有对sqllog.ini配置文件有特殊要求,那么尽量不要改动这两个参数,导致日志文件无法按照既定的大小生成。

    不知是否符合您的问题

                     

    赞同 0 反对 0
    回复

含羞草懦弱L1
粉丝 0 发表 10 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2935
【软件正版化】软件正版化工作要点  2854
统信UOS试玩黑神话:悟空  2811
信刻光盘安全隔离与信息交换系统  2702
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1235
grub引导程序无法找到指定设备和分区  1205
点击报名 | 京东2025校招进校行程预告  162
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  160
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  156
金山办公2024算法挑战赛 | 报名截止日期更新  153
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!