ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 控制文件备份增加、破坏恢复系列实验(上)

控制文件备份增加、破坏恢复系列实验(上)

原创 Linux操作系统 作者:realkid4 时间:2011-07-02 20:55:46 0 删除 编辑

 

看了secooler的《Oracle个别控制文件丢失故障场景模拟及处理方法》(http://space.itpub.net/519536/viewspace-701185),觉得受启发。拓展下进行试验,权当仿作吧。

 

控制文件control fileOracle启动和运行过程中的重要文件类型,其中记录了Oracle运行的动态信息和核心变量。同参数文件parameter file不同的是,参数文件中记录了如SCN、状态信息等核心动态参数。控制文件的丢失、损坏可能会引起很大的数据库故障。

 

 

一般进行控制文件管理常常使用多路备份的方法,将文件分别复制在不同的物理位置上互为备份。如果有一个文件丢失、损坏或者故障,可以使用其他online control file进行恢复。

 

本文实验模拟三个场景,包括新备份control_file添加、破损丢失control_file故障处理和control_files列表清理。

 

1、  环境准备

 

我们选择11g作为实验环境。与控制文件有关的重要参数是Control_files,表示系统认可的控制文件信息。可以用逗号分隔表示多重control_file信息。

 

 

SQL> select * from v$version;

 

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

PL/SQL Release 11.2.0.1.0 - Production

CORE     11.2.0.1.0       Production

 

TNS for Linux: Version 11.2.0.1.0 - Production

NLSRTL Version 11.2.0.1.0 – Production

 

 

SQL> show parameter control;

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

control_file_record_keep_time        integer     7

control_files        string      /u01/oradata/WILSON/controlfile/o1_mf_6bcsqm50_.ctl, /u01/flash_recovery_area/WILSON/controlfile/o1_mf_6bcsqmd8_.ctl

control_management_pack_access       string      DIAGNOSTIC+TUNING

 

SQL> select * from v$controlfile;

 

STATUS  NAME                                                                             IS_RECOVERY_DEST_FILE BLOCK_SIZE FILE_SIZE_BLKS

------- -------------------------------------------------------------------------------- --------------------- ---------- --------------

        /u01/oradata/WILSON/controlfile/o1_mf_6bcsqm50_.ctl                              NO                         16384            594

        /u01/flash_recovery_area/WILSON/controlfile/o1_mf_6bcsqmd8_.ctl                  YES                        16384            594

 

 

此时,系统中已经使用控制文件多路备份的方法。除了OFA结构中定义的控制文件位置,作为备份在flash_recovery_area中保留一个备份。

 

 

2、新增加一个控制文件

 

现在我们要增加一个控制文件备份,control_files列表中的控制文件是100%相同的文件内容。增加文件可以按照下面步骤完成。

 

ü        spfile可见性范围内修改control_files初始化参数;

 

Control_files参数是定义在parameter file中的基本参数内容。在系统启动的时候,不支持memory可见性范围内修改参数,可以在spfile内进行online修改,让其重启后生效。

 

 

//创建副本

SQL> alter system set control_files='/u01/oradata/WILSON/controlfile/o1_mf_6bcsqm50_.ctl','/u01/flash_recovery_area/WILSON/controlfile/o1_mf_6bcsqmd8_.ctl','/u01/oradata/WILSON/controlfile/o2.ctl' scope=spfile;

 

System altered

 

 

标注红色的o2.ctl控制文件是新增加的控制文件备份。之后尝试关闭数据库(正常关闭)。

 

 

[oracle@oracle11g ~]$ sqlplus /nolog

 

SQL*Plus: Release 11.2.0.1.0 Production on Thu Jun 30 15:16:07 2011

 

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

SQL> conn / as sysdba

Connected.

SQL> shutdown normal;

Database closed.

Database dismounted.

ORACLE instance shut down.

 

 

正常关闭,保证日志、数据文件、控制文件等全库一致。下面到OS文件系统中进行备份拷贝。

 

 

[oracle@oracle11g controlfile]$ pwd

/u01/oradata/WILSON/controlfile

[oracle@oracle11g controlfile]$ ls -l

total 9536

-rw-r-----  1 oracle oinstall 9748480 Jun 30 15:16 o1_mf_6bcsqm50_.ctl

 

//拷贝一个备份控制文件;

[oracle@oracle11g controlfile]$ cp o1_mf_6bcsqm50_.ctl o2.ctl

[oracle@oracle11g controlfile]$ ls -l

total 19072

-rw-r-----  1 oracle oinstall 9748480 Jun 30 15:16 o1_mf_6bcsqm50_.ctl

-rw-r-----  1 oracle oinstall 9748480 Jun 30 15:17 o2.ctl

 

 

此时,我们重新启动数据库。

 

 

//重新启动

[oracle@oracle11g controlfile]$ sqlplus /nolog

 

SQL*Plus: Release 11.2.0.1.0 Production on Thu Jun 30 15:17:36 2011

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

SQL> conn / as sysdba

Connected to an idle instance.

SQL> startup

ORACLE instance started.

 

Total System Global Area  414298112 bytes

Fixed Size                  1336904 bytes

Variable Size             318769592 bytes

Database Buffers           88080384 bytes

Redo Buffers                6111232 bytes

Database mounted.

Database opened.

 

 

数据库正常启动,此时参数control_files也恢复正常。

 

 

SQL> show parameter control_files;

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

control_files                        string      /u01/oradata/WILSON/controlfile/o1_mf_6bcsqm50_.ctl, /u01/flash_recovery_area/WILSON/controlfile/o1_mf_6bcsqmd8_.ctl, /u01/oradata/WILSON/controlfile/o2.ctl

 

 

控制文件相关视图也连带更新。

 

 

SQL> select * from v$controlfile;

 

STATUS  NAME                 IS_RECOVERY_DEST_FILE BLOCK_SIZE FILE_SIZE_BLKS

------- -------------------- --------------------- ---------- --------------

        /u01/oradata/WILSON/ NO                         16384            594

        controlfile/o1_mf_6b                                 

        csqm50_.ctl                                          

        /u01/flash_recovery_ YES                        16384            594

        area/WILSON/controlf                                 

        ile/o1_mf_6bcsqmd8_.                                 

        ctl                                                  

        /u01/oradata/WILSON/ NO                         16384            594

        controlfile/o2.ctl                                   

 

 

3、数据库control_file单备份破坏实验

 

 

下面,我们模拟控制文件中的一个部分被破坏。

 

 

//破坏文件

[oracle@oracle11g controlfile]$ pwd

/u01/oradata/WILSON/controlfile

[oracle@oracle11g controlfile]$ mv o2.ctl o2bak.ctl

[oracle@oracle11g controlfile]$ ls -l

total 19072

-rw-r-----  1 oracle oinstall 9748480 Jun 30 15:25 o1_mf_6bcsqm50_.ctl

-rw-r-----  1 oracle oinstall 9748480 Jun 30 15:25 o2bak.ctl

 

 

此时,控制文件的o2.ctl已经不能够定位。此时,我们在数据库层面上进行一些操作。

 

 

SQL> alter system switch logfile;

System altered

 

 

切换日志成功,注意此处没有报错。这时候,我们尝试进行关闭数据库。

 

 

[oracle@oracle11g controlfile]$ sqlplus /nolog

 

SQL*Plus: Release 11.2.0.1.0 Production on Thu Jun 30 15:26:42 2011

 

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

SQL> conn / as sysdba

Connected.

SQL> shutdown normal;

ORA-00210: cannot open the specified control file

ORA-00202: control file: '/u01/oradata/WILSON/controlfile/o2.ctl'

ORA-27041: unable to open file

Linux Error: 2: No such file or directory

Additional information: 3

 

SQL> shutdown immediate

ORA-00210: cannot open the specified control file

ORA-00202: control file: '/u01/oradata/WILSON/controlfile/o2.ctl'

ORA-27041: unable to open file

Linux Error: 2: No such file or directory

Additional information: 3

 

SQL> shutdown abort

ORACLE instance shut down.

 

 

这时候,进行normalimmediate方式关闭数据库都是以失败信息报错。只能使用abort模式进行强制关闭。在alert_log.log中,也有相应的提示。

 

 

Thu Jun 30 15:26:54 2011

Errors in file /u01/diag/rdbms/wilson/wilson/trace/wilson_m000_6282.trc:

ORA-00210: cannot open the specified control file

ORA-00202: control file: '/u01/oradata/WILSON/controlfile/o2.ctl'

ORA-27041: unable to open file

Linux Error: 2: No such file or directory

Additional information: 3

Thu Jun 30 15:27:24 2011

Shutting down instance (abort)

 

 

当再次进行启动数据库时,启动失败。

 

 

oracle@oracle11g controlfile]$ sqlplus /nolog

 

