注册
达梦第四课-物理备份还原
技术分享/ 文章详情 /

达梦第四课-物理备份还原

WXY是对称的 2025/06/06 256 0 0

备份恢复-物理恢复

备份还原原理

DM数据库中的数据存储在数据库的物理数据文件中,数据文件按照页、簇和段的方式进行管理,数据页是最小的数据存储单元。任何一个对 DM 数据库的操作,归根结底都是对某个数据文件页的读写操作。因此,DM 备份的本质就是 从数据库文件中拷贝有效的数据页保存到备份集中,这里的有效数据页包括数据文件的描述页和被分配使用的数据页。而在备份的过程中,如果数据库系统还在继续运行,这期间的数据库操作并不是都会立即体现到数据文件中,而是首先以日志的形式写到归档日志中,因此,为了保证用户可以通过备份集将数据恢复到备份结束时间点的状态,就需要将备份过程中产生的归档日志也保存到备份集中。
还原与恢复是备份的逆过程。还原是将备份集中的有效数据页重新写入目标数据文件的过程。恢复则是指通过重做归档日志,将数据库状态恢复到备份结束时的状态;也可以恢复到指定时间点和指定 LSN 。恢复结束以后,数据库中可能存在处于未提交状态的活动事务,这些活动事务在恢复结束后的第一次数据库系统启动时,会由 DM 数据库自动进行回滚。 备份、还原与恢复的关系如图:
image.png

归档配置

联机配置

修改数据库状态
SQL> alter database mount;
操作已执行
已用时间: 3.853(毫秒). 执行号:0.

修改归档状态
SQL> alter database archivelog;
操作已执行
已用时间: 14.150(毫秒). 执行号:0.

配置归档
SQL> alter database add archivelog 'dest=/dmdata/arch,type=local,file_size=64,space_limit=1024';
alter database add archivelog 'dest=/dmdata/arch,type=local,file_size=64,space_limit=1024';
executed successfully
已用时间: 4.324(毫秒). 执行号:0.
SQL>

查看归档状态
SQL> select * from v$arch_status ;

行号     ARCH_TYPE ARCH_DEST    ARCH_STATUS ARCH_SRC
---------- --------- ------------ ----------- --------
1          LOCAL     /dmdata/arch VALID       DMSERVER

已用时间: 2.596(毫秒). 执行号:2702.

修改数据库状态
SQL> alter database open;
操作已执行
已用时间: 23.013(毫秒). 执行号:0.

切换日志,查看归档信息
SQL> alter system switch logfile;
操作已执行
已用时间: 8.930(毫秒). 执行号:0.
SQL> select * from v$dm_arch_ini;

行号     ARCH_NAME      ARCH_TYPE ARCH_DEST    ARCH_FILE_SIZE ARCH_SPACE_LIMIT ARCH_HANG_FLAG ARCH_TIMER_NAME
---------- -------------- --------- ------------ -------------- ---------------- -------------- ---------------
           ARCH_IS_VALID ARCH_WAIT_APPLY ARCH_INCOMING_PATH ARCH_CURR_DEST ARCH_FLUSH_BUF_SIZE ARCH_RESERVE_TIME
           ------------- --------------- ------------------ -------------- ------------------- -----------------
           ARCH_LOCAL_SHARE ARCH_LOCAL_SHARE_CHECK ARCH_SEND_DELAY ARCH_DEST_IP ARCH_DEST_PORT ARCH_DEST_ID
           ---------------- ---------------------- --------------- ------------ -------------- ------------
           ARCH_ASM_MIRROR ARCH_ASM_STRIPING ARCH_RECOVER_TIME ARCH_CENTER_ID ARCH_FAILOVER ARCH_SUBSCRIBE_MODE
           --------------- ----------------- ----------------- -------------- ------------- -------------------
           ARCH_THRESHOLD_PER_SECOND ARCH_STANDBY_APPLY ARCH_DISTRICT_ID ARCH_VOTE_PRIORITY ARCH_CENTER_COMMIT
           ------------------------- ------------------ ---------------- ------------------ ------------------
1          ARCHIVE_LOCAL1 LOCAL     /dmdata/arch 100            1024             1              NULL
           Y             NULL            NULL               /dmdata/arch   2                   0
           0                0                      0               NULL         NULL           NULL
           NULL            NULL              NULL              NULL           NULL          NULL
           NULL                      NULL               NULL             NULL               NULL

已用时间: 3.368(毫秒). 执行号:2703.

查看归档状态
SQL> select * from v$arch_status;

行号     ARCH_TYPE ARCH_DEST    ARCH_STATUS ARCH_SRC
---------- --------- ------------ ----------- --------
1          LOCAL     /dmdata/arch VALID       DMSERVER

已用时间: 2.800(毫秒). 执行号:2704.
SQL>

手动配置归档

修改配置文件

