达梦数据库出现故障无法启动解决方法-通过归档日志修复数据库

2022-03-30 00:00:00 数据库 时间 行号 归档 恢复

通过归档日志修复数据库(有备份、有归档)
当我们的数据库在发生故障后,这个时候无法启动数据库。只要我们的数据库有备份、有归档。这个时候我们就可以让数据库恢复到发生故障前的一刻。
我们可以通过达梦的DMRMAN工具和达梦的DM控制台工具就可以让数据库恢复到任意的一个时间点或者时数据库的一个新状态。
首先,确保数据库的归档是打开的。必须要有归档日志(确保归档日志是完整的)。

以下图为例:

  

下面我们来模拟一下数据库发生故障无法启动的一个过程以及对数据库恢复的一个过程。

首先我们必须要打开归档。

[dmdba@localhost bin]$ ./disql
disql V8
用户名:
密码:


服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 150.150(ms)
SQL>alter DATABASE mount; --修改数据模式为MOUNT模式
SQL>alter database archivelog; --打开数据库归档模式
SQL>alter database add archivelog 'DEST=/dm8/DAMENG/arch, TYPE=LOCAL, FILE_SIZE=1024, SPACE_LIMIT=0'; --设置归档路径 、文件初始大小64 空间不限制。
SQL>ALTER DATABASE OPEN;
备份数据库

SQL> BACKUP DATABASE BACKUPSET 'bak_01';
1
查看备份集

SQL> select * from SYS."V$BACKUPSET";

行号 DEVICE_TYPE BACKUP_ID PARENT_ID BACKUP_NAME BACKUP_PATH TYPE LEVEL RANGE# OBJECT_NAME OBJECT_ID BASE_NAME BACKUP_TIME DESC#
---------- ----------- ----------- ----------- ------------------------------ --------------------------- ----------- ----------- ----------- ----------- ----------- --------- -------------------------- -----
ENCRYPT_TYPE COMPRESS_LEVEL WITHOUT_LOG USE_PWR PKG_SIZE BEGIN_LSN END_LSN BKP_NUM DBF_NUM PARALLEL_NUM BAKSET_TYPE MPP_FLAG MIN_TRX_START_LSN
------------ -------------- ----------- ----------- ----------- -------------------- -------------------- ----------- ----------- ------------ ----------- ----------- --------------------
MIN_EXEC_VER CUMULATIVE MIN_DCT_VER DDL_CLONE
------------ ----------- ----------- -----------
1 DISK 669829024 -1 DB_FULL_20201125_101335_777708 /dm8/data/DAMENG/bak/bak_01 0 0 1 DAMENG -1 2020-11-25 10:13:36.746224
0 0 0 0 33554432 81610 82882 2 6 1 0 0 0
134283521 0 4 0


已用时间: 00:00:01.085. 执行号:306.

创建表、插入一些数据(这里我们直接复制实例库的的一些数据)

SQL> create TABLE TEST1 as select * from dmhr.employee;
操作已执行
已用时间: 83.106(毫秒). 执行号:307.
SQL> select * from test1 limit 10;

行号 EMPLOYEE_ID EMPLOYEE_NAME IDENTITY_CARD EMAIL PHONE_NUM HIRE_DATE JOB_ID SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
---------- ----------- ------------- ------------------ ------------------------- ----------- ---------- ------ ----------- -------------- ----------- -------------
1 1001 马学铭 340102196202303000 maxueming@dameng.com 15312348552 2008-05-30 11 30000 0 1001 101
2 1002 程擎武 630103197612261000 chengqingwu@dameng.com 13912366391 2012-03-27 21 9000 0 1002 102
3 1003 郑吉群 11010319670412101X zhengjiqun@dameng.com 18512355646 2010-12-11 31 15000 0 1003 103
4 1004 陈仙 360107196704031000 chenxian@dameng.com 13012347208 2012-06-25 41 12000 0 1004 104
5 1005 金纬 450105197911131000 jinwei@dameng.com 13612374154 2011-05-12 51 10000 0 1005 105
6 2001 李慧军 430103196703240000 lihuijun@dameng.com 18712372091 2010-05-15 11 10000 0 2001 201
7 2002 常鹏程 11010719780703500X changpengcheng@dameng.com 18912366321 2011-08-06 21 5000 0 2002 202
8 2004 谢俊人 450103197212156000 xiejunren@dameng.com 14712377545 2014-03-02 41 5000 0 2004 204
9 3001 苏国华 52010519731102591X suguohua@dameng.com 15612350864 2010-10-26 11 30000 0 3001 301
10 3002 强洁芳 370107197308092000 qiangjiefang@dameng.com 18112349195 2011-07-16 21 10000 0 3002 302

10 rows got

已用时间: 1.522(毫秒). 执行号:310.
SQL>
我们来模拟数据库发生故障(删除数据库的SYSTEM.dbf文件)

