现在的位置: 首页 > 综合 > 正文

oracle学习笔记--控制文件被破坏后数据的恢复方法

2013年10月08日 ⁄ 综合 ⁄ 共 2071字 ⁄ 字号 评论关闭

控制文件破坏时数据库的恢复方法

 一 控制文件有镜像时数据库恢复

SQL>startup
  2  ;
startup ;
*
ERROR at line 1:
ORA-00205: error in identifying controlfile, check alert log for more info
在数据库启动的时候出现了以上错误信息,在识别控制文件时出错,并将错误信息记录在跟踪日值文件里面。
查看跟踪文件如下:

Tue Dec 06 15:25:42 2005
ORA-00202: controlfile: 'D:/oracle/oradata/oracle/CONTROL02.CTL'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。

可以确定,控制文件'D:/oracle/oradata/oracle/CONTROL02.CTL'损坏了或者不存在了。

控制文件恢复:

关闭数据库
SQL> shutdown
ORA-01507: database not mounted

ORACLE instance shut down.

就控制文件的恢复有两种方法可以选择

第一种:控制文件有镜像CONTROL0.CTL和CONTROL03.CTL,将这两个镜像文件中的一个复制,拷贝到CONTROL02.CTL
所在的目录中,然后将文件名称改成CONTROL02.CTL。

启动数据库就ok了。

第二种:因为为控制文件做了镜像了,所以关闭数据库后,在数据库的参数文件INITorcl.ORA参数control_files中将
CONTROL02.CTL这一镜像去掉。
然后根据参数文件创建服务器参数文件

SQL> conn / as sysdba
Connected to an idle instance.
SQL> create spfile from pfile;

文件已创建。

启动数据库到nomount状态,查看控制文件参数是否已经改表

SQL> show parameter control
ORA-01034: ORACLE not available

SQL> startup nomount
ORACLE 例程已经启动。

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
SQL> show parameter control

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
control_file_record_keep_time        integer
7
control_files                        string
D:/oracle/oradata/oracle/CONTR
OL01.CTL, D:/oracle/oradata/or
acle/CONTROL03.CTL
SQL> alter database mount;

数据库已更改。

打开数据库

SQL> alter database open
  2  ;

数据库已更改。

二 控制文件没有镜像的情况下数据库的恢复

如果被损坏的控制文件没有镜像,单数据库的结构还存在,则只能重新创建数据库。

第一步准备参数文件的路径;

将损坏的控制文件删掉,然后在参数文件中设置control_files参数,多配置几个控制文件的镜像

control_files='D:/oracle/oradata/oracle/CONTROL01.CTL',

'D:/oracle/oradata/oracle/CONTROL02.CTL',

'D:/oracle/oradata/oracle/CONTROL03.CTL'

然后启动数据库到nomount状态,

执行create controlfile database database_name命令创建控制文件。

create controlfile database orcl

logfile

    --全部日值组和日值文件,及大小

NORESETLOGS

DATAFILES

--数据库全部数据文件路径及名称

maxloghistory 2000  --最大历史日志数

maxdatafiles 2000  --设置最大数据文件数

maxlogmembers 5 --最大日值成员数

character set ZHS16GBK;  --设置数据库字符集

运行上述命令后系统自动在control_files指定的目录中创建三个控制文件,3个文件之间为镜像关系。控制文件创建后从新启动数据库即可。

成功后,关闭数据库,进行一下冷备份。

抱歉!评论已关闭.