[dmdba@localhost DAMENG]$ grep 'ARCH_INI'  dm.ini
                ARCH_INI                        = 1                     #dmarch.ini


[dmdba@localhost DAMENG]$ vi dmarch.ini
[dmdba@localhost DAMENG]$ cat dmarch.ini
#DaMeng Database Archive Configuration file
#this is comments

        ARCH_WAIT_APPLY      = 0

[ARCHIVE_LOCAL1]
        ARCH_TYPE            = LOCAL
        ARCH_DEST            = /dmdata/arch
        ARCH_FILE_SIZE       = 100
        ARCH_SPACE_LIMIT     = 1024
        ARCH_FLUSH_BUF_SIZE  = 2
        ARCH_HANG_FLAG       = 1

重启数据库

[dmdba@localhost DAMENG]$ systemctl  restart   DmServiceDMSERVER
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: root
Password:
==== AUTHENTICATION COMPLETE ===
[dmdba@localhost DAMENG]$
[dmdba@localhost DAMENG]$ systemctl  status DmServiceDMSERVER
● DmServiceDMSERVER.service - DM Instance Service
   Loaded: loaded (/usr/lib/systemd/system/DmServiceDMSERVER.service; enabled; vendor preset: disabled)
   Active: active (running) since 五 2025-05-30 17:07:34 CST; 1s ago
  Process: 19971 ExecStop=/opt/dmdbms/bin/DmServiceDMSERVER stop (code=exited, status=0/SUCCESS)
  Process: 20024 ExecStart=/opt/dmdbms/bin/DmServiceDMSERVER start (code=exited, status=0/SUCCESS)
 Main PID: 20045 (dmserver)
   CGroup: /system.slice/DmServiceDMSERVER.service
           └─20045 /opt/dmdbms/bin/dmserver path=/opt/dmdbms/data/DAMENG/dm.ini -noconsole

联机数据库备份与恢复

设置备份选项

backupset  [backupset_name]  指定备份集路径和名称
to [backup_name]   指定备份名
backupinfo  添加备份描述信息
DEVICE TYPE  [DISK|TAPE] 指定介质类型
maxpiecesize    限制备份片大小
limit   限速
identified  by   加密
ENCRYPT WITH 指定加密算法
COMPRESSED 备份压缩
PARALLELL   并行备份

联机备份

数据库备份

执行全库备份

SQL> backup database full with backupdir '/opt/dmdbms/data/DAMENG/bak'  backupname fullbak1 backupset 'backset_1' BACKUPINFO '第一次全备份'   maxpiecesize 10000 limit  read speed 100 write speed 100 compressed level 1 parallel 2;
操作已执行
已用时间: 00:00:08.664. 执行号:501.

查看生成的备份文件

SQL> select * from 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   BAK_MAGIC   VERSION     SUB_VERSION BAKSET_MAGIC
           ----------- ------------ ----------- ----------- -------------------- ------------ ----------- ----------- ----------- ----------- ----------- ----------- ------------
1          DISK        1058056292  -1          FULLBAK1    /opt/dmdbms/data/DAMENG/bak/backset_1             0           0           1           DAMENG      -1
           2025-05-30 17:22:10.087386 第一次全备份 0            1              0           0           67108864    52810                52898                3
           5           2            0           0           0                    134283815    0           4           0           0           16394       14          1058056292

2          DISK        1498157108  1058056292  FULLBAK1    /opt/dmdbms/data/DAMENG/bak/backset_1/backset_1_1 0           0           1           DAMENG      -1
           2025-05-30 17:22:07.802874 第一次全备份 0            1              0           0           67108864    52810                0                    1
           3           1            0           0           0                    134283815    0           4           0           NULL        16394       14          1498157108


3          DISK        1932845582  1058056292  FULLBAK1    /opt/dmdbms/data/DAMENG/bak/backset_1/backset_1_0 0           0           1           DAMENG      -1
           2025-05-30 17:22:08.030674 第一次全备份 0            1              0           0           67108864    52810                0                    1
           1           1            0           0           0                    134283815    0           4           0           NULL        16394       14          1932845582


已用时间: 24.948(毫秒). 执行号:503.
SQL> host   ls -RL /opt/dmdbms/data/DAMENG/bak
/opt/dmdbms/data/DAMENG/bak:
backset_1

/opt/dmdbms/data/DAMENG/bak/backset_1:
backset_1_0  backset_1_1  backset_1.bak  backset_1.meta

/opt/dmdbms/data/DAMENG/bak/backset_1/backset_1_0:
backset_1_0.bak  backset_1_0.meta

/opt/dmdbms/data/DAMENG/bak/backset_1/backset_1_1:
backset_1_1.bak  backset_1_1.meta

SQL>

基于全备做增量备份

