概述
在备份的概念中,可按照备份方式,备份原理,备份工具,粒度等的不同分为不同的方式。
根据备份原理的不同,可分为物理/逻辑备份。
- 物理备份:拷贝已使用的数据页(数据抽取),添加到备份集。
- 逻辑备份:使用 DEXP 工具将数据以 SQL 逻辑的方式导出,支持库,模式,表的级别。
根据数据库是否运行,可分为联机/脱机备份
- 联机备份:数据库在运行时进行的备份。此时在备份过程中可能有事务还在运行,所以联机备份必须在归档开启的状态下进行,将备份过程中产生的日志一同备份。
- 脱机备份:数据库停止时的备份。支持对异常关闭的数据库进行备份,使用 DMRMAN 或 CONSOLE 工具。
根据数据一致性,可分为一致性/非一致性备份
非一致性备份中只有数据文件相关内容,缺少归档信息,还原时需要借助归档日志恢复,脱机备份一定是一致性备份。
联机/脱机还原
脱机还原使用 DMRMAN 进行。库,表空间,归档备份可以执行脱机还原。
数据还原/归档日志还原
库还原和表空间还原必须脱机执行。表还原只能联机执行。
完全还原/增量还原
备份还原的两种实现策略:dmap辅助进程开启和关闭。可通过DM.INI参数bak_use_ap选择,(dmrman 使用参数 use_ap), bak_use_ap 取值 1、 2。默认为 1。
归档切换
通过归档切换,可以将已经写入联机日志文件,但还没有写入归档日志文件的REDO日志,写入归档日志文件中
ALTER DATABASE ARCHIVELOG CURRENT;
库还原
目标库存在/不存在:如果存在,看是否指定OVERWRITE选项。还原时,默认保留目标库的配置参数不变,可以在还原时指定 REUSEDMINI 子句,使用备份集中的配置参数替换目标库 dm.ini 中的配置参数。
表空间还原只能在脱机状态下进行
表还原
包括表结构还原,数据还原,重建索引和约束。
表存在时,清楚表数据,删除二级索引和约束,如果备份表存在附加列(通过 ALTERTABLE 语句快速增加的列),那么还原目标表必须存在、并且目标表所有列的物理存储格式与备份源表完全一致。
表还原只支持在联机状态下执行,表还原过程中也不需要重做 REDO 日志。 并且,表备份集允许跨库还原,但要求还原目标库与源库的数据页大小等建库参数相同。需要匹配的建库参数参考下表。
数据恢复
包括重做 REDO 日志,执行更新 DB_MAGIC 动作。
即使备份过程中没有修改任何数据,备份集不包含任何 REDO 日志,在数据库还原结束后,也必须使用 DMRMAN 工具执行数据恢复操作后,才允许启动数据库。
MAGIC
PERMANENT_MAGIC 和 DB_MAGIC 是用来标识数据库的 INTEGER 类型值。 DM 在初始化数据库时生成 PERMANENT_MAGIC 和 DB_MAGIC 值,其中 PERMANENT_MAGIC 一经生成,永远不会改变(DDL_CLONE 还原库的 PMNT_MAGIC 除外),称为数据库永久魔数。 只有DDL_CLONE 还原库的 PMNT_MAGIC 会发生改变,当一个库使用 DDL_CLONE 备份集还原并恢复之后,在执行 RECOVER DATABASE „„ UPDATE DB_MAGIC 时, PMNT_MAGIC
会发生改变。 DB_MAGIC 称为数据库魔数,同样可以用来表示某一个数据库,但 DB_MAGIC
是可以变化的,每经过一次还原、恢复操作后, DB_MAGIC 就会产生变化,用来区分备份源库和还原目标库。
可以通过下列语句查看系统的 PERMANENT_MAGIC 和 DB_MAGIC 值。
SELECT PERMANENT_MAGIC;
SELECT DB_MAGIC FROM V$RLOG;
实际操作
使用到的工具:disql, dmrman, MANAGER,console
- 联机备份/还原:DISQL。包括数据库备份、归档备份、表空间备份与还原、表备份与还原;
- 脱机备份/还原:DMRMAN 工具用于执行脱机的数据备份、还原与恢复,包括脱机的数据库备份、还原与恢复,脱机还原表空间,归档的备份、还原与修复;客户端工具 MANAGER 和 CONSOLE对应命令行工具 DIsql 和 DMRMAN 的功能,分别用于联机和脱机备份还原数据。
支持与限制
- 联机备份
- MOUNT 状态仅支持归档备份;
- SUSPEND 状态所有备份均不支持
- PRIMARY 模式支持所有备份,支持 DDL CLONE;
- STANDBY 模式仅支持库级、表空间级和归档备份,支持 DDL CLONE;
- 联机还原
- 仅支持表级还原
- PRIMARY 支持;
- SUSPEND 状态所有还原均不支持;
- OPEN/NORMAL 支持
- 脱机备份
- 支持库级,归档级备份。
- 允许异常退出后备份,支持 DDL_CLONE;
- 脱机还原跟目标库所处的模式、状态以及集群环境(MPP 和 DSC)无关,允许库级、表空间级和归档还原。 分布式数据库仅支持库级脱机还原恢复。
联机,SQL备份
联机支持数据库,用户表空间,用户表(不用开归档)和归档的备份,用户表的还原。联机备份前,设置 INI 参数 BAK_USE_AP 。
整库备份
联机全库备份需要开启归档,检查数据库归档是否开启:
SELECT ARCH_MODE FROM V$DATABASE;
如未开启,先打开归档
--修改数据库为 MOUNT 状态。
SQL>ALTER DATABASE MOUNT;
--配置本地归档。
SQL>ALTER DATABASE ADD ARCHIVELOG 'DEST = /home/dm_arch/arch, TYPE = local,
FILE_SIZE = 1024, SPACE_LIMIT = 2048';
--开启归档模式。
SQL>ALTER DATABASE ARCHIVELOG;
--修改数据库为 OPEN 状态。
SQL>ALTER DATABASE OPEN;
执行全库备份
使用此命令进行全库备份,生成名为 DB_FULL_BAK_0322 的备份集,默认的备份路径为 dm.ini 文件中的 BAK_PATH 路径;如不存在,则使用 SYSTEM_PATH 的路径。
BACKUP DATABASE BACKUPSET 'DB_FULL_BAK_0322';
进入目录查看备份
也可不指定备份集路径,默认的备份集目录名生成规则 : DB_ 库名 _ 备份类型_备 份时间。
BACKUP DATABASE;
查看备份集
备份集中包含若干个备份片 .bak 文件 + .meta 元数据文件。
在执行联机数据库备份时,如遇到报错归档不完整,需要先执行生成检查点操作。如:select checkpoint(50);
设置备份选项
备份时可以设置的常用参数:
- 备份集路径
- 备份名
- 增量备份指定基备份目录
- 介质类型
- 备份描述
- 备份片大小
- 加密
- 压缩
指定路径
BACKUP DATABASE BACKUPSET '/opt/dmdbms/data/DAMENG/all';
添加描述信息
BACKUP DATABASE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/all' BACKUPINFO 'full_bak';
限制备份片大小
最小 32M,64 位系统最大128 GB。默认 64 系统最大 4 GB。
BACKUP DATABASE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BAK_01' MAXPIECESIZE 500;
压缩
取值范围 0 - 9,0 不压缩,级别越高,压缩越慢。
BACKUP DATABASE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BAK_02' COMPRESSED LEVEL 5;
并行备份
DM 支持库,表空间级别的并行备份,使用文件并行方式。
BACKUP DATABASE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/BAK_03' PARALLEL 8;
增量备份
条件:
- 配置归档
- 数据库状态为 OPEN
执行增量备份
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/opt/dmdbms/data/DAMENG/bak/BAK_03' BACKUPSET '/opt/dmdbms/data/DAMENG/bak/INCR/01';
表空间备份
条件:
- 归档开启
- MOUNT 状态下不允许表空间备份
- MPP 不允许
备份单个表空间
BACKUP TABLESPACE MAIN BACKUPSET '/opt/dmdbms/bak/tab_bak/01';
增量备份
使用 BASE ON 关键字指定基备份目录
BACKUP TABLESPACE MAIN INCREMENT BASE ON BACKUPSET '/opt/dmdbms/bak/tab_bak/01' BACKUPSET '/opt/dmdbms/data/DAMENG/bak/tab_bak/INCR/01';
表备份
表备份不需要配置归档。
备份用户表。
BACKUP TABLE BAK_TEST BACKUPSET '/opt/dmdbms/data/DAMENG/bak/t_bak/01';
归档备份
条件:
- 归档文件的 db_magic、 permanent_magic 值和库的 db_magic、 permanent_magic 值必须一样
- 归档打开
- 归档日志连续
备份归档
BACKUP ARCHIVE LOG ALL BACKUPSET '/opt/dmdbms/data/DAMENG/bak/arch/01';
加密备份
密码长度 9 - 48 字节,可指定加密类型,算法等参数。
BACKUP DATABASE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/SEC/01' IDENTIFIED BY "ADMIN1234" WITH ENCRYPTION 2 ENCRYPT WITH RC4;
生成跟踪日志文件
有两个参数:
- TRACE LEVEL 。1 不启用,2 启用。
- TRACE FILE。指定文件生成路径
BACKUP DATABASE BACKUPSET '/opt/dmdbms/data/DAMENG/bak/03' TRACE LEVEL 2;
备份集校验
使用 SF_BAKSET_CHECK 函数。正常返回 1,否则报错。
SELECT SF_BAKSET_CHECK('DISK','/opt/dmdbms/data/DAMENG/bak/BAK_03');
备份信息查看
查看前先添加备份集目录,否则只显示默认备份路径下的备份集信息。
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/opt/dmdbms/data/DAMENG/bak/BAK_03');
查看
SELECT DEVICE_TYPE, BACKUP_NAME, BACKUP_PATH, TYPE, LEVEL, RANGE#, OBJECT_NAME FROM V$BACKUPSET;
查看备份集的数据库相关信息
SELECT *FROM V$BACKUPSET_DBINFO;
数据还原
表还原
- 仅支持还原普通用户表,不支持系统表,临时表,物化视图表,日志表,特定模式(DBG_PKG/INFORMATION_SCHEMA/INFO_SCHEM/SYSREP/SYSGEO/SYSJOB/SYSCPT/SYS)下的表。
- 表列类型为对象类型的 表也不支持表还原。若还原表中存在位图连接索引和位图连接虚索引也不支持还原。
- 表名设置为可选参数。若指定,则表必须存在且表定义必须与备份表严格一致;
- 数据守护环境下,主库允许表备份还原,备库不允许
不需要恢复,直接还原
RESTORE TABLE BAK_TEST FROM BACKUPSET '/opt/dmdbms/data/DAMENG/bak/t_bak/01';
使用 DMRMAN 脱机备份/还原
注意:
- 使用与数据库版本匹配的 DMRMAN 工具
- 可配置归档或不配置
- 可进行增量/完全备份
- 可执行脚本
执行脚本
DMRMAN 可执行脚本。创建 dmrman_bak.txt 文件,执行此文件
![[Pasted image 20210323193140.png]]
方式一
进入 DMRMAN,执行脚本。
注意最前面有一个英文顿号。
`/opt/dmdbms/dmrman_bak.txt
方式二
和打开命令一起执行,执行完后会自动退出。
./dmrman CTLFILE=/opt/dmdbms/dmrman_bak.txt use_ap=2
方式三
使用 CTLSTMT 参数直接执行命令。多条语句之间用分号结尾。
CTLFILE 和 CTLSTMT 不能同时指定
./dmrman use_ap=2 CTLSTMT="BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini';"
数据备份
进入 dmrman ,执行备份
BACKUP DATABASE'/opt/dmdbms/data/DAMENG/dm.ini';