冷备
./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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




