DM数据库一次redo日志损坏修复的经历

2024-04-19 16:12

本文主要是介绍DM数据库一次redo日志损坏修复的经历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 缘由

   服务器意外断电了,重新上电后发现DM数据库不能连接,提示网络通信异常,数据库拒绝连接。通过服务查看器发现数据库服务停止,并且手动启动失败,code=exited,status=1/failure。

2 问题排查

    网上查资料说code=1,status=1可能是需要用dmdba用户启动,用root用户启动时会出现这个故障,同时建议通过/opt/dmdbms/bin/dmserver  dm.ini的方式手动启动服务。

    经过尝试,dmdba用户启动服务同样失败,使用命令行手动启动时,提示redo日志有invalid记录,启动失败,errocde=-723。至此查明故障原因是断电导致的redo日志损坏,从而引起的数据库服务启动失败。

3 故障修复

   redo日志损坏无法自动修复,需要重建一个同样的实例,老替换redo日志文件。具体操作如下:

 1)根据原服务的dminitxx.log中的记录生成一个新的实例:

#/opt/dmdbms/bin/dminit  path=/home/dmdba/data charset=1 
case_sensitive=0 port_num=5237

  port_num=5237是需要和已有的端口错开。

2)启动新实例并退出。

     启动新实例:

#/opt/dmdbms/bin/dmserver  /home/dmdba/data/DAMENG/dm.ini

    等输出system is ready时输入exit退出。

3)查看原库的db_magic

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

4)修改新库的db_magic值

 $./dmmdf type=2 file=/home/dmdba/data/DAMENG/DAMENG01.log$./dmmdf type=2 file=/home/dmdba/data/DAMENG/DAMENG02.log

5)将原库的redo日志改名备份,拷贝新库的redo日志

6)修改原库(5237) dm.ini 文件 PSEG_RECV=0

     该文件内容较多,可以vim的使用:/PSEG搜索

7)将原库服务启动正常关闭后,再次将 PSEG_RECV改回 3

8)正常启动原库,修复完成

4 重启服务器,OK,数据库服务正常了。

这篇关于DM数据库一次redo日志损坏修复的经历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918026

相关文章

关于如何更好管理好数据库的一点思考

本文尝试从数据库设计理论、ER图简介、性能优化、避免过度设计及权限管理方面进行思考阐述。 一、数据库范式 以下通过详细的示例说明数据库范式的概念,将逐步规范化一个例子,逐级说明每个范式的要求和变换过程。 示例:学生课程登记系统 初始表格如下: 学生ID学生姓名课程ID课程名称教师教师办公室1张三101数学王老师101室2李四102英语李老师102室3王五101数学王老师101室4赵六103物理陈

数据库期末复习知识点

A卷 1. 选择题(30') 2. 判断范式(10') 判断到第三范式 3. 程序填空(20') 4. 分析填空(15') 5. 写SQL(25') 5'一题 恶性 B卷 1. 单选(30') 2. 填空 (20') 3. 程序填空(20') 4. 写SQL(30') 知识点 第一章 数据库管理系统(DBMS)  主要功能 数据定义功能 (DDL, 数据定义语

给数据库的表添加字段

周五有一个需求是这样的: 原来数据库有一个表B,现在需要添加一个字段C,我把代码中增删改查部分进行了修改, 比如insert中也添入了字段C。 但没有考虑到一个问题,数据库的兼容性。因为之前的版本已经投入使用了,再升级的话,需要进行兼容处理,当时脑子都蒙了,转不过来,后来同事解决了这个问题。 现在想想,思路就是,把数据库的表结构存入文件中,如xxx.sql 实时更新该文件: CREAT

SQL Server中,查询数据库中有多少个表,以及数据库其余类型数据统计查询

sqlserver查询数据库中有多少个表 sql server 数表:select count(1) from sysobjects where xtype='U'数视图:select count(1) from sysobjects where xtype='V'数存储过程select count(1) from sysobjects where xtype='P' SE

SQL Server中,添加数据库到AlwaysOn高可用性组条件

1、将数据添加到AlwaysOn高可用性组,需要满足以下条件: 2、更多具体AlwaysOn设置,参考:https://msdn.microsoft.com/zh-cn/library/windows/apps/ff878487(v=sql.120).aspx 注:上述资源来自MSDN。

SQL Server中,用Restore DataBase把数据库还原到指定的路径

restore database 数据库名 from disk='备份文件路径' with move '数据库文件名' to '数据库文件放置路径', move '日志文件名' to '日志文件存放置路径' Go 如: restore database EaseWe from disk='H:\EaseWe.bak' with move 'Ease

数据库原理与安全复习笔记(未完待续)

1 概念 产生与发展:人工管理阶段 → \to → 文件系统阶段 → \to → 数据库系统阶段。 数据库系统特点:数据的管理者(DBMS);数据结构化;数据共享性高,冗余度低,易于扩充;数据独立性高。DBMS 对数据的控制功能:数据的安全性保护;数据的完整性检查;并发控制;数据库恢复。 数据库技术研究领域:数据库管理系统软件的研发;数据库设计;数据库理论。数据模型要素 数据结构:描述数据库

剑指offer(C++)--数组中只出现一次的数字

题目 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 class Solution {public:void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {int len = data.size();if(len<2)return;int one = 0;for(int i

剑指offer(C++)--第一个只出现一次的字符

题目 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). class Solution {public:int FirstNotRepeatingChar(string str) {map<char, int> mp;for(int i = 0; i < str.size(); ++i)m

MySQL数据库(四):视图和索引

在数据库管理中,视图和索引是两种关键工具,它们各自发挥独特的作用以优化数据查询和管理。视图通过简化复杂查询、提高数据安全性和提供数据抽象,帮助用户轻松访问数据。而索引则通过加速查询、确保数据唯一性以及优化排序和分组操作,显著提升数据库性能。理解和合理运用这两者,对数据库系统的高效运行至关重要。 目录 一、视图概念(面试) 二、视图的作用(面试) 三、视图的创建和使用 3.1