数据库数据文件和控制文件恢复

数据库数据文件和控制文件恢复
一次数据库数据文件和控制文件丢失或未创建恢复数据库启动方法
该文档适用数据恢复:
数据库安装的时候丢失控制文件和数据文件
或者数据库故障的数据、控制文件丢失
或者数据库的本来数据、控制文件丢失有备份文件,用备份文件恢复
本文的环境变量
ORACLE_BASE=/oo/oracle
ORACLE_HOME=/oo/oracle/11g

1.数据库启动报错
数据库启动时报错:

报错1:
SQL> startup
ORA-01261: Parameter db_recovery_file_dest destination string cannot be translated
ORA-01262: Stat failed on a file destination directory
Linux-x86_64 Error: 2: No such file or directory
报错2:
通过手动制定启动数据库init.ora文件
SQL> startup mount pfile=‘/oo/oracle/11g/dbs/init.ora‘
ORA-09925: Unable to create audit trail file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9925

根据init.ora文件中的信息进行创建目录,并给权限
将init.ora文件中ORACLE_BASE换成环境变量中的绝对路径
路径:/oo/oracle/11g/dbs

解决方案:
把init.ora中的目录都创建并且添加权限
mkdir -p /oo/oracle/flash_recovery_area
mkdir -p /oo/oracle/admin/orcl/adump
chmod 755 /oo/oracle/flash_recovery_area
chmod 755 /oo/oracle/admin/orcl/adump
chown oracle:oinstall /oo/oracle/admin/orcl/adump
chown oracle:oinstall /oo/oracle/flash_recovery_area/
注:这两个报错信息都是目录文件不存在
2.手动启动数据库
创建目录并给权限后通过手动制定启动数据库init.ora文件
SQL> startup mount pfile=‘/oo/oracle/11g/dbs/init.ora‘
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2220200 bytes
Variable Size 616566616 bytes
Database Buffers 444596224 bytes
Redo Buffers 5554176 bytes
ORA-00205: error in identifying control file, check alert log for more info
/oo/oracle/11g/dbs

SQL> create pfile=‘/oo/oracle/11g/dbs/initorcl.ora‘ from spfile;
File created.
SQL> create spfile from pfile=‘/oo/oracle/11g/dbs/initorcl.ora‘;
File created.

使用了如上方法创建spfile文件但是启动还是报错,错误原因就是这个目录下面没有如下这些文件导致的报错,并且这些文件都没有是个空的目录。

如果数据库没有备份,可以去其他正常的oracle数据库中找两个控制文件
具体控制文件放在的位置可以查看系统日志文件alert_orcl.log
路径:/oo/oracle/diag/rdbms/orcl/orcl/trace

找两个控制文件放到该目录下面/oo/oracle/11g/dbs
然后再次创建并重启数据库
create spfile from pfile=‘/oo/oracle/11g/dbs/init.ora‘;
startup mount pfile=‘/oo/oracle/11g/dbs/initorcl.ora‘
注:每次再SQL中startup 后,再次启动前要先停shutdown

3.控制文件恢复后
有控制文件后再次启动数据库时报错信息变为系统数据文件system01.db找不到
报错3:
SQL> startup
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2220200 bytes
Variable Size 616566616 bytes
Database Buffers 444596224 bytes
Redo Buffers 5554176 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 1 - see DBWR trace file
ORA-01110: data file 1: ‘/oracle/oracle/oradata/orcl/system01.dbf‘
去到目录下面查看时确实没有system01.dbf该文件并且这些文件都没有是个空的目录

没有日志文件和数据库文件使用recover恢复时一定会报如下错的。
上面的文件是从其他oracle数据库服务器复制的
报错4:
SQL> startup
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2220200 bytes
Variable Size 616566616 bytes
Database Buffers 444596224 bytes
Redo Buffers 5554176 bytes
Database mounted.
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: ‘/oracle/oracle/oradata/orcl/system01.dbf‘

alter database datafile ‘/oracle/oracle/oradata/orcl/system01.dbf‘ offline drop;
报错5:
ORA-01147: SYSTEM tablespace file 1 is offline
ORA-01110: data file 1: ‘/oracle/oracle/oradata/orcl/system01.dbf‘
住:该报错信息就是上面的命令导致的在重新online就可以了
alter database datafile ‘/oracle/oracle/oradata/orcl/system01.dbf‘ online ;
然后使用recover命令进行恢复
recover datafile ‘/oracle/oracle/oradata/orcl/system01.dbf‘; --恢复数据库文件
recover tablespace system; --恢复表空间
recover database; --恢复数据库
操作:
SQL>recover datafile ‘/oracle/oracle/oradata/orcl/system01.dbf‘;
SQL> ALTER DATABASE OPEN;
ALTER DATABASE OPEN
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: ‘/oracle/oracle/oradata/orcl/test_data01.dbf‘
因为是从其他机器上面复制的dbf数据文件和redo日志没有复制完全,将报错的这个文件复制进去后再次使用该命令后,数据库启动了
报错的原因是复制别的数据库的文件时没有复制完全,表中有数据所以复制的数据库服务器中的数据文件需要都复制过去,建议复制初始化的数据库服务器中的文件。
SQL> ALTER DATABASE OPEN;

