ORACLE控制文件损坏处理办法
(完整word版)Oracle数据库系统紧急故障处理方法
Oracle数据库系统紧急故障处理方法Oracle物理结构故障是指构成数据库的各个物理文件损坏而导致的各种数据库故障。
这些故障可能是由于硬件故障造成的,也可能是人为误操作而引起。
所以我们首先要判断问题的起因,如果是硬件故障则首先要解决硬件问题。
在无硬件问题的前提下我们才能按照下面的处理方发来进一步处理。
控制文件损坏:控制文件记录了关于oracle的重要配置信息,如数据库名、字符集名字、各个数据文件、日志文件的位置等等信息。
控制文件的损坏,会导致数据库异常关闭。
一旦缺少控制文件,数据库也无法启动,这是一种比较严重的错误。
损坏单个控制文件:1. 确保数据库已经关闭,如果没有用下面的命令来关闭数据库:svrmgrl>shutdown immediate;2. 查看初始化文件$ORACLE_BASE/admin/pfile/initORCL.ora,确定所有控制文件的路径。
3. 用操作系统命令将其它正确的控制文件覆盖错误的控制文件。
4. 用下面的命令重新启动数据库:svrmgrl>startup;5. 用适当的方法进行数据库全备份。
损坏所有的控制文件:1. 确保数据库已经关闭,如果没有用下面的命令来关闭数据库:svrmgrl>shutdown immediate;2. 从相应的备份结果集中恢复最近的控制文件。
对于没有采用带库备份的点可以直接从磁带上将最近的控制文件备份恢复到相应目录;对于采用带库备份的点用相应的rman脚本来恢复最近的控制文件。
3. 用下面的命令来创建产生数据库控制文件的脚本:svrmgrl>startup mount;svrmgrl>alter database backup controlfile to trace noresetlogs;4. 修改第三步产生的trace文件,将其中关于创建控制文件的一部分语句拷贝出来并做些修改,使得它能够体现最新的数据库结构。
ora-01113数据文件损坏的处理方法
ora-01113数据文件损坏的处理方法Ora-01113 ora-01110数据文件损坏的处理方法一、先将所有的oracle文件备份。
包括oracle目录和手工添加的数据文件目录。
二、在ms_dos下执行svrmgrl1.Svrmgrl> connect internal/oracle;提示连接成功转(2)2.Svrmgrl> shutdown abort ;关闭数据库,提示成功转(3)3.Svrmgrl> startup nomount ;提示无错误转(4),否则不是这个错误,查看控制文件错处理。
4.Svrmgrl> alter database mount ;提示无错误转(5),否则是其它错误,见其它文档5.Svrmgrl> select * from v$recover_file ;查看是哪个文件需要修复。
字段File#,结果是数值型的。
6.Svrmgrl> select * from v$datafile where file#=? ;具体查询损坏的数据文件位置。
7.Svrmgrl> recover database ;进行数据库修复,如果成功转(8),不成功转(9)8.Svrmgrl> alter database open ;如果成功则完成,可以备份数据库了。
如果不成功还是以前的错误代码转(9)9.Svrmgrl> alter database datafile ‘?.dbf’ offline drop ;将(5)查询的文件位置替换到?.dbf ,删除所有损坏的数据文件。
10.Svrmgrl> alter database open ;三、注意:以上处理内容只使用于ora-01110 ora-01113数据文件错误,并且所损坏的数据文件不能是以下文件:System01.dbf基本上如果这个文件损坏不好处理。
如果数据存储在这个文件中则完全没有希望。
Oracle数据库文件损坏修复(断电情况下)
现场情况:1、数据库没有作归档,2、数据都存放在system表空间3、没有备份状况:操作系统由于磁盘原因出现宕机,用户强行按电源关闭系统,数据库无法启动。
处理:Sql代码1.SQL> recover database;2.ORA-00283: recovery session canceled due to errors3.ORA-12801: error signaled in parallel query server P0024.ORA-10562: Error occurred while applying redo to data block (file# 1, block#4568)5.ORA-10564: tablespace SYSTEM6.ORA-01110: data file 1: '/opt/oracle/oradata/orcl/system01.dbf'7.ORA-10561: block type 'TRANSACTION MANAGED INDEX BLOCK', data object# 5768.ORA-00600: internal error code, arguments: [6101]9.检查日志信息如下:Oracle代码1.Mon Nov 1915:38:5020072.ALTER DATABASE RECOVER database3.Mon Nov 1915:38:5020074.Media Recovery Start5. parallel recovery started with 3 processes6.Mon Nov 1915:38:5020077.Recovery of Online Redo Log: Thread 1 Group 3 Seq 16 Reading mem 08. Mem# 0 errs 0: /opt/oracle/oradata/orcl/redo03.log9.Mon Nov 1915:38:50200710.Errors in file /opt/oracle/admin/orcl/bdump/orcl_p002_7917.trc:11.ORA-00600: internal error code, arguments: [6101], [0], [17], [0], [], [], [], []12.Mon Nov 1915:38:50200713.Errors in file /opt/oracle/admin/orcl/bdump/orcl_p000_7913.trc:14.ORA-00600: internal error code, arguments: [3020], [2], [882],[8389490], [], [], [], []15.ORA-10567: Redo is inconsistent with data block (file# 2, block# 882)16.ORA-10564: tablespace UNDOTBS117.ORA-01110: data file 2: '/opt/oracle/oradata/orcl/undotbs01.dbf'18.ORA-10560: block type 'KTU UNDO BLOCK'19.Mon Nov 1915:38:51200720.Errors in file /opt/oracle/admin/orcl/bdump/orcl_p000_7913.trc:21.ORA-00600: internal error code, arguments: [3020], [2], [882],[8389490], [], [], [], []22.ORA-10567: Redo is inconsistent with data block (file# 2, block# 882)23.ORA-10564: tablespace UNDOTBS124.ORA-01110: data file 2: '/opt/oracle/oradata/orcl/undotbs01.dbf'25.ORA-10560: block type 'KTU UNDO BLOCK'26.Mon Nov 1915:38:51200727.Errors in file /opt/oracle/admin/orcl/bdump/orcl_p002_7917.trc:28.ORA-10562: Error occurred while applying redo to data block (file# 1, block# 4568)29.ORA-10564: tablespace SYSTEM30.ORA-01110: data file 1: '/opt/oracle/oradata/orcl/system01.dbf'31.ORA-10561: block type 'TRANSACTION MANAGED INDEX BLOCK', data object# 57632.ORA-00600: internal error code, arguments: [6101], [0], [17], [0], [], [], [], []33.Mon Nov 1915:38:54200734.Errors in file /opt/oracle/admin/orcl/bdump/orcl_p001_7915.trc:35.ORA-00600: internal error code, arguments: [kddummy_blkchk], [1], [1658], [6101], [], [], [], []36.Mon Nov 1915:38:54200737.Errors in file /opt/oracle/admin/orcl/bdump/orcl_p001_7915.trc:38.ORA-10562: Error occurred while applying redo to data block (file# 1, block# 1658)39.ORA-10564: tablespace SYSTEM40.ORA-01110: data file 1: '/opt/oracle/oradata/orcl/system01.dbf'41.ORA-10561: block type 'TRANSACTION MANAGED DATA BLOCK', data object# 23742.ORA-00607: Internal error occurred while making a change to a data block43.ORA-00600: internal error code, arguments: [kddummy_blkchk], [1], [1658], [6101], [], [], [], []44.Mon Nov 1915:38:54200745.Media Recovery failed with error 1280146.ORA-283 signalled during: ALTER DATABASE RECOVER database ...从上面信息中抓取了一个信息:Oracle代码1.ORA-10562: Error occurred while applying redo to data block (file# 1, block# 1658)针对这个错误解决如下:Oracle代码1.ORA-10562: Error occurred while applying redo to data block (file# string, block# string)2.Cause: See other errors on error stack.3.Action: Investigate why the error occurred and how important isthe data block. Media and standby database recovery usually ca n continue if user allows recovery to corrupt this data block。
Oracle控制文件管理和恢复
1 查看控制文件信息SYS@ prod>select * from v$controlfile;目前三个控制文件(里面信息都一样)在同一个目录下,都在/dev/sda2磁盘上,很不安全,根据df显示的磁盘信息可以将控制文件放到test1目录下。
2 修改参数文件1)查看参数文件的位置,当前使用spfile启动2)SYS@ prod>alter system set control_files='/u01/oradata/prod/control01.ctl',2 '/u01/oradata/prod/control02.ctl','/u01/oradata/prod/control03.ctl' scope=spfile;System altered.3)修改参数文件使用vi打开initprod.ora 文件在contol_file 后面添加‘/test/contorl04.ctl’并保存退出。
4)关闭数据库SYS@ prod>shutdown immediate;5)复制控制文件[root@cuug ~]# cd /u01/oradata/prod[root@cuug prod]# cp ./control03.ctl /test1/control04.ctl6)验证控制文件7 )注意事项:a复制控制文件时应该是数据库关闭状态,否则在启库是容易造成数据库SCN号不一致导致数据库无法mountb 复制时最好使用oracle操作,如果使用root记得更改新文件夹的属组和属主。
(一)只有一个控制文件丢失1 删除一个控制文件[root@cuug prod]# rm /u01/oradata/prod/control01.ctlrm: remove regular file `/u01/oradata/prod/control01.ctl'? y[root@cuug prod]#2 关闭数据库SYS@ prod>shutdown immediate;注:没用控制文件在关闭数据库是容易造成数据库未完全关闭重启时会报ora-01012错误,解决方法是在操作系统层杀掉数据库相关进程,重启即可。
oracle 故障恢复案例
oracle 故障恢复案例Oracle故障恢复案例1. 数据库实例崩溃恢复某公司的Oracle数据库实例突然崩溃,导致所有业务无法正常运行。
经过专业技术人员的分析,发现是由于服务器硬件故障导致的。
为了恢复数据库,技术人员采取了备份恢复的方式,通过使用备份数据文件和重做日志文件,成功将数据库实例恢复到崩溃前的状态。
2. 数据文件损坏的恢复某公司的数据库中的一个数据文件损坏,导致部分数据无法正常访问。
为了解决这个问题,技术人员首先通过文件系统级别的工具检查数据文件的完整性,并确定了损坏的范围。
然后,他们使用备份数据文件和重做日志文件进行恢复,成功修复了损坏的数据文件,并使数据库恢复正常。
3. 表空间故障的恢复某公司的数据库中的一个表空间突然出现故障,导致表空间中的所有表无法访问。
为了解决这个问题,技术人员首先通过Oracle的故障自诊断工具诊断表空间故障的原因,并确定了故障的范围。
然后,他们使用备份的表空间文件和重做日志文件进行恢复,成功修复了故障的表空间,并使其正常运行。
4. 数据库日志文件损坏的恢复某公司的数据库日志文件突然损坏,导致数据库无法正常启动。
为了恢复数据库,技术人员首先检查了日志文件的完整性,并确定了损坏的范围。
然后,他们使用备份的日志文件进行恢复,成功修复了损坏的日志文件,并使数据库恢复正常。
5. 控制文件丢失的恢复某公司的数据库控制文件丢失,导致数据库无法正常启动。
为了解决这个问题,技术人员首先通过文件系统级别的工具检查控制文件的完整性,并确定了丢失的范围。
然后,他们使用备份的控制文件进行恢复,成功恢复了丢失的控制文件,并使数据库正常启动。
6. 数据库块损坏的恢复某公司的数据库中的一个数据块突然损坏,导致数据库无法正常读取该块的数据。
为了解决这个问题,技术人员首先通过Oracle的故障自诊断工具诊断数据块故障的原因,并确定了损坏的范围。
然后,他们使用备份的数据块进行恢复,成功修复了损坏的数据块,并使数据库恢复正常。
嘉为IT培训Oracle g控制文件的恢复
Oracle 10g控制文件的恢复李冠霖:Oracel数据库工程师Oracle数据库技术专家,Oracle认证开发专家,Oracle认证专家(OCP),专注于企业Oracle数据库系统的管理与开发、性能优化、商业智能等方面的技术培训与顾问咨询服务。
现为嘉为IT培训学院企业服务咨询顾问【前言】控制文件(Control File)是Oracle的重要物理文件之一,它记录了数据库的名字、数据文件的位置等信息。
控制文件的重要性在于,一旦控制文件损坏,数据库将会宕机,无论其是否进行多路复用,当其发生损坏后一旦数据库试图读写损坏的控制文件(这种操作是很频繁,例如日志切换)都会导致数据库挂起。
对此,当控制文件出现损坏,该如何进行恢复?【正文】操作环境:windows server 2003 oracle10g一损坏单个控制文件情况:损坏单个控制文件是比较容易恢复的,因为一般的数据库系统,控制文件不是一个,而且所有控制文件都互为镜像,只需拷贝一个好的控制文件替换损坏的控制文件就可以了。
具体以下操作:1.拷贝一个好的控制文件替换坏的控制文件;------如:D:\oracle\product\10.2.0\oradata\orcl目录下2.重新启动oracle数据库;------SQL>startup open;二损坏全部控制文件情况:一般情况下很难出现损坏全部控制文件,但出现这样的情况(如人为损坏),可以通过rman备份或者创建控制文件来进行恢复;具体以下操作:第一种方法:通过rman备份来恢复控制文件通常我们都会使用rman来备份每天的oracle数据,其中有个选项CONFIGURE CONTROLFILE AUTOBACKUP ON;-------开启控制文件自动备份CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '指定存放路径';--------控制文件备份的路径如果启动该项并执行rman备份,这时可以通过rman备份来恢复损坏的控制文件;(如果没开启控制文件自动备份,请看第二种方法):1.在命令行运行>rman target /2.RMAN>startup nomount;3.RMAN>set dbid=1332475275 ---目标数据库控制文件丢失, 需要记住dbid4.RMAN> restore controlfile from autobackup;或RMAN> restore controlfile from ‘控制文件备份文件路径’5. RMAN>alter database mount;6. RMAN> recover database;7. RMAN>alter database open resetlogs;8. RMAN>backup database;----resetlogs后进行一次全备!第二种方法:没有可用的备份控制文件,通过重建控制文件来恢复;注意事项:重建控制文件用于恢复全部数据文件的损坏,需要注意其书写的正确性,保证包含了所有的数据文件与联机日志,同时注意可在装载数据库的情况下执行:SQL> alter database backup controlfile to trace;获取控制文件脚本(D:\oracle\product\10.2.0\admin\orcl\udump):新建一个名为controlfile.sql文本,将以上黄色部分拷贝到文本上保存;1.启动数据库到nomount状态:SQL>startup nomount;2. 将controlfile.sql拷贝到oracle目录下:D:\oracle\product\10.2.0\db_1 并执行SQL> @?\controlfile3. SQL>alter database open resetlogs;控制文件恢复完成。
ORACLE 数据库故障解决方案
ORACLE 数据库故障解决方案一、概述ORACLE 数据库是一种关系型数据库管理系统,广泛应用于企业级应用中。
然而,在使用过程中,可能会遇到各种故障情况,例如数据库无法启动、数据丢失、性能下降等。
为了保证数据库的稳定运行,需要及时解决这些故障。
本文将介绍一些常见的 ORACLE 数据库故障解决方案。
二、数据库无法启动1. 检查数据库实例是否正常启动。
使用命令 `ps -ef | grep pmon` 查看数据库实例进程是否存在。
如果不存在,可能是由于数据库实例未正常启动导致的故障。
解决方案:使用 `sqlplus / as sysdba` 命令登录到数据库,执行 `startup` 命令启动数据库实例。
2. 检查数据库控制文件是否损坏。
控制文件是 ORACLE 数据库的重要组成部份,记录了数据库的结构信息。
如果控制文件损坏,数据库将无法启动。
解决方案:使用 `ls -l` 命令检查控制文件的状态。
如果控制文件状态为`MISSING` 或者 `OFFLINE`,则需要恢复控制文件。
可以使用备份的控制文件替换损坏的控制文件,并执行 `startup` 命令启动数据库。
三、数据丢失1. 检查数据库备份情况。
数据库备份是防止数据丢失的重要手段。
如果数据库备份完备,可以通过备份文件进行数据恢复。
解决方案:使用 `rman` 工具进行数据库恢复。
首先,使用 `list backup` 命令查看备份文件的信息。
然后,使用 `restore database` 命令恢复数据库。
2. 检查数据文件是否损坏。
数据文件是 ORACLE 数据库中存储数据的文件。
如果数据文件损坏,可能导致数据丢失。
解决方案:使用 `select file#, name, status from v$datafile;` 命令检查数据文件的状态。
如果数据文件状态为 `RECOVER`,则需要进行数据恢复。
可以使用备份的数据文件替换损坏的数据文件,并执行 `recover datafile <file#>` 命令进行数据恢复。
Oracle数据库基于用户管理的控制文件的备份与恢复
时间:2010.1.6 来源:网络编辑:联动北方技术论坛在Oracle数据库中,控制文件是非常重要的。
它用于记录和维护数据库。
当恢复数据库时,服务器进程和后台进程需要从控制文件中读取各种备份相关的信息。
如果控制文件损坏,则会导致这些备份信息的丢失。
尽管使用多元化控制文件可以防止控制文件损坏,但因为控制文件的重要性,应该定期备份控制文件。
当数据库配置发生改变时,一定要备份控制文件。
涉及到数据库配置改变的命令:1.alter database [add|drop] logfile2.3.alter database [add|drop] logfile member4.5.alter database [add|drop] logfile group6.7.alter database [noarchivelog|archivelog]8.9.alter database rename file10.11.create tablespace12.13.alter tablespace [add|rename] datafile14.15.alter tablespace [read write|read only]16.17.drop tablespace控制文件的备份,三种方式1)使用OS命令进行拷贝1)open状态下,使用alter database命令生成控制文件副本2)open状态下,使用alter database backup controlfile to trace命令将控制文件备份到跟踪文件控制文件的恢复,两种方式1)mount状态下,使用RECOVER DATABASE USING BACKUP CONTROLFILE2)mount状态下,生成跟踪文件并进行恢复2--2示例:1.[oracle@localhost ~]$ rlsqlplus / as sysdba2.3.SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 8月 1 21:40:03 20114.5.Copyright (c) 1982, 2005, Oracle. All rights reserved.6.7.Connected to an idle instance.8.9.SQL> startup10.11.ORACLE instance started.12.13.Total System Global Area 528482304 bytes14.15.Fixed Size 1220360 bytes16.17.Variable Size 176161016 bytes18.19.Database Buffers 343932928 bytes20.21.Redo Buffers 7168000 bytes22.23.Database mounted.24.25.Database opened.--open状态下生成控制文件副本1.SQL> alter database backup controlfile to2.3. 2 '/oracle/10g/oracle/bakup/database/oralife.ctl';4.5.alter database backup controlfile to6.7.*8.9.ERROR at line 1:10.11.ORA-01580: error creating control backup file12.13./oracle/10g/oracle/bakup/database/oralife.ctl14.15.ORA-27038: created file already exists16.17.Additional information: 118.19.SQL> alter database backup controlfile to20.21. 2 '/oracle/10g/oracle/bakup/database/oralife.ctl' reuse; --reuse用于覆盖原有控制文件副本23.Database altered.--手动删除所有控制文件模拟文件丢失1.SQL> ho rm /oracle/10g/oracle/product/10.2.0/oradata/oralife/*.ctl;--使用evan登录,并添加数据1.SQL> conn evan/evan2.3.Connected.4.5.SQL> select * from t_evan;6.7.TEXT8.9.--------------------------------------------------------------------------------10.11.oracle12.13.java14.15.spring16.17.hibernate18.19.hibernate20.21.SQL> insert into t_evan values('added');22.23. 1 row created.24.25.SQL> commit;26.mit complete.28.29.SQL> conn / as sysdba30.31.Connected.32.33.SQL> shutdown immediate34.35.ORA-00210: cannot open the specified control file36.37.ORA-00202: control file: '/oracle/10g/oracle/product/10.2.0/oradata/oralife/control01.ctl'39.ORA-27041: unable to open file40.41.Linux Error: 2: No such file or directory42.43.Additional information: 344.45.SQL> shutdown abort46.47.ORACLE instance shut down.--alter_oralife.log出现这样的信息:1.Mon Aug 1 23:13:51 20112.3.ORA-00202: control file: '/oracle/10g/oracle/product/10.2.0/oradata/oralife/control01.ctl'4.5.ORA-27037: unable to obtain file status6.7.Linux Error: 2: No such file or directory8.9.Additional information: 3--拷贝控制文件到目标路径1.SQL>ho cp /oracle/10g/oracle/bakup/database/oralife.ctl /oracle/10g/oracle/product/10.2.0/oradata/oralife/control01.ctl2.3.SQL> alter system set control_files='/oracle/10g/oracle/product/10.2.0/oradata/oralife/control01.ctl'scope = spfile; --修改control_files参数,指定可用的控制文件4.5.System altered.6.7.SQL> startup force mount8.9.ORACLE instance started.10.11.Total System Global Area 528482304 bytes12.13.Fixed Size 1220360 bytes14.15.Variable Size 138412280 bytes16.17.Database Buffers 381681664 bytes18.19.Redo Buffers 7168000 bytes20.21.Database mounted.--生成trace文件1.SQL> alter database backup controlfile to trace noresetlogs;2.3.Database altered.4.5.SELECT c.VALUE || '/' || d.instance_name || '_ora_' || a.spid || '.trc' TRACE6.7.FROM v$process a, v$session b, v$parameter c, v$instance d8.9.WHERE a.addr = b.paddr10.11.AND b.audsid = USERENV ('sessionid')12.13.AND = 'user_dump_dest';14.15.TRACE16.17.--------------------------------------------------------------------------------18.19./oracle/10g/oracle/product/10.2.0/db_1/admin/oralife/udump/oralife_ora_4558.trc20.21.SQL> shutdown immediate22.23.ORA-01109: database not open24.25.Database dismounted.26.27.ORACLE instance shut down.--打开trace文件,去掉注释,在shutdown状态下执行脚本,创建控制文件--用evan登录验证数据1.SQL> conn evan/evan2.3.Connected.4.5.SQL> select * from t_evan;6.7.TEXT8.9.--------------------------------------------------------------------------------10.11.oracle12.13.java14.15.spring16.17.hibernate18.19.hibernate20.21.added22.23. 6 rows selected.可见数据没有丢失。
损坏控制文件的恢复方法
一般情况下是利用控制文件的副本,我们创建数据库的时候不是一般都建立3个控制文件吗,这是用于进行冗余保护的,如果只有一个控制文件是好的,那么我们只需要将已损坏的控制文件删除,然后将好的这个控制文件复制到已损坏的控制文件的目录下,重命名成已损坏的控制文件即可(注意一下复制的位置,如果目标文件夹所在的磁盘已经损坏的情况下,我们就得把控制文件复制到好的磁盘上,并且还要修改control_files参数重新定位控制文件的位置)。
还有一种情况就是所有控制文件都损坏了,那么就得利用控制文件的备份进行恢复。
所以,我们在数据库创建好后第一件事就是对控制文件进行备份,在数据库物理结构变化之后也得备份控制文件。
使用命令ALTER DATABASE BACKUP CONTROLFILE TO TRACE,会有一个转储文件会放在user_dump_dest参数定义的目录中,里面有重建控制文件的脚步,按照转储文件里面写的做就可以了。
一、损坏单个控制文件损坏单个控制文件是比较容易恢复的,因为一般的数据库系统,控制文件都不是一个,而且所有的控制文件都互为镜相,只要拷贝一个好的控制文件替换坏的控制文件就可以了。
1、控制文件损坏,最典型的就是启动数据库出错,不能mount数据库SQL>startupORA-00205: error in identifying controlfile, check alert log for more info查看报警日志文件,有如下信息alter database mountMon May 26 11:59:52 2003ORA-00202: controlfile: 'D:Oracleoradatachencontrol01.ctl'ORA-27041: unable to open fileOSD-04002: unable to open fileO/S-Error: (OS 2) 系统找不到指定的文件。
控制文件损坏的恢复
一、损坏单个控制文件损坏单个控制文件是比较容易恢复的,因为一般的数据库系统,控制文件都不是一个,而且所有的控制文件都互为镜相,只要拷贝一个好的控制文件替换坏的控制文件就可以了。
1、控制文件损坏,最典型的就是启动数据库出错,不能mount数据库SQL>startupORA-00205: error in identifying controlfile, check alert logfor more info查看报警日志文件,有如下信息alter database mountMon May 26 11:59:52 2003ORA-00202: controlfile: 'D:Oracleoradatachencontrol01.ctl' ORA-27041: unable to open fileOSD-04002: unable to open fileO/S-Error: (OS 2) 系统找不到指定的文件。
2、停止数据库SQL>shutdown immediate3、拷贝一个好的控制文件替换坏的控制文件或修改init.ora中的控制文件参数,取消这个坏的控制文件。
4、重新启动数据SQL>startup说明:1、损失单个控制文件是比较简单的,因为数据库中所有的控制文件都是镜相的,只需要简单的拷贝一个好的就可以了2、建议镜相控制文件在不同的磁盘上3、建议多做控制文件的备份,长期保留一份由alter databasebackup control file to trace产生的控制文件的文本备份二、损坏全部控制文件损坏多个控制文件,或者人为的删除了所有的控制文件,通过控制文件的复制已经不能解决问题,这个时候需要重新建立控制文件。
同时注意,alter database backup control file to trace可以产生一个控制文件的文本备份。
以下是详细重新创建控制文件的步骤1、关闭数据库SQL>shutdown immediate;2、删除所有控制文件,模拟控制文件的丢失3、启动数据库,出现错误,并不能启动到mount下SQL>startupORA-00205: error in identifying controlfile, check alert logfor more info查看报警日志文件,有如下信息alter database mountMon May 26 11:53:15 2003ORA-00202: controlfile: 'D:Oracleoradatachencontrol01.ctl' ORA-27041: unable to open fileOSD-04002: unable to open fileO/S-Error: (OS 2) 系统找不到指定的文件。
数据库REDOLOG和CONTROLFILE同时损坏的应对措施
数据库REDOLOG和CONTROLFILE同时损坏的应对措施根据生产环境中一次实际的故障进行重现,并整理了套处理流程。
模拟的是当ORACLE数据库REDO_LOG和CONTROL_FILE同时丢失的场景,以及后续一系列的应对措施。
其中有些细微的地方可能我的理解不是很透彻,但大体流程无碍且经过实际的多次的测试。
1、因为重做日志文件和控制文件丢失,那么只能对数据库进行不完全恢复了。
既然是恢复,肯定得存在历史的备份数据,一份旧的控制文件备份和归档日志备份:RMAN> backup current controlfile;启动 backup 于 05-10月-13使用通道 ORA_DISK_1通道 ORA_DISK_1: 正在启动全部数据文件备份集通道 ORA_DISK_1: 正在指定备份集内的数据文件备份集内包括当前控制文件通道 ORA_DISK_1: 正在启动段 1 于 05-10月-13通道 ORA_DISK_1: 已完成段 1 于 05-10月-13段句柄=G:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\SHADOW\ BACKUPSET\2013_10_05\O1_MF_NCNNF_TAG20131005T185036 _94ZVR900_.BKP 标记=TAG20131005T185036通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:04完成 backup 于 05-10月-13RMAN> backup archivelog all;启动 backup 于 05-10月-13当前日志已存档使用通道 ORA_DISK_1通道 ORA_DISK_1: 正在启动归档日志备份集通道 ORA_DISK_1: 正在指定备份集内的归档日志输入归档日志线程=1 序列=3 RECID=17 STAMP=828039216 输入归档日志线程=1 序列=4 RECID=19 STAMP=828039228 输入归档日志线程=1 序列=5 RECID=21 STAMP=828039232 输入归档日志线程=1 序列=6 RECID=23 STAMP=828039279 通道 ORA_DISK_1: 正在启动段 1 于 05-10月-13通道 ORA_DISK_1: 已完成段 1 于 05-10月-13段句柄=G:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\SHADOW\ BACKUPSET\2013_10_05\O1_MF_ANNNN_TAG20131005T18544 0_94ZVZTFO_.BKP 标记=TAG20131005T185440通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01完成 backup 于 05-10月-132、此时就可以关闭数据库,并手动删除相关目录下的所有重做日志文件及控制文件,物理删除即可,步骤省略:SQL> shutdown immediate;数据库已经关闭。
Oracle 控制文件的备份与恢复
Oracle 控制文件的备份与恢复为了提高数据库的可靠性,降低由于丢失控制文件而造成灾难性后果的可能性,DBA 需要经常对控制文件进行备份。
特别是当修改了数据库结构之后,需要立该对控制文件进行备份。
备份控制文件是由ALTER DA TABASE BACKUP CONTROLFILE语句完成的。
有两种备份方式:一种是将控制文件备份为二进制文件;另一种是备份为脚本文件。
例如,下面的语句可以将控制文件备份为一个二进制文件,即复制当前的控制文件:SQL> alter database backup controlfile2 to 'd:\backup_controlfile\control_08-05-04.bkp';数据库已更改。
使用下面的语句可以将控制文件备份为可读的文本文件:SQL> alter database backup controlfile to trace;数据库已更改。
将控制文件以文本形式备份时,所创建的文件也称为跟踪文件,该文件实际上是一个SQL脚本,可以利用它来重新创建新的控制文件。
跟踪文件的存放位置由参数USER_DUMP_DEST决定。
SQL> show parameter user_dump_destNAME TYPE V ALUE------------------------- ----------- ------------------------------user_dump_dest string d:\app\Administrator\diag\rdbms\orcl\orcl\trace创建了控制文件的备份后,即使发生磁盘物理损坏,只需要修改初始化参数CONTROL_FILES的值,使它指向备份的控制文件,然后就可以重新启动数据库。
现在假设参数CONTROL_FILES所指定的某个控制文件被损坏,但是存在这个控制文件的一个复合副本,则可以采用下面的方法恢复:(1)关闭数据库。
总结了10种 Oracle 文件损坏及恢复的过程
总结了10种Oracle 文件损坏及恢复的过程2008年04月09日星期三22:49一、数据库服务器基本情况OS:RHEL 3CPU:4个Intel(R) Xeon(TM) MP CPU 2.70GHzMem:8GSwap:16GDisk:120GOracle Database 10g Enterprise Edition Release 10.1.0.3.0二、备份方式数据库以archive模式运行,RMAN多级增量备份。
策略如下:设置控制文件自动备份。
每三个月做一个数据库的全备份(包括所有得数据库和只读表空间),并备份归档日志。
每一个月做一次零级备份(不包含只读表空间),并备份归档日志。
每周做一次一级备份,并备份归档日志。
每天做一次二级备份,并备份归档日志。
三、恢复案例所有恢复的前提:已经做过数据库全备份(包括归档日志),控制文件和spfile自动备份。
1.损坏一个数据文件(1)故障模拟删除数据文件:rm /u02/oradata/dbnms/users01.dbf关闭数据库:shutdown immediate;ORA-01116: error in opening database file 4ORA-01110: data file 4: '/u02/oradata/dbnms/users01.dbf'ORA-27041: unable to open fileLinux Error: 2: No such file or directoryAdditional information: 3强行关闭:sutdown abort;启动数据库:startup;ORA-01157: cannot identify/lock data file 4 - see DBWR trace fileORA-01110: data file 4: '/u02/oradata/dbnms/users01.dbf'(2)恢复步骤rman target sys@dbnms catalog rmanuser@catarun{allocate channel c1 type disk;restore datafile 4;recover datafile 4;sql 'alter database datafile 4 online';sql 'alter database open';release channel c1;}sqlplus sys as sysdbaselect instance_name,status from v$instance;INSTANCE_NAME STA TUS---------------- ------------dbnms OPEN恢复成功2.损坏全部数据文件(1)故障模拟删除数据文件:rm /u02/oradata/dbnms/*.dbf强行关闭:sutdown abort;启动数据库:startup;ORA-01157: cannot identify/lock data file 1 - see DBWR trace fileORA-01110: data file 1: '/u02/oradata/dbnms/system01.dbf'(2)恢复步骤rman target sys@dbnms catalog rmanuser@catarun{allocate channel c1 type disk;restore database;recover database;sql 'alter database open';release channel c1;}sqlplus sys as sysdbaselect instance_name,status from v$instance;INSTANCE_NAME STA TUS---------------- ------------dbnms OPEN恢复临时文件:alter database tempfile '/u02/oradata/dbnms/temp01.dbf' drop;alter tablespace temp add tempfile '/u02/oradata/dbnms/temp01.dbf' size 50M autoextend on next 5M maxsize unlimited;恢复成功3.损坏非当前联机日志成员(1)故障模拟删除日志文件:rm /u02/oradata/dbnms/redo01.log关闭数据库:shutdown immediate;启动数据库:startup;select * from v$logfile;GROUP# STATUS TYPE MEMBER IS_---------- ------- ------- ------------------------------ ---3 ONLINE /u02/oradata/dbnms/redo03.log NO2 STALE ONLINE /u02/oradata/dbnms/redo02.log NO1 INV ALID ONLINE /u02/oradata/dbnms/redo01.log NO1 STALE ONLINE /u02/oradata/dbnms/redo11.log NO1 STALE ONLINE /u02/oradata/dbnms/redo21.log NO2 STALE ONLINE /u02/oradata/dbnms/redo12.log NO3 ONLINE /u02/oradata/dbnms/redo13.log NO2 STALE ONLINE /u02/oradata/dbnms/redo22.log NO3 ONLINE /u02/oradata/dbnms/redo23.log NO4 ONLINE /u02/oradata/dbnms/redo31.log NO4 ONLINE /u02/oradata/dbnms/redo32.log NOGROUP# STATUS TYPE MEMBER IS_---------- ------- ------- ------------------------------ ---4 ONLINE /u02/oradata/dbnms/redo33.log NO(2)恢复步骤alter database drop logfile member '/u02/oradata/dbnms/redo01.log';alter database add logfile member '/u02/oradata/dbnms/redo01.log' to group 1; 恢复成功4.损坏非当前联机日志组(1)故障模拟删除日志文件组1的所有文件:rm /u02/oradata/dbnms/redo01.logrm /u02/oradata/dbnms/redo11.logrm /u02/oradata/dbnms/redo21.log关闭数据库:shutdown immediate;启动数据库:startup;Database mounted.ORA-00313: open failed for members of log group 1 of thread 1ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo11.log'ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo21.log'ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo01.log'(2)恢复步骤alter database clear logfile group 1;如果该日志组还没有归档,则用:alter database clear unarchived logfile group 1;打开数据库:alter database open;恢复成功5.损坏全部联机日志(1)故障模拟删除日志文件:rm /u02/oradata/dbnms/*.log关闭数据库:shutdown immediate;启动数据库:startup;Database mounted.ORA-00313: open failed for members of log group 1 of thread 1ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo11.log'ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo21.log'ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo01.log'(2)恢复步骤shutdown immediate;create pfile from spfile;cd $ORACLE_HOME/dbsvi initdbnms.ora加一个参数:_allow_resetlogs_corruption=truecreate spfile from pfile;startup;Database mounted.ORA-00313: open failed for members of log group 1 of thread 1ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo11.log' ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo21.log' ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo01.log' recover database until cancel;alter database open resetlogs;同步catalog:rman target sys@dbnms catalog rmanuser@catareset database;new incarnation of database registered in recovery catalogstarting full resync of recovery catalogfull resync complete做一个full备份:/home/oracle/dbbat/backup_full.sh恢复成功6.损坏一个控制文件(1)故障模拟删除控制文件:rm /u02/oradata/dbnms/control01.ctl关闭数据库:shutdown immediate;ORA-00210: cannot open the specified controlfileORA-00202: controlfile: '/u02/oradata/dbnms/control01.ctl'ORA-27041: unable to open fileLinux Error: 2: No such file or directoryAdditional information: 3(2)恢复步骤拷贝一个好的控制文件:cp control02.ctl control01.ctlshutdown immediate;startup;Database mounted.ORA-01122: database file 1 failed verification checkORA-01110: data file 1: '/u02/oradata/dbnms/system01.dbf'ORA-01207: file is more recent than controlfile - old controlfilerman target sys@dbnms catalog rmanuser@catarun{allocate channel c1 type disk;restore database;recover database;sql 'alter database open';release channel c1;}RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03009: failure of sql command on default channel at 09/08/2005 17:29:04RMAN-11003: failure during parse/execution of SQL statement: alter database openORA-00322: log 3 of thread 1 is not current copyORA-00312: online log 3 thread 1: '/u02/oradata/dbnms/redo03.log'ORA-00312: online log 3 thread 1: '/u02/oradata/dbnms/redo13.log'ORA-00312: online log 3 thread 1: '/u02/oradata/dbnms/redo23.log'alter database clear unarchived logfile group 3;alter database open;恢复成功7.损坏全部控制文件(1)故障模拟删除控制文件:rm /u02/oradata/dbnms/control01.ctl关闭数据库:shutdown immediate;ORA-00210: cannot open the specified controlfileORA-00202: controlfile: '/u02/oradata/dbnms/control01.ctl'ORA-27041: unable to open fileLinux Error: 2: No such file or directoryAdditional information: 3(2)恢复步骤shutdown abort;startup nomount;rman target sys catalog rmanuser@catarun{allocate channel c1 type disk;restore controlfile;restore database;sql 'alter database mount';recover database;sql 'alter database open resetlogs';release channel c1;}RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of recover command at 09/08/2005 17:43:31RMAN-06054: media recovery requesting unknown log: thread 1 seq 9 lowscn 670233alter database open resetlogs;做一个full备份:/home/oracle/dbbat/backup_full.sh恢复成功8.损坏临时数据文件(1)故障模拟删除临时数据文件:rm /u02/oradata/dbnms/temp01.dbf关闭数据库:shutdown immediate;启动数据库:startup;(2)恢复步骤alter database tempfile '/u02/oradata/dbnms/temp01.dbf' drop;ERROR at line 1:ORA-01516: nonexistent log file, datafile, or tempfile"/u02/oradata/dbnms/temp01.dbf"alter tablespace temp add tempfile '/u02/oradata/dbnms/temp01.dbf' size 50M autoextend on next 5M maxsize unlimited;恢复成功9.损坏spfile参数文件(1)故障模拟删除spfile文件:rm $ORACLE_HOME/dbs/spfiledbnms.ora关闭数据库:shutdown immediate;启动数据库:startup;(2)恢复步骤startup nomount;rman target sys catalog rmanuser@catarestore spfile;shutdown immediate;startup;恢复成功10.损坏全部文件(包括全部数据文件、控制文件、临时数据文件、联机日志文件)(1)故障模拟删除全部文件:rm /u02/oradata/dbnms/*关闭数据库:shutdown immediate;ORA-03113: end-of-file on communication channel(2)恢复步骤sqlplus sys as sysdbastartup nomount;rman target sys catalog rmanuser@cata还原控制文件:restore controlfile;还原数据库:restore database;mount 数据库:alter database mount;恢复数据库:recover database;RMAN-00571: ===========================================================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571: ===========================================================RMAN-03002: failure of recover command at 09/09/2005 10:33:13RMAN-06054: media recovery requesting unknown log: thread 1 seq 19 lowscn 718284用resetlogs方式打开数据库:alter database open resetlogs;database openednew incarnation of database registered in recovery catalogstarting full resync of recovery catalogfull resync complete重建临时文件:sqlplus sys as sysdbaalter database tempfile '/u02/oradata/dbnms/temp01.dbf' drop;ERROR at line 1:ORA-01516: nonexistent log file, datafile, or tempfile"/u02/oradata/dbnms/temp01.dbf"alter tablespace temp add tempfile '/u02/oradata/dbnms/temp01.dbf' size 50M autoextend on next 5M maxsize unlimited;执行一次全库备份:/home/oracle/dbbat/backup_full.sh恢复成功。
总结了10种_Oracle_文件损坏及恢复的过程
总结了10种Oracle 文件损坏及恢复的过程2008年04月09日星期三22:49一、数据库服务器基本情况OS:RHEL 3CPU:4个Intel(R) Xeon(TM) MP CPU 2.70GHzMem:8GSwap:16GDisk:120GOracle Database 10g Enterprise Edition Release 10.1.0.3.0二、备份方式数据库以archive模式运行,RMAN多级增量备份。
策略如下:设置控制文件自动备份。
每三个月做一个数据库的全备份(包括所有得数据库和只读表空间),并备份归档日志。
每一个月做一次零级备份(不包含只读表空间),并备份归档日志。
每周做一次一级备份,并备份归档日志。
每天做一次二级备份,并备份归档日志。
三、恢复案例所有恢复的前提:已经做过数据库全备份(包括归档日志),控制文件和spfile自动备份。
1.损坏一个数据文件(1)故障模拟删除数据文件:rm /u02/oradata/dbnms/users01.dbf关闭数据库:shutdown immediate;ORA-01116: error in opening database file 4ORA-01110: data file 4: '/u02/oradata/dbnms/users01.dbf'ORA-27041: unable to open fileLinux Error: 2: No such file or directoryAdditional information: 3强行关闭:sutdown abort;启动数据库:startup;ORA-01157: cannot identify/lock data file 4 - see DBWR trace fileORA-01110: data file 4: '/u02/oradata/dbnms/users01.dbf'(2)恢复步骤rman target sys@dbnms catalog rmanuser@catarun{allocate channel c1 type disk;restore datafile 4;recover datafile 4;sql 'alter database datafile 4 online';sql 'alter database open';release channel c1;}sqlplus sys as sysdbaselect instance_name,status from v$instance;INSTANCE_NAME STA TUS---------------- ------------dbnms OPEN恢复成功2.损坏全部数据文件(1)故障模拟删除数据文件:rm /u02/oradata/dbnms/*.dbf强行关闭:sutdown abort;启动数据库:startup;ORA-01157: cannot identify/lock data file 1 - see DBWR trace fileORA-01110: data file 1: '/u02/oradata/dbnms/system01.dbf'(2)恢复步骤rman target sys@dbnms catalog rmanuser@catarun{allocate channel c1 type disk;restore database;recover database;sql 'alter database open';release channel c1;}sqlplus sys as sysdbaselect instance_name,status from v$instance;INSTANCE_NAME STA TUS---------------- ------------dbnms OPEN恢复临时文件:alter database tempfile '/u02/oradata/dbnms/temp01.dbf' drop;alter tablespace temp add tempfile '/u02/oradata/dbnms/temp01.dbf' size 50M autoextend on next 5M maxsize unlimited;恢复成功3.损坏非当前联机日志成员(1)故障模拟删除日志文件:rm /u02/oradata/dbnms/redo01.log关闭数据库:shutdown immediate;启动数据库:startup;select * from v$logfile;GROUP# STATUS TYPE MEMBER IS_---------- ------- ------- ------------------------------ ---3 ONLINE /u02/oradata/dbnms/redo03.log NO2 STALE ONLINE /u02/oradata/dbnms/redo02.log NO1 INV ALID ONLINE /u02/oradata/dbnms/redo01.log NO1 STALE ONLINE /u02/oradata/dbnms/redo11.log NO1 STALE ONLINE /u02/oradata/dbnms/redo21.log NO2 STALE ONLINE /u02/oradata/dbnms/redo12.log NO3 ONLINE /u02/oradata/dbnms/redo13.log NO2 STALE ONLINE /u02/oradata/dbnms/redo22.log NO3 ONLINE /u02/oradata/dbnms/redo23.log NO4 ONLINE /u02/oradata/dbnms/redo31.log NO4 ONLINE /u02/oradata/dbnms/redo32.log NOGROUP# STATUS TYPE MEMBER IS_---------- ------- ------- ------------------------------ ---4 ONLINE /u02/oradata/dbnms/redo33.log NO(2)恢复步骤alter database drop logfile member '/u02/oradata/dbnms/redo01.log';alter database add logfile member '/u02/oradata/dbnms/redo01.log' to group 1; 恢复成功4.损坏非当前联机日志组(1)故障模拟删除日志文件组1的所有文件:rm /u02/oradata/dbnms/redo01.logrm /u02/oradata/dbnms/redo11.logrm /u02/oradata/dbnms/redo21.log关闭数据库:shutdown immediate;启动数据库:startup;Database mounted.ORA-00313: open failed for members of log group 1 of thread 1ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo11.log'ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo21.log'ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo01.log'(2)恢复步骤alter database clear logfile group 1;如果该日志组还没有归档,则用:alter database clear unarchived logfile group 1;打开数据库:alter database open;恢复成功5.损坏全部联机日志(1)故障模拟删除日志文件:rm /u02/oradata/dbnms/*.log关闭数据库:shutdown immediate;启动数据库:startup;Database mounted.ORA-00313: open failed for members of log group 1 of thread 1ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo11.log'ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo21.log'ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo01.log'(2)恢复步骤shutdown immediate;create pfile from spfile;cd $ORACLE_HOME/dbsvi initdbnms.ora加一个参数:_allow_resetlogs_corruption=truecreate spfile from pfile;startup;Database mounted.ORA-00313: open failed for members of log group 1 of thread 1ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo11.log' ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo21.log' ORA-00312: online log 1 thread 1: '/u02/oradata/dbnms/redo01.log' recover database until cancel;alter database open resetlogs;同步catalog:rman target sys@dbnms catalog rmanuser@catareset database;new incarnation of database registered in recovery catalogstarting full resync of recovery catalogfull resync complete做一个full备份:/home/oracle/dbbat/backup_full.sh恢复成功6.损坏一个控制文件(1)故障模拟删除控制文件:rm /u02/oradata/dbnms/control01.ctl关闭数据库:shutdown immediate;ORA-00210: cannot open the specified controlfileORA-00202: controlfile: '/u02/oradata/dbnms/control01.ctl'ORA-27041: unable to open fileLinux Error: 2: No such file or directoryAdditional information: 3(2)恢复步骤拷贝一个好的控制文件:cp control02.ctl control01.ctlshutdown immediate;startup;Database mounted.ORA-01122: database file 1 failed verification checkORA-01110: data file 1: '/u02/oradata/dbnms/system01.dbf'ORA-01207: file is more recent than controlfile - old controlfilerman target sys@dbnms catalog rmanuser@catarun{allocate channel c1 type disk;restore database;recover database;sql 'alter database open';release channel c1;}RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03009: failure of sql command on default channel at 09/08/2005 17:29:04RMAN-11003: failure during parse/execution of SQL statement: alter database openORA-00322: log 3 of thread 1 is not current copyORA-00312: online log 3 thread 1: '/u02/oradata/dbnms/redo03.log'ORA-00312: online log 3 thread 1: '/u02/oradata/dbnms/redo13.log'ORA-00312: online log 3 thread 1: '/u02/oradata/dbnms/redo23.log'alter database clear unarchived logfile group 3;alter database open;恢复成功7.损坏全部控制文件(1)故障模拟删除控制文件:rm /u02/oradata/dbnms/control01.ctl关闭数据库:shutdown immediate;ORA-00210: cannot open the specified controlfileORA-00202: controlfile: '/u02/oradata/dbnms/control01.ctl'ORA-27041: unable to open fileLinux Error: 2: No such file or directoryAdditional information: 3(2)恢复步骤shutdown abort;startup nomount;rman target sys catalog rmanuser@catarun{allocate channel c1 type disk;restore controlfile;restore database;sql 'alter database mount';recover database;sql 'alter database open resetlogs';release channel c1;}RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of recover command at 09/08/2005 17:43:31RMAN-06054: media recovery requesting unknown log: thread 1 seq 9 lowscn 670233alter database open resetlogs;做一个full备份:/home/oracle/dbbat/backup_full.sh恢复成功8.损坏临时数据文件(1)故障模拟删除临时数据文件:rm /u02/oradata/dbnms/temp01.dbf关闭数据库:shutdown immediate;启动数据库:startup;(2)恢复步骤alter database tempfile '/u02/oradata/dbnms/temp01.dbf' drop;ERROR at line 1:ORA-01516: nonexistent log file, datafile, or tempfile"/u02/oradata/dbnms/temp01.dbf"alter tablespace temp add tempfile '/u02/oradata/dbnms/temp01.dbf' size 50M autoextend on next 5M maxsize unlimited;恢复成功9.损坏spfile参数文件(1)故障模拟删除spfile文件:rm $ORACLE_HOME/dbs/spfiledbnms.ora关闭数据库:shutdown immediate;启动数据库:startup;(2)恢复步骤startup nomount;rman target sys catalog rmanuser@catarestore spfile;shutdown immediate;startup;恢复成功10.损坏全部文件(包括全部数据文件、控制文件、临时数据文件、联机日志文件)(1)故障模拟删除全部文件:rm /u02/oradata/dbnms/*关闭数据库:shutdown immediate;ORA-03113: end-of-file on communication channel(2)恢复步骤sqlplus sys as sysdbastartup nomount;rman target sys catalog rmanuser@cata还原控制文件:restore controlfile;还原数据库:restore database;mount 数据库:alter database mount;恢复数据库:recover database;RMAN-00571: ===========================================================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571: ===========================================================RMAN-03002: failure of recover command at 09/09/2005 10:33:13RMAN-06054: media recovery requesting unknown log: thread 1 seq 19 lowscn 718284用resetlogs方式打开数据库:alter database open resetlogs;database openednew incarnation of database registered in recovery catalogstarting full resync of recovery catalogfull resync complete重建临时文件:sqlplus sys as sysdbaalter database tempfile '/u02/oradata/dbnms/temp01.dbf' drop;ERROR at line 1:ORA-01516: nonexistent log file, datafile, or tempfile"/u02/oradata/dbnms/temp01.dbf"alter tablespace temp add tempfile '/u02/oradata/dbnms/temp01.dbf' size 50M autoextend on next 5M maxsize unlimited;执行一次全库备份:/home/oracle/dbbat/backup_full.sh恢复成功。
Oracle备份恢复-控制文件损坏的各种场景恢复专题
Oracle备份恢复-控制⽂件损坏的各种场景恢复专题⽹上有很多对控制⽂件损坏恢复的⽂章,但个⼈觉得介绍的恢复⽅法⽐较零散、不够全⾯,并且为什么要⽤这种⽅法来做恢复没有说的很具体,对很多刚接触这部分的朋友可能不是太好理解。
现在这篇⽂章就主要通过三部分来介绍控制⽂件恢复相关的内容:1、控制⽂件损坏的场景,以及不同场景在满⾜不同的条件时可以⽤哪些⽅法来恢复的介绍;2、针对不同恢复⽅法给出具体的恢复思路;3、模拟⼏种恢复⽅法的操作;⼀、不同场景在满⾜不同的条件时的恢复⽅法:⼆、针对不同的恢复⽅法给出具体的恢复思路:2.1、通过重新拷贝冗余的控制⽂件1、在线或者关闭数据库后损坏了其中部分控制⽂件;2、shutdown abort关闭数据库;3、拷贝其中⼀个完好的控制⽂件;4、startup启动数据库。
2.2、通过备份控制⽂件进⾏完全恢复1、在线或者关闭数据库后损坏了所有控制⽂件;2、shutdown abort关闭数据库;3、startup nomount启动数据库;4、restore controlfile from ‘xxx’;从备份中还原控制⽂件;5、alter database mount;5、recover database using backup controlfile until cancel,在执⾏时选择auto⾃动应⽤所有的归档⽂件;6、再次执⾏recover database using backup controlfile until cancel,选择应⽤未归档的redo⽂件;7、alter database open resetlogs;2.3、通过备份控制⽂件进⾏不完全恢复1、在线或者关闭数据库后损坏了所有控制⽂件;2、shutdown abort关闭数据库;3、startup nomount启动数据库;4、restore controlfile from ‘xxx’;从备份中还原控制⽂件;5、alter database mount;6、recover database using backup controlfile until cancel,在执⾏时选择auto⾃动应⽤尽可能多的归档⽂件;7、alter database open resetlogs;2.4、通过备份控制⽂件进⾏重建的恢复(noresetlogs⽅式)1、在线或者关闭数据库后损坏了所有控制⽂件;2、shutdown abort关闭数据库;3、startup nomount启动数据库;4、restore controlfile from ‘xxx’;从备份中还原控制⽂件;5、alter database mount;6、alter database backup controlfile to trace,⽣成创建控制⽂件的脚本;7、shutdown immediate并启动到startup nomount状态;8、使⽤noresetlogs⽅式创建控制⽂件;9、recover database恢复数据库;10、恢复完后通过alter database open打开数据库;2.5、通过备份控制⽂件进⾏重建的恢复(resetlogs⽅式)1、在线或者关闭数据库后损坏了所有控制⽂件;2、shutdown abort关闭数据库;3、startup nomount启动数据库;4、restore controlfile from ‘xxx’;从备份中还原控制⽂件;5、alter database mount;6、alter database backup controlfile to trace,⽣成创建控制⽂件的脚本;7、shutdown immediate并启动到startup nomount状态8、使⽤resetlogs⽅式创建控制⽂件;9、如果未归档的redo⽂件可⽤时,则直接recover database,然后选⽤未归档的redo⽂件应⽤,最后通过alter database open resetlogs⽅式打开数据库。
oracle数据库掉电损坏的一些处理经验
当oracle数据库非正常关闭时,可能面临无法启动或无法登陆的问题,其中部分原因是数据库文件损坏所致,如果数据库没有使用备份机制或运行于非归档模式下时,系统数据文件的损坏往往难以完全恢复,本文就经常遇到数据库数据文件损坏,总结了此类问题处理的常用方法。
一、检查数据文件、控制文件、日志文件是否有损坏。
1.查看文件$ORACLE_BASE/admin/dbname/bdump/alert_orasid.log中是否有文件损坏信息,类似如下信息:ORA-01578: ORACLE data block corrupted (file # 7, block # <BLOCK>;)ORA-01110: data file <AFN>;: '/oracle1/oradata/V920/oradata/V816/users01.dbf'通过file#和<AFN>找到损坏数据文件和文件类型,然后通过损坏的文件类型确认采用的恢复策略。
2.可以使用dbv检查数据文件(不适用于日志文件),应注意使用dbv检查数据文件时应对损坏数据库文件进行备份,dbv会修改数据文件中部分内容。
被检查的数据文件应为脱机状态。
dbv命令含义:关键字描述(Default)----------------------------------------------------FILE 待检测文件名(NONE)START 起始文件块(First Block of File)END 终止文件块(Last Block of File)BLOCKSIZE 逻辑块大小(8192)LOGFILE 输出日志文件(NONE)FEEDBACK 显示进度(0)PARFILE 参数文件(NONE)USERID 用户名/密码(NONE)SEGMENT_ID Segment ID (tsn.relfile.block) (NONE)HIGH_SCN Highest Block SCN To Verify (NONE)(scn_wrap.scn_base OR scn)常用到的参数有:FILE、BLOCKSIZE。
总结了10种_Oracle_文件损坏及恢复的过程
总结了10种_Oracle_文件损坏及恢复的过程Oracle数据库是一个关系数据库管理系统(RDBMS),用于存储和管理大量结构化数据。
然而,由于各种原因,Oracle数据库文件可能会损坏,这可能导致数据库无法正常工作。
为了解决这个问题,需要进行文件的恢复过程。
下面总结了10种Oracle文件损坏及恢复的常见过程:1.数据文件丢失:如果数据文件丢失,可以从最近的备份还原数据文件,并进行恢复。
2. 数据文件坏块:在Oracle数据库中,可以使用DBVERIFY工具来检查数据文件的坏块。
如果坏块小部分,可以使用RMAN进行恢复。
如果坏块较多,可能需要考虑重新创建数据文件。
3.日志文件丢失:如果日志文件丢失,可以使用备份中的归档日志文件进行恢复。
如果没有备份,可以使用增量备份或物理备份进行恢复。
4.日志文件坏块:使用DBVERIFY工具可以检查日志文件的坏块。
如果发现坏块,可以尝试使用RMAN进行恢复,或者由管理员手动修复坏块。
5.控制文件丢失:如果控制文件丢失,可以从备份中还原控制文件,并使用RECOVER命令进行数据库恢复。
6.控制文件坏块:使用DBVERIFY工具检查控制文件的坏块。
如果找到坏块,可以使用备份恢复控制文件,或者手动修复坏块。
7.数据库文件或表空间重命名:如果数据库文件或表空间被重命名,可以使用ALTERDATABASERENAME命令更改文件或表空间的名称。
8. 恶意软件或数据损坏:如果Oracle数据库中的数据被恶意软件感染或损坏,必须进行杀毒和修复操作。
首先,应使用杀毒软件对系统进行全面扫描,以确保杀死所有恶意软件。
然后,可以使用RMAN进行数据恢复。
9.操作错误:有时,由于误操作或错误的命令,数据库文件可能会被损坏。
在这种情况下,可以从备份中还原损坏的文件,并执行相关的恢复操作。
10. 数据库崩溃:如果Oracle数据库发生崩溃,可能需要使用RMAN 进行恢复。
首先,必须使用备份进行数据库重建,然后使用RMAN进行恢复。
Oracle丢失控制文件和日记文件
*.memory_target=314572800
*.open_cursors=300
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/snow/temp01.dbf'
SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
1) Set _ALLOW_RESETLOGS_CORRUPTION=TRUE in init.ora file.
2) Startup Mount
3) Recover database
4) Alter database open resetlogs.
5) reset undo_management to “manual” in init.ora file.
归档模式,控制文件,redo 丢失 恢复
1,启动到nomount
STARTUP NOMOUNT pfile='/tmp/1.log'
================
*.audit_file_dest='/u01/app/oracle/admin/snow/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/app/oracle/oradata/snow/control01.ctl','/u01/app/oracle/oradata/snow/control02.ctl'
恢复Oracle数据库控制文件
恢复Oracle数据库控制文件
老牛
【期刊名称】《网管员世界》
【年(卷),期】2008(000)020
【摘要】Oracle数据库系统中控制文件记录了关于0racle的重要配置信息,如数据库名、字符集名字、各个数据文件、日志文件的位置等信息。
控制文件的损坏,会导致数据库异常关闭。
一旦缺少控制文件,数据库也无法启动,这是一种比较严重的错误。
【总页数】1页(P76)
【作者】老牛
【作者单位】福建
【正文语种】中文
【中图分类】TP311.13
【相关文献】
1.探讨Oracle数据库管理之控制文件 [J], 杜战伟
2.Oracle数据库块损坏的恢复——浅析BBED在数据库恢复中的应用 [J], 陈飞
3.论在Oracle数据库中如何管理控制文件和重作日志文件 [J], 周虹;薛佳梅
4.浅谈Oracle数据库中控制文件及重作日志文件的管理 [J], 张振贵
5.Oracle数据库管理之控制文件 [J], 王丽;
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ORACLE控制文件损坏处理办法
--关于ORACLE控制文件错误的处理
处理方法一.更改INIT.ORA中的参数,删除不能使用的controlFile ;
处理方法二.
先备份ORACLE安装目录和所有自定义创建的数据文件,再按照以下步骤进行试验处理。
进入MS-DOS窗口,适用SVRMGRL工具;
CONNECT INTERNAL/ORACLE ;
STARTUP NOMOUNT;
CREATE CONTROLFILE REUSE DA TABASE "ORCL" NORESETLOGS NOARCHIVELOG MAXLOGFILES 32
MAXLOGMEMBERS 2
MAXDATAFILES 32
MAXINSTANCES 16
MAXLOGHISTORY 1815
LOGFILE
#此处根据实际情况处理
GROUP 1 'D:\ORACLE\ORADATA\ORCL\REDO03.LOG' SIZE 1M,
GROUP 2 'D:\ORACLE\ORADATA\ORCL\REDO02.LOG' SIZE 1M,
GROUP 3 'D:\ORACLE\ORADATA\ORCL\REDO01.LOG' SIZE 1M
DA TAFILE
#此处根据实际情况处理
'D:\ORACLE\ORADA TA\ORCL\SYSTEM01.DBF',
'D:\ORACLE\ORADA TA\ORCL\RBS01.DBF',
'D:\ORACLE\ORADA TA\ORCL\USERS01.DBF',
'D:\ORACLE\ORADA TA\ORCL\TEMP01.DBF',
'D:\ORACLE\ORADA TA\ORCL\TOOLS01.DBF',
'D:\ORACLE\ORADA TA\ORCL\INDX01.DBF',
'D:\ORACLE\ORADA TA\ORCL\DR01.DBF',
'D:\ORACLE\ORADA TA\ORCL\SDE.ORA',
'D:\ORACLE\ORADA TA\ORCL\GIS.ORA',
'D:\ORACLE\ORADA TA\ORCL\OEM_REPOSITORY.ORA'
CHARACTER SET ZHS16GBK
;
# Take files offline to match current control file.
# 可以不执行以下DROP
ALTER DATABASE DATAFILE 'D:\ORACLE\ORADA TA\ORCL\USERS01.DBF'
OFFLINE DROP;
ALTER DATABASE DATAFILE 'D:\ORACLE\ORADA TA\ORCL\TOOLS01.DBF'
OFFLINE DROP;
ALTER DATABASE DATAFILE 'D:\ORACLE\ORADA TA\ORCL\INDX01.DBF' OFFLINE DROP;
ALTER DATABASE DATAFILE 'D:\ORACLE\ORADA TA\ORCL\DR01.DBF' OFFLINE
DROP;
# Recovery is required if any of the datafiles are restored backups,
# or if the last shutdown was not normal or immediate.
# 可以直接使用RECOVER
RECOVER DATABASE
# Database can now be opened normally.
ALTER DATABASE OPEN;
# No tempfile entries found to add.
# OK !!!!一切搞定
另外控制文件出现错误时ORACLE不提示控制文件错误,而是提示数据文件错误;比如:Ora-01122 ora-01110 ora-01207 ,可以在MOUNT状态下查询V$RECOVER_FILE,。