dataguard从库数据库丢失恢复例子(模拟丢失数据文件)
准备工作,使用如下脚本进行数据库的全备份
[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从库数据库丢失恢复例子(模拟丢失数据文件)的更多相关文章
- RMAN数据库恢复之恢复表空间和数据文件
执行表空间或数据文件恢复时,数据库既可以是MOUNT状态,也可以是OPEN状态.1.恢复表空间在执行恢复之前,如果被操作的表空间未处理OFFLINE状态,必须首先通过ALTER TABLESPACE… ...
- dataguard从库数据库丢失恢复例子(模拟所有的控制文件)
1.退出日志应用模式[oracle@localhost ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.4.0 Production on Mon Jan 14 ...
- oracle 12c 多租户 pdb 恢复(单个pdb数据文件、非系统pdb表空间、整个pdb数据库)
环境:数据库版本 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 实验准备:1.-- 数据库归 ...
- ORACLE模拟一个数据文件坏块并使用RMAN备份来恢复
1.创建一个实验用的表空间并在此表空间上创建表 create tablespace blocktest datafile '/u01/oradata/bys1/blocktest.dbf' size ...
- Linux环境下利用句柄恢复Oracle误删除的数据文件
在误删除Oracle的数据文件后,如果未关闭数据库,文件句柄还没有释放,且被删除的数据文件占用的磁盘块未被复写,则可以利用句柄的方式来恢复数据文件.下面模拟恢复过程. (一)环境 OS版本:redha ...
- [工作相关] GS产品使用LInux下Oracle数据库以及ASM存储时的数据文件路径写法.
1. 自从公司的GS5版本就已经支持Linux下的oracle数据库通过安装工具自动安装注册了, 只不过路径需要使用linux的命名规则, 如图: /home/oracle/ 注意 最后是有一个 斜线 ...
- vs2010开发环境恢复--(mysql,数据文件可直接拷贝,并可用navicat直接管理)
一.linq to mysql (DBLINQ) 1.安装mysql phpstudy2014,数据库文件可直接拷贝,在命令行中运行select version();查看版本为5.5.38 ,单独安装 ...
- dataguard从库删除归档的例子
deletearchlog.sh #!/bin/sh export PATH TABLE='v$archived_log' sqlplus -silent "/ as sysdba" ...
- GS70 使用 Linux 下面Oracle数据库时 设定 特定目录存储数据文件
1. 创建目录 mkdir /cwdata 2. 修改目录属性 chown -R oracle:oinstall /cwdata chmod -R /cwdata 效果为: 创建数据库实例时的界面为: ...
随机推荐
- C# 不安装Oracle客户端情况下,如何连接到Oracle数据库
简介: 在我们开发应用场景经常碰到需要连接Oracle数据库,这也是相当常见的一种情况.一般.Net环境连接Oracle数据库,可以通过TNS/SQL.NET 配置文件,而 TNS 必须要 Oracl ...
- Golang知识图谱
原:https://www.processon.com/view/link/5a9ba4c8e4b0a9d22eb3bdf0?from=timeline 百度脑图重制:http://naotu.bai ...
- 方程式ETERNALBLUE 之fb.py的复现
原文链接:https://www.t00ls.net/viewthread.php?tid=39343
- maven如何单独启动插件目标
说来恼火,在网上找了半天没找到 原来插件名称其实不需要定义而是直接想象到的,如下,我尝试过了好几种 mvn plugin:goal 都没成功:从代码看goal已经没啥疑问了,就是compile,但哪个 ...
- web项目访问地址前添加小图片
修改HTML 1.head标签添加 <link rel="icon" type="image/x-icon" href="images/icon ...
- 五、Java基础加强
Java基础加强 1.MyEclipse的使用工作空间(workspace).工程(project)在eclipse下Java程序的编写和运行,及java运行环境的配置.快捷键的配置,常用快捷键:内容 ...
- python全栈开发 * 01知识点汇总 * 180530
一 python简介. 1.创始人: 吉多 .范罗苏姆 \ (Guido van Rossum). 2.时间 : 1989年. 3.主要应用领域 : 云计算 \ WEB开发 \ ...
- Finalize方法的生成
Finalize在c#编程语言中需要特殊语法,因此,c#要求在类名前加~符号来定义Finalize方法:例如 internal class FinalizeDemo { ~FinalizeDemo() ...
- linux环境如何配置repo
(1)下载repo mkdir ~/bin curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo ...
- docker centos 老是退出
1. 使用docker 镜像可以加快拉去.操作系统的使用第二种格式. 您可以使用以下命令直接从该镜像加速地址进行拉取: $ docker pull registry.docker-cn.com/myn ...