DM数据库联机备份还原

DM数据库的备份还原包括两种类型:物理备份还原和逻辑备份还原。
物理备份还原是对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份还原。直接扫描数据库文件,找出那些已经分配、使用的数据页,拷贝并保存到备份集中。只是简单的根据数据库文件系统的描述,来挑选有效的数据页。
逻辑备份是指利用dexp导出工具,将指定对象(库级、模式级、表级)的数据导出到文件的备份方式(针对的是数据内容)。
数据备份主要针对数据文件内容,包括库备份、表空间备份和表备份。

1. 备份还原

DM数据库中的数据存储在数据库的物理数据文件中,数据文件按照页、簇和段的方式进行管理,数据页是最小的数据存储单元。任何一个对DM数据库的操作,都是对某个数据文件页的读写操作。
DM备份的本质就是从数据库文件中拷贝有效的数据页(描述页和被分配使用的数据页)保存到备份集中。备份的过程中,如果数据库系统还在继续运行,这期间的数据库操作并不是都会立即体现到数据文件中,而是首先以日志的形式写到归档日志中。

1.1 表空间与数据文件

数据库的所有对象在逻辑上都存放在某个表空间中,而物理上都存储在所属表空间的数据文件中。一个表空间由一个或多个数据文件组成。除了表备份还原,其他的联机备份与还原必须运行在归档模式下。

1.2 备份集

备份集用来存放备份过程中产生的备份数据及备份信息。一个备份集对应了一次完整的备份。备份片用来存储备份数据的文件(备份片文件后缀为.bak)。备份片的大小可以在备份时通过MAXPIECESIZE指定。
按照备份集中的数据是否满足一致性,可以将备份划分为一致性备份和非一致性备份。
不指定 WITHOUT LOG 选项的联机备份生成的备份集就是一致性备份,脱机备份一定是一致性备份。
非一致性备份的备份集只包含数据文件相关内容,没有归档日志信息,利用非一致性备份还原的数据库,无法直接启动,必须借助归档日志来恢复。

2. 备份还原原理

备份->还原->恢复

2.1 归档

归档配置有两种方式:一是联机归档配置 二是手动配置归档。
备份与恢复过程都依赖归档日志,归档日志是保证数据一致性和完整性的重要保障。Redo日志本地归档(LOCAL),就是将Redo日志写入到本地归档日志文件的过程。
所谓远程归档(REMOTE ARCHIVE),顾名思义就是将写入本地归档的REDO日志信息,发送到远程节点,并写入远程节点的指定归档目录中。
远程归档必须双向配置,单向配置时目标实例上不会接收归档日志,归档状态将会变成无效状态。
通过归档切换功能,可以将这些已经写入联机日志文件,但还没有写入归档日志文件的REDO日志,写入到归档日志文件中。通过执行以下SQL命令,可以完成归档切换功能。三条语句功能一样,选择一条执行即可。

alter database archivelog current;  
alter system archive log current;   
alter system switch logfile;

2.2 备份

DM的物理备份一般包括数据备份和日志备份两部分,数据备份是拷贝数据页内容,日志备份则是拷贝备份过程中产生的REDO日志。
【并行备份】目前的数据库并行备份还原都是以文件为单位,适用于待备份文件大小比较均匀的情况。
若文件大小差别比较大,特别存在个别文件巨大时,并行备份还原基本没有优势。因此在进行数据库备份时,需要指定READ SIZE <拆分块大小>。
执行并行备份会生成一个主备份集和若干个子备份集,子备份集不能单独还原,也不能作为其他备份集的基备份。

2.3 数据恢复

在还原执行结束后,重做REDO日志,将数据库恢复到一致性状态,并执行更新DB_MAGIC的过程。只能在还原后的数据库上执行更新DB_MAGIC操作。
由于经过还原后数据库的DB_MAGIC会产生变化,因此即便PERMANENT_MAGIC相同,DB_MAGIC不同的数据库产生的归档日志也不会备份。

2.4 支持与限制

2.4.1 联机备份

