一、在数据库运行时,redo日志(DAMENG01.log,DAMENG02.log)被人为误删,但数据库服务正常运行。
处理步骤:
1)ps -ef|grep dmserver查看数据库进程的pid,比如为93872
2)ls -l /proc/93872/fd,可以看到redo日志后被打上(deleted)的标签
3)最重要:确保没写库操作,可以把数据库服务器网线拔掉,踢出所有链接。
4)cp /proc/93872/fd/11 /home/dmdba/dm/dmdata/DAMENG/DAMENG01.log
上面的11是链接号,可以查看到。再拷贝DAMENG02.log
5)整库备份数据库。
6)重启数据库进行验证。
总结:数据库相关进行被删时,只要进程不停,还可以补救。
1、模拟删除联机日志后数据库服务启动失败
(1)将正常状态集群的redo日志修改名字模拟删除
mv DAMENG01.log DAMENG01.log_bak
mv DAMENG02.log DAMENG02.log_bak
(2)停库观察log日志
[dmdba@dm4:~/dmdbms/bin]$ ./DmServiceDMSERVER stop
Stopping DmServiceDMSERVER: [ OK ]
(3)启动库报日志文件不存在
(4) 尝试使用其他实例的联机日志替换修复
–注意需要新初始化一个实例,将实例首次启动到SYSTEM IS READY状态再停止进行替换。
dminit PATH=/home/dmdba/dmdbms/data \
EXTENT_SIZE=32 \
PAGE_SIZE=32 \
CASE_SENSITIVE=Y \
CHARSET=1 \
LOG_SIZE=1024 \
DB_NAME=FENG \
INSTANCE_NAME=FENG \
PORT_NUM=5236 \
BLANK_PAD_MODE=0 \
SYSDBA_PWD=Dameng@123 \
SYSAUDITOR_PWD=Dameng@123
[root@dm4 root]# ./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdbms/data/FENG/dm.ini -p FENG
Created symlink from /etc/systemd/system/multi-user.target.wants/DmServiceFENG.service to /usr/lib/systemd/system/DmServiceFENG.service.
创建服务(DmServiceFENG)完成
[dmdba@dm4:~/dmdbms/bin]$ ./DmServiceFENG start
Starting DmServiceFENG: [ OK ]
[dmdba@dm4:~/dmdbms/data/FENG]$ mv FENG01.log ../DAMENG/
[dmdba@dm4:~/dmdbms/data/FENG]$ mv FENG02.log ../DAMENG/
[dmdba@dm4:~/dmdbms/data/FENG]$ cd ../DAMENG/
[dmdba@dm4:~/dmdbms/data/DAMENG]$ mv FENG01.log DAMENG01.log
[dmdba@dm4:~/dmdbms/data/DAMENG]$ mv FENG02.log DAMENG02.log
(5) 查看SYSTEM.DBF中的db_magic
[dmdba@dm4:~/dmdbms/data/DAMENG]$ dmmdf type=1 file=/home/dmdba/dmdbms/data/DAMENG/SYSTEM.DBF
dmmdf V8
1 db_magic=1647540648
2 next_trxid=48072
3 pemnt_magic=715697935
4 enable_page_check=3
Please input which parameter you want to change(1-4), q to quit: q
(6)修改新实例的db_magic值和pemnt_magic值。分别更新到两个新的联机日志中
dmmdf type=2 file=/home/dmdba/dmdbms/data/DAMENG/DAMENG01.log
dmmdf type=2 file=/home/dmdba/dmdbms/data/DAMENG/DAMENG02.log
(7)起库依旧报错
(8)在dm.ini文件中修改和添加PSEG_RECV = 0,RLOG_CHECK_SPACE = 2(没有可以增加)
PSEG_RECV参数官方解释:
系统故障重启时,对活动事务和已提交事务的处理方式。
0:跳过回滚活动事务和 PURGE 已经提交事务的步骤。在回滚表空间出现异常、损坏、系统无法正常启动时,可将 PSEG_RECV 设置为 0,让系统启动;但存在一定风险,未提交事务的修改将无法回滚,破坏事务的原子性;另外,已提交未 PURGE 的事务,将导致部分存储空间无法回收;1:回滚活动事务并 PURGE 已经提交事务;2:延迟 PURGE 已提交事务,延迟回滚活动事务;3:回滚活动事务,延迟 PURGE 已提交事务;
(9)起库可以正常ready
(10)关库时总是以abort方式关闭
文章
阅读量
获赞