作为一个达梦的初学者,写这篇文章的目的是为了把学到的新知识做个总结梳理,在整理中查缺补漏,也希望大家看了我的文章能有收获,如有错误的地方欢迎指出。

  • 实例参数文件:

记录了数据库服务器的各种功能和性能选项,参数属性分为三种:静态、动态和手动。路径为实例的安装目录下,名称为DM.INI。丢失或损坏的情况下会如下报错:

解决办法:初始化一个和故障实例参数一致的新实例,将DM.INI拷贝到故障实例目录下,修改相关的PATH和端口信息等。

  • 控制文件:

记录了数据库的初始信息(数据库名称、OGUID 唯一标识、表空间信息等)的二进制文件 ,路径为实例的安装目录下,名称为DM.CTL。可以通过dmctlcvt工具将二进制的文件转化成文本文件

数据库运行过程中误删控制文件或控制文件损坏不会影响实例服务运行,不过不能操作更改控制文件的相关操作,如创建表空间,会报错‘控制文件错误’。达梦数据库有自动备份控制文件的策略,控制文件备份的路径默认是在数据目录下的ctl_bak目录下,也可以通过查看dm.ini中的CTL_BAK_PATH参数来确认控制文件备份路径,如下图,只要将最新的控制文件把它拷贝到数据目录下并重命名为dm.ctl即可正常启动数据库。

  • 联机重做日志:

包含了所有物理数据页的修改内容,路径为实例的安装目录下,名称为DAMENG01.log/DAMENG02.log。可以通过语句select * from v$rlogfile;查看日志信息。丢失或损坏的情况下,数据库可以正常运行,不过存在风险。

运作中发现丢失,此时应该立即逻辑导出,然后新建实例在逻辑导入。

  • 通过逻辑导出数据

./dexp USERID=SYSDBA/SYSDBA FILE=FULL_DB.dmp FULL=Y DIRECTORY=...

  • 初始化一个和故障实例参数一致的新实例

初始化时的参数可查看dminit###.log文件(###为八位日期+6位流水)

./dminit path=新实例目录

  • 通过逻辑导入数据

./dimp SYSDBA/SYSDBA@192.168.112.128:5237 FULL='Y' FILE='.../FULL_DB.dmp'

服务已经关闭:

当开启归档且有备份时:

使用“备份+归档”还原一个新实例,不存在数据丢失的可能。

当无归档和备份时:

只能替换REDO日志启动数据库,为不完全恢复,可能会有数据丢失的可能。

  • 初始化一个和故障实例参数一致的实例,正常启动、停止一次
  • 查看故障实例的db_magic值(数据库魔数)和pemnt_magic值(数据库永久魔数)

./dmmdf type=1 file=/home/dmdba/dmdbms/data/DAMENG/SYSTEM.DBF

  • 修改新实例的db_magic值和pemnt_magic值

./dmmdf type=2 file=/home/dmdba/dmdbms/data/DAMENG02/DAMENG0201.log

./dmmdf type=2 file=/home/dmdba/dmdbms/data/DAMENG02/DAMENG0202.log

  • 将修改后的日志文件拷贝到故障库,然后启动数据库。

./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini

  • 启动成功后,进行一次全备。
  • 用户数据文件:

用户创建的业务相关的数据文件(包含main.dbf),数据库运行过程中误删用户数据文件损坏不会影响实例服务运行。

误删后未停止数据库服务

  • 通过逻辑导出数据

./dexp USERID=SYSDBA/SYSDBA FILE=FULL_DB.dmp FULL=Y DIRECTORY=...

  • 初始化一个和故障实例参数一致的新实例

初始化时的参数可查看dminit###.log文件(###为八位日期+6位流水)

./dminit path=新实例目录

  • 通过逻辑导入数据

./dimp SYSDBA/SYSDBA@192.168.112.128:5237 FULL='Y' FILE='.../FULL_DB.dmp'

误删前已开启归档且有备份

使用“备份+归档”还原一个新实例,不存在数据丢失的可能。

  • 初始化一个和故障实例参数一致的新实例

./dminit path=新实例目录

  • 通过备份+归档还原

打开RMAN:

RMAN> RESTORE DATABASE '新实例DM.INI目录' FROM BACKUPSET '备份目录';

RMAN> RECOVER DATABASE '新实例DM.INI目录' with archivedir '归档目录' UNTIL time '恢复时间点';

RMAN> recover database '新实例DM.INI目录' update db_magic

误删前无归档无备份

这种情况下数据已经确定无法恢复,只能尽可能保存其他数据,此时可以通过修改控制文件让数据库服务启动,之后再进行备份、还原等操作。

  • 通过dmctlcvt 工具将控制文件转换为可读文件

./dmctlcvt TYPE=1 SRC=控制文件dm.ctl目录 DEST=转换的可读文件保存目录

  • 修改可读文件,将被删除的数据文件的fil_path目录的一行记录删除即可,如下图。

  • 通过dmctlcvt工具将控制文件转换为二进制文件。

./dmctlcvt TYPE=2 SRC=转换的可读文件保存目录 DEST=控制文件dm.ctl目录

  • 重新启动数据库进行逻辑备份。

此时控制文件会被自动补全fil_path(补全机制尚未明确,现象是取之上面最近的一个fil_path),原该数据文件下的表数据会缺失或错误。

  • ROLL.DBF