对联机备份的支持与限制:

  1. MPP环境仅允许库和归档备份,且各节点都会执行,生成相应的备份集,支持DDL CLONE;
  2. DSC环境支持库备份、表空间备份和表备份,要求DSC环境的所有节点都处于OPEN 状态;
  3. MOUNT状态仅支持归档备份;
  4. SUSPEND状态所有备份均不支持;
  5. OPEN状态支持所有备份,支持DDL CLONE;
  6. PRIMARY模式支持所有备份,支持DDL CLONE;
  7. STANDBY模式仅支持库级、表空间级和归档备份,支持DDL CLONE;
  8. DDL CLONE必须备份归档,不允许指定WITHOUT LOG。

2.4.2 联机还原

仅支持表级还原,对联机还原的支持与限制:
1) MPP不支持;
2) PRIMARY支持;
3) MOUNT支持表空间级还原,SUSPEND均不支持;
4) OPEN/NORMAL支持。

2.4.3 脱机备份

脱机备份支持库级和归档备份。
a) MPP视同单机环境,仅当前节点执行备份操作;
b) 允许异常退出后备份,支持DDL_CLONE;
c) DSC支持库级备份,支持DDL_CLONE。

2.4.4 脱机还原

脱机还原跟目标库所处的模式、状态以及集群环境(MPP 和 DSC)无关,允许库级、表空间级和归档还原。

3. 联机备份还原

Disql 工具:联机数据备份与还原,包括库备份、表空间备份与还原、表备份与还原。

3.1 准备工作

1、联机归档配置
1)修改数据库为MOUNT状态。

SQL>ALTER DATABASE MOUNT; 

2)配置本地归档。

SQL> ALTER DATABASE ADD  ARCHIVELOG 'DEST=/home/dmdba/dmdata/dm2/arch, TYPE = local,FILE_SIZE = 1024, SPACE_LIMIT = 2048'; 

3)开启归档模式。

SQL>ALTER DATABASE ARCHIVELOG; 

4)修改数据库为OPEN状态。

SQL>ALTER DATABASE OPEN; 

2、手动配置归档
1)手动编辑dmarch.ini文件,之后保存在dm.ini所在的目录。dmarch.ini文件内容如下:

[ARCHIVE_LOCAL1]  
ARCH_TYPE = LOCAL   
ARCH_DEST = /home/dmdba/dmdata/dm1/arch
ARCH_FILE_SIZE = 1024  
ARCH_SPACE_LIMIT = 2048 

2)编辑dm.ini文件,设置参数ARCH_INI=1,保存。
3)启动数据库实例,数据库已运行于归档模式。

1.  注:ARCH_TYPE设置为REMOTE,表示是远程归档 
2.  ARCH_DEST设置为远程数据库实例名,表示REDO日志发送到这个节点 
3.  ARCH_INCOMING_PATH设置为本地存储路径,用于保存ARCH_DEST实例发送的 REDO日志。
查询 V$DM_ARCH_INI、V$ARCH_STATUS 等动态视图可以获取归档配置以及归档状态等相关信息。

3.2 使用DIsql工具实现数据文件的备份、管理及还原

3.2.1 数据备份

【数据库备份】
默认的备份路径为dm.ini中BAK_PATH配置的路径,语句执行完后会在默认的备份路径下生成名为“db_bak_01”的备份集目录

SQL>BACKUP DATABASE BACKUPSET 'db_bak_01'; 

在执行联机数据库备份过程中,如果报错归档不完整,则需要先执行生成检查点操作,才能正常备份。例如:select checkpoint(50);
执行数据库备份,数据库必须处于OPEN状态
完全备份语句如下:

SQL>BACKUP DATABASE FULL BACKUPSET '/home/dmdba/dmdata/dm1/bak/db_full_bak_01';

增量备份语句如下:

SQL>BACKUP DATABASE INCREMENT WITH BACKUPDIR '/home/dmdba/dmdata/dm1/bak'BACKUPSET '/home/dmdba/dmdata/dm1/bak/db_increment_bak_02'; 

【表空间备份】
使用DIsql完成最基本的表空间备份及实施一些备份策略,如限制备份集大小、加密备份等
备份表空间:

SQL>BACKUP TABLESPACE MAIN BACKUPSET 'ts_bak_01'; 

加密算法包括:

