准备工作,使用如下脚本进行数据库的全备份
[oracle@localhost ~]$ more rman_backup.sh
#!/bin/sh

RMAN_OUTPUT_LOG=/home/oracle/rman_output.log
RMAN_ERROR_LOG=/home/oracle/rman_error.log
rman target / log=/home/oracle/rman_output.log<<EOF
run
{
allocate channel ch1 device type disk;
backup full database format '/home/oracle/rman_bakckup/db_fullbackup_%d_%s_%p_%T';
backup current controlfile format '/home/oracle/rman_bakckup/ctl_%d_%s_%p_%T';
backup archivelog all format '/home/oracle/rman_bakckup/arch_%d_%s_%p_%T';
backup spfile format '/home/oracle/rman_bakckup/spfile_%d_%s_%p_%T';
release channel ch1;
}
EOF

1.退出日志应用模式
[oracle@localhost ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.4.0 Production on Mon Jan 14 14:31:26 2019

Copyright (c) 1982, 2013, Oracle. All rights reserved.

SQL> connect / as sysdba
Connected.
SQL> alter database recover managed standby database cancel;

Database altered.

2.停掉数据库
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

3.模拟删除掉users01.dbf数据文件
[oracle@localhost slnngkdg]$cd /u01/app/oracle/oradata/slnngkdg
[oracle@localhost slnngkdg]$ mv users01.dbf bak_users01.dbf

4.启动数据库
SQL> startup
ORACLE instance started.

Total System Global Area 3724607488 bytes
Fixed Size 2258760 bytes
Variable Size 788531384 bytes
Database Buffers 2919235584 bytes
Redo Buffers 14581760 bytes
Database mounted.
ORA-10458: standby database requires recovery
ORA-01157: cannot identify/lock data file 4 - see DBWR trace file
ORA-01110: data file 4: '/u01/app/oracle/oradata/slnngkdg/users01.dbf'

提示数据文件找不到

5.完成恢复数据库
步骤4的已经启动数据库到mount状态,可以直接做恢复
run{
restore database;
recover database;
}

RMAN> run{
2> restore database;
3> recover database;
4> }

Starting restore at 14-JAN-19
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=15 device type=DISK

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 /u01/app/oracle/oradata/slnngkdg/system01.dbf
channel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/slnngkdg/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/slnngkdg/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/slnngkdg/users01.dbf
channel ORA_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/slnngkdg/tps_data01.dbf
channel ORA_DISK_1: restoring datafile 00006 to /u01/app/oracle/oradata/slnngkdg/mrkt.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/rman_bakckup/db_fullbackup_SLNNGK_26_1_20190114
channel ORA_DISK_1: piece handle=/home/oracle/rman_bakckup/db_fullbackup_SLNNGK_26_1_20190114 tag=TAG20190114T140841
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:04:55
Finished restore at 14-JAN-19

Starting recover at 14-JAN-19
using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 281 is already on disk as file /u01/app/oracle/archlog/1_281_994182077.dbf
archived log for thread 1 with sequence 282 is already on disk as file /u01/app/oracle/archlog/1_282_994182077.dbf
archived log file name=/u01/app/oracle/archlog/1_281_994182077.dbf thread=1 sequence=281
archived log file name=/u01/app/oracle/archlog/1_282_994182077.dbf thread=1 sequence=282
unable to find archived log
archived log thread=1 sequence=283
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 01/14/2019 15:12:39
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 283 and starting SCN of 5975154

原以为在主库做alter system switch logfile把283的归档日志同步到从库即可解决问题,但是还是不行,283的同步过去了,又要找284的
archived log thread=1 sequence=284
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 01/14/2019 15:25:39
RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 284 and starting SCN of 5976687

6.只能做不完全恢复(注意::until不包括这个点,如until sequence 284,则不包括sequence 284)
run{
set until sequence 284;
restore database;
recover database;
}

RMAN> run{
2> set until sequence 284;
restore database;
recover database;
3> 4> 5> }

executing command: SET until clause

Starting restore at 14-JAN-19
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 /u01/app/oracle/oradata/slnngkdg/system01.dbf
channel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/slnngkdg/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/slnngkdg/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/slnngkdg/users01.dbf
channel ORA_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/slnngkdg/tps_data01.dbf
channel ORA_DISK_1: restoring datafile 00006 to /u01/app/oracle/oradata/slnngkdg/mrkt.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/rman_bakckup/db_fullbackup_SLNNGK_26_1_20190114
channel ORA_DISK_1: piece handle=/home/oracle/rman_bakckup/db_fullbackup_SLNNGK_26_1_20190114 tag=TAG20190114T140841
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:02:15
Finished restore at 14-JAN-19

Starting recover at 14-JAN-19
using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 281 is already on disk as file /u01/app/oracle/archlog/1_281_994182077.dbf
archived log for thread 1 with sequence 282 is already on disk as file /u01/app/oracle/archlog/1_282_994182077.dbf
archived log for thread 1 with sequence 283 is already on disk as file /u01/app/oracle/archlog/1_283_994182077.dbf
archived log file name=/u01/app/oracle/archlog/1_281_994182077.dbf thread=1 sequence=281
archived log file name=/u01/app/oracle/archlog/1_282_994182077.dbf thread=1 sequence=282
archived log file name=/u01/app/oracle/archlog/1_283_994182077.dbf thread=1 sequence=283
media recovery complete, elapsed time: 00:00:18
Finished recover at 14-JAN-19

7.打开数据库
SQL> alter database open;

Database altered.

从库必须是以open的方式打开,不能使用resetlogs选项

RMAN> alter database open resetlogs;

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of alter db command at 01/14/2019 16:56:15
ORA-01666: control file is for a standby database

8.应用主库日志
alter database recover managed standby database using current logfile disconnect from session;

dataguard从库数据库丢失恢复例子(模拟丢失数据文件)的更多相关文章

  1. RMAN数据库恢复之恢复表空间和数据文件

    执行表空间或数据文件恢复时,数据库既可以是MOUNT状态,也可以是OPEN状态.1.恢复表空间在执行恢复之前,如果被操作的表空间未处理OFFLINE状态,必须首先通过ALTER TABLESPACE… ...

  2. dataguard从库数据库丢失恢复例子(模拟所有的控制文件)

    1.退出日志应用模式[oracle@localhost ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.4.0 Production on Mon Jan 14 ...

  3. oracle 12c 多租户 pdb 恢复(单个pdb数据文件、非系统pdb表空间、整个pdb数据库)

    环境:数据库版本 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 实验准备:1.-- 数据库归 ...

  4. ORACLE模拟一个数据文件坏块并使用RMAN备份来恢复

    1.创建一个实验用的表空间并在此表空间上创建表 create tablespace blocktest datafile '/u01/oradata/bys1/blocktest.dbf' size ...

  5. Linux环境下利用句柄恢复Oracle误删除的数据文件

    在误删除Oracle的数据文件后,如果未关闭数据库,文件句柄还没有释放,且被删除的数据文件占用的磁盘块未被复写,则可以利用句柄的方式来恢复数据文件.下面模拟恢复过程. (一)环境 OS版本:redha ...

  6. [工作相关] GS产品使用LInux下Oracle数据库以及ASM存储时的数据文件路径写法.

    1. 自从公司的GS5版本就已经支持Linux下的oracle数据库通过安装工具自动安装注册了, 只不过路径需要使用linux的命名规则, 如图: /home/oracle/ 注意 最后是有一个 斜线 ...

  7. vs2010开发环境恢复--(mysql,数据文件可直接拷贝,并可用navicat直接管理)

    一.linq to mysql (DBLINQ) 1.安装mysql phpstudy2014,数据库文件可直接拷贝,在命令行中运行select version();查看版本为5.5.38 ,单独安装 ...

  8. dataguard从库删除归档的例子

    deletearchlog.sh #!/bin/sh export PATH TABLE='v$archived_log' sqlplus -silent "/ as sysdba" ...

  9. GS70 使用 Linux 下面Oracle数据库时 设定 特定目录存储数据文件

    1. 创建目录 mkdir /cwdata 2. 修改目录属性 chown -R oracle:oinstall /cwdata chmod -R /cwdata 效果为: 创建数据库实例时的界面为: ...

随机推荐

  1. css背景图撑开盒子高度

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. <?php if($value['udertype'] == 0) {?> <td>超级管理员</td> <?php } else if ($value['udertype'] == 1)

    <?php if($value['udertype'] == 0) {?> <td>超级管理员</td> <?php } else if ($value['u ...

  3. 队列模拟基本操作I

    看到这道题,第一个想法就是“搜索”!“回溯”!的确,这种思路是很正确的,BFS和DFS都可以来解决: #include <cstdlib> #include <cstring> ...

  4. SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)【申明:来源于网络】

    SSM框架--详细整合教程(Spring+SpringMVC+MyBatis)[申明:来源于网络] 地址:http://blog.csdn.net/u014662268/article/details ...

  5. spring 开始构造

    1,选择“org.apache.maven.archetypes:maven-archetype-webapp”骨架(模板),创建一个Web项目: 在main 目录下创建文件夹  java,  res ...

  6. Web开发——JavaScript基础(JSON教程)

    参考: JSON:JavaScript 对象表示法(JavaScript Object Notation). JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML 更小.更快,更 ...

  7. rebuild online时意外中断 再次重建时报错解决方法

    rebuild online时意外中断 再次重建时报错 SQL> alter index PARTY.IDX_CM_INDIV_CUSTOMER_4 rebuild online; alter ...

  8. py三个面试小问题

    1.是否遇到过Python的模块间循环引用的问题,如何避免它? 这是代码结构设计的问题,模块依赖和类依赖,如果老是觉得碰到循环引用可能的原因有几点: a.可能是模块的分界线划错地方了 b.可能是把应该 ...

  9. Cartographer源码阅读(5):PoseGraph位姿图

    PoseGraph位姿图 mapping2D::PoseGraph类的注释: // Implements the loop closure method called Sparse Pose Adju ...

  10. pandas处理时间序列(1):pd.Timestamp()、pd.Timedelta()、pd.datetime( )、 pd.Period()、pd.to_timestamp()、datetime.strftime()、pd.to_datetime( )、pd.to_period()

      Pandas库是处理时间序列的利器,pandas有着强大的日期数据处理功能,可以按日期筛选数据.按日期显示数据.按日期统计数据.   pandas的实际类型主要分为: timestamp(时间戳) ...