理解 using backup controlfile

2023-10-10 21:48

本文主要是介绍理解 using backup controlfile,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        using backup controlfile 通常用于恢复由于当前控制文件丢失且原来备份的控制文件较当前发生变化的情形之下。using backup controlfile
的 recover 方式一旦使用之后,常用的recover database命令将不可再使用,且必须要使用resetlogs方式来打开数据库,下面是具体的演示描述。

 

一、演示 using backup controlfile 时的相关变化

-->查看数据库SYBO2SZ控制文件的时间信息
sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/controlf/
total 29M
-rw-r----- 1 oracle oinstall 9.7M 2012-09-10 11:59 cntl3SYBO2SZ.ctl
-rw-r----- 1 oracle oinstall 9.7M 2012-09-10 11:59 cntl2SYBO2SZ.ctl
-rw-r----- 1 oracle oinstall 9.7M 2012-09-10 11:59 cntl1SYBO2SZ.ctl
-->查看系统时间
sys@SYBO2SZ> ho date
Mon Sep 10 12:00:09 CST 2012
-->查看数据库SYBO2SZ的状态,此时数据库处于关闭状态
sys@SYBO2SZ> ho ps -ef | grep pmon_SYBO2SZ
oracle     440 32067  0 12:01 pts/4    00:00:00 /bin/bash -c ps -ef | grep pmon_SYBO2SZ
oracle     442   440  0 12:01 pts/4    00:00:00 grep pmon_SYBO2SZ
sys@SYBO2SZ> startup mount;
ORACLE instance started.
Total System Global Area  599785472 bytes
Fixed Size                  2074568 bytes
Variable Size             381683768 bytes
Database Buffers          209715200 bytes
Redo Buffers                6311936 bytes
Database mounted.
-->当mount数据库后,控制文件的状态及时间信息被更新
sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/controlf/
total 29M
-rw-r----- 1 oracle oinstall 9.7M 2012-09-10 12:02 cntl3SYBO2SZ.ctl
-rw-r----- 1 oracle oinstall 9.7M 2012-09-10 12:02 cntl2SYBO2SZ.ctl
-rw-r----- 1 oracle oinstall 9.7M 2012-09-10 12:02 cntl1SYBO2SZ.ctl
sys@SYBO2SZ> select instance_name,status,database_status from v$instance;
INSTANCE_NAME    STATUS       DATABASE_STATUS
---------------- ------------ -----------------
SYBO2SZ          MOUNTED      ACTIVE
-->此时数据库文件的时间并没有被更新,依旧为11:23
sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/oradata/sys*
-rw-r----- 1 oracle oinstall 501M 2012-09-10 11:23 /u02/database/SYBO2SZ/oradata/sysSYBO2SZ.dbf
-rw-r----- 1 oracle oinstall 301M 2012-09-10 11:23 /u02/database/SYBO2SZ/oradata/sysauxSYBO2SZ.dbf
sys@SYBO2SZ> alter session set nls_date_format='yyyymmdd hh24:mi:ss';
-->Author : Robinson Cheng  -->Blog: http://blog.csdn.net/robinson_0612
-->也可以看到此时controlfile_type为current,open_resetlogs为NOT ALLOWED
sys@SYBO2SZ> SELECT controlfile_type, controlfile_sequence#, controlfile_change#,controlfile_time,open_resetlogs                  
2   FROM v$database;
CONTROL CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE# CONTROLFILE_TIME  OPEN_RESETL
------- --------------------- ------------------- ----------------- -----------
CURRENT                  6012             1151639 20120910 04:30:14 NOT ALLOWED
-->使用带using backup controlfile的recover 命令,出现Specify log提示
-->此时再开另一个session连接到实例,下面以idle开头的sql提示符即为另一个session
sys@SYBO2SZ> recover database using backup controlfile;
ORA-00279: change 1160803 generated at 09/10/2012 11:23:59 needed for thread 1
ORA-00289: suggestion : /u02/database/SYBO2SZ/archive/arch_793474012_1_3.arc
ORA-00280: change 1160803 for thread 1 is in sequence #3
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
-->session2 的操作
idle> conn / as sysdba
Connected.
idle> alter session set nls_date_format='yyyymmdd hh24:mi:ss';
Session altered.
-->下面的查询在使用recover database using backup controlfile后此时controlfile_type为BACKUP
-->且open_resetlogs为REQUIRED,相应的sequence以及change#全部发生了变化
idle> SELECT controlfile_type, controlfile_sequence#, controlfile_change#,controlfile_time,open_resetlogs 
2  FROM v$database;
CONTROL CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE# CONTROLFILE_TIME  OPEN_RESETL
------- --------------------- ------------------- ----------------- -----------
BACKUP                   6014             1160803 20120910 11:23:59 REQUIRED
-->上面的查询完成后,输入cancel,提示Media recovery cancelled
-->尝试使用open方式打开数据库,提示必须使用RESETLOGS or NORESETLOGS选项
sys@SYBO2SZ> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
-->使用resetlogs选项打开数据库,注意,此时如果使用noresetlogs选项,会重复出现上述提示
-->此时提示file1需要介质恢复
sys@SYBO2SZ> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/u02/database/SYBO2SZ/oradata/sysSYBO2SZ.dbf'
-->根据recover的提示,查看arch_793474012_1_3.arc文件,此时文件并不存在
sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/archive/arch_793474012_1_3.arc
ls: /u02/database/SYBO2SZ/archive/arch_793474012_1_3.arc: No such file or directory
-->再次尝试恢复,依然提示需要arch_793474012_1_3.arc归档日志,此时在session2中查看状态信息
sys@SYBO2SZ> recover database using backup controlfile;
ORA-00279: change 1160803 generated at 09/10/2012 11:23:59 needed for thread 1
ORA-00289: suggestion : /u02/database/SYBO2SZ/archive/arch_793474012_1_3.arc
ORA-00280: change 1160803 for thread 1 is in sequence #3
-->将组3的联机日志路径复制到Specify log处实现完全恢复
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u02/database/SYBO2SZ/redolog/log3aSYBO2SZ.log
Log applied.
Media recovery complete.
-->session2
-->可以看到控制文件的sequence#发生了几次变化
idle> SELECT controlfile_type, controlfile_sequence#, controlfile_change#,controlfile_time,open_resetlogs
2  FROM v$database;
CONTROL CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE# CONTROLFILE_TIME  OPEN_RESETL
------- --------------------- ------------------- ----------------- -----------
BACKUP                   6014             1160803 20120910 11:23:59 REQUIRED
idle> /
CONTROL CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE# CONTROLFILE_TIME  OPEN_RESETL
------- --------------------- ------------------- ----------------- -----------
BACKUP                   6015             1160803 20120910 11:23:59 REQUIRED
-->查看当前联机日志信息
idle> select * from v$logfile;
GROUP# STATUS  TYPE    MEMBER                                                  IS_
---------- ------- ------- ------------------------------------------------------- ---
3         ONLINE  /u02/database/SYBO2SZ/redolog/log3aSYBO2SZ.log          NO
3         ONLINE  /u02/database/SYBO2SZ/redolog/log3bSYBO2SZ.log          NO
4         ONLINE  /u02/database/SYBO2SZ/redolog/log4aSYBO2SZ.log          NO
4         ONLINE  /u02/database/SYBO2SZ/redolog/log4bSYBO2SZ.log          NO
-->此时日志组3为current状态,因此将组3的联机日志路径复制到Specify log处实现完全恢复
idle> select * from v$log;
GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- -----------------
4          1          2   20971520          2 YES INACTIVE               1124329 20120909 09:00:49
3          1          3   20971520          2 NO  CURRENT                1150957 20120910 04:00:06
-->完全恢复成功后,使用open方式依旧不成功		
sys@SYBO2SZ> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
-->使用open resetlogs方式成功打开数据库
sys@SYBO2SZ> alter database open resetlogs;
Database altered.
-->session 2
-->此时session 2中controlfile_type已经被置为CURRENT,open_resetlogs方式也被置为NOT ALLOWED
idle> SELECT controlfile_type, controlfile_sequence#, controlfile_change#,controlfile_time,open_resetlogs
2  FROM v$database;
CONTROL CONTROLFILE_SEQUENCE# CONTROLFILE_CHANGE# CONTROLFILE_TIME  OPEN_RESETL
------- --------------------- ------------------- ----------------- -----------
CURRENT                  6073             1160878 20120910 12:09:58 NOT ALLOWED
-->查看数据文件的时间信息,此时已被更新到最新状态		
sys@SYBO2SZ> ho ls -hltr /u02/database/SYBO2SZ/oradata/sys*
-rw-r----- 1 oracle oinstall 501M 2012-09-10 12:09 /u02/database/SYBO2SZ/oradata/sysSYBO2SZ.dbf
-rw-r----- 1 oracle oinstall 301M 2012-09-10 12:09 /u02/database/SYBO2SZ/oradata/sysauxSYBO2SZ.dbf
sys@SYBO2SZ> ho date
Mon Sep 10 12:10:42 CST 2012
-->相应的新的incarnation已经产生
sys@SYBO2SZ> archive log list;      
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u02/database/SYBO2SZ/archive/
Oldest online log sequence     1
Next log sequence to archive   1
Current log sequence           1


