Oracle 重建控制文件一例
环境:OEL 5.7 + Oracle 10.2.0.5
背景:在Oracle的运维过程中,时常会遇到一些场景是需要重建控制文件才可以解决的。本文的场景可以通过复制控制文件到新路径,运行一段时间后,再用老的控制文件启动数据库重现。
1.当前故障现象
在使用旧的控制文件启动数据库时,报错ORA-01122、ORA-01110、ORA-01207:
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 599785472 bytes
Fixed Size 2098112 bytes
Variable Size 218106944 bytes
Database Buffers 373293056 bytes
Redo Buffers 6287360 bytes
Database mounted.
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: '/oradata/cxywdb/system01.dbf'
ORA-01207: file is more recent than control file - old control file
2.分析故障原因
根据报错信息查找MOS文档:
- ORA-1122, ORA-1110, ORA-1207 while open the database after crash (文档 ID 283927.1)
延伸思考一下,为什么会这样?
主要错误是ORA-01207,利用oerr工具看到Oralce对这个错误的详细描述是:
01207, 00000, "file is more recent than control file - old control file"
// *Cause: The control file change sequence number in the data file is
// greater than the number in the control file. This implies that
// the wrong control file is being used. Note that repeatedly causing
// this error can make it stop happening without correcting the real
// problem. Every attempt to open the database will advance the
// control file change sequence number until it is great enough.
// *Action: Use the current control file or do backup control file recovery to
// make the control file current. Be sure to follow all restrictions
// on doing a backup control file recovery.
一般遇到这种情况,当前的控制文件肯定是找不到了。那么就得考虑重建控制文件来解决,MOS给出的建议也是重建控制文件。
3.重建控制文件
重建控制文件的核心步骤:
**3.1 备份控制文件到trace**
startup mount
alter database backup controlfile to trace;
oradebug setmypid
oradebug tracefile_name
3.2 启动数据库到nomount状态
shutdown abort
startup nomount;
3.3 确认重建控制文件的语句
vi control.sql
CREATE CONTROLFILE REUSE DATABASE "CXYWDB" NORESETLOGS FORCE LOGGING ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 5 '/oradata2/cxywdb/redo11.log' SIZE 50M,
GROUP 6 '/oradata2/cxywdb/redo12.log' SIZE 50M,
GROUP 7 '/oradata2/cxywdb/redo13.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/oradata/cxywdb/system01.dbf',
'/oradata/cxywdb/undotbs01.dbf',
'/oradata/cxywdb/sysaux01.dbf',
'/oradata/cxywdb/users01.dbf',
'/oradata/cxywdb/alfred01.dbf',
'/oradata/cxywdb/alfred02.dbf',
'/oradata/cxywdb/alfred03.dbf',
'/oradata/cxywdb/alfred04.dbf',
'/oradata/cxywdb/alfred05.dbf',
'/oradata/cxywdb/dbs_i_alfred01.dbf'
CHARACTER SET ZHS16GBK
;
3.4 恢复并打开数据库
SQL> recover database;
Media recovery complete.
SQL> alter database open;
Database altered.
附:实际解决过程如下:
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area 599785472 bytes
Fixed Size 2098112 bytes
Variable Size 218106944 bytes
Database Buffers 373293056 bytes
Redo Buffers 6287360 bytes
Database mounted.
SQL> alter database backup controlfile to trace;
Database altered.
SQL> oradebug setmypid
Statement processed.
SQL> oradebug tracefile_name
/s01/oracle/admin/cxywdb/udump/cxywdb_ora_3983.trc
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 599785472 bytes
Fixed Size 2098112 bytes
Variable Size 218106944 bytes
Database Buffers 373293056 bytes
Redo Buffers 6287360 bytes
SQL> @control
Control file created.
SQL> select status from v$instance;
STATUS
------------
MOUNTED
SQL> recover database;
Media recovery complete.
SQL> alter database open;
Database altered.
Oracle 重建控制文件一例的更多相关文章
- Oracle 重建控制文件
前些天在做Oracle数据库恢复测试时,因为一些异常操作导致控制文件出了问题,数据库无法正常使用,这里记录一下重建控制文件的操作 一.使用sysdba用户登入数据库 此时普通用户已无法链接数据库 二. ...
- oracle重建控制文件
根据已有数据库创建新的控制文件#数据库必须是mounted或open状态 sql> alter database backup controlfile to trace; 可以使用以下快捷方式找 ...
- oracle之 利用 controlfile trace文件重建控制文件
一. 11g RAC 重建控制文件 1. --"create controlfile"命令生成到追踪文件中:alter database backup controlfile to ...
- Oracle控制文件多路复用以及Oracle备份重建控制文件
控制文件中记录了oracle数据库的物理结构,也就是记录了数据库数据文件和日志文件的位置,控制文件中还记录了多种SCN,用这些SCN来确定数据文件和日志文件是否是正确的.如果不正确那么数据库就需要恢复 ...
- 【翻译自mos中文文章】重建控制文件的方法
重建控制文件的方法 參考原文: How to Recreate a Controlfile (Doc ID 735106.1) 适用于: Oracle Database - Enterprise Ed ...
- Oracle的控制文件
一.控制文件 oracle的控制文件是极其重要的文件,它是一个较小的二进制文件. 记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等 在参数文件中描述其位置, ...
- 【练习】trace文本重建控制文件
这个小练习是针对控制文件全部丢失后怎么能快速的重建一个控制文件,快速的起库 1.备份控制文件到trace下 SQL> alter database backup controlfile to t ...
- 【翻译自mos文章】在重建控制文件之前应该考虑的事情
在重建控制文件之前应该考虑的事情 来源于: Things to Consider Before Recreating the Controlfile (文档 ID 1475632.1) 适用于: Or ...
- 重建控制文件ORA-12720
重建过程出错:ORA-01503: CREATE CONTROLFILE failedORA-12720: operation requires database is in EXCLUSIVE mo ...
随机推荐
- 初探linux子系统集之led子系统(二)
巴西世界杯,德国7比1东道主,那个惨不忍睹啊,早上起来看新闻,第一眼看到7:1还以为点球也能踢成这样,后来想想,点球对多嘛6比1啊,接着就是各种新闻铺天盖地的来了.其实失败并没有什么,人生若是能够成功 ...
- java小知识点汇总
1.ConcurrentHashMap使用segment来分段和管理锁,segment继承自ReentrantLock,因此ConcurrentHashMap使用ReentrantLock来保证线程安 ...
- 40款非常棒的 jQuery 插件和制作教程(系列一)
jQuery 在现在的 Web 开发项目中扮演着重要角色,jQuery 让网站有更好的可用性和用户体验,让访问者对网站留下非常好的印象.jQuery以其插件众多.独特.轻量以及支持大规模的网站开发闻名 ...
- ssh三大框架集成后,jsp中采用forword标签提交时会报错的解决方案
最近这两天心烦,所以没事就做做三大框架,对于今天遇到了一个烦心的事!或许有很多开发人员对于web.xml拦截器的认识不清,出现了这样的情况 <filter> <filter-name ...
- C++各个存储区
#include<iostream.h>void main(){char a[]="abc";栈 char b[]="abc";栈 char* c= ...
- App免费推广途径概要
说在前面的话:免费其实挺花功夫的,所有的营销的前提是产品和服务是值得推荐的. 1.技术操作维度:ASO,SEO, ASO简单介绍:http://baike.baidu.com/subview/1368 ...
- HDU-5706
GirlCat Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem Desc ...
- 自建Nuget服务器
前言 [PS:原文手打,转载说明出处,博客园] java有Maven,.net有Nuget,概念就不一一阐述了,自己百度.下面直接进入正题 搭建Nuget服务器 作案工具 工具:vs2017,Nuge ...
- IE浏览器getElementsByTagName方法的兼容问题
今天发现了一个非常可笑的IE兼容问题,环境是IE8,调用getElementsByTagName方法搜索元素,结果集居然自动识别元素的id作为键名,去掉元素定义id才能按正常的数字索引返回. 因为网页 ...
- java文件传输之文件编码和File类的使用
---恢复内容开始--- 我们知道,在用户端和服务端之间存在一个数据传输的问题,例如下载个电影.上传个照片.发一条讯息.在这里我们 就说一下文件的传输. 1.文件编码 相信大家小时候玩过积木(没玩过也 ...