Rman备份及不完全恢复操作
最后更新时间:2018/12/18
启用归档
--检查是否为归档
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 1423
Current log sequence 1425
No Archive Mode 表示非归档模式
开归档:
alter database archivelog;
关归档:
alter database noarchivelog;
★ 开启归档步骤
--关库
shutdown immediate;
startup mount;
--配置归档路径
alter system set log_archive_dest_1='location=/home/oracle/arch';
--开启归档
alter database archivelog;
-- 确认开启了归档
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /home/oracle/arch
Oldest online log sequence 1423
Next log sequence to archive 1425
Current log sequence 1425
Rman备份
前置条件
做全量备份时,rman也会生成控制文件快照,只是这个控制文件快照生于备份集产生,不包含最后一次的备份信息,因而不能用于最后一次备份集恢复,解决办法有两种:
1. 开启控制文件自动备份
RMAN> configure snapshot controlfile name to '/home/oracle/product/11gr2/db_1/dbs/snapcf_orcl.f';
RMAN> configure controlfile autobackup on;
2. 全量备份后再备份控制文件
一般建议在全量备份后,备份控制文件、SPFILE 到指定路径,以备需要时可以恢复。
Rman自动备份相关脚本
startrmans.sh
#!/bin/bash bak_dir=/home/oracle/rmans
# mkdir -p $bak_dir/{logs,data,init_files}
day=`date +%Y%m%d` tm=`date "+%Y%m%d %H:%M:%S"`
echo "$tm begin backup." echo "delete archive logs"
find /home/oracle/arch -name "*.dbf" -mtime +10 -exec rm -f {} \; rman target / nocatalog <<EOF >$bak_dir/logs/fullbak`date +%Y%m%d`.log
run{
allocate channel c1 device type disk; backup database
format "$bak_dir/data/fullback_%d_%T_%s"; backup current controlfile tag='bak_ctlfile' format="$bak_dir/init_files/ctl_file_%U_%T";
backup spfile tag='spfile' format='$bak_dir/init_files/ORCL_spfile_%U_%T'; release channel c1; } report obsolete;
delete noprompt obsolete; crosscheck backup;
delete noprompt expired backup;
list backup summary; exit;
EOF tm=`date "+%Y%m%d %H:%M:%S"`
echo "$tm end backup."
Rman备份恢复验证
在数据库运行过程,将数据文件、控制文件、redo文件移到别的目录,强行关掉数据库,再开数据库验证失败。
[oracle@localhost orcl]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Tue Dec 18 09:57:34 2018
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 3273641984 bytes
Fixed Size 2217792 bytes
Variable Size 2466252992 bytes
Database Buffers 788529152 bytes
Redo Buffers 16642048 bytes
ORA-00205: error in identifying control file, check alert log for more info
SQL> select open_mode from v$database;
select open_mode from v$database
*
ERROR at line 1:
ORA-01507: database not mounted
SQL> shutdown immediate;
ORA-01507: database not mounted
ORACLE instance shut down.
恢复操作
[oracle@localhost orcl]$ rman target /
Recovery Manager: Release 11.2.0.1.0 - Production on Tue Dec 18 10:15:25 2018
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database (not started)
RMAN> startup nomount;
Oracle instance started
Total System Global Area 3273641984 bytes
Fixed Size 2217792 bytes
Variable Size 2466252992 bytes
Database Buffers 788529152 bytes
Redo Buffers 16642048 bytes
RMAN> restore controlfile from '/home/oracle/rmans/init_files/ctl_file_11tl2p0u_1_1_20181218';
Starting restore at 18-DEC-18
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=958 device type=DISK
channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/home/oracle/oradata/orcl/control01.ctl
output file name=/home/oracle/flash_recovery_area/orcl/control02.ctl
Finished restore at 18-DEC-18
RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1
RMAN> restore database;
Starting restore at 18-DEC-18
Starting implicit crosscheck backup at 18-DEC-18
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=958 device type=DISK
Crosschecked 5 objects
Finished implicit crosscheck backup at 18-DEC-18
Starting implicit crosscheck copy at 18-DEC-18
using channel ORA_DISK_1
Finished implicit crosscheck copy at 18-DEC-18
searching for all files in the recovery area
cataloging files...
no files cataloged
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /home/oracle/oradata/orcl/system01.dbf
channel ORA_DISK_1: restoring datafile 00002 to /home/oracle/oradata/orcl/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00003 to /home/oracle/oradata/orcl/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00004 to /home/oracle/oradata/orcl/users01.dbf
…………….省略部分……….
channel ORA_DISK_1: piece handle=/home/oracle/rmans/data/fullback_ORCL_20181218_31 tag=TAG20181218T093553
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:02:15
Finished restore at 18-DEC-18
RMAN> recover database;
Starting recover at 18-DEC-18
using channel ORA_DISK_1
starting media recovery
unable to find archived log
archived log thread=1 sequence=1438
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 12/18/2018 10:32:34
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 1438 and starting SCN of 62636468
RMAN> alter database open resetlogs;
database opened
执行完不完全恢复完成。
周末测试后数据库恢复
先将数据库关闭,再直接用rman开启到 mount状态
RMAN> startup nomount;
Oracle instance started
Total System Global Area 3273641984 bytes
Fixed Size 2217792 bytes
Variable Size 2466252992 bytes
Database Buffers 788529152 bytes
Redo Buffers 16642048 bytes
RMAN> restore controlfile from '/home/oracle/rmans/init_files/ctl_file_11tl2p0u_1_1_20181218';
RMAN> alter database mount;
RMAN> list backup; #查看最新备份数据文件SCN 62636468
BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ---------------
22 Full 3.28G DISK 00:00:30 18-DEC-18
BP Key: 22 Status: AVAILABLE Compressed: NO Tag: TAG20181218T093553
Piece Name: /home/oracle/rmans/data/fullback_ORCL_20181218_31
List of Datafiles in backup set 22
File LV Type Ckp SCN Ckp Time Name
---- -- ---- ---------- --------- ----
1 Full 62636468 18-DEC-18 /home/oracle/oradata/orcl/system01.dbf
2 Full 62636468 18-DEC-18 /home/oracle/oradata/orcl/sysaux01.dbf
3 Full 62636468 18-DEC-18 /home/oracle/oradata/orcl/undotbs01.dbf
RMAN>run
{set until scn 62636468;
restore database;
recover database;
}
rman备份集清理
手工删除了备份集磁盘文件后,使用crosscheck backupset 检查会提示EXPIRED.需要使用 delete expired backupset; 删除对应记录。
RMAN> crosscheck backupset ;
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=776 device type=DISK
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/home/oracle/rmans/data/fullback_ORCL_20181217_2 RECID=1 STAMP=995105790
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/home/oracle/rmans/data/fullback_ORCL_20181217_3 RECID=2 STAMP=995107713
crosschecked backup piece: found to be 'EXPIRED'
backup piece handle=/home/oracle/rmans/data/fullback_ORCL_20181217_4 RECID=3 STAMP=995107750
Crosschecked 3 objects
RMAN> delete expired backupset;
using channel ORA_DISK_1
List of Backup Pieces
BP Key BS Key Pc# Cp# Status Device Type Piece Name
------- ------- --- --- ----------- ----------- ----------
1 1 1 1 EXPIRED DISK /home/oracle/rmans/data/fullback_ORCL_20181217_2
2 2 1 1 EXPIRED DISK /home/oracle/rmans/data/fullback_ORCL_20181217_3
3 3 1 1 EXPIRED DISK /home/oracle/rmans/data/fullback_ORCL_20181217_4
Do you really want to delete the above objects (enter YES or NO)? YES
deleted backup piece
backup piece handle=/home/oracle/rmans/data/fullback_ORCL_20181217_2 RECID=1 STAMP=995105790
deleted backup piece
backup piece handle=/home/oracle/rmans/data/fullback_ORCL_20181217_3 RECID=2 STAMP=995107713
deleted backup piece
backup piece handle=/home/oracle/rmans/data/fullback_ORCL_20181217_4 RECID=3 STAMP=995107750
Deleted 3 EXPIRED objects
常用命令
--查看所有配置
RMAN> show all;
--查看备份集
list backup summary
-- 列出不符合备份策略的备份记录
report obsolete
--查看备份策略
RMAN> show RETENTION POLICY;
RMAN configuration parameters for database with db_unique_name ORCL are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
EXPIRED和OBSOLETE的区别
EXPIRED状态的产生,与crosscheck命令是密切相关的,RMAN通过crosscheck命令检查备份是否存在于备份介质上,如果不存在,则状态由AVAILABLE改为EXPIRED。即一般是硬盘上被人工删除掉的文件会显示为EXPIRED。
而OBSOLETE是指该超过保留策略的备份,标记为obsolete。如已有一个全量备份,之前的备份被标识为obsolete。
recover database until cancel和 recover database区别
recover database until cancel用于不完全恢复,可以一步一步的跳也就是一个一个归档的应用,也可以AUTO全部应用,当然也可以在恢复完某个archivelog后cancel退出,但是他不会恢复current logfile如果需要恢复current logfile需要自己指定。
recover database 用于完全恢复,全部一起应用,包含current logfile,但是如果没有current logfile当然也会报错。
Rman备份及不完全恢复操作的更多相关文章
- Oracle RMAN 备份及不完全恢复(删除archievelog)
RMAN备份命令 backup Database format='/home/oracle/backup/bak_full_%U_%T' tag='bak_full'; sql 'alter syst ...
- Linux服务器下对Oracle作Rman备份
由于工作需要,最近要对几台Linux系统下的Oracle数据库进行Rman备份,就在操作的同时,整理了一下,方便今后作为资料进行查阅. ------------------------Linux服务器 ...
- Oracle RMAN备份恢复指导书
目 录 1 目的与范围... 1 2 术语和定义... 1 3 角色和职责... 2 4 使用RMAN备份数据库... 2 4.1.1 检查数据库模式... 2 4.1.2 连接到target数据库. ...
- RMAN 备份详解
一.数据库备份与RMAN备份的概念 1.数据库完全备份:按归档模式分为归档和非归档 归档模式 打开状态,属于非一致性备份 关闭状态,可以分为一致性和非一致性 非归档模式 打开状态,非一致 ...
- Oracle RMAN备份与还原
RMAN在数据库服务器的帮助下实现数据库文件.控制文件.数据库文件与控制文件的映像副本.归档日志文件.数据库服务器参数文件的备份. RMAN的特点: (1) 支持增量备份:传统的exp与expdp备份 ...
- ORACLE RMAN备份及还原(转)
RMAN可以进行增量备份:数据库,表空间,数据文件 只有使用过的block可以被备份成backup set 表空间与数据文件对应关系:dba_data_files / v$datafile_heade ...
- RMAN备份(转)
原文:http://blog.csdn.net/leshami/article/details/6032739 一.数据库备份与RMAN备份的概念 1.数据库完全备份:按归档模式分为归档和非归档 归档 ...
- Oracle之RMAN备份及还原
RMAN可以进行增量备份:数据库,表空间,数据文件 只有使用过的block可以被备份成backup set 表空间与数据文件对应关系:dba_data_files / v$datafile_heade ...
- rman 备份并异机恢复
1.RMAN 备份脚本 RUN { CONFIGURE RETENTION POLICY DAYS; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CO ...
随机推荐
- 使用JS方法使页面滚动到指定元素+优化+API介绍(动画)
前言 当页面最上部有顶部菜单是,使用锚点跳转的方法很容易挡住想要呈现的内容(如下图技能两个字被挡住了一半),为避免出现这样的问题,故滚动到指定元素使用用JS的方法来实现. 目录 使用的API简介 初版 ...
- HDU 2122 Ice_cream’s world III【最小生成树】
解题思路:基础的最小生成树反思:不明白为什么i从1开始取,就一直WA,难道是因为村庄的编号是从0开始的吗 Ice_cream’s world III Time Limit: 3000/1000 MS ...
- shell基础编程
首先要注意的是,Ubuntu里的shell的sh和bash命令是有区别的 如下所示,Ubuntu下的sh指向的dash程序,而bash是dash的增强版,一些bash上能执行的程序在dash上不行 如 ...
- nodejs 封装mysql连接池
写在前面的 在nodejs后台代码中,我们总是会和数据库打交道 然而,每次都要写数据库的配置以及连接和断开,不胜其烦 我就封装了一个连接池模块,不足之处还请多多批评 上代码 一下是写在mysqls.j ...
- NOIp模拟赛二十八
(这是NOIp模拟赛?应该是NOI模拟赛不小心加了个p) 嗯,假装这是正经的NOIp模拟赛,从今天开始也写写题解吧(这几天被虐的惨惨) 今日情况:8+50+0=58 A题输出样例,B题正解写挂,C题不 ...
- 基础命令:chown
chown:改变文件或目录的用户和用户组 [语法格式] chown [option] [OWNER][:[GROUP]] [file] chown [选项] [用户 : 用户组 ] [<文 ...
- docker-ce-17.03.2 离线安装RPM包
[root@docker05 docker]# ll total 20796 -rw-r--r-- 1 root root 75032 Mar 26 23:52 audit-libs-pytho ...
- Java统计一篇文章中每个字符出现的个数
大家可以参考下面代码,有什么疑问请留言... import java.io.BufferedReader; import java.io.FileInputStream; import java.io ...
- codevs1281 矩阵乘法 快速幂 !!!手写乘法取模!!! 练习struct的构造函数和成员函数
对于这道题目以及我的快速幂以及我的一节半晚自习我表示无力吐槽,, 首先矩阵乘法和快速幂没必要太多说吧,,嗯没必要,,我相信没必要,,实在做不出来写两个矩阵手推一下也就能理解矩阵的顺序了,要格外注意一些 ...
- 微软100题第51题:和为n连续正数序列
题目:输入一个正数n,输出全部和为n连续正数序列.比如输入15,因为1+2+3+4+5=4+5+6=7+8=15,所以输出3个连续序列1-5.4-6和7-8. 方法一:记录序列长度.推断首项是否满足条 ...