当前位置:网站首页>RMAN增量恢复示例(1)-不带未备份的归档日志
RMAN增量恢复示例(1)-不带未备份的归档日志
2022-07-02 06:24:00 【贤时间】
场景演示,模拟周末晚上0级全备,周一到周六每天晚上1级备份,假如周三机器崩溃,需要尽可能恢复所有数据。
恢复思路:将周末的0级全备和周一到周二的增量备份及未备份的归档(如果能找到的话全都归拢到一个文件夹中),然后注册,然后进行恢复。rman会自动设别到文件中所有的备份然后自动进行恢复。
周末全备
–先0级全备,插入全备数据
--如下sql来模拟业务数据插入
DROP TABLE rman_validate;
CREATE TABLE rman_validate(ID NUMBER, event_desc VARCHAR2(200), insert_time DATE DEFAULT SYSDATE);
INSERT INTO rman_validate
(ID, event_desc, insert_time)
VALUES
(1, '周末数据库全备', SYSDATE);
ALTER system archive log CURRENT; --然后进行日志归档
SELECT * FROM rman_validate;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-53xm0a9Q-1641457513448)(https:/gitee.com/yangshixian/pic/raw/master/20220105215818.png#pic_center)]
执行0级备份
configure default device type to disk;
configure device type disk parallelism 5 BACKUP TYPE TO COMPRESSED BACKUPSET;
configure channel device type disk maxopenfiles 50 maxpiecesize 32G;
configure controlfile autobackup on;
configure backup optimization on ;
set controlfile autobackup format for device type disk to '/data/oracle/rman_data/db0/C0_%d_%F';
run
{
sql 'alter system archive log current';
backup incremental level 0 database tag='Sunday-L0-FULLBAK'
format '/data/oracle/rman_data/db0/DB0_%d_%T_S%s_P%p'
filesperset=50;
sql 'alter system archive log current';
backup format='/data/oracle/rman_data/db0/AL0_%d_%T_S%s_P%p'
archivelog all not backed up 1 times
skip inaccessible
delete all input;
}
周一到周五1级增量备份
周一 Monday
--进行周一 1级增量备份
INSERT INTO rman_validate
(ID, event_desc, insert_time)
VALUES
(2, '周一1级迭代增量备份', SYSDATE);
SELECT * FROM rman_validate;
进行1级备份
configure default device type to disk;
configure device type disk parallelism 5 BACKUP TYPE TO COMPRESSED BACKUPSET;
configure channel device type disk maxopenfiles 50 maxpiecesize 32G;
configure controlfile autobackup on;
configure backup optimization on ;
set controlfile autobackup format for device type disk to '/data/oracle/rman_data/db1/C1_%d_%F';
run
{
sql 'alter system archive log current';
backup incremental level 1 database tag='Monday-daily_db1'
format '/data/oracle/rman_data/db1/DB1_%d_%T_S%s_P%p'
filesperset=50;
sql 'alter system archive log current';
backup format='/data/oracle/rman_data/db1/AL1_%d_%T_S%s_P%p' tag='Monday-daily_log'
archivelog all not backed up 1 times
skip inaccessible
delete all input;
}
周二 Tuesday
--进行周二 1级增量备份
INSERT INTO rman_validate
(ID, event_desc, insert_time)
VALUES
(3, '周二1级迭代增量备份', SYSDATE);
commit;
SELECT * FROM rman_validate;
进行1级备份
configure default device type to disk;
configure device type disk parallelism 5 BACKUP TYPE TO COMPRESSED BACKUPSET;
configure channel device type disk maxopenfiles 50 maxpiecesize 32G;
configure controlfile autobackup on;
configure backup optimization on ;
set controlfile autobackup format for device type disk to '/data/oracle/rman_data/db1/C1_%d_%F';
run
{
sql 'alter system archive log current';
backup incremental level 1 database tag='Tuesday-daily_db1'
format '/data/oracle/rman_data/db1/DB1_%d_%T_S%s_P%p'
filesperset=50;
sql 'alter system archive log current';
backup format='/data/oracle/rman_data/db1/AL1_%d_%T_S%s_P%p' tag='Tuesday-daily_log'
archivelog all not backed up 1 times
skip inaccessible
delete all input;
}
查看备份
RMAN> list backup of database summary;
List of Backups
===============
Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
------- -- -- - ----------- --------------- ------- ------- ---------- ---
58 B 0 A DISK 05-JAN-22 1 1 YES L0_FULLBAK
59 B 0 A DISK 05-JAN-22 1 1 YES L0_FULLBAK
60 B 0 A DISK 05-JAN-22 1 1 YES L0_FULLBAK
61 B 0 A DISK 05-JAN-22 1 1 YES L0_FULLBAK
62 B 0 A DISK 05-JAN-22 1 1 YES L0_FULLBAK
63 B 0 A DISK 05-JAN-22 1 1 YES L0_FULLBAK
64 B 0 A DISK 05-JAN-22 1 1 YES L0_FULLBAK
65 B 0 A DISK 05-JAN-22 1 1 YES L0_FULLBAK
66 B 0 A DISK 05-JAN-22 1 1 YES L0_FULLBAK
67 B 0 A DISK 05-JAN-22 1 1 YES L0_FULLBAK
68 B 0 A DISK 05-JAN-22 1 1 YES L0_FULLBAK
69 B 0 A DISK 05-JAN-22 1 1 YES L0_FULLBAK
76 B 0 A DISK 05-JAN-22 1 1 YES SUNDAY-L0-FULLBAK
77 B 0 A DISK 05-JAN-22 1 1 YES SUNDAY-L0-FULLBAK
78 B 0 A DISK 05-JAN-22 1 1 YES SUNDAY-L0-FULLBAK
79 B 0 A DISK 05-JAN-22 1 1 YES SUNDAY-L0-FULLBAK
80 B 0 A DISK 05-JAN-22 1 1 YES SUNDAY-L0-FULLBAK
81 B 0 A DISK 05-JAN-22 1 1 YES SUNDAY-L0-FULLBAK
82 B 0 A DISK 05-JAN-22 1 1 YES SUNDAY-L0-FULLBAK
83 B 0 A DISK 05-JAN-22 1 1 YES SUNDAY-L0-FULLBAK
84 B 0 A DISK 05-JAN-22 1 1 YES SUNDAY-L0-FULLBAK
90 B 1 A DISK 05-JAN-22 1 1 YES MONDAY-DAILY_DB1
91 B 1 A DISK 05-JAN-22 1 1 YES MONDAY-DAILY_DB1
92 B 1 A DISK 05-JAN-22 1 1 YES MONDAY-DAILY_DB1
93 B 1 A DISK 05-JAN-22 1 1 YES MONDAY-DAILY_DB1
99 B 1 A DISK 05-JAN-22 1 1 YES TUESDAY-DAILY_DB1
100 B 1 A DISK 05-JAN-22 1 1 YES TUESDAY-DAILY_DB1
101 B 1 A DISK 05-JAN-22 1 1 YES TUESDAY-DAILY_DB1
102 B 1 A DISK 05-JAN-22 1 1 YES TUESDAY-DAILY_DB1
模拟机器崩溃
将数据库正常关闭
SQL> shutdown immediate
将数据库目录和改名后,进行启动
SQL> startup
ORACLE instance started.
Total System Global Area 2516582192 bytes
Fixed Size 9137968 bytes
Variable Size 805306368 bytes
Database Buffers 1694498816 bytes
Redo Buffers 7639040 bytes
ORA-00205: error in identifying control file, check alert log for more info
#不出意外果然报控制文件错误,此时进行恢复
进行完全恢复
重建一个原来文件夹名字和原来数据库使用的文件夹名字一样
SQL> startup nomount
--恢复控制文件
RESTORE CONTROLFILE FROM '/data/oracle/rman_data/rman_back_all/C1_ORCLCDB_c-2858197352-20220105-07'
--启动到mount
SQL> alter database mount;
--注册备份文件地址
catalog start with '/data/oracle/rman_data/rman_back_all/';
--如果还能将未备份的归档日志找到,那么可以把归档日志放到/data/oracle/rman_data/rman_back_all这个目录下,然后用catlog 注册下这个归档(或者放好之后直接执行一次catalog start with 也可以)
--进行恢复
restore database;
--报如下错误
Starting recover at 05-JAN-22
using channel ORA_DISK_1
using channel ORA_DISK_2
using channel ORA_DISK_3
using channel ORA_DISK_4
using channel ORA_DISK_5
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00007: /data/oracle/oradata/ORCLCDB/users01.dbf
channel ORA_DISK_1: reading from backup piece /data/oracle/rman_data/db1/DB1_ORCLCDB_20220105_S107_P1
channel ORA_DISK_2: starting incremental datafile backup set restore
channel ORA_DISK_2: specifying datafile(s) to restore from backup set
destination for restore of datafile 00004: /data/oracle/oradata/ORCLCDB/undotbs01.dbf
channel ORA_DISK_2: reading from backup piece /data/oracle/rman_data/db1/DB1_ORCLCDB_20220105_S106_P1
channel ORA_DISK_3: starting incremental datafile backup set restore
channel ORA_DISK_3: specifying datafile(s) to restore from backup set
destination for restore of datafile 00001: /data/oracle/oradata/ORCLCDB/system01.dbf
channel ORA_DISK_3: reading from backup piece /data/oracle/rman_data/db1/DB1_ORCLCDB_20220105_S105_P1
channel ORA_DISK_4: starting incremental datafile backup set restore
channel ORA_DISK_4: specifying datafile(s) to restore from backup set
destination for restore of datafile 00003: /data/oracle/oradata/ORCLCDB/sysaux01.dbf
channel ORA_DISK_4: reading from backup piece /data/oracle/rman_data/db1/DB1_ORCLCDB_20220105_S104_P1
channel ORA_DISK_1: piece handle=/data/oracle/rman_data/db1/DB1_ORCLCDB_20220105_S107_P1 tag=MONDAY-DAILY_DB1
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:00
channel ORA_DISK_1: starting incremental datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
destination for restore of datafile 00007: /data/oracle/oradata/ORCLCDB/users01.dbf
channel ORA_DISK_1: reading from backup piece /data/oracle/rman_data/db1/DB1_ORCLCDB_20220105_S116_P1
channel ORA_DISK_3: piece handle=/data/oracle/rman_data/db1/DB1_ORCLCDB_20220105_S105_P1 tag=MONDAY-DAILY_DB1
channel ORA_DISK_3: restored backup piece 1
channel ORA_DISK_3: restore complete, elapsed time: 00:00:00
channel ORA_DISK_3: starting incremental datafile backup set restore
channel ORA_DISK_3: specifying datafile(s) to restore from backup set
destination for restore of datafile 00001: /data/oracle/oradata/ORCLCDB/system01.dbf
channel ORA_DISK_3: reading from backup piece /data/oracle/rman_data/db1/DB1_ORCLCDB_20220105_S114_P1
channel ORA_DISK_2: piece handle=/data/oracle/rman_data/db1/DB1_ORCLCDB_20220105_S106_P1 tag=MONDAY-DAILY_DB1
channel ORA_DISK_2: restored backup piece 1
channel ORA_DISK_2: restore complete, elapsed time: 00:00:00
channel ORA_DISK_2: starting incremental datafile backup set restore
channel ORA_DISK_2: specifying datafile(s) to restore from backup set
destination for restore of datafile 00004: /data/oracle/oradata/ORCLCDB/undotbs01.dbf
channel ORA_DISK_2: reading from backup piece /data/oracle/rman_data/db1/DB1_ORCLCDB_20220105_S115_P1
channel ORA_DISK_4: piece handle=/data/oracle/rman_data/db1/DB1_ORCLCDB_20220105_S104_P1 tag=MONDAY-DAILY_DB1
channel ORA_DISK_4: restored backup piece 1
channel ORA_DISK_4: restore complete, elapsed time: 00:00:00
channel ORA_DISK_4: starting incremental datafile backup set restore
channel ORA_DISK_4: specifying datafile(s) to restore from backup set
destination for restore of datafile 00003: /data/oracle/oradata/ORCLCDB/sysaux01.dbf
channel ORA_DISK_4: reading from backup piece /data/oracle/rman_data/db1/DB1_ORCLCDB_20220105_S113_P1
channel ORA_DISK_1: piece handle=/data/oracle/rman_data/db1/DB1_ORCLCDB_20220105_S116_P1 tag=TUESDAY-DAILY_DB1
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:00
channel ORA_DISK_2: piece handle=/data/oracle/rman_data/db1/DB1_ORCLCDB_20220105_S115_P1 tag=TUESDAY-DAILY_DB1
channel ORA_DISK_2: restored backup piece 1
channel ORA_DISK_2: restore complete, elapsed time: 00:00:00
channel ORA_DISK_3: piece handle=/data/oracle/rman_data/db1/DB1_ORCLCDB_20220105_S114_P1 tag=TUESDAY-DAILY_DB1
channel ORA_DISK_3: restored backup piece 1
channel ORA_DISK_3: restore complete, elapsed time: 00:00:00
channel ORA_DISK_4: piece handle=/data/oracle/rman_data/db1/DB1_ORCLCDB_20220105_S113_P1 tag=TUESDAY-DAILY_DB1
channel ORA_DISK_4: restored backup piece 1
channel ORA_DISK_4: restore complete, elapsed time: 00:00:01
starting media recovery
channel ORA_DISK_1: starting archived log restore to default destination
channel ORA_DISK_1: restoring archived log
archived log thread=1 sequence=105
channel ORA_DISK_1: reading from backup piece /data/oracle/rman_data/db1/AL1_ORCLCDB_20220105_S119_P1
channel ORA_DISK_2: starting archived log restore to default destination
channel ORA_DISK_2: restoring archived log
archived log thread=1 sequence=106
channel ORA_DISK_2: reading from backup piece /data/oracle/rman_data/db1/AL1_ORCLCDB_20220105_S120_P1
channel ORA_DISK_1: piece handle=/data/oracle/rman_data/db1/AL1_ORCLCDB_20220105_S119_P1 tag=TUESDAY-DAILY_LOG
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
archived log file name=/data/oracle/fast_recovery_area/ORCLCDB/archivelog/2022_01_05/o1_mf_1_105_jxccj8nj_.arc thread=1 sequence=105
channel default: deleting archived log(s)
archived log file name=/data/oracle/fast_recovery_area/ORCLCDB/archivelog/2022_01_05/o1_mf_1_105_jxccj8nj_.arc RECID=50 STAMP=1093214472
channel ORA_DISK_2: piece handle=/data/oracle/rman_data/db1/AL1_ORCLCDB_20220105_S120_P1 tag=TUESDAY-DAILY_LOG
channel ORA_DISK_2: restored backup piece 1
channel ORA_DISK_2: restore complete, elapsed time: 00:00:01
archived log file name=/data/oracle/fast_recovery_area/ORCLCDB/archivelog/2022_01_05/o1_mf_1_106_jxccj8nm_.arc thread=1 sequence=106
channel default: deleting archived log(s)
archived log file name=/data/oracle/fast_recovery_area/ORCLCDB/archivelog/2022_01_05/o1_mf_1_106_jxccj8nm_.arc RECID=51 STAMP=1093214472
unable to find archived log
archived log thread=1 sequence=107
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 01/05/2022 22:41:14
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 107 and starting SCN of 8105365
RMAN>
解决错误:
RMAN> recover database until scn 8105365;
Starting recover at 06-JAN-22
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=135 device type=DISK
allocated channel: ORA_DISK_2
channel ORA_DISK_2: SID=14 device type=DISK
allocated channel: ORA_DISK_3
channel ORA_DISK_3: SID=132 device type=DISK
allocated channel: ORA_DISK_4
channel ORA_DISK_4: SID=9 device type=DISK
allocated channel: ORA_DISK_5
channel ORA_DISK_5: SID=133 device type=DISK
starting media recovery
media recovery complete, elapsed time: 00:00:00
Finished recover at 06-JAN-22
RMAN> alter database open resetlogs;
Statement processed
验证恢复效果
查询数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MEHPWSZx-1641457290476)(%21%5B%5D%28https:/gitee.com/yangshixian/pic/raw/master/20220106112928.png%29)]
参考资料和命令
### 删除所有rman备份
delete backupset; #删除所有备份
### 手动归档命令
alter system archive log current;
alter system switch logfile
区别:https://blog.csdn.net/fred_yang2013/article/details/45171283
### 删除归档命令
#删除已经备份归档
delete archivelog all completed before 'sysdate-7';
#不管是否备份都删除
delete archivelog until time 'sysdate-1' ;
#删掉所有归档不管是否备份
delete archivelog ALL;
#查看所有备份归档
list backup of archivelog all;
#查看所有归档日志
list archivelog all;
边栏推荐
- Recursion (maze problem, Queen 8 problem)
- Fe - eggjs combined with typeorm cannot connect to the database
- Go package name
- PIP install
- 部署api_automation_test过程中遇到的问题
- Cve-2015-1635 (ms15-034) Remote Code Execution Vulnerability recurrence
- PM2 simple use and daemon
- ts和js区别
- 图解Kubernetes中的etcd的访问
- [Zhang San learns C language] - deeply understand data storage
猜你喜欢
table 组件指定列合并行方法
Sqli - Labs Clearance (less6 - less14)
Stack (linear structure)
Sqli labs customs clearance summary-page2
Unexpected inconsistency caused by abnormal power failure; Run fsck manually problem resolved
js中map和forEach的用法
Build FRP for intranet penetration
AWD learning
如何调试微信内置浏览器应用(企业号、公众号、订阅号)
SQLI-LABS通关(less6-less14)
随机推荐
CTF three count
Solution to the black screen of win computer screenshot
js删除字符串的最后一位
Sqli-labs customs clearance (less18-less20)
Sqli labs customs clearance summary-page3
How to try catch statements that return promise objects in JS
Differences between ts and JS
A preliminary study on ant group G6
(the 100th blog) written at the end of the second year of doctor's degree -20200818
[leetcode question brushing day 35] 1060 Missing element in ordered array, 1901 Find the peak element, 1380 Lucky number in matrix
SQL injection closure judgment
IDEA2020中PySpark的两表关联(字段名相同)
Sentry construction and use
CVE-2015-1635(MS15-034 )远程代码执行漏洞复现
Usage of map and foreach in JS
Atcoder beginer contest 253 F - operations on a matrix / / tree array
Underlying mechanism mvcc
IDEA2020中测试PySpark的运行出错
解决微信小程序swiper组件bindchange事件抖动问题
CSRF攻击