分享

恢复丢失的控制文件

 忧郁_小刚 2011-05-28

恢复丢失的控制文件

    对于控制文件的介质失败,如果只是其中一个丢失的话,可以通过复制其它好的控制文件进行恢复。如果是全部控制文件全部丢失的话,就只能通过重建控制文件来恢复。下面是具体的一些操作过程。
1、单个控制文件介质失败
SQL> conn sys/sys as sysdba;
已连接。
SQL> alter database backup controlfile to trace;
数据库已更改。

SQL> select name from v$controlfile;

NAME
------------------------------------------------------
G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL01.CTL
G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL02.CTL
G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL03.CTL

SQL> host del G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL01.CTL;
G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL01.CTL
另一个程序正在使用此文件,进程无法访问。

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host del G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL01.CTL;

SQL> startup
ORACLE 例程已经启动。
Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              88081764 bytes
Database Buffers           75497472 bytes
Redo Buffers                2945024 bytes
ORA-00205: ?????????, ??????, ???????
此时复制一个控制文件到丢失控制文件的所在位置,然后把名字修改为control01.ctl,重新启动数据库。
SQL> startup
ORA-01081: ????????? ORACLE - ??????
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-01507: ??????


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

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              88081764 bytes
Database Buffers           75497472 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
数据库已经打开。
当丢失的控制文件所在的磁盘坏了的话,可以修改初始化参数control_files。具体操作如下:
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host del G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL01.CTL;

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              88081764 bytes
Database Buffers           75497472 bytes
Redo Buffers                2945024 bytes
ORA-00205: ?????????, ??????, ???????

此时复制好的控制文件到其它磁盘,然后修改初始化参数。
SQL> alter system set control_files=('D:\ control01.ctl','G:\
ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL02.CTL','G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL03.CTL') scope=both;
alter system set control_files=('D:\control01.ctl','G:\ORACL
E\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL02.CTL','G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL03.CTL') scope=both
                 *
第 1 行出现错误:
ORA-02095: ????????????

此时是不能用ALTER SYSTEM的。通过SPFILE创建一个新的PFILE,然后修改PFILE。

SQL> create pfile='G:\oracle\product\10.2.0\admin\ora10g\pfileora10g.ora' from s
pfile;

文件已创建。
修改PFILE:
control_files='D:\control01.ctl','g:\oracle\product\10.2.0/oradata/ora10g/\control02.ctl','g:\oracle\product\10.2.0/oradata/ora10g/\control03.ctl'
使用PFILE来启动数据库:
SQL> startup force pfile=G:\oracle\product\10.2.0\admin\ora10g\pfileora10g.ora;
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              88081764 bytes
Database Buffers           75497472 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
数据库已经打开。
SQL> select name from v$controlfile;

NAME
--------------------------------------------------------
D:\CONTROL01.CTL
G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL02.CTL
G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL03.CTL

SQL> create spfile from pfile='G:\oracle\product\10.2.0\admin\ora10g\pfileora10g
.ora';
文件已创建。
2、所有控制文件介质失败

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              88081764 bytes
Database Buffers           75497472 bytes
Redo Buffers                2945024 bytes
数据库装载完毕。
数据库已经打开。
SQL> alter database backup controlfile to trace;

数据库已更改。

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host del D:\CONTROL01.CTL

SQL> host del G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL02.CTL

SQL> host del G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL03.CTL

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              88081764 bytes
Database Buffers           75497472 bytes
Redo Buffers                2945024 bytes
ORA-00205: ?????????, ??????, ???????
SQL> shutdown immediate
ORA-01507: ??????
ORACLE 例程已经关闭。
此时把跟踪文件里创建控制文件的语句放到一个文件里,然后运行,语句如下:
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORA10G" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\REDO01.LOG'  SIZE 50M,
  GROUP 2 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\REDO02.LOG'  SIZE 50M,
  GROUP 3 'G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\REDO03.LOG'  SIZE 50M,
  GROUP 4 'G:\ORACLE\REDOLOG\ORA10G\ONLINELOG\O1_MF_4_326VGXVC_.LOG'  SIZE 100M
DATAFILE
  'G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYSTEM01.DBF',
  'G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\UNDOTBS01.DBF',
  'G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\SYSAUX01.DBF',
  'G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\USERS01.DBF'
CHARACTER SET ZHS16GBK;
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE
AUTOBACKUP','ON');
RECOVER DATABASE
ALTER SYSTEM ARCHIVE LOG ALL;
ALTER DATABASE OPEN;
ALTER TABLESPACE TEMP ADD TEMPFILE
'G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\TEMP01.DBF'
     SIZE 20971520  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
SQL> @d:\create_control.sql
ORACLE 例程已经启动。

Total System Global Area  167772160 bytes
Fixed Size                  1247900 bytes
Variable Size              88081764 bytes
Database Buffers           75497472 bytes
Redo Buffers                2945024 bytes

控制文件已创建。
PL/SQL 过程已成功完成。
ORA-00283: ??????????
ORA-00264: ?????
系统已更改。
数据库已更改。
表空间已更改。

SQL> select open_mode from v$database;

OPEN_MODE
----------
READ WRITE

SQL> select name from v$controlfile;

NAME
------------------------------------------------------
D:\CONTROL01.CTL
G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL02.CTL
G:\ORACLE\PRODUCT\10.2.0\ORADATA\ORA10G\CONTROL03.CTL

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多