用于保存系统的回滚记录,提供事务回滚时的信息。回滚文件整个是一个段。每个事务的回滚页在回滚段中各自挂链,页内则顺序存放回滚记录。

同上述的用户数据文件的操作。差异在于无法恢复时,可以选择跳过回滚段PURG的操作启动数据库,修改dm.ini参数PSEG_RECV为0。

若启动不了,则进行ROLL的替换:初始化和故障实例参数一致的新实例,最好将ROLL文件大小调整到源库之前一致,然后拷贝到故障库即可。

  • 密钥文件:

dm_service.prikey是达梦数据库密钥文件,删除后数据不会丢失,此时数据库无法启动。

可以初始化一个新的实例,将新实例的dm_service.prikey拷贝到故障实例数据目录下,数据库就能启动。

达梦社区地址:https://eco.dameng.com

达梦数据库-物理文件损坏或者误删恢复相关推荐

  1. DM8达梦数据库数据文件整体迁移方式

    目录 一.前要 二.模拟环境准备: 三.名词定义 3.1 表空间和数据文件 3.2 重做日志(redo) 3.3 控制文件(dm.ctl) 3.4 参数文件(dm.ini) 3.5 dminit工具 ...

  2. 达梦数据库key文件更换

    达梦数据库当license到期需要替换key文件 1.放key 将新的key文件分别放入需要换KEY的数据库服务器数据库安装目录下的/home/dmdbms/bin目录 删除或移出原有的.key文件 ...

  3. 达梦数据库物理备份恢复_表空间级备份还原

    参考文档<DM8备份恢复手册> 1.表空间级备份还原 联机备份,脱机还原 表空间备份还原的先决条件以及限制条件参考<DM8备份恢复手册>. 1.1 备份 BACKUP V1.0 ...

  4. 【达梦数据库的console工具进行备份恢复遇到报错:bakres连接DMAP失败】

    达梦数据库是我国自主研发数据库,拥有最贴切国人使用的操作.平时使用中,很多人都习惯于使用管理工具和consol工具等图形化的操作,相较于命令行操作更加易上手. DM 控制台工具是一个脱机工具,提供脱机 ...

  5. DM8达梦数据库物理备份方法详细

    物理备份 归档配置说明 通过 dm.ini 和 dmarch.ini 可以配置本地归档.dmarch.ini 生效的前提是 dm.ini 中的参数 ARCH_INI 置为 1.dmarch.ini 可 ...

  6. 达梦数据库redo日志损坏修复方法

    一.什么是redo日志?redo日志有什么用? redo日志即重做日志,重做日志是在DM数据库中添加.删除.修改对象,或者改变数据,DM都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件 ...

  7. 达梦数据库的备份、还原和恢复

    一.备份.还原和恢复的意义 备份的主要目的是数据容灾,保证数据的安全性,在数据库发生故障时,通过还原备份集,将数据恢复到可用状态.还原与恢复的主要目的是将目标数据库恢复到备份结束时刻的状态. 二.备份 ...

  8. linux下达梦数据库导出dmp,DM7 达梦数据库 物理备份还原之 备份管理 操作手册

    1 概述 本篇主要了解如何使用 DMRMAN 工具管理数据库备份.表空间备份及表备份. 管理备份一个重要的目的是删除不再需要的备份.DMRMAN 工具提供 SHOW.CHECK.REMOVE.LOAD ...

  9. 达梦数据库的DMAP服务脚本误删怎么恢复

    在/etc/init.d目录下删除数据库实例的服务脚本DmServiceTEST时,不小心将数据库的dmap服务脚本DmAPService也删除了,恢复的方法如下: 一).在数据库的bin目录本来就有 ...

最新文章

  1. Unix / 类 Unix shell 中有哪些很酷很冷门很少用很有用的命令?(转)
  2. Could not obtain transaction-synchronized Session
  3. 计算机二级python用什么书-如何准备全国计算机二级Python?
  4. Codechef Chef Cuts Tree
  5. org.hibernate.LazyInitializationException: could not initialize proxy - no Session
  6. 考研心路历程2021北京交通大学计算机学院软件工程
  7. 如何用blend创建自定义窗口
  8. 正则表达式和通配符的异同
  9. 大数据Hadoop学习记录(1)----HDFS目录和文件Shell操作
  10. vue 之 ele上传文件 和 下载文件
  11. 王者荣耀战区在线查询_王者战力查询工具
  12. LINUX centos7.6修改静态IP与配置参数NM_CONTROLLED
  13. 2003系统服务器不设置密码,服务器2003怎么设置密码
  14. Filebeat — harvester、input
  15. 移动通信网络规划:双工技术
  16. Mac下编写C或C++
  17. Android 手游聚合SDK那些事
  18. 总结两个最近遇到 校园网连不上或丢失WLAN如何解决的方案
  19. 推荐系统(三) —— 利用用户行为数据 —— 隐语义模型
  20. POJ2431 Expedition(优先队列)

热门文章

  1. oracle18c升级19,Oracle 18C新特性测试之滚动升级
  2. 小程序销毁页面的方法
  3. 视频监控软件开发的需求管理
  4. Adobe Photoshop CC2020版本介绍-新手学习PS那个版本好?
  5. Python+汽车销售系统 毕业设计 191807
  6. html用表单制作个人简历
  7. Docker容器一夜成名的故事
  8. Hello Kafka(五)——Kafka管理
  9. 通过PIL模块批量对图片格式进行转换(如jpg转png)
  10. 酷狗音乐获取hush值方法