控制文件损坏处理

二、有rman备份的恢复
2.1 只损坏一个控制文件的情况
本文档的恢复场景都是针对的多控制文件的情况,如果你只有一个那当我没说😄。
查看控制文件

SQL> show parameter control_files;NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
control_files                 string     /oracle/app/oradata/orcl/control01.ctl, /oracle/app/oradata/orcl/control02.ctl

模拟破坏

[oracle@redhat11g8 orcl]$ echo ''>/oracle/app/oradata/orcl/control01.ctl

后台日志可以看到会报控制文件有坏块,但是实例还没有宕:

Errors in file /oracle/app/diag/rdbms/orcl/orcl/trace/orcl_ckpt_30033.trc  (incident=38401):
ORA-00227: corrupt block detected in control file: (block 1, # blocks 1)
ORA-00202: control file: '/oracle/app/oradata/orcl/control01.ctl'

做一次检查点切换:

SQL> alter system checkpoint;
alter system checkpoint
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 26789
Session ID: 153 Serial number: 2627

后台日志显示实例被异常终止:

CKPT (ospid: 30033): terminating the instance due to error 227
Wed Feb 13 08:20:11 2019
System state dump requested by (instance=1, osid=30033 (CKPT)), summary=[abnormal instance termination].
System State dumped to trace file /oracle/app/diag/rdbms/orcl/orcl/trace/orcl_diag_30021_20190213082011.trc
Dumping diagnostic data in directory=[cdmp_20190213082011], requested by (instance=1, osid=30033 (CKPT)), summary=[abnormal instance termination].
Instance terminated by CKPT, pid = 30033

恢复方法:

cp control02.ctl control01.ctl

然后重新startup实例,运行正常。

2.2 所有控制文件都损坏的情况
模拟破坏:

[oracle@redhat11g8 orcl]$ echo ''>control01.ctl 
[oracle@redhat11g8 orcl]$ echo ''>control02.ctl
SQL> alter system checkpoint;
alter system checkpoint
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 26927
Session ID: 135 Serial number: 13

后台日志情况和前面一样在发生检查点切换后,实例就宕了。

恢复方法:

RMAN>  restore controlfile from '/home/oracle/rman/full_08tpot0t_1_1';Starting restore at 13-FEB-19
using channel ORA_DISK_1channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
output file name=/oracle/app/oradata/orcl/control01.ctl
output file name=/oracle/app/oradata/orcl/control02.ctl
Finished restore at 13-FEB-19RMAN> recover database;//对控制文件进行归档+redo恢复
RMAN> alter database open resetlogs;database opened

三、没有rman备份的恢复

[oracle@redhat11g8 orcl]$ echo ''>control01.ctl
[oracle@redhat11g8 orcl]$ echo ''>control02.ctl
[oracle@redhat11g8 orcl]$ !sql
sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Wed Feb 13 08:59:38 2019Copyright (c) 1982, 2013, Oracle.  All rights reserved.Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> alter system checkpoint;
alter system checkpoint
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 27123
Session ID: 72 Serial number: 3

恢复方法,若是还能mount的话倒简单,alter database backup controlfile to trace as '/tmp/ctl.txt';即可,如果不能mount的话,只能麻烦点恢复:

通过参数文件获取数据库名:

SQL> startup nomount; 
ORACLE instance started.Total System Global Area 2471931904 bytes
Fixed Size            2255752 bytes
Variable Size          620758136 bytes
Database Buffers     1845493760 bytes
Redo Buffers            3424256 bytes
SQL> create pfile='/tmp/orcl.ora' from spfile;File created.*.db_name='orcl'

查询字符集:

SQL> select userenv('language') from dual;USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.US7ASCII

获取数据文件名和redo文件名:

[oracle@redhat11g8 orcl]$ ls -lh *.dbf
-rw-r-----. 1 oracle oinstall 254M Feb 13 08:54 jason01.dbf
-rw-r-----. 1 oracle oinstall 101M Feb 13 08:54 odc01.dbf
-rw-r-----. 1 oracle oinstall 1.3G Feb 13 08:54 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 781M Feb 13 08:54 system01.dbf
-rw-r-----. 1 oracle oinstall 9.9G Feb 13 08:54 temp01.dbf
-rw-r-----. 1 oracle oinstall  11M Feb  3 06:50 temp02.dbf
-rw-r-----. 1 oracle oinstall 2.6G Feb 13 08:54 test.dbf
-rw-r-----. 1 oracle oinstall 1.9G Feb 13 08:54 undotbs01.dbf
-rw-r-----. 1 oracle oinstall  11G Feb 13 08:54 users01.dbf[oracle@redhat11g8 orcl]$ ls -lh *.log
-rw-r-----. 1 oracle oinstall 51M Feb 13 08:54 redo01.log
-rw-r-----. 1 oracle oinstall 51M Feb 13 08:54 redo02.log
-rw-r-----. 1 oracle oinstall 51M Feb 13 08:59 redo03.log

编写重建脚本(注意临时文件不要写进重建脚本里,不然会报如下错误):

ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-01160: file is not a data file
ORA-01110: data file : '/oracle/app/oradata/orcl/temp01.dbf'CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS  ARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292
LOGFILEGROUP 1 '/oracle/app/oradata/orcl/redo01.log'  SIZE 50M BLOCKSIZE 512,GROUP 2 '/oracle/app/oradata/orcl/redo02.log'  SIZE 50M BLOCKSIZE 512,GROUP 3 '/oracle/app/oradata/orcl/redo03.log'  SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE'/oracle/app/oradata/orcl/jason01.dbf','/oracle/app/oradata/orcl/odc01.dbf','/oracle/app/oradata/orcl/sysaux01.dbf','/oracle/app/oradata/orcl/system01.dbf','/oracle/app/oradata/orcl/test.dbf','/oracle/app/oradata/orcl/undotbs01.dbf','/oracle/app/oradata/orcl/users01.dbf'
CHARACTER SET US7ASCII
;SQL> alter database open resetlogs;Database altered.

四、注意事项
1、除了2.1这种通过cp另一个控制文件恢复的情景,其他情景都需要在恢复完后做一个RMAN全备份,因为resetlogs打开后,之前的备份片都会失效。

2、控制文件最好能做冗余,就算坏了一个,还可以用另一个恢复。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/805724.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nandgame中的Code generation(代码生成)

题目说明: 代码生成为语言的语法规则定义代码生成,以支持加法和减法。 您可以使用在前面级别中定义的堆栈操作(如ADD和SUB)。代码生成模板通常需要包含规则中其他符号的代码。 这些可以通过方括号中的符号名称插入。例如&#xf…

Linux生态系统:探索Linux的开源世界

Linux生态系统:探索Linux的开源世界 在前面的博客中,我们深入探讨了Linux的各种技能和技巧,从入门到进阶,再到高手级别。这一路走来,相信大家对Linux已经有了全面的认识和掌握。然而,Linux的魅力远不止于此。今天,我们将进一步探索Linux生态系统,了解Linux在开源世界中的重要地…

day03-java类型转换和运算符

3.1 表达式和语句 表达式一共分为三种: (1)变量或常量 运算符构成的计算表达式 (2)new 表达式,结果是一个数组或类的对象。(后面讲) (3)方法调用表达式&…

接口自动化进阶: Pytest之Fixture拓展及conftest.py加载机制!

Pytest是一个功能强大的Python测试框架,它提供了很多有用的功能和扩展机制。其中之一是Fixture,Fixture是pytest中的一个装饰器,可以用来提供测试所需的数据和对象。 本篇文章将从头开始,详细介绍如何使用Fixture进行接口自动化测…

关于moviepy出现must be real number, not NoneType

#降级装饰器版本 decorator4.4.2 不行就再降4.0.2 有的也可以通过省级mv解决更多解答https://stackoverflow.com/questions/68032884/getting-typeerror-must-be-real-number-not-nonetype-whenever-trying-to-run-wr

Linux安装Oracle11g(无图形界面下的静默安装)

Oracle11g安装文档-Linux静默安装 环境准备安装数据库配置监听器创建数据库测试打开防火墙 环境准备 创建组和用户 [rootlocalhost ~]# groupadd oinstall #创建oinstall组 [rootlocalhost ~]# groupadd dba  #创建dba组 [rootlocalhost ~]# useradd -g oinstall -G dba -m…

鸿蒙HarmonyOS开发实例:【分布式关系型数据库】

介绍 本示例使用[ohos.data.relationalStore]接口和[ohos.distributedDeviceManager] 接口展示了在eTS中分布式关系型数据库的使用,在增、删、改、查的基本操作外,还包括分布式数据库的数据同步同能。 效果预览 使用说明: 启动应用后点击“ ”按钮可…

《QT实用小工具·十七》密钥生成工具

1、概述 源码放在文章末尾 该项目主要用于生成密钥,下面是demo演示: 项目部分代码如下: #pragma execution_character_set("utf-8")#include "frmmain.h" #include "ui_frmmain.h" #include "qmessag…

ArrayList中多线程的不安全问题

ArrayList中的不安全问题 正常的输出 List<String> list Arrays.asList("1","2","3"); list.forEach(System.out::println);为什么可以这样输出&#xff0c;是一种函数是接口&#xff0c;我们先过个耳熟 Arrys.asList是返回一个ArrayL…

【leetcode面试经典150题】40. 同构字符串(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

进程间通信 (匿名管道)

一、进程间通信的概念 进程间通信是一个进程把自己的数据交给另一个进程&#xff0c;它可以帮助我们进行数据传输、资源共享、通知事件和进程控制。 进程间通信的本质是让不同的进程看到同一份资源。因此&#xff0c;我们要有&#xff1a; 1、交换数据的空间。2、这个空间不能由…

端口号占用解决方法

进入cmd输入&#xff1a; 第一步输入&#xff1a;netstat -ano|findstr 8080 第二步输入&#xff1a;taskkill -pid **** -f (示例)&#xff1a; C:\Users\Administrator>netstat -ano|findstr 8080 TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING …

AcWing 790. 数的三次方根——算法基础课题解

AcWing 790. 数的三次方根 题目描述 给定一个浮点数 n&#xff0c;求它的三次方根。 输入格式 共一行&#xff0c;包含一个浮点数 n。 输出格式 共一行&#xff0c;包含一个浮点数&#xff0c;表示问题的解。 注意&#xff0c;结果保留 6 位小数。 数据范围 −10000≤…

Linux链接文件管理——硬链接、符号链接

Linux链接文件管理——硬链接、符号链接 硬链接 硬链接是对文件的另一个名字&#xff0c;对于硬链接的文件来说&#xff0c;他们拥有同样的inode号(索引节点号)&#xff0c;表示它们是同一个文件。 创建硬链接不会消耗新的inode和block。 删除硬链接文件&#xff0c;不会影响…

hadoop103: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

分析&#xff1a; 在启动hadoop服务的时候&#xff0c;遇到了这个问题&#xff1a; hadoop103: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). 这个一看就是&#xff0c;密钥问题 于是ssh 主机名就行测试 需要输入密码&#xff0c;就说明这里有问…

【C++】每日一题 28 找出字符串中第一个匹配项的下标

给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 #include <iostream> #include <string>…

C++笔记(函数重载)

目录 引入&#xff1a; 定义&#xff1a; 易错案例&#xff1a; 引入&#xff1a; 对于实现相似功能的函数&#xff0c;在命名时&#xff0c;我们常会出现命名重复的问题。对于C语言&#xff0c;编译器遇到这种命名重复的情况&#xff0c;会进行报错。而我们的C为了更方便程…

【计算机毕业设计】校园网书店系统——后附源码

&#x1f389;**欢迎来到我的技术世界&#xff01;**&#x1f389; &#x1f4d8; 博主小档案&#xff1a; 一名来自世界500强的资深程序媛&#xff0c;毕业于国内知名985高校。 &#x1f527; 技术专长&#xff1a; 在深度学习任务中展现出卓越的能力&#xff0c;包括但不限于…

分布式锁-redission

5、分布式锁-redission 5.1 分布式锁-redission功能介绍 基于setnx实现的分布式锁存在下面的问题&#xff1a; 重入问题&#xff1a;重入问题是指 获得锁的线程可以再次进入到相同的锁的代码块中&#xff0c;可重入锁的意义在于防止死锁&#xff0c;比如HashTable这样的代码…

pycharm一直打不开

一直处在下面的页面&#xff0c;没有反应 第一种方案&#xff1a; 以管理员身份运行 cmd.exe&#xff1b;在打开的cmd窗口中&#xff0c;输入 netsh winsock reset &#xff0c;按回车键&#xff1b;重启电脑&#xff1b;重启后&#xff0c;双击pycharm图标就能打开了&#xf…