SQL> backup database INCREMENT with backupdir '/opt/dmdbms/data/DAMENG/bak'  backupname  incbak1 backupset 'incbak_1' BACKUPINFO '第一次增量备份'   maxpiecesize 10000 limit  read speed 100 write speed 100 compressed level 1 parallel 2;
操作已执行
已用时间: 00:00:13.034. 执行号:504.


SQL> select * from v$backupset  where BACKUP_NAME='INCBAK1';

行号     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   BAK_MAGIC   VERSION     SUB_VERSION BAKSET_MAGIC
           ----------- ------------ ----------- ----------- -------------------- ------------ ----------- ----------- ----------- ----------- ----------- ----------- ------------
1          DISK        1454046922  -1          INCBAK1     /opt/dmdbms/data/DAMENG/bak/incbak_1            1           0           1           DAMENG      -1          FULLBAK1
           2025-05-30 17:24:48.208988 第一次增量备份 0            1              0           0           67108864    52912                52912                2
           4           2            0           0           0                    134283815    0           4           0           0           16394       14          1454046922


2          DISK        1536854952  1454046922  INCBAK1     /opt/dmdbms/data/DAMENG/bak/incbak_1/incbak_1_1 1           0           1           DAMENG      -1          FULLBAK1
           2025-05-30 17:24:46.134393 第一次增量备份 0            1              0           0           67108864    52912                0                    1
           3           1            0           0           0                    134283815    0           4           0           NULL        16394       14          1536854952


3          DISK        1536854952  1454046922  INCBAK1     /opt/dmdbms/data/DAMENG/bak/incbak_1/incbak_1_0 1           0           1           DAMENG      -1          FULLBAK1
           2025-05-30 17:24:46.166737 第一次增量备份 0            1              0           0           67108864    52912                0                    1
           1           1            0           0           0                    134283815    0           4           0           NULL        16394       14          1536854952


已用时间: 43.265(毫秒). 执行号:506.

SQL> host   ls -RL /opt/dmdbms/data/DAMENG/bak/incbak_1
/opt/dmdbms/data/DAMENG/bak/incbak_1:
incbak_1_0  incbak_1_1  incbak_1.meta

/opt/dmdbms/data/DAMENG/bak/incbak_1/incbak_1_0:
incbak_1_0.bak  incbak_1_0.meta

/opt/dmdbms/data/DAMENG/bak/incbak_1/incbak_1_1:
incbak_1_1.bak  incbak_1_1.meta

表空间备份

准备表空间

SQL> create tablespace  test_backup   datafile '/opt/dmdbms/data/DAMENG/TEST_BACKUP.DBF'   SIZE 256 ;
操作已执行
已用时间: 59.954(毫秒). 执行号:507.

完全备份

SQL> backup tablespace test_backup  full with backupdir '/opt/dmdbms/data/DAMENG/bak'  backupname fullbak_tbs1 backupset 'fullbak_tbs1' BACKUPINFO '第一次表空间备份'   maxpiecesize 10000 limit  read speed 100 write speed 100 compressed level 1 parallel 2;
操作已执行
已用时间: 00:00:05.031. 执行号:508.

查看

SQL> select * from v$backupset WHERE BACKUP_NAME='FULLBAK_TBS1';

1          DISK        377961154   -1          FULLBAK_TBS1 /opt/dmdbms/data/DAMENG/bak/fullbak_tbs1 0           0           2           TEST_BACKUP 6
           2025-05-30 17:35:05.424484 第一次表空间备份 0            1              0           0           67108864    52936                52943                1
           1           1            0           0           0                    134283815    0           4           0           0           16394       14          377961154


已用时间: 48.607(毫秒). 执行号:509.
SQL> host   ls -RL /opt/dmdbms/data/DAMENG/bak/fullbak_tbs1
/opt/dmdbms/data/DAMENG/bak/fullbak_tbs1:
fullbak_tbs1.bak  fullbak_tbs1.meta

基于全备做表空间增量备份

 SQL>        backup tablespace   test_backup   INCREMENT  backupset 'incbak_tbs_1'   BACKUPINFO '第一次增量表空间备份'   maxpiecesize 10000 limit  read speed 100 write speed 100 compressed level 1 parallel 2;
操作已执行
已用时间: 00:00:04.923. 执行号:511.

查看备份

SQL> select * from v$backupset WHERE BASE_NAME='FULLBAK_TBS1'  AND DESC#='第一次增量表空间备份';

1          DISK        1462098156  -1          TS_INCREMENT_20250530_174237_893445 /opt/dmdbms/data/DAMENG/bak/incbak_tbs_1 1           0           2           TEST_BACKUP
           6           FULLBAK_TBS1 2025-05-30 17:42:42.764756 第一次增量表空间备份 0            1              0           0           67108864    52947
           52966                0           1           1            0           0           0                    134283815    0           4           0           0
           16394       14          1462098156

已用时间: 42.190(毫秒). 执行号:518.

