ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Windows下控制文件损坏的恢复

Windows下控制文件损坏的恢复

原创 Linux操作系统 作者:kinglin_zy 时间:2011-10-11 12:08:30 0 删除 编辑

【背景】笔记本上装的实验环境,Oralce起不起来了。因为在虚拟机上也装有实验环境,一直就懒得去恢复。正好国庆有时间,就恢复了一下。

【现象】startup open; 或者startup mount 都报ora-00600 :[kccpb_sanit_check_2],[31689],[31686],[0x0].[],[],[],[]

Startup nomount 正常,进一步 alter database mount 就又报ora-00600 。shutdown immediate 就报ORA-01507 database not mounted。

【分析】显然是数据库装载不成功,可能是控制文件损坏了。

SQL> show parameters control_files;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string     

-- 居然没有control file的信息,直接去目录找,三个control file都在,但最后修改日期都不一致。只好一个个去试,先不改spfile,把spfile备成pfile。在pfile中指定control file,然后用pfile 来启动数据库。这里路径用$ORACLE_HOME代替。

SQL> create pfile = '$ORACLE_HOME\dbs\init10102011.ora' from spfile
  2  /
 
Done
 。。。

修改 pfile ,指定control file(三个中的一个)

。。。
SQL> startup pfile = ''$ORACLE_HOME\dbs\init10102011.ora'

ora-00600 :[kccpb_sanit_check_2],[31689],[31686],[0x0].[],[],[],[]

依旧无法加载,换成其他的control file 再尝试。。。结果都不行。

发现RMAN是no catalog 模式,又没有备份,只好用第二种方法去恢复控制文件了

1) restore a backup of a controlfile and recover

2) recreate the controlfile

3) restore the database from last good backup and recover

由于数据库是nomount,dump control file, 或者alter database backup controlfile to filename显然是不行的。还好之前执行过alter database backup controlfile to trace。找到trace 文件,提取control file的信息,然后重建control file,因为rman之前运行在no catalog 模式下,所以引用 trace 的官方comment 就是:

Data used by Recovery Manager will be lost.

接下来就准备用RMAN retore,然后recover了。

C:\>rman traget/
恢复管理器: 版本10.1.0.2.0 - Production

Copyright (c) 1995, 2004, Oracle.  All rights reserved.
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-03000: recovery manager compiler component initialization failed
RMAN-06000: could not open recovery manager library file: D:\Oracle\product\10.1
.0\Client_1\RDBMS\ADMIN\
LFI-00108: Open expect tRECOVER.BSQhe file [RECOVER][BSQ] to exist.

直接把服务器端的RECOVER.BSQ copy 到客户端,结果报RMAN-06035: wrong version of recover.bsq, expecting 9.2.0.0, found 10.2.0.0。

原来当初我坑爹地装的服务端的版本是10.2.0.客户端是10.1.0,还装在同一台机器上。干脆直接启动f服务器端地RMAN. 先把ORACLE_SID指向服务器上数据库的SID,然后把path指向服务器端(需要将10.2.0的路径放在10.1.0之前,然后重启电脑才能生效)。RMAN总算起来了:

RMAN> restore controlfile form. '。。。\CONTROL04.CTL';
启动retore 于10-10月-11
使用通道ORA_DISK_1

通道 ORA_DISK_1: 已复制控制文件副本
输出文件名=。。。。\control01.ctl
完成 retore 于 10-10月-11

RMAN>alter database mount;

数据库已装载
释放的通道:ORA_DISK_1

RMAN>alter database open;
ORA-01157:无法标识/锁定数据文件 4 -请参阅 DBWR跟踪文件
ORA-01110:数据文件 4:'G:\RMAN\RMAN_DATA4.DBF'

直接把offline drop 掉

。。。。。

SQL> alter database datafile  'G:\RMAN\RMAN_DATA4.DBF' drop;

。。。。。

SQL> alter database open;

数据库已更改

SQL> select status from v$instance;
 
STATUS
------------
OPEN

SQL>show parameters control_files;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_files                        string      。。\CONTROL01.CTL
 

【总结】

1.控制文件太重要了,一定要备份,一定要有备份。

2,.在有Catalog db 的RMAN 备份中,有三个点要注意:
RMAN 执行的数据库版本
RMAN Catalog 数据库版本
RMAN 备份的Target 数据库版本

一般需要遵循如下:
  RMAN 执行的数据库版本和Target 数据库版本一致。
  RMAN catalog schema 版本必须大于等于RMAN 执行版本。
  RMAN target DB 版本必须大于等于RMAN catalog 数据库版本。

为了避免RMAN的兼容性问题,管理多个数据库,最好的方法还是从每个目标数据库中本地运行RMAN 。 这种方式部署RMAN 备份的方法存在一些缺陷,但在管理多个数据库恢复时确是最佳方式.

3. 对于重要的生产库,最好还是RMAN catalog模式。有恢复目录了,就不必担心会循环重用记录地问题了。只要在CONTROL_FILE_RECORD_KEEP_TIME 参数指定的时间内至少实现一次恢复目录同步,虽然这些记录将随着时间的推移被删除, 但是恢复目录则从不会删除这些记录。

4. 关于control file 的几个参数:
(1) MAXDATAFILES
       The MAXDATAFILES option of CREATE DATABASE determines the number of data files a database can have. With Oracle Real Application Clusters, databases tend to have more data files and log files than an exclusive mounted database.

(2) MAXINSTANCES
       The MAXINSTANCES option of CREATE DATABASE limits the number of instances that can access a database concurrently. The default value for this option under z/OS is 15. Set MAXINSTANCES to a value greater than the maximum number of instances you expect to run concurrently.

(3)MAXLOGFILE and MAXLOGMEMBERS
       The MAXLOGFILES option of CREATE DATABASE specifies the maximum number of redo log groups that can be created for the database. The MAXLOGMEMBERS option specifies the maximum number of members or number of copies per group. Set MAXLOGFILES to the maximum number of instances you plan to run concurrently multiplied by the maximum anticipated number of groups per thread.

(4)MAXLOGHISTORY
       The MAXLOGHISTORY option of CREATE DATABASE specifies the maximum number of redo log files that can be recorded in the log history of the control file. The log history is used for automatic media recovery of Oracle Real Application Clusters.
       For Oracle Real Application Clusters, set MAXLOGHISTORY to a large value, such as 100. The control file can then store information about this number of redo log files. When the log history exceeds this limit, the Oracle server overwrites the oldest entries in the log history. The default for MAXLOGHISTORY is 0 (zero), which disables log history.
 
这4个参数中,我们在创建DB 时需要注意的是MAXDATAFILES 和MAXLOGHISTORY。 因为默认值较小。 在创建DB 时就需要把这2个参数设置成较大值。
       比如MAXDATAFILES 设置成8k,MAXLOGHISTORY 设置成1k。

与这几个参数相关的错误:

ORA-01164: MAXLOGFILES may not exceed string
Cause: MAXLOGFILES specified on the command line too large.
Action: Resubmit the command with a smaller MAXLOGFILES

ORA-01165: MAXDATAFILES may not exceed string
Cause: MAXDATAFILES specified on the command line too large.
Action: Resubmit the command with a smaller MAXDATAFILES

ORA-01166: file number string is larger than string (string)
Cause: File mentioned in CREATE CONTROLFILE has a file number which is larger than that specified for MAXDATAFILES or MAXLOGFILES.
Action: Increase the maximum specified on the command line.

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

上一篇: Datastage sg July-20
请登录后发表评论 登录
全部评论

注册时间:2009-09-22

  • 博文量
    58
  • 访问量
    67424