二、总结
1、using backup controlfile用于恢复备份的控制文件与当前的控制文件不一致的情形
2、一旦使用了using backup controlfile方式,控制文件的类型将由 current 转移到 backup 类型,同时open_resetlogs为required
3、一旦使用了using backup controlfile方式,后续再次使用recover database将变得无效
4、必须要使用 resetlogs 方式打开数据库,即使我们做的是完全恢复
5、注意理解演示中时间状态的更新情况。实际上来说是实例的启动过程,即:
    nomount:    根据pfile 或 spfile 启动相关后台进程,分配SGA
    mount:         打开控制文件,检查控制文件状态一致性,将数据库与实例关联起来
    open:            根据控制文件中记录的数据文件日志文件对其进行逐一检查无误后,整个数据库置于open状态

 

三、更多参考

基于用管理的备份备份请参

    Oracle 冷备份

    Oracle 热备份

    Oracle 备份恢复概念

    Oracle 实例恢复

    Oracle 基于用户管理恢复的处理(详细描述了介及其)

    SYSTEM 表空间管理及备份恢复

    SYSAUX表空间管理及恢复

   Oracle 基于备份控制文件的恢复(unsing backup controlfile)

 

RMAN的备份复与管理请参

    RMAN 概述及其体系结构

    RMAN 配置、监控与管理

    RMAN 备份详解

    RMAN 还原与恢复

    RMAN catalog 的创建和使用

    基于catalog 创建RMAN存储脚本

    基于catalog 的RMAN 备份与恢复

    RMAN 备份困惑(使用plus archivelog)

 

ORACLE体系结构请参

    Oracle 表空间与数据文件

    Oracle 密码文件

    Oracle 参数文件

    Oracle 联机重做日志文件(ONLINE LOG FILE)

    Oracle 控制文件(CONTROLFILE)

    Oracle 归档日志

    Oracle 回滚(ROLLBACK)和撤销(UNDO)

    Oracle 数据库实例启动关闭过程

    Oracle 10g SGA 的自动化管理

    Oracle 实例和Oracle数据库(Oracle体系结构)

 

 

这篇关于理解 using backup controlfile的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/183303

相关文章

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

如何通俗理解注意力机制?

1、注意力机制(Attention Mechanism)是机器学习和深度学习中一种模拟人类注意力的方法,用于提高模型在处理大量信息时的效率和效果。通俗地理解,它就像是在一堆信息中找到最重要的部分,把注意力集中在这些关键点上,从而更好地完成任务。以下是几个简单的比喻来帮助理解注意力机制: 2、寻找重点:想象一下,你在阅读一篇文章的时候,有些段落特别重要,你会特别注意这些段落,反复阅读,而对其他部分