冷备
./dmrman CTLSTMT="BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' FULL TO BACKUP_FILE1 BACKUPSET '/dmdata/dmbak/BACKUP_FILE'"
复制
./dmrman CTLSTMT="RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE'" ./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/BACKUP_FILE'" ./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC"
复制
热备
热备就是数据库运行过程中执行备份,其关键是数据库必须开启归档。
SQL> select name,arch_mode from v$database; 行号 name arch_mode ---------- ------ --------- 1 DAMENG Y 已用时间: 314.391(毫秒). 执行号:601.
复制
Alter database mount; alter database archivelog; alter database add archivelog 'DEST=/dmdata/arch, TYPE=LOCAL, FILE_SIZE=64, SPACE_LIMIT=0, ARCH_FLUSH_BUF_SIZE=0'; Alter database open;
复制
SQL> select * from v$arch_status; 行号 ARCH_TYPE ARCH_DEST ARCH_STATUS ARCH_SRC ---------- --------- ------------ ----------- -------- 1 REALTIME DM2 VALID DM1 2 LOCAL /dmdata/arch VALID DM1 已用时间: 34.193(毫秒). 执行号:602.
复制
SQL> backup database full backupset '/dmdata/dmbak/full1'; 操作已执行 已用时间: 00:00:34.720. 执行号:603.
复制
SQL> BACKUP DATABASE INCREMENT WITH BACKUPDIR '/dmdata/dmbak/full1' BACKUPSET '/dmdata/dmbak/db_increment_bak_02'; 操作已执行 已用时间: 00:00:17.434. 执行号:701.
复制
SQL> backup tablespace main full backupset '/dmdata/dmbak/main_bak'; 操作已执行 已用时间: 00:00:17.532. 执行号:702.
复制
SQL> backup table test.t1 backupset '/dmdata/dmbak/t1'; 操作已执行 已用时间: 00:00:01.080. 执行号:805.
复制
BACKUP ARCHIVE LOG ALL BACKUPSET '/dmdata/dmbak/arch_bak_01';
复制
备份校验
-- 校验备份,校验待还原备份集的合法性。disql登录进入数据库进行校验。或者使用dmramn进行校验 SELECT SF_BAKSET_CHECK('DISK','/dmdata/dmbak/full1'); 行号 SF_BAKSET_CHECK('DISK','/dmdata/dmbak/full1') ---------- --------------------------------------------- 1 1 已用时间: 00:00:11.781. 执行号:807.
复制
或者使用dmrman工具检验
RMAN> CHECK BACKUPSET '/dmdata/dmbak/full1'; CHECK BACKUPSET '/dmdata/dmbak/full1'; [Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00] check backupset successfully. time used: 00:00:01.054
复制
还原恢复
数据库还原分为三步,第一步是使用 RESTORE 命令指定库级备份集进行还原,第二步是恢复使用 RECOVER 命令完成数据库恢复工作,可以是基于备份集的恢复工作,也可以是使用本地归档日志的恢复工作。第三步更新数据库的 DB_MAGIC与数据库恢复一样使用 RECOVER 命令完成。
-- 使用正常退出数据库的备份集进行还原恢复,也就是使用基于备份集的恢复工作。
RMAN> restore database '/dmdata/data/DAMENG/dm.ini' from backupset '/dmdata/dmbak/full1'; RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' from backupset '/dmdata/dmbak/full1'; RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
复制
-- 存在备份集full1,数据库运行过程中故障,利用备份集+归档恢复到故障前的状态。
RMAN> restore database '/dmdata/data/DAMENG/dm.ini' from backupset '/dmdata/dmbak/full1'; RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/dmdata/arch'; RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
复制
-- 增量合并,一般生产上都会周期执行完全备份或者增量备份,,来确保当数据库意外损坏时,可以通过指定完全备份集或增量备份集执行还原恢复操作,以修复丢失的数据。
RMAN> restore database '/dmdata/data/DAMENG/dm.ini' from backupset '/dmdata/dmbak/full1'; RMAN> MERGE DATABASE '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/db_increment_bak_02' RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/dmdata/arch'; RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
复制
-- 单表还原:有几个强制性条件必须符合,1是数据库开启可用状态,2是表必须存在,3是需要清空表数据
SQL>RESTORE TABLE TEST.t1 '/dmdata/data/DAMENG/dm.ini' FROM BACKUPSET '/dmdata/dmbak/t2';
复制
RMAN> RESTORE DATABASE '/dmdata/data/DAMENG/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/dmdata/dmbak/main_bak'; RMAN> RECOVER DATABASE '/dmdata/data/DAMENG/dm.ini' TABLESPACE MAIN;
复制
自动备份作业
call SP_INIT_JOB_SYS(1);
复制
call SP_CREATE_JOB('full_dele',1,0,'',0,0,'',0,'全备成功后,再删除过期备份文件'); call SP_JOB_CONFIG_START('full_dele'); call SP_ADD_JOB_STEP('full_dele', 'fullbak', 6, '00000000/dmdata/dmbak', 3, 1, 0, 0, NULL, 0); call SP_ADD_JOB_STEP('full_dele', 'delebak', 0, 'CALL SF_BAKSET_BACKUP_DIR_ADD(''DISK'',''/dmdata/dmbak''); CALL SP_DB_BAKSET_REMOVE_BATCH(''DISK'',sysdate-7);', 1, 1, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('full_dele', 'full_sche', 1, 2, 1, 1, 0, '02:00:00', NULL, '2022-11-24 22:00:00', NULL, ''); call SP_JOB_CONFIG_COMMIT('full_dele');
复制
call SP_CREATE_JOB('increbak',1,0,'',0,0,'',0,'增备失败后,全备一次'); call SP_JOB_CONFIG_START('increbak'); call SP_ADD_JOB_STEP('increbak', 'incre_bak', 6, '10000000/dmdata/dmbak|/dmdata/dmbak', 1, 3, 0, 0, NULL, 0); call SP_ADD_JOB_STEP('increbak', 'in_fullbak', 6, '00000000/dmdata/dmbak', 1, 1, 0, 0, NULL, 0); call SP_ADD_JOB_SCHEDULE('increbak', 'incr_sche', 1, 2, 1, 126, 0, '02:00:00', NULL, '2022-11-24 22:00:00', NULL, ''); call SP_JOB_CONFIG_COMMIT('increbak');
复制
逻辑备份
-- 整库导出 ./dexp SYSDBA/SYSDBA DIRECTORY=/dmdata/dmbak FILE=full.dmp FULL=Y LOG=full.log -- 用户级别导出 ./dexp SYSDBA/SYSDBA DIRECTORY=/dmdata/dmbak FILE=test.dmp OWNER=TEST LOG=test.log -- 模式级别导出 ./dexp SYSDBA/SYSDBA DIRECTORY=/dmdata/dmbak FILE=TEST.dmp SCHEMAS=TEST,TANG LOG=TT.log -- 表级别导出 ./dexp SYSDBA/SYSDBA DIRECTORY=/dmdata/dmbak FILE=tables.dmp TABLES=TEST.t1,TEST.t2,TEST.t3 LOG=tables.log
复制
逻辑还原
./dimp sysdba/SYSDBA file=TEST.dmp directory=/dmdata/dmbak log=imp_test.log remap_schema=TEST:TEST1
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。