SQL>  host   ls -RL /opt/dmdbms/data/DAMENG/bak/incbak_tbs_1
/opt/dmdbms/data/DAMENG/bak/incbak_tbs_1:
incbak_tbs_1.meta

表备份

准备表

SQL> create  table  t2  (id int ,name varchar(20));
insert into t2 values (1,'a') ;操作已执行
已用时间: 22.210(毫秒). 执行号:2201.
SQL>
影响行数 1
已用时间: 1.178(毫秒). 执行号:2202.

执行备份

SQL>  backup table t2   backupname  t1bak2 backupset 't2bak_1' BACKUPINFO '第一次备份表t2'    maxpiecesize 10000 limit  read speed 100 write speed 100 compressed level 1;

操作已执行
已用时间: 00:00:01.126. 执行号:2203.

查看生成的备份文件

SQL> select * from v$backupset   where  BACKUP_NAME='T1BAK2'  ;

1          DISK        999656132   -1          T1BAK2
           /opt/dmdbms/data/DAMENG/bak/t2bak_1 2           0           3
           SYSDBA.T2   -1                    2025-05-30 18:24:22.607580
           第一次备份表t2 0            1              0           0
           67108864    54518                55018                1
           0           1            0           0           0
           134283815    0           4           0           0           16394
           14          999656132


已用时间: 104.576(毫秒). 执行号:2206.

SQL> host   ls -RL /opt/dmdbms/data/DAMENG/bak/t2bak_1
/opt/dmdbms/data/DAMENG/bak/t2bak_1:
t2bak_1.bak  t2bak_1.meta

归档备份

备份归档

SQL> backup archivelog all with backupdir '/opt/dmdbms/data/DAMENG/bak'  backupname archbak1 backupset 'arachbakset_1' BACKUPINFO '第一次归档备份'   maxpiecesize 10000 limit  read speed 100 write speed 100 compressed level 1 parallel 2;
backup archivelog all with backupdir '/opt/dmdbms/data/DAMENG/bak'  backupname archbak1 backupset 'arachbakset_1' BACKUPINFO '第一次归档备份'   maxpiecesize 10000 limit  read speed 100 write speed 100 compressed level 1 parallel 2;
[-718]:收集到的归档日志不连续.
已用时间: 00:00:02.835. 执行号:0.
SQL>
SQL> select checkpoint(100) ;

行号     CHECKPOINT(100)
---------- ---------------
1          0

已用时间: 19.306(毫秒). 执行号:2208.

查看归档信息

SQL> select ARCH_LSN, CLSN, PATH from V$ARCH_FILE;

行号     ARCH_LSN             CLSN
---------- -------------------- --------------------
           PATH
           ------------------------------------------------------------------
1          52438                52571
           /dmdata/arch/ARCHIVE_LOCAL1_0x543E1A30_EP0_2025-05-29_10-32-03.log

2          52686                52765
           /dmdata/arch/ARCHIVE_LOCAL1_0x543E1A30_EP0_2025-05-30_16-57-52.log

3          52765                52802
           /dmdata/arch/ARCHIVE_LOCAL1_0x543E1A30_EP0_2025-05-30_17-03-14.log


行号     ARCH_LSN             CLSN
---------- -------------------- --------------------
           PATH
           ------------------------------------------------------------------
4          52803                55055
           /dmdata/arch/ARCHIVE_LOCAL1_0x543E1A30_EP0_2025-05-30_17-07-20.log


已用时间: 11.525(毫秒). 执行号:2210.

SQL> alter system switch logfile ;
操作已执行
已用时间: 3.800(毫秒). 执行号:0.
SQL> alter system switch logfile ;
操作已执行
已用时间: 1.610(毫秒). 执行号:0.


SQL> SQL>  select ARCH_LSN, CLSN, PATH from V$ARCH_FILE;


行号     ARCH_LSN             CLSN
---------- -------------------- --------------------
           PATH
           ------------------------------------------------------------------
1          52438                52571
           /dmdata/arch/ARCHIVE_LOCAL1_0x543E1A30_EP0_2025-05-29_10-32-03.log

2          52686                52765
           /dmdata/arch/ARCHIVE_LOCAL1_0x543E1A30_EP0_2025-05-30_16-57-52.log

3          52765                52802
           /dmdata/arch/ARCHIVE_LOCAL1_0x543E1A30_EP0_2025-05-30_17-03-14.log


行号     ARCH_LSN             CLSN
---------- -------------------- --------------------
           PATH
           ------------------------------------------------------------------
4          52803                55055
           /dmdata/arch/ARCHIVE_LOCAL1_0x543E1A30_EP0_2025-05-30_17-07-20.log

5          55055                55063
           /dmdata/arch/ARCHIVE_LOCAL1_0x543E1A30_EP0_2025-05-30_18-30-44.log

6          55064                55067
           /dmdata/arch/ARCHIVE_LOCAL1_0x543E1A30_EP0_2025-05-30_18-32-04.log


