`
liufeng_king
  • 浏览: 35568 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

oracle 只有数据文件时的恢复

阅读更多

兄弟刚用ORACLE,因为IP地址变了下,玩了半天,只剩下数据文件了,网上查了一天资料,终于搞定,成功将数据文件恢复到新的数据库中。(主要 是以前没玩过,花了我一天半的时间,哎,书到用时方恨少啊)

oracle数据恢复:只有数据文件的情况下;
状况描述:当Oracle的控制文件丢失或损坏,但数据文件完好时,可以通过重建控制文件的方式对数据库实例进行恢复。恢复方法如下:
一、备份数据文件
一、安装Oracle,安装过程中不要创建数据库。
二、安装好后,用DBCA(Database Configuration Assistant)创建与丢失的实例相同名称的实例。创建实例时数据库名和实例名要和丢失前的一致。数据文件与控制文件的信息可以从 (admin\xxxx\bdump\alert_xxxx.log)文件找到,其中xxxx为数据库名,参照这个文件里的CREATE CONTROLFILE 语句段。还要注意创建实例时的归档模式及非归档模式,如果admin\zhxt\bdump\alert_xxxx.log文件中的CREATE CONTROLFILE 那一行最后是NOARCHIVELOG,则为非归档模式,如为ARCHIVELOG,则为归档模式,没有则保持没有
三、关闭Oracle(我的方法,在服务里将ORACLE的有关服务改为手动,重启机子),用备份出来的数据文件覆盖新建的数据文件,并将新生成的控制文 件及重做日志文件删除。
四、启动Oracle有监听(在服务里将ORACLE有关的服务开启)
五、用sys用户连接到oracle
Sqlplus /nolog
SQL>conn sys/sys as sysdba;
六、关闭数据库
SQL> shutdown immediate;
七、起动数据库,但不挂载数据文件
SQL> startup nomount;
八、重建控制文件,重建控制文件的脚本可以从admin\xxxx\bdump\alert_xxxx.log)文件找到,搜索 CREATE CONTROLFILE 语句,如果存在多处这样的语句,则使用最后的。
控制文件的脚本类似如下语句:

CREATE CONTROLFILE REUSE DATABASE "zhxt" NORESETLOGS NOARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
    MAXLOGFILES 50
    MAXLOGMEMBERS 5
    MAXDATAFILES 100
    MAXINSTANCES 1
    MAXLOGHISTORY 226
LOGFILE
GROUP 1 'E:\ORADATA\zhxt\REDO01.LOG' SIZE 100M,
GROUP 2 'E:\ORADATA\zhxt\REDO02.LOG' SIZE 100M,
GROUP 3 'E:\ORADATA\zhxt\REDO03.LOG' SIZE 100M
-- STANDBY LOGFILE
DATAFILE
'E:\ORADATA\zhxt\RKXT.ORA',
'E:\ORADATA\zhxt\SYSTEM01.DBF',
'E:\ORADATA\zhxt\TOOLS01.DBF',
'E:\ORADATA\zhxt\TYZHXTTBS.ORA',
'E:\ORADATA\zhxt\UNDOTBS01.DBF',
'E:\ORADATA\zhxt\USERS01.DBF',
CHARACTER SET ZHS16GBK

这一语句有几个地方需要修改:
1、   因为重做日志文件已丢失,所以要将第一句的,NORESETLOGS 改为 RESETLOGS
2、   LOGFILE段的几个重做日志文件指定为实际希望的位置
3、   DATAFILE段的数据文件改为数据文件实际的位置,注意这里不要包括临时表空间用到的文件,否则会出错。

执行修改后的脚本。如果提示控制文件创建完成,则可以进行下一步操作。

结果系统报错:
ORA-01503: CREATE CONTROLFILE ??
ORA-01160: ???? data file
ORA-01110: ???? : 'D:\oracle\oradata\cicdb\TEMP01.DBF'


则需要将重建日志文件中DATAFILE段中TEMP01这行删除,因为它是临时表空间,可以在创建后用alter database语句加上。再次执行重建控制文件的脚本。

九、创建控制文件成功后,执行以下语句打开数据库,加上RESETLOGS参数是为了重新生成重做日志文件。
SQL> alter database open RESETLOGS;
如果出现以下错误:

    alter database open resetlogs
*
第 1 行出现错误:
ORA-01194: 文件 1 需要更多的恢复来保持一致性
ORA-01110: 数据文件 1:
'D:ORACLEPRODUCT10.2.0ORADATAORACLE10GSYSTEM01.DBF'
解决方法如下:
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: 'F:SUNSYSTEM01.DBF'


SQL> set wrap off
SQL> set lin 300
SQL> select * from v$recover_file;

FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- ---------- ----------
1 ONLINE ONLINE 476049 08-JAN-08
2 ONLINE ONLINE 476049 08-JAN-08
3 ONLINE ONLINE 476049 08-JAN-08
4 ONLINE ONLINE 476049 08-JAN-08

SQL> recover database until cancel;
ORA-00283: recovery session canceled due to errors
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done


SQL> recover database using backup controlfile until cancel;
ORA-00279: change 476049 generated at 01/08/2008 19:13:19 needed for thread 1
ORA-00289: suggestion : F:ORACLEFLASH_RECOVERY_AREASUNARCHIVELOG2008_01_08O1_MF_1_18_%U_.ARC
ORA-00280: change 476049 for thread 1 is in sequence #18


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

ORA-00308: cannot open archived log 'F:ORACLEFLASH_RECOVERY_AREASUNARCHIVELOG2008_01_08O1_MF_1_18_%

U_.ARC'
ORA-27041: unable to open file
OSD-04002: ????????????
O/S-Error: (OS 2) ??????????????????????


ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: 'F:SUNSYSTEM01.DBF'


SQL> recover database using backup controlfile until cancel;
ORA-00279: change 476049 generated at 01/08/2008 19:13:19 needed for thread 1
ORA-00289: suggestion : F:ORACLEFLASH_RECOVERY_AREASUNARCHIVELOG2008_01_08O1_MF_1_18_%U_.ARC
ORA-00280: change 476049 for thread 1 is in sequence #18


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
E:oracleoradatasunsunredo01.log
ORA-00310: archived log contains sequence 17; sequence 18 required
ORA-00334: archived log: 'E:ORACLEORADATASUNSUNREDO01.LOG'


ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1: 'F:SUNSYSTEM01.DBF'


SQL> recover database using backup controlfile until cancel;
ORA-00279: change 476049 generated at 01/08/2008 19:13:19 needed for thread 1
ORA-00289: suggestion : F:ORACLEFLASH_RECOVERY_AREASUNARCHIVELOG2008_01_08O1_MF_1_18_%U_.ARC
ORA-00280: change 476049 for thread 1 is in sequence #18


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
E:oracleoradatasunsunredo02.log
Log applied.
Media recovery complete.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open


SQL> alter database open resetlogs;

Database altered.

SQL>
十、将临时表空间加入到实例上
SQL> alter tablespace TEMP add tempfile 'E:\oradata\zhxt\TEMP01.DBF' reuse;

十一、退出sqlplus,重启oracle,测试是否成功

如何更改Oracle的默认监听端口(1521) 
Oracle 的默认监听端口为1521,你可以方便的依照下列步骤修改为其他端口:
[oracle@dbserver2 admin]$ cd $ORACLE_HOME/network/admin 
[oracle@dbserver2 admin]$ vi listener.ora 
修改这个文档中的1521端口为你需要的端口your port 
[oracle@dbserver2 admin]$ lsnrctl stop 
[oracle@dbserver2 admin]$ lsnrctl start

这时虽然用sqlplus能连上,但用程序是连不上的,在CMD下,netstat -an 查看时,1521端口是未开启的
解决方法如下(实际上是第三种,用手动启动数据库监听就OK了):

程序报错:Io 异常: The Network Adapter could not establish the connection
这个异常的出现一般与数据库和你的PC的设置有关

这种异常的出现大致上有下面几种:
1。IP错误。
在设置URL时错误,例如:jdbc:oracle:thin:@192.168.0.36:1521:sharp
数据库服务器不正确:ping 服务器IP是否正确。不正确,将URL更改为正确
端口号错误:一般不会错误。
进行一下操作:在DOS上键入sqlplus,检查oracle是否开启
一却正常,执行下面第2步。
2。防火墙
如果机器上安装有放火墙,可能是服务器端口号屏蔽而造成的。关闭防火墙后,尝试重新连接。
仍然不行,执行第3步。
3。数据库监听未启动 修改PC上注册表中的ImagePath值。
以下是以现在主流的数据库ORACLE为例
重新手动启动数据库监听:
1:开始 → 运行→ 输入CMD→ 进入DOS命令提示界面
d:>lsnrctl
LSNRCTL> status
或者
LSNRCTL> start

至此,完全搞定

分享到:
评论

相关推荐

    Oracle只有数据文件时的恢复

    本文将详细阐述如何在只有数据文件的条件下恢复Oracle数据库。 首先,当Oracle数据库的控制文件不可用,但数据文件完整时,恢复流程的核心在于重建控制文件。控制文件存储了数据库结构的关键信息,包括数据文件的...

    Oracle通过DBF恢复数据

    本文将详细介绍在没有备份的情况下,如何通过数据文件(DBF)来恢复Oracle数据库。 #### 二、准备工作 在开始恢复工作之前,我们需要做一些必要的准备工作: 1. **确认数据文件(DBF)存在**:首先确认原始数据库中的...

    Oracle必杀技物理删除数据文件恢复

    当数据文件遭遇物理删除或丢失时,这将对数据库的正常运行造成严重影响。本篇文章将深入探讨Oracle数据库中物理删除数据文件的恢复方法,帮助你掌握这一关键的故障恢复技能。 首先,我们要理解数据文件物理删除的...

    原创Oracle 物理删除数据文件恢复 危机演练

    本文将深入探讨如何在危机情况下进行Oracle数据文件的物理删除恢复。这个话题对于DBA(数据库管理员)来说至关重要,因为数据的安全性和完整性是任何业务的核心。 首先,我们需要理解Oracle数据文件(Data Files)...

    Oracle11g通过DBF恢复数据

    在Oracle11g中,可以使用RMAN的`RESTORE DATABASE`或`RESTORE DATAFILE`命令来恢复数据文件。 4. **应用重做日志**:恢复数据文件后,必须应用从故障时间点到当前的重做记录,以使数据达到一致状态。`RECOVER ...

    如何恢复只有完好数据文件的oracle数据库

    ### 如何恢复只有完好数据文件的Oracle数据库 #### 一、引言 在数据库管理过程中,数据丢失或损坏是常见的问题之一。对于Oracle数据库来说,当遭遇数据文件损坏时,如果仅保留有完好的数据文件,那么恢复过程将更加...

    oracle 数据恢复 参考文档

    备份数据库的数据文件,重新命名即可,然后重新安装数据库,安装完成后,打开控制面板,停止 oracle 的服务,把新生成的文件改名,把原先目录下的文件恢复名字。重新启动 oracle 服务和监听,用 sys/as dba 登陆...

    Oracle数据库只有数据文件的恢复方式,只适合初学者,里边有VM的相关操作。请谨慎下载!

    本文主要探讨了只使用数据文件进行Oracle数据库恢复的方法,特别适合对数据库恢复不熟悉的新手。这种方法涉及到在虚拟机环境中进行操作,包括VMware的安装、虚拟机配置、操作系统的安装,以及最后的数据文件连接和...

    oracle 通过快照进行数据恢复

    ### Oracle通过快照进行数据恢复 #### 一、引言 在日常的数据库管理工作中,数据丢失或误删除是常见的问题之一。对于Oracle数据库来说,它提供了多种手段来进行数据恢复,其中一种有效的方式就是利用快照...

    oracle的数据备份与恢复

    通过阅读`oracle数据恢复.txt`、`oracle热备份步骤.txt`和`oracle冷备份步骤.txt`,你可以更深入地理解并掌握这些关键概念和实践技巧,从而确保你的Oracle数据库在面对数据丢失或系统故障时能够迅速恢复,保持业务...

    ORACLE truncate 数据恢复

    4. **操作系统文件恢复**:在某些情况下,如果数据文件没有被覆盖,可能可以通过操作系统级别的文件恢复工具找回。但这通常需要专业知识,并且成功率不能保证。 5. **第三方工具**:市场上有一些专门的数据库恢复...

    oracle之数据备份恢复案例

    2. **热备份**:热备份是在数据库正常运行时进行的备份方法,它可以备份正在使用的数据文件,支持在线备份。 - **优点**:无需停机,对业务影响小。 - **缺点**:备份过程较为复杂,需要额外处理归档日志等。 ###...

    Oracle根据DBF文件恢复.rar

    本篇将详细讲解如何使用Oracle数据库的数据文件(DBF)进行恢复。 首先,我们要了解Oracle数据库的结构。在Oracle中,数据以数据块(Data Blocks)的形式存储在数据文件(Database Files,简称DBF)中,这些文件...

    Oracle11g 崩溃后-dbf数据库文件恢复

    当Oracle 11g数据库遭遇崩溃时,如何有效地恢复数据,特别是dbf(数据文件)变得尤为关键。Oracle 11g版本,即11.2.0,提供了多种恢复策略来应对这种情况。在这个过程中,log文件(redo logs)和ctl控制文件起着决定...

    Oracle11g备份恢复笔记文档

    - **手工备份与恢复**:即用户管理的备份(UMAN),通过操作系统命令完成数据文件的备份与恢复,之后使用归档日志进行恢复。 - **自动备份与恢复**:利用 RMAN(Recovery Manager)实现自动化备份和恢复流程,支持...

    Oracle 11g数据恢复向导恢复数据文件

    ### Oracle 11g 数据恢复向导恢复数据文件 #### 一、背景介绍 在Oracle 11g中,恢复数据库中的数据文件是一项常见的维护任务。数据文件是组成Oracle数据库物理结构的重要组成部分之一,用于存储数据库的数据。由于...

    如何正确的删除Oracle表空间数据文件

    本文将详细介绍如何正确地删除Oracle表空间数据文件,探讨OFFLINE和OFFLINE DROP的区别,以及在操作系统层面删除数据文件后的恢复策略。 首先,我们来看如何使用`DROP DATAFILE`命令删除数据文件。这个命令允许管理...

    Veeam 备份恢复oracle数据库详细配置文档

    为此,需要在 Oracle 源机和 Oracle 恢复目标机上编辑 hosts 文件,添加相应的 host 解析信息。 二、推送 Oracle RMAN Plugin 推送 Oracle RMAN Plugin 是为了让 Veeam 备份恢复 Oracle 数据库。需要针对 Oracle ...

    oracle数据恢复工具

    在使用"Oracle数据恢复工具"时,用户通常需要遵循一定的步骤,包括分析故障情况、选择合适的恢复模式、执行恢复操作,并在完成后验证数据的完整性和一致性。在过程中,可能会涉及数据的备份与恢复策略、归档重做日志...

    Oracle19c rac备份数据通过rman恢复到单实例

    在进行Oracle 19c RAC(Real Application Clusters)数据库的数据备份与恢复操作时,可能会遇到需要将RAC集群环境下的备份数据恢复到单实例环境中的场景。这种情况下,RMAN(Recovery Manager)作为Oracle提供的强大...

Global site tag (gtag.js) - Google Analytics