DES_ECB、DES_CBC、DES_CFB、DES_OFB、DESEDE_ECB、
DESEDE_CBC、DESEDE_CFB、DESEDE_OFB、AES128_ECB、 
AES128_CBC、AES128_CFB 、AES128_OFB、AES192_ECB、 
AES192_CBC、AES192_CFB 、AES192_OFB、AES256_ECB、 
AES256_CBC、AES256_CFB 、AES256_OFB 、RC4

注:

  1. 当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名后加文件编号。
  2. 系统处于归档模式下时,才允许进行表空间备份。
  3. MOUNT状态下,不允许进行表空间备份(表空间必须处于OPEN状态,MOUNT和SUSPEND状态下不允许执行表空间备份)。
  4. MPP环境不允许进行表空间备份。
  5. DM仅支持表空间联机备份
    【表备份】
SQL>BACKUP TABLE TAB_01 BACKUPSET 'tab_bak_01'; 

【归档备份】

SQL>BACKUP ARCHIVE LOG ALL BACKUPSET 'arch_bak_01'; 

例:备份归档日志,通过LSN BETWEEN… AND …来指定起始和截至LSN。
首先,确定LSN范围。

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

通过查询结果选出备份的起始LSN和截至LSN。比如50414 50478
其次,备份归档。

SQL>BACKUP ARCHIVELOGLSN BETWEEN 50414  AND 50478 BACKUPSET '/home/dmdba/dmdata/dm1/arch/arch_bak_time_14-78';

ENCRYPT WITH子句指定加密算法

3.2.2 管理备份

目的:删除不再需要的备份,DM没有提供自动删除过期备份的功能,删除备份需要手动执行。
备份管理相关系统过程与函数总结如下:

SF_BAKSET_BACKUP_DIR_ADD:添加备份目录。                               
INT SF_BAKSET_BACKUP_DIR_ADD(    device_type varchar,   backup_dir varchar(256)                                      )       

参数说明: device_type:待添加的备份目录对应存储介质类型,DISK或者TAPE。目前,无论指定介质类型为DISK或者TAPE,都会同时搜索两种类型的备份集。

backup_dir:待添加的备份目录。返回值:
1:目录添加成功;其它情况下报错。 

例:

SQL>SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak'); 
执行结果  1 
SF_BAKSET_BACKUP_DIR_REMOVE:指定删除内存中的备份目录。                   
INT SF_BAKSET_BACKUP_DIR_REMOVE
(   device_type varchar,   backup_dir varchar(256)                                                         )

参数说明: device_type:待删除的备份目录对应存储介质类型。待删除的备份目录对应存储介质类型,DISK或者TAPE。

backup_dir:待删除的备份目录。 
返回值: 1:目录删除成功、目录不存在或者目录为空;0:目录为库默认备份路径;其他情况报错。

例:

SQL>SELECT SF_BAKSET_BACKUP_DIR_REMOVE('DISK','/home/dm_bak'); 
执行结果   1 
SF_BAKSET_BACKUP_DIR_REMOVE_ALL:删除内存中全部的备份目录。                     
INT SF_BAKSET_BACKUP_DIR_REMOVE_ALL ()        

1:目录全部清理成功;其它情况下报错。
例:

SQL>SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL(); 
执行结果  1   

⚫SF_BAKSET_CHECK:对备份集进行校验。
⚫SF_BAKSET_REMOVE:删除指定设备类型和指定备份集目录的备份集。
⚫SF_BAKSET_REMOVE_BATCH:批量删除满足指定条件的所有备份集。
⚫ SP_DB_BAKSET_REMOVE_BATCH:批量删除指定时间之前的数据库备份集。
⚫ SP_TS_BAKSET_REMOVE_BATCH:批量删除指定表空间对象及指定时间之前的表空间备份集。
⚫ SP_TAB_BAKSET_REMOVE_BATCH:批量删除指定表对象及指定时间之前的表备份集。
⚫ SP_ARCH_BAKSET_REMOVE_BATCH:批量删除指定条件的归档备份集。

3.2.3 备份管理相关动态视图总结如下:

⚫ V$BACKUPSET:显示备份集基本信息。

⚫ V$BACKUPSET_DBINFO:显示备份集的数据库相关信息。

⚫ V$BACKUPSET_DBF:显示备份集中数据文件的相关信息。