6 rows got

基于LSN做归档备份

SQL> BACKUP ARCHIVELOG LSN BETWEEN 52803  AND 55067  BACKUPSET   '/opt/dmdbms/data/DAMENG/bak/arch_bak_time_31';

操作已执行
已用时间: 00:00:05.039. 执行号:2212.
SQL> SQL>

SQL>  select * from v$backupset  where   BACKUP_PATH='/opt/dmdbms/data/DAMENG/bak/arch_bak_time_31';

行号     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   BAK_MAGIC   VERSION     SUB_VERSION
           ----------- ----------- ------------ ----------- ----------- -------------------- ------------ ----------- ----------- ----------- ----------- ----------- -----------
           BAKSET_MAGIC
           ------------
1          DISK        1978987098  -1          ARCH_FULL_20250530_183233_084451 /opt/dmdbms/data/DAMENG/bak/arch_bak_time_31 3           0           4           DAMENG
           -1                    2025-05-30 18:32:37.998642       0            0              1           0           67108864    52803                55091
           1           3           1            0           0           0                    134283815    0           4           0           0           16394       14
           1978987098


已用时间: 43.136(毫秒). 执行号:2503.

加密备份

参数

IDENTIFIED BY...  指定加密密码;
WITH ENCRYPTION...  指定加密类型
ENCRYPT WITH...   指定加密算法

执行备份

SQL> BACKUP DATABASE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_bak_for_encrypt_01' IDENTIFIED   BY "Wangyang23" WITH ENCRYPTION 2 ENCRYPT WITH RC4 ;

操作已执行
已用时间: 00:00:06.033. 执行号:2504.
SQL> SQL> select * from v$backupset  where BACKUP_PATH='/opt/dmdbms/data/DAMENG/bak/db_bak_for_encrypt_01' ;

行号     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   BAK_MAGIC   VERSION     SUB_VERSION
           ----------- ----------- ------------ ----------- ----------- -------------------- ------------ ----------- ----------- ----------- ----------- ----------- -----------
           BAKSET_MAGIC
           ------------
1          DISK        133525638   -1          DB_FULL_20250530_190136_330606 /opt/dmdbms/data/DAMENG/bak/db_bak_for_encrypt_01 0           0           1           DAMENG
           -1                    2025-05-30 19:01:42.302236       2            0              0           0           67108864    55096                55142
           2           6           1            0           0           0                    134283815    0           4           0           0           16394       14
           133525638


已用时间: 81.710(毫秒). 执行号:2505.
SQL>

联机恢复

联机状态下,只能进行表的备份恢复,库和表空间仅能在脱机环境下通过RMAN还原。

检查备份

SQL> SELECT SF_BAKSET_CHECK('DISK','  /opt/dmdbms/data/DAMENG/bak/t2bak_1');

行号     SF_BAKSET_CHECK('DISK','/opt/dmdbms/data/DAMENG/bak/t2bak_1')
---------- -------------------------------------------------------------
1          1

已用时间: 143.996(毫秒). 执行号:701.

清空表数据

SQL> truncate table t2;
操作已执行
已用时间: 47.490(毫秒). 执行号:708.

执行表结构还原

SQL> RESTORE TABLE sysdba.T2  STRUCT  FROM BACKUPSET   '/opt/dmdbms/data/DAMENG/bak/t2bak_1';
操作已执行
已用时间: 128.482(毫秒). 执行号:705.

执行数据还原

SQL> RESTORE TABLE sysdba.T2  FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/t2bak_1';
操作已执行
已用时间: 269.658(毫秒). 执行号:706.

查看数据

SQL> select * from t2;

行号     ID          NAME
---------- ----------- ----
1          1           a

已用时间: 3.305(毫秒). 执行号:707.
SQL>

备份集管理命令介绍:

  SF_BAKSET_BACKUP_DIR_ADD :添加备份目录。
  SF_BAKSET_BACKUP_DIR_REMOVE :删除内存中指定的备份目录。
  SF_BAKSET_BACKUP_DIR_REMOVE_ALL :删除内存中全部的备份目录。
  SF_BAKSET_CHECK :对备份集进行校验。
  SF_BAKSET_REMOVE :删除指定设备类型和指定备份集目录的备份集。
  SF_BAKSET_REMOVE_BATCH :批量删除满足指定条件的所有备份集。
  SF_BAKSET_REMOVE_BATCH_S :批量安全删除满足指定条件的所有库级备份集。
  SF_BAKSET_REMOVE_BATCH_N :批量删除满足指定条件的所有备份集,并保留用户指定个数的库级完全备份集。
  SP_DB_BAKSET_REMOVE_BATCH :批量删 除指定时间之前的数据库备份集。
  SP_TS_BAKSET_REMOVE_BATCH :批量删除指定表空间对象及指定时间之前的表空间备份集。
  SP_TAB_BAKSET_REMOVE_BATCH :批量删除指定表对象及指定时间之前的表备份集。
  SP_ARCH_BAKSET_REMOVE_BATCH :批量删除指定条件的归档备份集。

  V$BACKUPSET :显示备份集基本信息。
  V$BACKUPSET_DBINFO :显示备份集的数据库相关信息。
  V$BACKUPSET_DBF :显示备份 集中数据文件的相关信息。
  V$BACKUPSET_ARCH :显示备份集的归档信息。
  V$BACKUPSET_BKP :显示备份集的备份片信息。
  V$BACKUPSET_SEARCH_DIRS :显示备份集搜索目录。
  V$BACKUPSET_TABLE :显示表备份集中备份表信息。
  V$BACKUPSET_SUBS :显示并行备份中生成的子备份集信息。
  V$BACKUP_MONITOR :显示当前备份任务实时监控信息。
  V$BACKUP_HISTORY :显示最近 100 条备份监控信息。
  V$BACKUP_FILES :显示当前备份任务待备份数据文件列表。

