oracle重建控制文件流程,重建控制文件的一次实施过程

故障现象:

先做一个实验:

今日查看oracle控制文件移动和修改,发现本机安装oracle数据库启动时只使用了一个控制文件。

如下:SQL> select * from V$controlfile;

STATUS  NAME                 IS_ BLOCK_SIZE FILE_SIZE_BLKS

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

/opt/oracle/oradata/ NO       16384            450

orcl/control02.ctl

1、决定将控制文件01和03加入进去,于是执行命令那个如下:

SQL> alter system set control_files = '/opt/oracle/oradata/orcl/control01.ctl',

2  '/opt/oracle/oradata/orcl/control02.ctl',

3  '/opt/oracle/oradata/orcl/control03.ctl' SCOPE=SPFILE;

System altered.

2、关闭数据库 SQL> shutdown immediate;

3、再次启动数据库,数据无法启动,报错ORA-00214如下:

SQL> startup

ORACLE instance started.

Total System Global Area 1258291200 bytes

Fixed Size                  1219160 bytes

Variable Size             318768552 bytes

Database Buffers          922746880 bytes

Redo Buffers               15556608 bytes

ORA-00214: control file '/opt/oracle/oradata/orcl/control02.ctl' version 599

inconsistent with file '/opt/oracle/oradata/orcl/control01.ctl' version 541

故障分析

1、根据错误提示为控制文件版本不一致导致。控制文件原理为维护数据库的当前物理状态,为二进制的文件,数据库打开的时候控制文件一致变化。主要记录数据库名字、标示、当前日志SCN、表空间信息等。理论上3个控制文件应该一致。

2、因为版本不一致,且控制文件2版本最新为version 599.

故障解决

1、在操作系统上,备份所有控制文件,同时使用控制文件control02.ctl覆盖重命名control01.ctl、control03.ctl,保证版本一致。

2、操作后,数据库启动正常,可以使用,问题解决。

问题延伸

在先前如果过覆盖控制文件方法无法解决,

25d709b17cd3dbade7218d5d42063ddd.png

这种情况就是控制文件已经损坏了。

可以重新建立控制文件来解决,具体操作步骤如下:

1、startup nomount;

2、备份控制文件.SQL >ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

f77c827d91c8ee9d6bbe0cf6cd740ee9.png

所以注意:运用这个 命令数据库至少要在mount状态上。

这时候会在udump目录下生成SID_ora_*.trc文件,该文件中有创建控制文件的脚本,一般分为

归档模式和非归档模式,

3、我的数据库为非归档模式,选择如下:

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "ORCL9" NORESETLOGS  NOARCHIVELOG

--  SET STANDBY TO MAXIMIZE PERFORMANCE

MAXLOGFILES 5

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 1

MAXLOGHISTORY 907

LOGFILE

GROUP 1 'D:\ORACLE9I\ORA92\ORADATA\ORCL9\REDO01.LOG'  SIZE 1M,

GROUP 2 'D:\ORACLE9I\ORA92\ORADATA\ORCL9\REDO02.LOG'  SIZE 1M,

GROUP 3 'D:\ORACLE9I\ORA92\ORADATA\ORCL9\REDO03.LOG'  SIZE 1M

-- STANDBY LOGFILE

DATAFILE

'D:\ORACLE9I\ORA92\ORADATA\ORCL9\SYSTEM01.DBF',

'D:\ORACLE9I\ORA92\ORADATA\ORCL9\UNDOTBS01.DBF'

CHARACTER SET ZHS16GBK

;

# Recovery is required if any of the datafiles are restored backups,

# or if the last shutdown was not normal or immediate.

RECOVER DATABASE

# Database can now be opened normally.

ALTER DATABASE OPEN;

# Commands to add tempfiles to temporary tablespaces.

# Online tempfiles have complete space information.

# Other tempfiles may require adjustment.

ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\ORACLE9I\ORA92\ORADATA\ORCL9\TEMP01.DBF'

SIZE 52428800  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

# End of tempfile additions.

#

#     Set #2. RESETLOGS case

#

# The following commands will create a new control file and use it

# to open the database.

# The contents of online logs will be lost and all backups will

# be invalidated. Use this only if online logs are damaged.

4、startup nomount 启动数据库

5、在SQL模式下:执行如下命令。

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "APTS" NORESETLOGS  NOARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/opt/oracle/oradata/orcl/redo01.log'  SIZE 50M,

GROUP 2 '/opt/oracle/oradata/orcl/redo02.log'  SIZE 50M,

GROUP 3 '/opt/oracle/oradata/orcl/redo03.log'  SIZE 50M

-- STANDBY LOGFILE

DATAFILE

'/opt/oracle/oradata/orcl/system01.dbf',

'/opt/oracle/oradata/orcl/undotbs01.dbf',

'/opt/oracle/oradata/orcl/sysaux01.dbf',

'/opt/oracle/oradata/orcl/users01.dbf',

'/opt/oracle/oradata/orcl/example01.dbf'

CHARACTER SET ZHS16GBK;

6、执行:SQL > RECOVER DATABASE

必须recover ,要不然会报

2e6ffd96501c77d502cbc18f107b35ea.png

7、执行: SQL > ALTER DATABASE OPEN;

8、执行: SQL > ALTER TABLESPACE TEMP ADD TEMPFILE 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\APTS\TEMP01.DBF'

SIZE 20M  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

9、问题解决,控制文件重建成功。

10、如果遇到失败情况,请按照上述步骤重新确认在执行。

最后,重建好后,建议重新备份一次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值