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

通过归档日志修复数据库(有备份、有归档)

当我们的数据库在发生故障后,这个时候无法启动数据库。只要我们的数据库有备份、有归档。这个时候我们就可以让数据库恢复到发生故障前的一刻。
我们可以通过达梦的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';

查看备份集

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: 100%
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>

这个时候数据库就恢复到发生故障前的一刻了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值