SQL> exit
[dmdba@localhost bin]$ ll /dm8/data/DAMENG/
总用量 1108064
drwxrwxr-x. 2 dmdba dmdba 4096 11月 25 10:35 acrh
drwxr-xr-x. 3 dmdba dmdba 20 11月 25 10:13 bak
-rw-rw-r--. 1 dmdba dmdba 157286400 11月 17 09:51 BOOKSHOP.DBF
drwxr-xr-x. 2 dmdba dmdba 4096 11月 25 10:35 ctl_bak
-rw-rw-r--. 1 dmdba dmdba 268435456 11月 25 10:35 DAMENG01.log
-rw-rw-r--. 1 dmdba dmdba 268435456 11月 25 10:35 DAMENG02.log
-rw-rw-r--. 1 dmdba dmdba 311 11月 17 10:03 dmarch.ini
-rw-r--r--. 1 dmdba dmdba 6144 11月 25 10:35 dm.ctl
-rw-rw-r--. 1 dmdba dmdba 134217728 11月 17 09:51 DMHR.DBF
-rw-r--r--. 1 dmdba dmdba 48816 11月 17 10:03 dm.ini
-rw-r--r--. 1 dmdba dmdba 826 11月 10 14:11 dminit20201110141104.log
-rw-rw-r--. 1 dmdba dmdba 633 11月 17 09:51 dm_service.prikey
drwxrwxr-x. 2 dmdba dmdba 6 11月 17 09:51 HMAIN
-rw-rw-r--. 1 dmdba dmdba 134217728 11月 25 10:29 MAIN.DBF
-rw-r--r--. 1 dmdba dmdba 12 11月 10 14:11 rep_conflict.log
-rw-rw-r--. 1 dmdba dmdba 134217728 11月 25 10:35 ROLL.DBF
-rw-r--r--. 1 dmdba dmdba 479 11月 10 14:11 sqllog.ini
-rw-rw-r--. 1 dmdba dmdba 27262976 11月 25 10:29 SYSTEM.DBF
-rw-r--r--. 1 dmdba dmdba 10485760 11月 25 10:35 TEMP.DBF
drwxr-xr-x. 2 dmdba dmdba 6 11月 10 14:11 trace
[dmdba@localhost bin]$ rm -f /dm8/data/DAMENG/SYSTEM.DBF
[dmdba@localhost bin]$ ll /dm8/data/DAMENG/
总用量 1081436
drwxrwxr-x. 2 dmdba dmdba 4096 11月 25 10:35 acrh
drwxr-xr-x. 3 dmdba dmdba 20 11月 25 10:13 bak
-rw-rw-r--. 1 dmdba dmdba 157286400 11月 17 09:51 BOOKSHOP.DBF
drwxr-xr-x. 2 dmdba dmdba 4096 11月 25 10:35 ctl_bak
-rw-rw-r--. 1 dmdba dmdba 268435456 11月 25 10:35 DAMENG01.log
-rw-rw-r--. 1 dmdba dmdba 268435456 11月 25 10:35 DAMENG02.log
-rw-rw-r--. 1 dmdba dmdba 311 11月 17 10:03 dmarch.ini
-rw-r--r--. 1 dmdba dmdba 6144 11月 25 10:35 dm.ctl
-rw-rw-r--. 1 dmdba dmdba 134217728 11月 17 09:51 DMHR.DBF
-rw-r--r--. 1 dmdba dmdba 48816 11月 17 10:03 dm.ini
-rw-r--r--. 1 dmdba dmdba 826 11月 10 14:11 dminit20201110141104.log
-rw-rw-r--. 1 dmdba dmdba 633 11月 17 09:51 dm_service.prikey
drwxrwxr-x. 2 dmdba dmdba 6 11月 17 09:51 HMAIN
-rw-rw-r--. 1 dmdba dmdba 134217728 11月 25 10:29 MAIN.DBF
-rw-r--r--. 1 dmdba dmdba 12 11月 10 14:11 rep_conflict.log
-rw-rw-r--. 1 dmdba dmdba 134217728 11月 25 10:35 ROLL.DBF
-rw-r--r--. 1 dmdba dmdba 479 11月 10 14:11 sqllog.ini
-rw-r--r--. 1 dmdba dmdba 10485760 11月 25 10:35 TEMP.DBF
drwxr-xr-x. 2 dmdba dmdba 6 11月 10 14:11 trace

重启数据库 (这个时候数据库无法启动了)

[dmdba@localhost bin]$ ./DmServiceDMSERVER restart
Stopping DmServiceDMSERVER: [ OK ]
Starting DmServiceDMSERVER: [ FAILED ]
file dm.key not found, use default license!
version info: develop
/dm8/data/DAMENG/SYSTEM.DBF not exist
[dmdba@localhost bin]$

我们来恢复数据(因为我们是先备份的数据库,后创建的表。和生产环境类似)

通过DMRMAN工具进行恢复 流程 停机→还原→通过归档恢复→更换DB_MAGIC

还原数据库

