操作环境
Linux version 3.10.0-693.el7.x86_64
DM Database Server x64 V7.6.0.161-Build(2019.05.23-107264)ENT
数据库启动报错
修改dm.ini参数PSEG_RECV
将参数PSEG_RECV修改为0,跳过回滚活动事务和 PURGE 已经提交事务的步骤。
查看数据库的参数
根据数据库文件夹下dminit+日期时间.log(例如:dminit20200329210629.log)的文件查看数据库的各个参数,然后新初始化相同参数的数据库;
将新初始化的数据库的redo日志拷贝到要修复数据库文件夹下**(拷贝前对要修复数据库的原redo日志做好备份)**
替换db_magic值
利用dmmdf 修改redo日志的db_magic的值,否则启动会报如下错:
通过dmmdf查看原库的db_magic值,并记录:
[dmdba@localhost bin]$ ./dmmdf /opt/dmdbms/data/NDRC/SYSTEM.DBF ./dmmdf TYPE=1 FILE=/opt/dmdbms/data/DAMENG/SYSTEM.DBF
dmmdf V7.6.0.161-Build(2019.05.23-107264)ENT
1 db_magic=92055302
2 next_trxid=1159
3 pemnt_magic=-803547167
Please input which parameter you want to change(1-3), q to quit: q
通过dmmdf修改DAMENG01.log和DDAMENG02.log的db_magic
[dmdba@localhost bin]$ ./dmmdf TYPE=2 FILE=/opt/dmdbms/data/DAMENG/DAMENG01.log
dmmdf V7.6.0.161-Build(2019.05.23-107264)ENT
1 sig = DMRLOG
2 ver = 7004
3 chksum = 0
4 dbversion = 0x7000a
5 sta = 1
6 n_magic = 7
7 db_magic = -458434922
8 clsn_fil = 0
10 next_seq = 15179
11 arch_seq = 0
12 len = 268435456
13 free = 7775744
14 clsn = 40093
15 clsn_off = 7775744
16 arch_lsn = 0
17 pemnt_magic = -451811967
18 fil_id = 0
19 crc_check = 1
You can only reset sta(5) or db_magic (7) or clsn (14) or pemnt_magic(17) or fil_id(18).
Please input the num which one you want to change, q to quit: 7
Input the new value: 92055302
1 sig = DMRLOG
2 ver = 7004
3 chksum = 0
4 dbversion = 0x7000a
5 sta = 1
6 n_magic = 7
7 db_magic = 92055302
8 clsn_fil = 0
10 next_seq = 15179
11 arch_seq = 0
12 len = 268435456
13 free = 7775744
14 clsn = 40093
15 clsn_off = 7775744
16 arch_lsn = 0
17 pemnt_magic = -451811967
18 fil_id = 0
19 crc_check = 1
Do you want to quit and save the change to file (y/n): y
Save to file success!
然后用相同方法修改DAMENG02.log的db_magic值
启动数据库
此情况重启的数据库可能无法进行正常的写操作,所以必须重新建新库,尽快将数据迁移到新库中再使用。
*** 注:在实际生产库中如果碰到,此方法在万不得已的时候,不要使用,尽可能的想办法修复redo日志。如果使用这种办法启动了数据库,需重新建库迁移数据,再去使用新库作为生产库。***