- 浏览: 959731 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
孤星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 517BUFFER CACHE作为数据块的 ... -
Oracle OMC介绍
2020-03-18 13:19 439Oracle管理云服务(OMC)的大数据平台,自动收集的企业 ... -
参加Oracle勒索病毒防范专题培训会议
2019-09-27 17:15 4222019年7月22日,受邀参加Oracle勒索病毒防范专题培训 ... -
记一次内存换IO的Oracle优化
2019-09-27 16:50 785某客户数据库从P595物理 ... -
如何定位Oracle SQL执行计划变化的原因
2019-07-03 14:49 1353性能优化最难的是能够 ... -
如何定位Oracle SQL执行计划变化的原因
2018-10-30 09:24 1185性能优化最难的是能够 ... -
数据库性能优化目标
2018-10-08 10:59 467从数据库性能优化的场 ... -
数据库无法打开的原因及解决办法
2018-10-05 20:45 1912数据库的启动是一个相当复杂的过程。比如,Oracle在启动之前 ... -
怎么样彻底删除数据库?
2018-09-18 11:10 551Oracle提供了drop database命令用来删除数据库 ... -
Oracle减少日志量的方法
2018-09-10 10:17 808LGWR进程将LOG BUFFER中的 ... -
如何快速关闭数据库
2018-09-09 13:14 1195“一朝被蛇咬,十年怕井绳”。在没被“蛇”咬之前,很多DBA喜欢 ... -
关于《如何落地智能化运维》PPT
2018-05-17 10:19 1087在DTCC 2018发表《如何落地智能化运维》演讲,主要内容如 ... -
记录在redhat5.8平台安装oracle11.2容易忽视的几个问题
2018-05-11 19:58 530问题一:ping不通问题 在虚拟机上安装好linux系统后, ... -
《Oracle DBA实战攻略》第一章
2018-05-11 10:42 890即日起,不定期更新《OracleDBA实战攻略》一书电子版,请 ... -
Oracle 12c新特性
2018-05-11 10:33 852查询所有pdb [oracle@gj4 ~]$ sqlplu ... -
关于修改memory_target的值后数据库无法启动的问题
2017-02-28 12:24 3922操作系统:RHEL6.5 数据库版本:11.2.0.4 ... -
10g rac安装error while loading shared libraries libpthread.so.0 问题
2017-02-28 12:22 63311g rac安装在二节点跑脚本一般会报此错误: 解决这个问 ... -
记一次Oracle会话共享模式故障处理过程
2017-02-27 19:16 753故障简述 XXX第八人民医院HIS数据库7月13日11点左右从 ... -
RESMGR:cpu quantum等待事件处理过程
2017-02-27 18:23 2474由于数据库上线过程中出现大量的RESMGR:cpu quant ... -
谈谈log file sync
2014-03-19 14:18 1679数据库中的log file sync等待事件指的是,当user ...
相关推荐
Open resetlogs操作对Oracle数据库恢复的影响.pdf
数据来源:中国劳动统计NJ-2023版
数据来源:中国人口与就业统计NJ-2023版
Smart继电器编程器操作手册
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
数据来源:中国人口与就业统计NJ-2023版
数据来源:中国人口与就业统计NJ-2023版
基于matlab实现的图像几何校正的程序,根据靶图将tiger图像从鱼眼形变恢复.rar
毕业论文(设计)—旅游资源管理系统设计与实现论文.doc
数据来源:中国劳动统计NJ-2023版
数据来源:中国电力统计NJ-2021版
引入dynamic-datasource-spring-boot-starter。 spring-boot 1.5.x 2.x.x <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot-starter</artifactId> <version>${version}</version> </dependency> spring-boot3及以上 <dependency> <groupId>com.baomidou</groupId> <artifactId>dynamic-datasource-spring-boot3-starter</artifactId> <version>${version}</version> </dependency> 配置数据源。 spring: datasource: dynamic: enabled: true #启用动态数据源,默认true
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
基于HarmonyOS 4开发的一款新闻类的鸿蒙APP源代码
基于matlab实现遗传算法无功优化,基于掌纹识别的在线身份验证 识别算法本科毕设,是本科毕设的题目。.rar
【毕业设计】基于C和Access的图书管理系统设计与实现.doc
附件是 华为 OD 机考攻略_加强版,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!
数据来源:中国人口与就业统计NJ-2023版
基于RFID的资产管理系统设计与实现.doc
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。