脱机备份还原

DMRMAN介绍

DMRMAN工具是DM数据库的脱机备份恢复管理工具,是数据库安装包中的一个工具,无需专门部署,可以用于数据库在脱机状态下的备份恢复。联机状态下仅能使用disql来进行操作。
使用 DMRMAN 工具可以将数据库中的一个或多个数据文件、数据库信息等备份到一个称为“备份集”的逻辑结构中,备份集的格式是特定的,只能由 DMRMAN 创建和访问。

操作DMRMAN

启停

[dmdba@localhost ~]$ dmrman
dmrman V8
RMAN> exit
time used: 5.083(ms)
[dmdba@localhost ~]$

配置信息操作管理

[dmdba@localhost ~]$ dmrman
dmrman V8
RMAN> help
备份集版本: 0x400A 子版本: 0xE
书写格式: ./dmrman KEYWORD=<value> {KEYWORD=<value>}
          其中{}表示大括号内的关键词可为0~N个,N为正整数,{}本身无需出现在语句中
使用示例: ./dmrman CTLFILE=/opt/dm7data/dameng/res_ctl.txt
----------------------------------------------------------------------------------------------------------------------------------------------
关键词(KEYWORD)        说明                                                                                     缺省值            是否必选项
----------------------------------------------------------------------------------------------------------------------------------------------
CTLFILE                  指定执行语句所在的文件路径                                                               无                否
CTLSTMT                  指定待执行语句                                                                           无                否
DCR_INI                  指定dmdcr.ini路径;若未指定且当前目录中dmdcr.ini存在,则使用当前目录中的dmdcr.ini        无                否
                         可单独使用,也可与其他参数配合使用
USE_AP                   指定备份、还原执行载体,1/2:DMAP/进程自身                                               默认是DMAP        否
AP_PORT                  连接AP时用的端口号, 可单独使用, 也可与其他参数配合使用                                   默认是4236        否
CFG_PATH                 指定CFG配置文件路径                                                                      无                否
HELP                     打印帮助信息                                                                             无                否
----------------------------------------------------------------------------------------------------------------------------------------------
time used: 1.853(ms)
RMAN>

配置

RMAN> configure
DEVICE TYPE:    DISK
DEVICE PARMS:
FORMAT:
DESTINATION:
TRACE FILE:
TRACE LEVEL:    1
OPEN FILES:     0
MAXPIECESIZE:   131072
READ SPEED:     0
WRITE SPEED:    0
TASK THREAD:    4
PARALLEL:       1
READ SIZE:      1024
PARALLEL POLICY:        1
PACKAGE SIZE:   64
PACKAGE CRC:    ENABLE
PACKAGE CHECK:  ENABLE
POOL SIZE:      1024
time used: 1.926(ms)
RMAN>

修改配置

RMAN> CONFIGURE DEFAULT DEVICE TYPE TAPE PARMS 'command';
time used: 1.463(ms)
RMAN>  configure
DEVICE TYPE:    TAPE
DEVICE PARMS:   command
FORMAT:
DESTINATION:
TRACE FILE:
TRACE LEVEL:    1
OPEN FILES:     0
MAXPIECESIZE:   131072
READ SPEED:     0
WRITE SPEED:    0
TASK THREAD:    4
PARALLEL:       1
READ SIZE:      1024
PARALLEL POLICY:        1
PACKAGE SIZE:   64
PACKAGE CRC:    ENABLE
PACKAGE CHECK:  ENABLE
POOL SIZE:      1024
time used: 2.587(ms)
RMAN>  CONFIGURE DEFAULT DEVICE TYPE DISK ;
time used: 2.014(ms)
RMAN> CONFIGURE DEFAULT TRACE FILE '/opt/dmdbms/data/DAMENG/bak/trace.log' TRACE LEVEL 2;
time used: 5.477(ms)
RMAN>  configure
DEVICE TYPE:    DISK
DEVICE PARMS:
FORMAT:
DESTINATION:
TRACE FILE:     /opt/dmdbms/data/DAMENG/bak/trace.log
TRACE LEVEL:    2
OPEN FILES:     0
MAXPIECESIZE:   131072
READ SPEED:     0
WRITE SPEED:    0
TASK THREAD:    4
PARALLEL:       1
READ SIZE:      1024
PARALLEL POLICY:        1
PACKAGE SIZE:   64
PACKAGE CRC:    ENABLE
PACKAGE CHECK:  ENABLE
POOL SIZE:      1024
time used: 3.058(ms)
RMAN>

