概述
联机备份还原:联机还原指数据库处于运行状态时,并正常提供数据库服务情况下进行的备份还原操作,称为联机备份。
联机备份数据库必须要配置归档。联机备份时,大量的事务处于活动状态,为确保备份数据的一致性,需要同时备份一段日志(备份期间产生的 REDO 日志),因此要求数据库必须配置本地归档且归档必须处于开启状态。
联机备份支持备份类型
联机方式支持数据库、用户表空间、用户表和归档的备份以及用户表的还原。在进行联机库级备份、归档备份和表空间备份时,必须保证系统处于归档模式,否则联机备份不能进行。
联机备份时,关闭已配置的本地归档之后再重新打开,会造成归档文件中部分日志缺失,备份时检查归档文件连续性时将会报错。存在该类操作时,若要避免该错误,备份前需要调用【 checkpoint(100) ;】命令主动刷新检查点。
联机备份与数据库状态
序号 | 部署架构 | 状态 | 使用限制 |
---|---|---|---|
1 | 单实例 | open | 支持所有备份类型 |
2 | mount | 支持归档备份 | |
3 | 主备 | Primary | 支持所有备份类型 |
4 | Standby | 支持库级、表空间级、归档备份、DDL CLONE | |
5 | DSC | open | 支持库备份、表空间备份、表备份 |
数据备份
数据库备份
需要打开归档
备份参数
- BACKUPSET 参数用于指定备份集的输出路径
- TO WEEKLY_FULL_BAK 设置备份名
- BACKUPINFO 备份描述
- MAXPIECESIZE 设置备份片最大大小
- COMPRESSED LEVEL 设置压缩级别,建议使用compressed 1进行压缩备份
- PARALLEL 设置备份并行度
- INCREMENT 增量备份
备份命令
##全备
BACKUP DATABASE FULL BACKUPSET '/dmbak';
##设置备份名
BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/dmbak';
##添加备份描述
BACKUP DATABASE BACKUPSET '/dmbak' BACKUPINFO '完全备份';
##限制备份片大小为300m
BACKUP DATABASE BACKUPSET '/dmbak' MAXPIECESIZE 300;
##压缩备份,压缩级别设定为5,压缩级别范围为0~9
BACKUP DATABASE BACKUPSET '/dmbak' COMPRESSED LEVEL 5;
##创建并行备份,执行并行数为8
BACKUP DATABASE BACKUPSET '/dmbak' PARALLEL 8;
表空间备份
备份参数
-
BACKUPSET 参数用于指定备份集的输出路径
备份命令
##备份单个表空间
BACKUP TABLESPACE MAIN BACKUPSET 'ts_bak_01';
##增量备份
BACKUP TABLESPACE MAIN INCREMENT BACKUPSET 'ts_increment_bak_01';
##基于ts_full_bak_01全备份的增量备份
BACKUP TABLESPACE MAIN INCREMENT BASE ON BACKUPSET'ts_bak_01' BACKUPSET 'ts_increment_bak_01'
##基于增量备份ts_increment_bak_01的增量备份
backup tablespace main increment base on backupset 'ts_increment_bak_01' backupset 'ts_increment_bak_02';
表备份
注意
1.表备份均为联机完全备份;
2.不需要配置归档日志;
3.没有增量备份。
备份参数
备份命令
##表备份
BACKUP TABLE TAB_01 BACKUPSET 'tab_bak_01';
归档备份
前提
- 数据库必须配置归档;
- 归档文件的 db_magic、permanent_magic 值和数据库的 db_magic、permanent_magic 值必须一样;
- 归档日志必须连续,如果出现不连续的情况,前面的连续部分会忽略,仅备份最新的连续部分。
备份命令
##备份全部归档
BACKUP ARCHIVE LOG ALL BACKUPSET 'arch_bak_01';
定时备份
--完全备份
call SP_CREATE_JOB('完全备份',1,0,'',0,0,'',0,'完全备份');
call SP_JOB_CONFIG_START('完全备份');
call SP_ADD_JOB_STEP('完全备份', '完全备份第一步', 6, '00000000/home/dmdba/bak', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('完全备份', '完全备份时间调度', 1, 2, 1, 1, 0, '00:00:00', NULL, '2023-04-23 11:43:05', NULL, '');
call SP_JOB_CONFIG_COMMIT('完全备份');
--增量备份
call SP_CREATE_JOB('增量备份',1,0,'',0,0,'',0,'增量备份');
call SP_JOB_CONFIG_START('增量备份');
call SP_ADD_JOB_STEP('增量备份', '增量备份', 6, '10000000/home/dmdba/bak|/home/dmdba/incr', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('增量备份', '增量备份作业调度', 1, 2, 1, 62, 0, '00:00:00', NULL, '2023-04-23 12:00:08', NULL, '');
call SP_JOB_CONFIG_COMMIT('增量备份');
--归档备份
call SP_CREATE_JOB('归档备份',1,0,'',0,0,'',0,'归档备份');
call SP_JOB_CONFIG_START('归档备份');
call SP_ADD_JOB_STEP('归档备份', '归档备份', 6, '30000000/home/dmdba/arch', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('归档备份', '归档备份作业调度', 1, 1, 1, 0, 0, '12:00:00', NULL, '2023-04-23 12:01:38', NULL, '');
call SP_JOB_CONFIG_COMMIT('归档备份');
--完全备份
call SP_CREATE_JOB('完全备份',1,0,'',0,0,'',0,'完全备份');
call SP_JOB_CONFIG_START('完全备份');
call SP_ADD_JOB_STEP('完全备份', '完全备份第一步', 6, '00000000/home/dmdba/bak', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('完全备份', '完全备份时间调度', 1, 2, 1, 1, 0, '00:00:00', NULL, '2023-04-23 11:43:05', NULL, '');
call SP_JOB_CONFIG_COMMIT('完全备份');
--增量备份
call SP_CREATE_JOB('增量备份',1,0,'',0,0,'',0,'增量备份');
call SP_JOB_CONFIG_START('增量备份');
call SP_ADD_JOB_STEP('增量备份', '增量备份', 6, '10000000/home/dmdba/bak|/home/dmdba/incr', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('增量备份', '增量备份作业调度', 1, 2, 1, 62, 0, '00:00:00', NULL, '2023-04-23 12:00:08', NULL, '');
call SP_JOB_CONFIG_COMMIT('增量备份');
--归档备份
call SP_CREATE_JOB('归档备份',1,0,'',0,0,'',0,'归档备份');
call SP_JOB_CONFIG_START('归档备份');
call SP_ADD_JOB_STEP('归档备份', '归档备份', 6, '30000000/home/dmdba/arch', 0, 0, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('归档备份', '归档备份作业调度', 1, 1, 1, 0, 0, '12:00:00', NULL, '2023-04-23 12:01:38', NULL, '');
call SP_JOB_CONFIG_COMMIT('归档备份');