注册
备份还原
培训园地/ 文章详情 /

备份还原

浔 2026/09/24 319 0 0

备份还原

概念

备份本质是从数据库文件中拷贝有效数据页保存到备份集中。

还原是备份的逆过程,分为数据还原和数据恢复。数据还原是将备份集中的有效数据页重新写入目标数据文件的过程,数据恢复是指通过重做归档日志,将数据库状态恢复到备份结束时的状态。
image.png

注:备份期间数据库可能还在运行(联机备份),数据页不一定完全一致。还原只是“搬回”了数据页,还需要重做归档日志“补齐”备份期间发生的变更,才能达到一致状态。

作用

备份的主要目的是数据容灾,保证数据的安全性,在数据库发生故障时,通过还原备份集,将数据恢复到可用状态。

数据备份还原

使用联机执行sql语句进行备份还原

​ 联机方式支持数据库、用户表空间、用户表和归档的备份以及用户表的还原,并且进行联机库备份、表空间备份和归档备份时,必须配置归档,启动DmAPService。

​ 联机方式下仅支持表还原,数据库、表空间等还原见脱机。

联机备份的前提:开启归档

联机备份的基石是归档模式。开启归档有两种方式:

方式一:联机SQL命令配置(推荐)
-- 1. 将数据库切换至MOUNT状态 ALTER DATABASE MOUNT; -- 2. 开启归档模式 ALTER DATABASE ARCHIVELOG; -- 3. 添加本地归档配置(路径根据实际环境修改) ALTER DATABASE ADD ARCHIVELOG 'DEST = /dm8/arch, TYPE = LOCAL, FILE_SIZE = 1024, SPACE_LIMIT = 2048'; -- 4. 切回OPEN状态 ALTER DATABASE OPEN;

注意:归档路径必须与数据文件存放在不同的物理磁盘上,避免介质故障时归档和业务数据同时损坏。

方式二:手动配置(需重启)
  1. 在dm.ini中设置 ARCH_INI = 1
  2. 在实例目录下创建dmarch.ini文件:
[ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dm8/arch ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 2048
  1. 重启数据库

查询是否成功开启归档:

SELECT ARCH_MODE FROM V$DATABASE;

数据库备份

​ 数据库备份是最完整的备份方式,备份整个数据库的所有数据。

-- 最简单的全量备份 BACKUP DATABASE FULL BACKUPSET '/dm/backup/db_full_bak'; -- 带压缩和并行的全量备份 BACKUP DATABASE FULL BACKUPSET '/dm/backup/db_full_bak' COMPRESSED 4 PARALLEL 8;

FULL关键字表示完全备份,不指定时默认也是全量备份。COMPRESSED后面跟压缩级别(0-9),PARALLEL指定并行数。

-- 增量备份(使用WITH BACKUPDIR指定基备份搜索目录) BACKUP DATABASE INCREMENT WITH BACKUPDIR '/dm/backup' BACKUPSET '/dm/backup/incr/incrbak_01';

表空间备份

表空间备份仅备份指定表空间的数据,恢复粒度比数据库级更精细。

-- 备份MAIN表空间 BACKUP TABLESPACE MAIN FULL BACKUPSET '/dm/backup/ts_full_bak_01'; -- 表空间增量备份 BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR '/dm/backup' BACKUPSET '/dm/backup/ts_increment_bak_02';

表备份及还原

-- 备份指定表 BACKUP TABLE 模式名.表名 BACKUPSET '/dm/backup/tab_bak_01'; -- 还原指定表 RESTORE TABLE 模式名.表名 FROM BACKUPSET '/dm/backup/tab_bak_01';

归档备份

归档备份是对数据库产生的归档日志文件进行备份,用于实现时间点恢复(PITR)。

-- 备份所有归档日志 BACKUP ARCHIVE LOG ALL TO ARCHBAK BACKUPSET '/dm/backup/archbak';

使用脱机工具dmrman进行备份还原

数据库必须完全关闭,无需配置归档。

数据库备份及还原

-- 全量备份 BACKUP DATABASE '/data/DM/dmdata/DAMENG/dm.ini' FULL BACKUPSET '/dm/backup/db_full_bak_01'; -- 差异增量备份 BACKUP DATABASE '/data/DM/dmdata/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/dm/backup' BACKUPSET '/dm/backup/db_increment_bak_02'; --还原与恢复(以全量备份为例,其余备份方式替换文件名即可) -- 1. 还原 RESTORE DATABASE '/data/DM/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dm/backup/db_full_bak_01'; -- 2. 恢复(应用归档日志,脱机备份可省略该步骤) RECOVER DATABASE '/data/DM/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dm/backup/db_full_bak_01'; -- 3. 更新DB_MAGIC RECOVER DATABASE '/data/DM/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC;

表空间备份及还原

表空间仅支持联机备份,以下为脱机还原方法。

-- 还原表空间(数据库实例打开,表空间脱机) ALTER TABLESPACE 表空间名 OFFLINE; RESTORE TABLESPACE MAIN FROM BACKUPSET '/dm/backup/ts_offline_full_bak'; ALTER TABLESPACE 表空间名 ONLINE;

归档备份及还原

BACKUP ARCHIVE LOG ALL BACKUPSET '/dm/backup/arch_offline_bak'; RESTORE ARCHIVE LOG FROM BACKUPSET '/dm/backup/arch_offline_bak' TO ARCHIVEDIR '/dm/restore_arch';

使用manager工具进行联机备份还原

以下为表备份还原的简单示例

右键“表备份”,点击“新建备份”,可打开对话框,配置备份的参数信息,配置完成后点击确定

image.png

可看到刚才新建的备份

image.png

右键它,点击“备份校验”,可以检验备份是否合法

image.png

右键它,点击“备份还原”,可配置还原相关的参数信息

image.png

备份作业配置及清理策略

命令行方式

--备份位置是/dmbak,根据实际情况修改脚本路径 sp_init_job_sys(1); --全备:周六23点,备份保留30天,删除过期备份 call SP_CREATE_JOB('DM_FULL_DEL_BAK',1,0,'',0,0,'',0,''); call SP_JOB_CONFIG_START('DM_FULL_DEL_BAK'); call SP_ADD_JOB_STEP('DM_FULL_DEL_BAK', 'FULL_BAK', 6, '01000000/dmbak', 3, 1, 0, 0, NULL, 0); call SP_ADD_JOB_STEP('DM_FULL_DEL_BAK', 'DEL_BAK', 0, 'SF_BAKSET_BACKUP_DIR_ADD('DISK','/dmbak'); call SP_DB_BAKSET_REMOVE_BATCH('DISK',SYSDATE-30);', 1, 1, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('DM_FULL_DEL_BAK', 'FULL2', 1, 2, 1, 64, 0, '23:00:00', NULL, '2024-01-01 00:00:00', NULL, ''); call SP_JOB_CONFIG_COMMIT('DM_FULL_DEL_BAK'); --增备:周日-周五 23点 call SP_CREATE_JOB('DM_INC_BAK',1,0,'',0,0,'',0,''); call SP_JOB_CONFIG_START('DM_INC_BAK'); call SP_ADD_JOB_STEP('DM_INC_BAK', 'INC1', 6, '11000000/dmbak|/dmbak', 1, 3, 0, 0, NULL, 0); call SP_ADD_JOB_STEP('DM_INC_BAK', 'FULL1', 6, '01000000/dmbak', 1, 1, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('DM_INC_BAK', 'INC2', 1, 2, 1, 63, 0, '23:00:00', NULL, '2024-01-01 00:00:00', NULL, ''); call SP_JOB_CONFIG_COMMIT('DM_INC_BAK');

图形化方式

右键创建代理
image.png

右键新建作业
image.png
添加作业步骤

选择步骤类型备份数据库,备份方式为完全备份
image.png
还可以设置作业步骤完成时的操作
image.png
再添加一个作业步骤

步骤类型选择SQL脚本,编写SQL
image.png
添加作业调度
image.png
再添加一个作业
image.png
添加作业步骤

步骤类型为备份数据库,备份方式为差异增量备份
image.png
添加作业调度
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服