[dmdba@localhost bin]$ ./dmrman
dmrman V8
RMAN>
RMAN> restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/data/DAMENG/bak/bak_01'
restore database '/dm8/data/DAMENG/dm.ini' from backupset '/dm8/data/DAMENG/bak/bak_01'
file dm.key not found, use default license!
RESTORE DATABASE CHECK......
RESTORE DATABASE,data collect......
RESTORE DATABASE,database refresh ......
RESTORE BACKUPSET [/dm8/data/DAMENG/bak/bak_01] START......
total 5 packages processed...
total 9 packages processed...
RESTORE DATABASE,UPDATE ctl file......
RESTORE DATABASE,REBUILD key file......
RESTORE DATABASE,CHECK db info......
RESTORE DATABASE,UPDATE db info......
total 9 packages processed...
total 9 packages processed!
CMD END.CODE:[0]
restore successfully.
time used: 799.614(ms)
RMAN>
从归档恢复数据库

RMAN> recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/data/DAMENG/acrh'
recover database '/dm8/data/DAMENG/dm.ini' with archivedir '/dm8/data/DAMENG/acrh'
file dm.key not found, use default license!
Database mode = 0, oguid = 0
EP[0]'s cur_lsn[81610]
EP:0 total 3 pkgs applied, percent: 10%
EP:0 total 6 pkgs applied, percent: 21%
EP:0 total 9 pkgs applied, percent: 32%
EP:0 total 12 pkgs applied, percent: 42%
EP:0 total 15 pkgs applied, percent: 53%
EP:0 total 18 pkgs applied, percent: 64%
EP:0 total 21 pkgs applied, percent: 75%
EP:0 total 24 pkgs applied, percent: 85%
EP:0 total 27 pkgs applied, percent: 96%
EP:0 total 28 pkgs applied, percent:
Recover from archive log finished, time used:0.312s.
EP[0]'s apply_lsn[84748] >= end_lsn[82882]
recover successfully!
time used: 549.972(ms)

更新DB_MAGIC

RMAN> recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
recover database '/dm8/data/DAMENG/dm.ini' update db_magic;
Database mode = 0, oguid = 0
EP[0]'s cur_lsn[84748]
EP[0]'s apply_lsn[84748] >= end_lsn[82882]
recover successfully!
time used: 996.968(ms)
RMAN>
启动数据库并查看之前的数据是否完整。

[dmdba@localhost bin]$ ./DmServiceDMSERVER start
Starting DmServiceDMSERVER: [ OK ]
[dmdba@localhost bin]$ ./disql
disql V8
用户名:
密码:

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 4.188(ms)
SQL> select * from test1 limit 10;

行号 EMPLOYEE_ID EMPLOYEE_NAME IDENTITY_CARD EMAIL PHONE_NUM HIRE_DATE JOB_ID
---------- ----------- ------------- ------------------ ------------------------- ----------- ---------- ------
SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
----------- -------------- ----------- -------------
1 1001 马学铭 340102196202303000 maxueming@dameng.com 15312348552 2008-05-30 11
30000 0 1001 101

2 1002 程擎武 630103197612261000 chengqingwu@dameng.com 13912366391 2012-03-27 21
9000 0 1002 102

3 1003 郑吉群 11010319670412101X zhengjiqun@dameng.com 18512355646 2010-12-11 31
15000 0 1003 103


行号 EMPLOYEE_ID EMPLOYEE_NAME IDENTITY_CARD EMAIL PHONE_NUM HIRE_DATE JOB_ID
---------- ----------- ------------- ------------------ ------------------------- ----------- ---------- ------
SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
----------- -------------- ----------- -------------
4 1004 陈仙 360107196704031000 chenxian@dameng.com 13012347208 2012-06-25 41
12000 0 1004 104

5 1005 金纬 450105197911131000 jinwei@dameng.com 13612374154 2011-05-12 51
10000 0 1005 105

6 2001 李慧军 430103196703240000 lihuijun@dameng.com 18712372091 2010-05-15 11
10000 0 2001 201


行号 EMPLOYEE_ID EMPLOYEE_NAME IDENTITY_CARD EMAIL PHONE_NUM HIRE_DATE JOB_ID
---------- ----------- ------------- ------------------ ------------------------- ----------- ---------- ------
SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
----------- -------------- ----------- -------------
7 2002 常鹏程 11010719780703500X changpengcheng@dameng.com 18912366321 2011-08-06 21
5000 0 2002 202

8 2004 谢俊人 450103197212156000 xiejunren@dameng.com 14712377545 2014-03-02 41
5000 0 2004 204

9 3001 苏国华 52010519731102591X suguohua@dameng.com 15612350864 2010-10-26 11
30000 0 3001 301


行号 EMPLOYEE_ID EMPLOYEE_NAME IDENTITY_CARD EMAIL PHONE_NUM HIRE_DATE JOB_ID
---------- ----------- ------------- ------------------ ------------------------- ----------- ---------- ------
SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID
----------- -------------- ----------- -------------
10 3002 强洁芳 370107197308092000 qiangjiefang@dameng.com 18112349195 2011-07-16 21
10000 0 3002 302


10 rows got

已用时间: 5.769(毫秒). 执行号:4.
SQL>
这个时候数据库就恢复到发生故障前的一刻了。
————————————————
版权声明:本文为CSDN博主「陕西新宝盛业-你是我的OK朋」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33809566/article/details/110112730

相关文章