脱机备份

关闭数据库

[root@localhost tmp]# systemctl stop DmServiceDMSERVER.service

完全备份

RMAN> BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_01';
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_01';
Processing backupset /opt/dmdbms/data/DAMENG/bak/db_full_bak_01
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:04][Remaining:00:00:00]
backup successfully!
time used: 00:00:05.950
RMAN>

增量备份

RMAN> BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/opt/dmdbms/data/DAMENG/bak' BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_increment_bak_02';
BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/opt/dmdbms/data/DAMENG/bak' BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_increment_bak_02';
Processing backupset /opt/dmdbms/data/DAMENG/bak/db_increment_bak_02
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:04][Remaining:00:00:00]
backup successfully!
time used: 00:00:05.453
RMAN> RMAN>
RMAN>

归档备份

RMAN> BACKUP ARCHIVE LOG ALL DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET '/opt/dmdbms/data/DAMENG/bak/arch_all_bak_01';
BACKUP ARCHIVE LOG ALL DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET '/opt/dmdbms/data/DAMENG/bak/arch_all_bak_01';
==============================Error Stack==============================
DM[-718]:收集到的归档日志不连续
=======================================================================
RMAN> BACKUP ARCHIVE LOG LSN BETWEEN 52803 AND 55055 DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET '/opt/dmdbms/data/DAMENG/bak/arch_lsn_bak_02';
BACKUP ARCHIVE LOG LSN BETWEEN 52803 AND 55055 DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET '/opt/dmdbms/data/DAMENG/bak/arch_lsn_bak_02';

Processing backupset /opt/dmdbms/data/DAMENG/bak/arch_lsn_bak_02
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:03][Remaining:00:00:00]
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:04][Remaining:00:00:00]
backup successfully!
time used: 00:00:05.193
RMAN> RMAN> RMAN>

脱机备份管理

备份集查看

RMAN> show backupset '/opt/dmdbms/data/DAMENG/bak/db_full_bak_01';

查看指定目录下所有备份集信息。

RMAN> SHOW BACKUPSETS WITH BACKUPDIR '/opt/dmdbms/data/DAMENG/bak';

查看部分备份集信息,DB、META、FILE、TABLESPACE、TABLE

RMAN>SHOW BACKUPSETS WITH BACKUPDIR '/opt/dmdbms/data/DAMENG/bak' USE DB_MAGIC 1413356080;

查看备份的元数据信息

RMAN> show backupset '/opt/dmdbms/data/DAMENG/bak/db_full_bak_01' info meta

备份集校验

RMAN>CHECK BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_01';

备份集删除

RMAN>REMOVE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_01';
RMAN> REMOVE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_01';
REMOVE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_01';
==============================Error Stack==============================
DM[-8202]:[/opt/dmdbms/data/DAMENG/bak/db_increment_bak_02]的基备份,不能删除
=======================================================================
RMAN> REMOVE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_increment_bak_02';
REMOVE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_increment_bak_02';
remove backupset successfully.
time used: 54.745(ms)
RMAN>

删除备份目录下的某一个数据库备份集

RMAN>REMOVE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_01' DATABASE '/opt/dmdbms/data/DAMENG/dm.ini';
REMOVE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_01' DATABASE '/opt/dmdbms/data/DAMENG/dm.ini';
remove backupset successfully.
time used: 45.766(ms)

删除整个目录下的备份

RMAN>REMOVE BACKUPSETS WITH BACKUPDIR '/opt/dmdbms/data/DAMENG/bak';
  REMOVE BACKUPSETS WITH BACKUPDIR '/opt/dmdbms/data/DAMENG/bak';
remove backupsets successfully.
time used: 51.866(ms)

基于时间删除

RMAN>REMOVE BACKUPSETS WITH BACKUPDIR '/opt/dmdbms/data/DAMENG/bak' UNTIL TIME '2025-06-03 13:38:00';
REMOVE BACKUPSETS WITH BACKUPDIR '/opt/dmdbms/data/DAMENG/bak' UNTIL TIME '2025-06-03 13:38:00';
remove backupsets successfully.
time used: 39.720(ms)

脱机还原恢复全库

还原数据库

RMAN> RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_for_restore';
RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_for_restore';
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:03.230
RMAN>