Database altered.

SQL> select STATUS from v$instance;

STATUS
------------
OPEN

SQL> select from all_tables;
select
from all_tables
*
ERROR at line 1:
ORA-01775: looping chain of synonyms
但是使用简单查询时报错了
重启一下数据库就可以了shutdown startup 再次启动后就和正常的一样了

oracle导入sql文件br/>SQL>@/oo/PC_CORE01.sql
导入sql语句

数据库数据文件和控制文件恢复

原文地址:https://blog.51cto.com/7794482/2448171

时间: 2024-08-15 18:19:55

数据库数据文件和控制文件恢复的相关文章

批量迁移Oracle数据文件,日志文件及控制文件

有些时候需要将Oracle的多个数据文件以及日志文件重定位或者迁移到新的分区或新的位置,比如磁盘空间不足,或因为特殊需求.对于这种情形可以采取批量迁移的方式将多个数据文件或者日志文件实现一次性迁移.当然备份恢复也是其中的方式之一.本文主要描述如何使用批量方式来迁移数据文件,日志文件.如需要也可以将整个数据库迁移到新的位置以及重命名数据库. [sql] view plain copy print? 1.环境及需求 [email protected]:~> cat /etc/issue Welcom

同时丢失参数文件、控制文件及redo log file的不完全恢复(有数据文件的热备和归档)

转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/30839817 ##########恢复前的准备工作 1.做个热备 select 'alter tablespace '||tablespace_name|| ' begin backup;' ||chr(10)|| 'host cp '||file_name||' /backup' ||chr(10)|| 'alter tablespace '||tablespace_name|| '

【Oracle】数据库启动阶段参数文件、控制文件的问题处理

Oracle启动分三个阶段: nomount: 首先查找参数文件(pfile/spfile),根据文件创建实例.Nomount的过程是启动数据库实例的过程. 没有参数文件无法nomount mount: 从参数文件中获得控制文件的位置信息,然后打开控制文件. --没有控制文件无法mount open: 打开控制文件中所有描述的文件. --没有数据文件无法open -------------------------------------------------------------------

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转

效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])  本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   (三)SSIS的简介   (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介绍一下)   (六)SSIS操作过程(生成Package,用来调用)(下一篇随笔将详细讲解制作Package包的过程,图片太多,篇幅过长,因此本文将直接采用生成的Package包进行

RMAN备份与恢复之参数文件与控制文件

0   说明 本例是基于备份数据库全库的基础上,还原参数据文件(spfile),控制文件. 1   准备 [[email protected] /]$ sqlplus /nolog SQL*Plus: Release 11.2.0.3.0 Production on Mon Oct 12 11:58:35 2015 Copyright (c) 1982, 2011, Oracle. All rights reserved. SQL> conn sys/Sina.2015@study as sys

遇到ORA-01207: 文件比控制文件更新 - 旧的控制文件解决办法-简单版

遇到这样的问题,如ORA-01207: 文件比控制文件更新 - 旧的控制文件 解决问题的思路是重建控制文件 注意: 1.不知道会不会丢一小部分数据.适用于不重要的库和已经停机的业务,或者急救业务. 可以尝试从不同的地方找原来的control文件,几个不同的control文件如果都一样,说明只能这么恢复,如果不一样,尽量找系统表空间比较新的control去用,因为不涉及用户数据. 2.做之前保存之前的控制文件!!!! 报错如下: SQL>startupORACLE 例程已经启动.Total Sys

ORACLE中没有参数文件和控制文件如何通过rman恢复数据库

场景: 一个DEV告诉我生产环境下某个用户的表都看不到了,需要恢复,而此时生产库上存储自动备份的参数文件控制文件的磁盘目录文件坏块,所以导致rman备份的只有数据文件和归档日志文件,这种情况下,如何在测试服务器上利用rman恢复数据呢?google了很多资料,咨询了朋友,恢复过程如下: 前期准备工作:事先查询好先查询下原来的数据文件路径SQL> select name from v$datafile; NAME-------------------------------------------

RMAN备份之丢失数据文件及控制文件的恢复

About Recovery with a Backup Control FileIf all copies of the current control file are lost or damaged, then you must restore and mount a backup control file. You must then run the RECOVER command, even if no data files have been restored, and open t

使用原生php将数据库数据导出到excel文件中

最近在工作中遇到一个需求,需要将数据库中的数据导出到excel文件中,并下载excel文件.因为以前没做过,所以就百度了一下, 网上说的大多是使用PHPExcel类来操作excel文件,这还要去下载这个类才能使用,而我只想使用原生的php,不想那么麻烦,好在 也有网友说到关于原生php生成excel文件的方法,其实很简单,下面把我结合网上资料自己实践的代码分享一下. 一般我们这种导数据的操作都是通过用户在网页页面上点击某个按钮触发相应js方法,然后请求php接口来实现的,所以主要有两种 方法来完