⚫ V$BACKUPSET_ARCH:显示备份集的归档信息。

⚫ V$BACKUPSET_BKP:显示备份集的备份片信息。

⚫ V$BACKUPSET_SEARCH_DIRS:显示备份集搜索目录。

⚫ V$BACKUPSET_TABLE:显示表备份集中备份表信息。

⚫ V$BACKUPSET_SUBS:显示并行备份中生成的子备份集信息。
备份目录管理

SF_BAKSET_BACKUP_DIR_ADD函数 

添加备份目录

INT SF_BAKSET_BACKUP_DIR_ADD( device_type  varchar,   backup_dir varchar(256) ) 

参数说明: device_type:待添加的备份目录对应存储介质类型,DISK或者TAPE。目前,无论指定介质类型为DISK或者TAPE,都会同时搜索两种类型的备份集。
backup_dir:待添加的备份目录。返回值1目录添加成功;其它情况下报错。
例:

SQL>SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');
执行结果   1 

SF_BAKSET_BACKUP_DIR_REMOVE函数
删除备份目录

INT SF_BAKSET_BACKUP_DIR_REMOVE ( device_type varchar,   backup_dir varchar(256)    )

目录删除成功、目录不存在或者目录为空;0:目录为库默认备份路径;其他情况报错。
例:

SQL>SELECT SF_BAKSET_BACKUP_DIR_REMOVE('DISK','/home/dm_bak'); 
执行结果   1 

SF_BAKSET_BACKUP_DIR_REMOVE_ALL函数
清理全部备份目录,默认备份目录除外

INT SF_BAKSET_BACKUP_DIR_REMOVE_ALL ()        

目录全部清理成功;其它情况下报错。
例:

SQL>SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL();
执行结果    1 

3.3.4 数据还原

DM仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具DMRMAN 执行。DMDSC不支持指定目录还原数据库。
【表还原】
表空间还原只可以在脱机状态下执行。脱机时通过 DMRMAN 工具执行,对表空间状态没有限制。
表还原主要包括三部分内容:表结构还原、数据还原、以及重建索引和约束。
表还原只支持在联机状态下执行,表还原过程中也不需要重做REDO日志
表还原之后不需要恢复操作。DIsql中输入以下简单的RESTORE语句就可还原表:

SQL>RESTORE TABLE TAB_01 FROM  BACKUPSET 'tab_bak_01'; 
RESTORE TABLE [<表名>][STRUCT]                                                    
[WITH INDEX | WITHOUT INDEX]
[WITH CONSTRAINT|WITHOUT CONSTRAINT]           
FROM BACKUPSET'<备份集路径>' [DEVICE TYPE <介质类型> [PARMS '<介质参数>']]
[IDENTIFIED  BY <密码>]
[ENCRYPT WITH <加密算法>]                                 
[TRACE FILE '<TRACE文件名>'] [TRACE LEVEL <TRACE日志级别>];              

注: 仅支持对普通用户表进行还原,包括堆表。其中,系统表、临时表、物化视图表、物 化 视 图 附 属 表和 日 志 表 、 特 定 模 式(INFORMATION_SCHEMA/ DBG_PKG /INFO_SCHEM/SYSREP/SYSGEO/SYSJOB/SYSCP
T/SYS)下的表不支持还原。
执行表还原,数据库必须处于OPEN状态,MOUNT和SUSPEND状态下不允许执行表还原。表还原不需要配置归档,因为表还原是联机完全备份还原,所以不需要借助本地归档日志进行恢复。完整的表备份还原步骤如下:

1)  保证数据库为OPEN状态。 
2)  创建待备份的表。 
SQL>CREATE TABLE TAB_FOR_RES_01(C1 INT); 
3)  备份表数据。 
SQL>BACKUP TABLE TAB_FOR_RES_01 BACKUPSET '/home/dm_bak/tab_bak_for_res_01'; 
4)  校验备份。此步骤为可选。 
SQL>SELECT SF_BAKSET_CHECK('DISK','/home/dm_bak/tab_bak_for_res_01'); 
5)  还原表数据。 
SQL>RESTORE TABLE TAB_FOR_RES FROM BACKUPSET '/home/dm_bak/tab_bak_for_res_01'; 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值