基于源参数进行还原

RMAN> RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' REUSE DMINI FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_for_restore';
RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' REUSE DMINI FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_for_restore';
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.641

恢复日志

RMAN>  RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_for_restore';
RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_for_restore';
==============================Error Stack==============================
DM[603]:备份集[/opt/dmdbms/data/DAMENG/bak/db_full_bak_for_restore]备份过程中未产生日志
=======================================================================
recover successfully!
time used: 00:00:01.225

更新魔数

RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
recover successfully!
time used: 00:00:01.224
RMAN>

增量备份还原

联机全备

SQL> BACKUP DATABASE FULL BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_01';

操作已执行
已用时间: 00:00:09.404. 执行号:501.

造测试数据

SQL> SQL> CREATE TABLE TAB_FOR_RECOVER_03(C1 INT);
BEGIN

  FOR I IN 1..1000 LOOP

     INSERT INTO TAB_FOR_RECOVER_03 VALUES(I);

     COMMIT;

  END LOOP;

END;

/
操作已执行
已用时间: 13.072(毫秒). 执行号:502.
SQL> 2   3   4   5   6   7   8   9   10  11  12  13
DMSQL 过程已成功完成
已用时间: 842.187(毫秒). 执行号:503.

联机增量备份

SQL> BACKUP DATABASE INCREMENT WITH BACKUPDIR '/opt/dmdbms/data/DAMENG/bak' BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_increment_bak_02';

操作已执行
已用时间: 00:00:09.294. 执行号:504.
SQL> SQL>

删除表

SQL> drop table TAB_FOR_RECOVER_03 ;
操作已执行
已用时间: 74.596(毫秒). 执行号:505.
SQL> commit ;
操作已执行
已用时间: 0.486(毫秒). 执行号:506.
SQL> exit

进行数据不完全恢复(不加归档)

RMAN> RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_01';
RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_01';
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.871
RMAN> RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_increment_bak_02';
RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_increment_bak_02';
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.759
RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_increment_bak_02';
RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_increment_bak_02';
[Percent:100.00%][Speed:6390.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:03.239
RMAN>  RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
recover successfully!
time used: 00:00:01.341
RMAN>

启动数据库查看数据

[root@localhost tmp]# systemctl start DmServiceDMSERVER.service
su - dmdba
disql sysdba/Dameng123
[root@localhost tmp]# su - dmdba
上一次登录:二 6月  3 15:50:03 CST 2025pts/0 上
s[dmdba@localhost ~]$ disql sysdba/Dameng123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 7.515(ms)
disql V8
SQL
SQL> select count(*) from TAB_FOR_RECOVER_03 ;

行号     COUNT(*)
---------- --------------------
1          1000

已用时间: 2.814(毫秒). 执行号:601.
SQL> SQL>

基于归档做完全恢复

RMAN>  RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_01';
RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_full_bak_01';
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.649
RMAN> RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_increment_bak_02';
RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_increment_bak_02';
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:02.676
RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_increment_bak_02';
RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/db_increment_bak_02';
file dm.key not found, use default license!
[Percent:100.00%][Speed:2257.43PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:04.242
RMAN>
RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'  WITH  ARCHIVEDIR '/dmdata/arch';
RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/dmdata/arch';
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:01.226
RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
recover successfully!
time used: 00:00:01.233

启动数据库查看数据

[root@localhost tmp]# systemctl start DmServiceDMSERVER.service
[root@localhost tmp]# su - dmdba
上一次登录:二 6月  3 15:39:08 CST 2025pts/0 上
[dmdba@localhost ~]$ disql sysdba/Dameng123

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 5.638(ms)
disql V8
SQL> select  count(*) from TAB_FOR_RECOVER_03 ;
select  count(*) from TAB_FOR_RECOVER_03 ;
第1 行附近出现错误[-2106]:无效的表或视图名[TAB_FOR_RECOVER_03].
已用时间: 2.297(毫秒). 执行号:0.
SQL> quit

总结

DM数据库备份,主要是将数据库的已经使用的有效数据页拷贝到备份中,然后备份期间的日志会正常记录到REDO以及归档中,恢复的时候,使用备份+归档,就可以将数据库恢复到最新状态,也可以使用备份+部分归档或者不加归档进行不完全恢复。
DM数据库的备份有两种模式,一种是通过disql进行联机备份,一种是通过DMRMAN进行脱机备份,备份主要通过disql进行联机备份。
DM数据库在恢复方面,表的备份恢复可以在联机状态下进行。数据库以及表空间级别的备份可以在联机状态下进行,恢复必须在脱机状态下进行。
通过DMRMAN,可以对数据库进行备份校验、备份集导出、基于时间点/LSN等方式还原,并且还可以对增量备份进行合并、归档修复等操作。
本次测试对联机备份和DMRMAN备份恢复进行了简单测试,验证了整体流程。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服