- 浏览: 981741 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
孤星119:
好熟悉的数据库字段啊, 上家公司做的项目每天都跟这些字段打招呼 ...
Oracle exp compress参数引起的空间浪费 -
itspace:
quxiaoyong 写道遇到个问题,网上一搜,全他妈这篇文章 ...
数据库连接错误ORA-28547 -
quxiaoyong:
遇到个问题,网上一搜,全他妈这篇文章。你转来转去的有意思吗?
数据库连接错误ORA-28547 -
hctech:
关于version count过高的问题,不知博主是否看过ey ...
某客户数据库性能诊断报告 -
itspace:
invalid 写道写的不错,我根据这个来安装,有点理解错误了 ...
AIX 配置vncserver
很多时候数据库resetlogs打开之后会引起诸多不便,比如在Oracle 10g下,闪回数据库之后必须要resetlogs打开,那怎么样才能避免数据库resetlogs打开呢?
以下步骤仅用于测试,在生产环境下慎用。
(1)将数据库启动在mount状态,打开强制模式的闪回点dd,记录控制文件的checkpoint和checkpoint count
SQL> startup mount
ORACLE instance started.
Total System Global Area 1069547520 bytes
Fixed Size 2101704 bytes
Variable Size 276827704 bytes
Database Buffers 784334848 bytes
Redo Buffers 6283264 bytes
Database mounted.
SQL> create restore point dd guarantee flashback database;
Restore point created.
SQL> select to_char(checkpoint_change#) from v$datafile;
TO_CHAR(CHECKPOINT_CHANGE#)
----------------------------------------
10999733115905
10999733115905
10999733115905
10999733115905
SQL> select file#,to_char(checkpoint_change#),CHECKPOINT_COUNT from v$datafile_header;
FILE# TO_CHAR(CHECKPOINT_CHANGE#) CHECKPOINT_COUNT
---------- ---------------------------------------- ----------------
1 10999733115905 70
2 10999733115905 70
3 10999733115905 70
4 10999733115905 69
(2)在mount状态下备份控制文件和日志文件
[ora10g@xe2 lank]$ cp redo01.log redo01.log.bak
[ora10g@xe2 lank]$ cp redo02.log redo02.log.bak
[ora10g@xe2 lank]$ cp redo03.log redo03.log.bak
[ora10g@xe2 lank]$ cp control01.ctl control01.ctl.bak
(3)打开数据库之后切换几个归档
SQL> alter database open;
Database altered.
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> /
System altered.
(4)将数据库闪回至闪回点dd,可以发现数据文件的checkpoint和控制文件checkpoint均已闪回至闪回点状态,但是checkpoint count没有,这需要用bbed手动修改
SQL> flashback database to restore point dd;
Flashback complete.
SQL> select to_char(checkpoint_change#) from v$datafile_header;
TO_CHAR(CHECKPOINT_CHANGE#)
----------------------------------------
10999733115905
10999733115905
10999733115905
10999733115905
SQL> select file#,to_char(checkpoint_change#),CHECKPOINT_COUNT from v$datafile_header;
FILE# TO_CHAR(CHECKPOINT_CHANGE#) CHECKPOINT_COUNT
---------- ---------------------------------------- ----------------
1 10999733115905 74
2 10999733115905 74
3 10999733115905 74
4 10999733115905 73
SQL> select file# ,fuzzy from v$datafile_header;
FILE# FUZ
---------- ---
1 NO
2 NO
3 NO
4 NO
SQL> select to_char(checkpoint_change#) from v$datafile;
TO_CHAR(CHECKPOINT_CHANGE#)
----------------------------------------
10999733115905
10999733115905
10999733115905
10999733115905
(5)将之前备份的控制文件和日志文件还原
[ora10g@xe2 lank]$ cp control01.ctl.bak control01.ctl
[ora10g@xe2 lank]$ cp control01.ctl.bak control02.ctl
[ora10g@xe2 lank]$ cp control01.ctl.bak control03.ctl
[ora10g@xe2 lank]$ cp redo01.log.bak redo01.log
[ora10g@xe2 lank]$ cp redo02.log.bak redo02.log
[ora10g@xe2 lank]$ cp redo03.log.bak redo03.log
(6)mount数据库时alert日志会提示闪回日志比控制文件状态新,这主要是因为控制文件来自之前备份的控制文件。
SQL> startup mount
ORACLE instance started.
Total System Global Area 1069547520 bytes
Fixed Size 2101704 bytes
Variable Size 276827704 bytes
Database Buffers 784334848 bytes
Redo Buffers 6283264 bytes
Database mounted.
Thu Oct 13 10:59:38 CST 2011
Errors in file /app/admin/lank/bdump/lank_rvwr_9155.trc:
ORA-38739: Flashback log file is more recent than control file.
ORA-38701: Flashback database log 1 seq 1 thread 1: "/app/flash_recovery_area/LANK/flashback/o1_mf_79dnqb8m_.flb"
如果直接打开数据库会有如下提示:
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-38760: This database instance failed to turn on flashback database
其解决办法是将闪回点删除
SQL> drop restore point dd;
Restore point dropped.
再次尝试将数据库打开,提示数据文件比控制文件新,但是之前看到控制文件和数据文件的checkpoint已经处于一致状态,且fuzzy为NO
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: '/lank/db/lank/system01.dbf'
ORA-01207: file is more recent than control file - old control file
(7)进一步比较控制文件和数据文件的区别,这里主要比较checkpoint count和control seq
dump控制文件
SQL> alter session set events 'immediate trace name controlf level 1';
Session altered.
DUMP OF CONTROL FILES, Seq # 2440 = 0x988
V10 STYLE FILE HEADER:
Compatibility Vsn = 169870592=0xa200500
Db ID=1193074783=0x471ce05f, Db Name='LANK'
Activation ID=0=0x0
Control Seq=2440=0x988, File size=430=0x1ae
File Number=0, Blksiz=16384, File Type=1 CONTROL
dump 数据文件
SQL> alter session set events 'immediate trace name file_hdrs level 10';
DATA FILE #1:
(name #4) /lank/db/lank/system01.dbf
creation size=38400 block size=8192 status=0xe head=4 tail=4 dup=1
tablespace 0, index=1 krfil=1 prev_file=0
unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
Checkpoint cnt:70 scn: 0x0a01.132f5c01 10/13/2011 10:53:56
Stop scn: 0x0a01.132f5c01 10/13/2011 10:53:56
Creation Checkpointed at scn: 0x0000.00000007 09/20/2011 15:54:10
V10 STYLE FILE HEADER:
Compatibility Vsn = 169870592=0xa200500
Db ID=1193074783=0x471ce05f, Db Name='LANK'
Activation ID=0=0x0
Control Seq=2464=0x9a0, File size=51200=0xc800
File Number=1, Blksiz=8192, File Type=3 DATA
Tablespace #0 - SYSTEM rel_fn:1
Creation at scn: 0x0000.00000007 09/20/2011 15:54:10
Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0
reset logs count:0x2d901f29 scn: 0x0a01.132f57a3 reset logs terminal rcv data:0x0 scn: 0x0000.00000000
prev reset logs count:0x2d70c21f scn: 0x0000.00000001 prev reset logs terminal rcv data:0x0 scn: 0x0000.00000000
recovered at 10/13/2011 10:57:46
status:0x2000 root dba:0x00400179 chkpt cnt: 74 ctl cnt:73
begin-hot-backup file size: 0
Checkpointed at scn: 0x0a01.132f5c01 10/13/2011 10:53:56
发现控制文件和数据文件头的checkpoint count和control seq有区别,也就意味着数据库做闪回时,并没有闪回checkpoint count和control seq。
于是按照以下原则更改数据文件头的值:
a、数据文件头的control seq小于控制文件的control seq
b、数据文件头的chkpt cnt等于控制文件的chkpt cnt
经过查找需要修改的值在数据文件头的位置为:
ub4 kccfhcsq @40 ==>control seq
ub4 kcvfhcpc @140 ==>chkpt cnt
ub4 kcvfhccc @148 ==>ctl cnt
找到位置之后将所有文件用bbed修改即可
BBED> dump offset 40
BBED> modify 0x8009
BBED> dump offset 140
BBED> modify 0x46
BBED> dump offset 148
BBED> modify 0x45
BBED> sum apply
修改完毕之后,数据库就可以正常打开了。鼓掌!!!
以下步骤仅用于测试,在生产环境下慎用。
(1)将数据库启动在mount状态,打开强制模式的闪回点dd,记录控制文件的checkpoint和checkpoint count
SQL> startup mount
ORACLE instance started.
Total System Global Area 1069547520 bytes
Fixed Size 2101704 bytes
Variable Size 276827704 bytes
Database Buffers 784334848 bytes
Redo Buffers 6283264 bytes
Database mounted.
SQL> create restore point dd guarantee flashback database;
Restore point created.
SQL> select to_char(checkpoint_change#) from v$datafile;
TO_CHAR(CHECKPOINT_CHANGE#)
----------------------------------------
10999733115905
10999733115905
10999733115905
10999733115905
SQL> select file#,to_char(checkpoint_change#),CHECKPOINT_COUNT from v$datafile_header;
FILE# TO_CHAR(CHECKPOINT_CHANGE#) CHECKPOINT_COUNT
---------- ---------------------------------------- ----------------
1 10999733115905 70
2 10999733115905 70
3 10999733115905 70
4 10999733115905 69
(2)在mount状态下备份控制文件和日志文件
[ora10g@xe2 lank]$ cp redo01.log redo01.log.bak
[ora10g@xe2 lank]$ cp redo02.log redo02.log.bak
[ora10g@xe2 lank]$ cp redo03.log redo03.log.bak
[ora10g@xe2 lank]$ cp control01.ctl control01.ctl.bak
(3)打开数据库之后切换几个归档
SQL> alter database open;
Database altered.
SQL> alter system switch logfile;
System altered.
SQL> /
System altered.
SQL> /
System altered.
(4)将数据库闪回至闪回点dd,可以发现数据文件的checkpoint和控制文件checkpoint均已闪回至闪回点状态,但是checkpoint count没有,这需要用bbed手动修改
SQL> flashback database to restore point dd;
Flashback complete.
SQL> select to_char(checkpoint_change#) from v$datafile_header;
TO_CHAR(CHECKPOINT_CHANGE#)
----------------------------------------
10999733115905
10999733115905
10999733115905
10999733115905
SQL> select file#,to_char(checkpoint_change#),CHECKPOINT_COUNT from v$datafile_header;
FILE# TO_CHAR(CHECKPOINT_CHANGE#) CHECKPOINT_COUNT
---------- ---------------------------------------- ----------------
1 10999733115905 74
2 10999733115905 74
3 10999733115905 74
4 10999733115905 73
SQL> select file# ,fuzzy from v$datafile_header;
FILE# FUZ
---------- ---
1 NO
2 NO
3 NO
4 NO
SQL> select to_char(checkpoint_change#) from v$datafile;
TO_CHAR(CHECKPOINT_CHANGE#)
----------------------------------------
10999733115905
10999733115905
10999733115905
10999733115905
(5)将之前备份的控制文件和日志文件还原
[ora10g@xe2 lank]$ cp control01.ctl.bak control01.ctl
[ora10g@xe2 lank]$ cp control01.ctl.bak control02.ctl
[ora10g@xe2 lank]$ cp control01.ctl.bak control03.ctl
[ora10g@xe2 lank]$ cp redo01.log.bak redo01.log
[ora10g@xe2 lank]$ cp redo02.log.bak redo02.log
[ora10g@xe2 lank]$ cp redo03.log.bak redo03.log
(6)mount数据库时alert日志会提示闪回日志比控制文件状态新,这主要是因为控制文件来自之前备份的控制文件。
SQL> startup mount
ORACLE instance started.
Total System Global Area 1069547520 bytes
Fixed Size 2101704 bytes
Variable Size 276827704 bytes
Database Buffers 784334848 bytes
Redo Buffers 6283264 bytes
Database mounted.
Thu Oct 13 10:59:38 CST 2011
Errors in file /app/admin/lank/bdump/lank_rvwr_9155.trc:
ORA-38739: Flashback log file is more recent than control file.
ORA-38701: Flashback database log 1 seq 1 thread 1: "/app/flash_recovery_area/LANK/flashback/o1_mf_79dnqb8m_.flb"
如果直接打开数据库会有如下提示:
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-38760: This database instance failed to turn on flashback database
其解决办法是将闪回点删除
SQL> drop restore point dd;
Restore point dropped.
再次尝试将数据库打开,提示数据文件比控制文件新,但是之前看到控制文件和数据文件的checkpoint已经处于一致状态,且fuzzy为NO
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: '/lank/db/lank/system01.dbf'
ORA-01207: file is more recent than control file - old control file
(7)进一步比较控制文件和数据文件的区别,这里主要比较checkpoint count和control seq
dump控制文件
SQL> alter session set events 'immediate trace name controlf level 1';
Session altered.
DUMP OF CONTROL FILES, Seq # 2440 = 0x988
V10 STYLE FILE HEADER:
Compatibility Vsn = 169870592=0xa200500
Db ID=1193074783=0x471ce05f, Db Name='LANK'
Activation ID=0=0x0
Control Seq=2440=0x988, File size=430=0x1ae
File Number=0, Blksiz=16384, File Type=1 CONTROL
dump 数据文件
SQL> alter session set events 'immediate trace name file_hdrs level 10';
DATA FILE #1:
(name #4) /lank/db/lank/system01.dbf
creation size=38400 block size=8192 status=0xe head=4 tail=4 dup=1
tablespace 0, index=1 krfil=1 prev_file=0
unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
Checkpoint cnt:70 scn: 0x0a01.132f5c01 10/13/2011 10:53:56
Stop scn: 0x0a01.132f5c01 10/13/2011 10:53:56
Creation Checkpointed at scn: 0x0000.00000007 09/20/2011 15:54:10
V10 STYLE FILE HEADER:
Compatibility Vsn = 169870592=0xa200500
Db ID=1193074783=0x471ce05f, Db Name='LANK'
Activation ID=0=0x0
Control Seq=2464=0x9a0, File size=51200=0xc800
File Number=1, Blksiz=8192, File Type=3 DATA
Tablespace #0 - SYSTEM rel_fn:1
Creation at scn: 0x0000.00000007 09/20/2011 15:54:10
Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0
reset logs count:0x2d901f29 scn: 0x0a01.132f57a3 reset logs terminal rcv data:0x0 scn: 0x0000.00000000
prev reset logs count:0x2d70c21f scn: 0x0000.00000001 prev reset logs terminal rcv data:0x0 scn: 0x0000.00000000
recovered at 10/13/2011 10:57:46
status:0x2000 root dba:0x00400179 chkpt cnt: 74 ctl cnt:73
begin-hot-backup file size: 0
Checkpointed at scn: 0x0a01.132f5c01 10/13/2011 10:53:56
发现控制文件和数据文件头的checkpoint count和control seq有区别,也就意味着数据库做闪回时,并没有闪回checkpoint count和control seq。
于是按照以下原则更改数据文件头的值:
a、数据文件头的control seq小于控制文件的control seq
b、数据文件头的chkpt cnt等于控制文件的chkpt cnt
经过查找需要修改的值在数据文件头的位置为:
ub4 kccfhcsq @40 ==>control seq
ub4 kcvfhcpc @140 ==>chkpt cnt
ub4 kcvfhccc @148 ==>ctl cnt
找到位置之后将所有文件用bbed修改即可
BBED> dump offset 40
BBED> modify 0x8009
BBED> dump offset 140
BBED> modify 0x46
BBED> dump offset 148
BBED> modify 0x45
BBED> sum apply
修改完毕之后,数据库就可以正常打开了。鼓掌!!!
发表评论
-
buffer cache 的内部结构
2020-03-18 14:21 584BUFFER CACHE作为数据块的 ... -
Oracle OMC介绍
2020-03-18 13:19 495Oracle管理云服务(OMC)的大数据平台,自动收集的企业 ... -
参加Oracle勒索病毒防范专题培训会议
2019-09-27 17:15 5312019年7月22日,受邀参加Oracle勒索病毒防范专题培训 ... -
记一次内存换IO的Oracle优化
2019-09-27 16:50 835某客户数据库从P595物理 ... -
如何定位Oracle SQL执行计划变化的原因
2019-07-03 14:49 1471性能优化最难的是能够 ... -
如何定位Oracle SQL执行计划变化的原因
2018-10-30 09:24 1185性能优化最难的是能够 ... -
数据库性能优化目标
2018-10-08 10:59 528从数据库性能优化的场 ... -
数据库无法打开的原因及解决办法
2018-10-05 20:45 2145数据库的启动是一个相当复杂的过程。比如,Oracle在启动之前 ... -
怎么样彻底删除数据库?
2018-09-18 11:10 608Oracle提供了drop database命令用来删除数据库 ... -
Oracle减少日志量的方法
2018-09-10 10:17 871LGWR进程将LOG BUFFER中的 ... -
如何快速关闭数据库
2018-09-09 13:14 1240“一朝被蛇咬,十年怕井绳”。在没被“蛇”咬之前,很多DBA喜欢 ... -
关于《如何落地智能化运维》PPT
2018-05-17 10:19 1137在DTCC 2018发表《如何落地智能化运维》演讲,主要内容如 ... -
记录在redhat5.8平台安装oracle11.2容易忽视的几个问题
2018-05-11 19:58 587问题一:ping不通问题 在虚拟机上安装好linux系统后, ... -
《Oracle DBA实战攻略》第一章
2018-05-11 10:42 954即日起,不定期更新《OracleDBA实战攻略》一书电子版,请 ... -
Oracle 12c新特性
2018-05-11 10:33 907查询所有pdb [oracle@gj4 ~]$ sqlplu ... -
关于修改memory_target的值后数据库无法启动的问题
2017-02-28 12:24 3990操作系统:RHEL6.5 数据库版本:11.2.0.4 ... -
10g rac安装error while loading shared libraries libpthread.so.0 问题
2017-02-28 12:22 70311g rac安装在二节点跑脚本一般会报此错误: 解决这个问 ... -
记一次Oracle会话共享模式故障处理过程
2017-02-27 19:16 805故障简述 XXX第八人民医院HIS数据库7月13日11点左右从 ... -
RESMGR:cpu quantum等待事件处理过程
2017-02-27 18:23 2656由于数据库上线过程中出现大量的RESMGR:cpu quant ... -
谈谈log file sync
2014-03-19 14:18 1776数据库中的log file sync等待事件指的是,当user ...
相关推荐
Oracle数据库是当前广泛使用的关系型数据库之一,它在医院数字化等领域有着广泛的应用。在数据库运行过程中,可能会遇到需要执行不完全恢复或使用备份控制文件恢复的情况。在这些情况下,Oracle数据库管理员常使用...
#### 一、Oracle数据库物理结构故障概述 Oracle数据库物理结构故障是指由数据库构成的各个物理文件损坏所导致的一系列数据库故障。这类故障的发生原因通常有两种:一种是由硬件故障引起的;另一种是由于人为误操作...
本文档旨在为 Oracle 数据库管理员提供一份紧急处理预案,以便在数据库故障时能够快速恢复数据库。 Oracle 数据库故障可能是由于硬件故障或人为误操作引起的,因此在处理故障时首先需要判断问题的起因,如果是硬件...
Oracle数据库的控制文件是系统的重要组成部分,记录了数据库的关键配置信息,如数据库名称、字符集、数据文件的位置等。一旦控制文件损坏或丢失,数据库无法正常启动,这是一个严重的问题。以下是如何恢复Oracle...
Oracle数据库系统紧急故障处理方法 Oracle数据库系统紧急故障处理方法是指在Oracle数据库系统出现故障时,如何快速诊断和解决问题的方法。本文将介绍Oracle数据库系统中的常见故障类型及其解决方法。 一、控制文件...
Oracle数据库是企业级广泛使用的数据库管理系统,其备份与恢复机制对于数据安全性至关重要。在使用BE (Backup Exec) 2012工具进行Oracle数据库备份和还原时,有一些关键的注意事项需要了解,以确保数据的完整性和...
Oracle数据库系统紧急故障处理方法 Oracle数据库系统紧急故障处理方法是指在数据库系统出现紧急故障时,通过一定的处理步骤和方法来恢复数据库系统的正常运行。这种方法通常用于解决Oracle数据库系统中的物理结构...
在本案例中,我们遇到了一个Oracle数据库在服务器主板故障后无法正常启动的问题。数据库在重启后尝试打开时,出现了ORA-01589错误,提示必须使用RESETLOGS或NORESETLOGS选项进行数据库打开。这通常意味着数据库在...
这部分可能还会讲解到数据库的闪回功能,如闪回数据库、闪回表空间等,这些技术能够在不依赖备份的情况下进行数据恢复。 在具体的技术细节中,讲义提到了【复制数据库】的操作,这是一种验证备份完整性的方法。复制...
控制文件是Oracle数据库的核心元素之一,它记录并维护了数据库的物理结构和状态信息。当数据库启动时,Oracle会根据初始化参数`control_files`定位并打开控制文件。控制文件中包含了如下的关键信息: 1. **数据库...
根据给定的部分内容来看,数据库管理员尝试启动一个处于非归档模式下的Oracle 11g数据库时遇到了以下问题: 1. **数据库状态为MOUNTED**:尝试查询数据库版本时收到ORA-01219错误提示,表明数据库当前处于MOUNTED...
Oracle 数据库的控制文件是数据库的核心组件之一,对数据库的正常运行起着至关重要的作用。然而,控制文件的损坏可能会导致数据库无法启动或出错。因此,了解如何恢复损坏的控制文件是非常重要的。本文将介绍两种...
在Oracle数据库管理中,无备份恢复(也称为灾难恢复)是一项关键技能,尤其是在面对各种突发情况时。本文将深入探讨在没有备份的情况下,如何处理Oracle数据库的多种常见故障场景,包括恢复密码文件、参数文件、控制...
控制文件是Oracle数据库中极为重要的组成部分之一,它是一个二进制文件,用于存储关于整个数据库的重要信息,包括数据库的结构信息。控制文件对于数据库的正常运行至关重要,因为它是数据库能够识别其组成元素的关键...
Oracle数据库的物理结构是其运行的基础,当这些结构发生故障时,可能会对数据库的正常运行造成严重影响。本文将深入探讨如何处理Oracle物理结构中的常见故障,主要包括控制文件损坏、单个或所有控制文件损坏以及重做...
根据给定的Oracle相关命令和描述,我们可以总结出以下关键知识点: ...以上知识点覆盖了Oracle数据库中的多个核心领域,包括内存管理、文件管理、用户管理、日志管理和性能调优,是理解和操作Oracle数据库的重要基础。
Oracle数据库的备份与恢复是确保数据安全和业务连续性的重要环节。本文主要探讨了Oracle数据库在不同场景下如何进行有效的备份恢复,特别是针对控制文件损坏的情况。 首先,控制文件是Oracle数据库的关键组件,它...
控制文件是Oracle数据库中的一个非常重要的组成部分,它包含了数据库的物理结构信息。这些信息包括数据文件的名字与位置、重做日志文件的位置以及其他关键元数据等。控制文件对于数据库来说至关重要,因为它记录了...