oracle database recover database (下篇)
1. recover database
恢复级别一共三个:recover database > recover tablespace > recover datafile ,最高级别 database 已经包含了 tablespace 和 datafile 两个级别。
目录
1. 概念解释
2. 情况说明
3. 实验过程
3.1 备份 CDB
3.2 PDBPROD1 创建测试数据
3.3 删除 CDB 控制文件
3.4 还原 CDB 控制文件
3.5 恢复 CDB 控制文件
3.6 开启 CDB
1. 概念解释
首先你得知道,recover database 这个命令是用作对所有数据文件进行恢复的,而且是完全恢复。
有个细节注意下,这个命令分为两种,一种用在 SQL 命令行,一种用在 RMAN:
SQL > recover database 仅对所有数据文件进行完全恢复,前提是控制文件为当前最新状态,不可以是还原过来的老版本或是手工重建,否则 SQL 命令行执行将返回错误。
RMAN > recover database 对所有数据文件和控制文件进行完全恢复
本例中演示对控制文件的恢复将(数据文件、归档日志、联机日志完好无损的情况下)
2. 情况说明
当前系统中,数据文件、归档日志、联机日志都完好无损,删除 CDB 级别所有控制文件,并采用 RMAN 对控制文件进行单独还原,使用 recover database 进行完全恢复。
3. 实验过程
3.1 备份 CDB
略,参考上篇
3.2 PDBPROD1 创建测试数据
查看 PDBPROD1 当前表空间及对应数据文件
[oracle@host01 trace]$ rman target sys/oracle@pdbprod1 Recovery Manager: Release 12.1.0.2.0 - Production on Fri Dec 1 14:37:15 2023 Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved. connected to target database: PRODCDB (DBID=2891862819) RMAN> report schema; using target database control file instead of recovery catalog
Report of database schema for database with db_unique_name PRODCDB List of Permanent Datafiles
===========================
File Size(MB) Tablespace RB segs Datafile Name
---- -------- -------------------- ------- ------------------------
7 280 SYSTEM NO /u01/app/oracle/oradata/PRODCDB/PDBPROD1/system01.dbf
8 615 SYSAUX NO /u01/app/oracle/oradata/PRODCDB/PDBPROD1/sysaux01.dbf
9 5 USERS NO /u01/app/oracle/oradata/PRODCDB/PDBPROD1/PDBPROD1_users01.dbf
13 321 EXAMPLE NO /u01/app/oracle/oradata/PRODCDB/PDBPROD1/example01.dbf
14 1 GAO NO /u01/app/oracle/oradata/PRODCDB/PDBPROD1/gao.dbf
List of Temporary Files
=======================
File Size(MB) Tablespace Maxsize(MB) Tempfile Name
---- -------- -------------------- ----------- --------------------
3 20 TEMP 32767 /u01/app/oracle/oradata/PRODCDB/PDBPROD1/temp01.dbf RMAN>
创建新的表空间recover_rman
SYS@pdbprod1> create tablespace recover_rman datafile '/u01/app/oracle/oradata/PRODCDB/PDBPROD1/recover_rman.dbf' size 1m; Tablespace created.
注意:新的表空间结构,没有在备份的数据文件和控制文件里面。
3.3 删除 CDB 控制文件
[oracle@host01 PRODCDB]$ cdb
[oracle@host01 PRODCDB]$ sql SQL*Plus: Release 12.1.0.2.0 Production on Fri Dec 1 16:53:33 2023 Copyright (c) 1982, 2014, Oracle. All rights reserved. Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Advanced Analytics
and Real Application Testing options SYS@PRODCDB> select name from v$controlfile; NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PRODCDB/control01.ctl
/u01/app/oracle/fast_recovery_area/PRODCDB/control02.ctl SYS@PRODCDB> !rm -rf /u01/app/oracle/oradata/PRODCDB/control01.ctl SYS@PRODCDB> !rm -rf /u01/app/oracle/fast_recovery_area/PRODCDB/control02.ctl SYS@PRODCDB>
重启 CDB ,报错
SYS@PRODCDB> shut immediate;
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/u01/app/oracle/oradata/PRODCDB/control01.ctl'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
SYS@PRODCDB> shut abort;
ORACLE instance shut down.
SYS@PRODCDB>
SYS@PRODCDB> startup force;
ORACLE instance started. Total System Global Area 838860800 bytes
Fixed Size 2929936 bytes
Variable Size 570428144 bytes
Database Buffers 260046848 bytes
Redo Buffers 5455872 bytes
ORA-00205: error in identifying control file, check alert log for more info
3.4 还原 CDB 控制文件
[oracle@host01 PRODCDB]$ rman target / Recovery Manager: Release 12.1.0.2.0 - Production on Fri Dec 1 16:58:36 2023 Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved. connected to target database: PRODCDB (not mounted) RMAN> restore controlfile from tag='full_backup'; Starting restore at 01-DEC-23
using channel ORA_DISK_1 RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 12/01/2023 17:00:55
RMAN-06563: control file or SPFILE must be restored using FROM AUTOBACKUP RMAN> restore controlfile from '/u01/app/oracle/fast_recovery_area/PRODCDB/autobackup/2023_12_01/o1_mf_s_1154433616_lplpljkm_.bkp'; Starting restore at 01-DEC-23
using channel ORA_DISK_1 channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/u01/app/oracle/oradata/PRODCDB/control01.ctl
output file name=/u01/app/oracle/fast_recovery_area/PRODCDB/control02.ctl
Finished restore at 01-DEC-23 RMAN> alter database mount; Statement processed
released channel: ORA_DISK_1 RMAN>
这时查控制文件中记录的数据文件(v$datafile 动态性能视图数据来自控制文件)
SYS@PRODCDB> set pagesize 50;
SYS@PRODCDB> select name from v$datafile; NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PRODCDB/system01.dbf
/u01/app/oracle/oradata/PRODCDB/pdbseed/system01.dbf
/u01/app/oracle/oradata/PRODCDB/sysaux01.dbf
/u01/app/oracle/oradata/PRODCDB/pdbseed/sysaux01.dbf
/u01/app/oracle/oradata/PRODCDB/undotbs01.dbf
/u01/app/oracle/oradata/PRODCDB/users01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD1/system01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD1/sysaux01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD1/PDBPROD1_users01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD2/system01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD2/sysaux01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD2/PDBPROD2_users01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD1/example01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD1/gao.dbf 14 rows selected.
恢复出来的控制文件中,是没有记录表空间 recover_rman
3.5 恢复 CDB 控制文件
使用 recover database 恢复数据库
RMAN> recover database; Starting recover at 01-DEC-23
Starting implicit crosscheck backup at 01-DEC-23
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=12 device type=DISK
Crosschecked 4 objects
Finished implicit crosscheck backup at 01-DEC-23 Starting implicit crosscheck copy at 01-DEC-23
using channel ORA_DISK_1
Finished implicit crosscheck copy at 01-DEC-23 searching for all files in the recovery area
cataloging files...
cataloging done List of Cataloged Files
=======================
File Name: /u01/app/oracle/fast_recovery_area/PRODCDB/archivelog/2023_12_01/o1_mf_1_162_lplt479s_.arc
File Name: /u01/app/oracle/fast_recovery_area/PRODCDB/autobackup/2023_12_01/o1_mf_s_1154433616_lplpljkm_.bkp using channel ORA_DISK_1 starting media recovery archived log for thread 1 with sequence 162 is already on disk as file /u01/app/oracle/fast_recovery_area/PRODCDB/archivelog/2023_12_01/o1_mf_1_162_lplt479s_.arc
archived log for thread 1 with sequence 163 is already on disk as file /u01/app/oracle/oradata/PRODCDB/redo01.log
archived log file name=/u01/app/oracle/fast_recovery_area/PRODCDB/archivelog/2023_12_01/o1_mf_1_162_lplt479s_.arc thread=1 sequence=162
archived log file name=/u01/app/oracle/oradata/PRODCDB/redo01.log thread=1 sequence=163
creating datafile file number=15 name=/u01/app/oracle/oradata/PRODCDB/PDBPROD1/recover_rman.dbf
archived log file name=/u01/app/oracle/oradata/PRODCDB/redo01.log thread=1 sequence=163
media recovery complete, elapsed time: 00:00:01
Finished recover at 01-DEC-23 RMAN>
请注意倒数第6 行:creating datafile file number=14 name=/u01/app/oracle/oradata/PRODCDB/PDBPROD1/recover_rman01.dbf
完全恢复命令自动在控制文件中创建添加了 recover_rman 数据文件
再次查控制文件中记录的数据文件
SYS@PRODCDB> select name from v$datafile; NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/PRODCDB/system01.dbf
/u01/app/oracle/oradata/PRODCDB/pdbseed/system01.dbf
/u01/app/oracle/oradata/PRODCDB/sysaux01.dbf
/u01/app/oracle/oradata/PRODCDB/pdbseed/sysaux01.dbf
/u01/app/oracle/oradata/PRODCDB/undotbs01.dbf
/u01/app/oracle/oradata/PRODCDB/users01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD1/system01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD1/sysaux01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD1/PDBPROD1_users01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD2/system01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD2/sysaux01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD2/PDBPROD2_users01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD1/example01.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD1/gao.dbf
/u01/app/oracle/oradata/PRODCDB/PDBPROD1/recover_rman.dbf 15 rows selected.
3.6 开启 CDB
因为动了“控制文件”,所以,必须得以 resetlogs 方式打开,为啥?
SYS@PRODCDB> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open SYS@PRODCDB> alter database open resetlogs;
Database altered.
你的疑问在于:recover database 语句明明是个完全恢复的动作,为何成功之后,依然需要 resetlogs ?因为 recover database 命令只能修复控制文件中数据文件的物理结构信息,无法修改控制文件中的日志序列号,无法像数据文件一样,应用归档和联机日志前滚,所以控制文件中的序列号依然是老旧的,因此,只能通过重置序列号来打开数据库。
以 resetlogs 打开之后,日志组序列号重置为 1,新的版本化身 incarnation 出现
RMAN> list incarnation; List of Database Incarnations
DB Key Inc Key DB Name DB ID STATUS Reset SCN Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1 1 PRODCDB 2891862819 PARENT 1 22-OCT-15
2 2 PRODCDB 2891862819 CURRENT 2302159 01-DEC-23
incarnation是什么,请参考官方文档。
oracle database recover database (下篇)的更多相关文章
- oracle备份恢复之recover database的四条语句区别
1 recover database using backup controlfile2 recover database until cancel3 recover database usin ...
- oracle 备份恢复之recover database的四条语句区别
1 recover database using backup controlfile2 recover database until cancel3 recover database usin ...
- [转帖]oracle备份恢复之recover database的四条语句区别
oracle备份恢复之recover database的四条语句区别 https://www.cnblogs.com/andy6/p/5925433.html 需要学习一下. 1 recover d ...
- Oracle DG故障诊断一则:alter database recover to logical standby new_logical_dbname卡住
我们在基于物理standby的基础上搭建逻辑备库过程过程中,在运行: alter database recover to logical standby READDB; 卡住不动,而且alert也没有 ...
- 一看就会一做就废系列:说说 RECOVER DATABASE(上)
这里是:一看就会,一做就废系列 数据库演示版本为 19.3 (12.2.0.3) 该系列涉及恢复过程中使用的 个语句: 1. recover database 2. recover database ...
- ORA-279 signalled during: alter database recover logfile
在RMAN的RECOVER还原过程中,RMAN界面正常,但是检查.刷新告警日志,发现告警日志里面有ORA-279,如下所示: alter database recover logfile '/u06/ ...
- Recover database using backup controlfile until cancel
http://searchoracle.techtarget.com/answer/Recover-database-using-backup-controlfile-until-cancel Wha ...
- recover database noredo时报错ORA-19573
环境: RHEL6.4 + Oracle 11.2.0.4 Primary RAC + Standby RAC 今天发现DG备库归档空间满,清理后发现备库出现GAP,需要从主库做基于SCN的增量备份进 ...
- 冷备手工完全恢复(recover database,recover tablespace,recover datafile)
冷备手工完全恢复 1. 手工完全恢复三种级别: recover database: 所有或大部分datafile丢失,一般是在mount状态完成.recover tablespace: 非关 ...
- 一看就会一做就废系列:说说 RECOVER DATABASE(下)
这里是:一看就会,一做就废系列 数据库演示版本为 19.3 (12.2.0.3) 该系列涉及恢复过程中使用的 个语句: 1. recover database 2. recover database ...
随机推荐
- 【Azure Developer】Go语言调用Azure SDK如何登录到中国区Azure环境
问题描述 在 "使用 Azure SDK for Go 进行 Azure 身份验证" 文章中的 Go 示例代码进行登录Azure时,默认指向的是Globa Azure.当只修改AA ...
- 从全球顶级数据库大会 SIGMOD 看数据库发展趋势
本文来自 NebulaGraph 的软件工程师文豪在美国费城参加 2022 年 SIGMOD 大会时的见闻.SIGMOD 是数据库领域的顶级会议之一,是 CCF 数据库 / 数据挖掘 / 内容检索领域 ...
- Kotlin扩展函数与属性原理解析
一.扩展函数 扩展函数可以方便地给现有类增加属性和方法而不改动类地代码. 二.原理 fun String.addTo(s: String): String{ return this + s } 反编译 ...
- STL-RBT_map,set模拟实现
set #include"26RBT_container.h" namespace test { //set通过普通迭代器使用const迭代器实现限制key不能被修改 templa ...
- 使用 Docker 部署 Answer 问答平台
1)介绍 GitHub:https://github.com/apache/incubator-answer Answer 问答社区是在线平台,让用户提出问题并获得回答.用户可以发布问题并得到其他用户 ...
- Xmind 括号图 风格不错,挺好看的
Xmind 括号图 风格不错,挺好看的 之前没注意到呢~ 又搞了个竖屏的,竖屏的关键点是 先隐藏第一层包括线,然后线就全部隐藏了,然后再选择要显示线的那部分,让线显示就ok了.
- 巧用Maya轴心操作小技巧,工作事半功倍!
Maya 是一款专业的三维软件,可以用于创建规模宏大的世界.复杂的角色和炫酷的特效.Maya的用户遍布动画行业.影视特效.广告和片头.平面设计行业,用户数量十分庞大.本文分享了maya轴心操作的小技巧 ...
- GPT-SoVITS教程,接入酒馆AI,SillyTavern-1.11.5,让AI女友声若幽兰
本次分享一下如何将GPT-SoVITS接入SillyTavern-1.11.5项目,让让AI女友声若幽兰,首先明确一下,SillyTavern-1.11.5只是一个前端项目,它没有任何大模型文本生成能 ...
- table边框改为细线
默认的TABLE边线设置即使是1px 是很粗的,会使用其他一些方法来制作出细线边框. 利用CSS来实现细线的方法,很有效,而且兼容所有浏览器. 细线表格如果单纯设置边框,很难保证浏览器兼容.常见的做法 ...
- Mac M芯片使用PD安装centos7无页面安装
1.选择Centos镜像 点击继续 设置虚拟机名称: 点击创建 : 选择第一个回车开始下载系统,下载完成进入设置页面,首先输入 1 设置语言: 进入语言设置,选择77普通话: 选择c继续,又回到系统配 ...