SQL*Plus: Release 11.2.0.1.0 Production on Thu Jun 30 15:27:44 2011

 

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

 

SQL> conn / as sysdba

Connected to an idle instance.

SQL> startup nomount

ORACLE instance started.

 

Total System Global Area  414298112 bytes

Fixed Size                  1336904 bytes

Variable Size             318769592 bytes

Database Buffers           88080384 bytes

Redo Buffers                6111232 bytes

SQL> alter database mount

  2  ;

alter database mount

*

ERROR at line 1:

ORA-00205: error in identifying control file, check alert log for more info

 

 

在启动实例(nomount阶段),Oracle启动成功。在进行mount文件时,系统报错。在进行mount过程中,Oracle会根据参数文件中定义的control_files参数,定位到参数文件,尝试打开参数文件以获取到数据库文件等更高层面的信息参数。此时,我们一个控制文件不存在,必然影响到mount阶段的实现。此时,alert_log中信息。

 

 

Thu Jun 30 15:27:55 2011

MMNL started with pid=16, OS id=6371

starting up 2 shared server(s) ...

ORACLE_BASE from environment = /u01

Thu Jun 30 15:28:01 2011

alter database mount

ORA-00210: cannot open the specified control file

ORA-00202: control file: '/u01/oradata/WILSON/controlfile/o2.ctl'

ORA-27037: unable to obtain file status

Linux Error: 2: No such file or directory

Additional information: 3

Thu Jun 30 15:28:01 2011

Checker run found 1 new persistent data failures

ORA-205 signalled during: alter database mount

...

[oracle@oracle11g trace]$

 

 

 

当控制文件不完全时,数据库是无法经过mount阶段启动的。

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17203031/viewspace-701209/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
求道~

注册时间:2010-11-30

  • 博文量
    545
  • 访问量
    7753541