ITPub博客

首页 > 数据库 > Oracle > Oracle重建控制文件

Oracle重建控制文件

原创 Oracle 作者:DBA_建瑾 时间:2014-06-22 00:27:02 4 删除 编辑

Oracle RAC 环境下重建控制文件
注:ORA-00600: internal error code, arguments: [3716], [], [], [], [], [], [], [] 问题处理。

问题:

在RAC环境下分别启动两个实例都出现了ora-03113错误。

[oracle@rac1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Fri Jun 6 08:50:32 2014

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

Connected to an idle instance.


SQL> startup

ORACLE instance started.

Total System Global Area  839282688 bytes

Fixed Size                      2233000 bytes

Variable Size              557845848 bytes

Database Buffers      276824064 bytes

Redo Buffers               2379776 bytes

ORA-03113: end-of-file on communication channel

Process ID: 23438

Session ID: 1 Serial number: 3

 

查看alter日志中发现如下信息:

ORA-00600: internal error code, arguments: [3716], [], [], [], [], [], [], [] 
ORA-600 signalled during: ALTER DATABASE OPEN... 

 

原因是在节点重启时,实例没有完成一至性关闭。可能错过了写控制文件。

在启动实例的时候会发现控制文件配置有问题。

 

首先想到的是用rman备份来恢复控制文件,但是数据库没有备份。

RMAN> list backup;

using target database control file instead of recovery catalog

specification does not match any backup in the repository

 

 

并且数据库没开归档。

SQL> archive log list;

Database log mode               No Archive Mode

Automatic archival        Disabled

Archive destination                USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     1

Current log sequence            2

 

解决方法:

 

1.生成可以重建控制文件的文本

SQL> alter database backup controlfile to trace;

Database altered.

 

2.在alert日志中找到生成的文件路径

alter database backup controlfile to trace

Backup controlfile written to trace file /u01/app/oracle/diag/rdbms/racdb/RACDB2/trace/RACDB2_ora_10126.trc

Completed: alter database backup controlfile to trace

 

3.打开此trace文件再找到创建控制文件的SQL

 

4.执行此SQL重新创建控制文件

SQL> @?/crecontr

CREATE CONTROLFILE REUSE DATABASE "RACDB" NORESETLOGS  NOARCHIVELOG

*

ERROR at line 1:

ORA-01503: CREATE CONTROLFILE failed

ORA-12720: operation requires database is in EXCLUSIVE mode

 

在 rac环境下有cluster_database这个参数

SQL> show parameter cluster_database

NAME                                     TYPE      VALUE

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

cluster_database                  boolean         TRUE

cluster_database_instances       integer  2

 

修改参数cluster_database

SQL> alter system set cluster_database=false scope=spfile;

System altered.

 

重新启动数据库到nomount状态

SQL> startup nomount;

ORACLE instance started.

Total System Global Area  839282688 bytes

Fixed Size                      2233000 bytes

Variable Size              574623064 bytes

Database Buffers      260046848 bytes

Redo Buffers               2379776 bytes

SQL> show parameter cluster

NAME                                     TYPE      VALUE

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

cluster_database                  boolean         FALSE

cluster_database_instances       integer  1

cluster_interconnects                  string

 

重新执行创建语句,创建成功

SQL> @?/crecontr

Control file created.

 

启动到Open状态报错

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-01113: file 1 needs media recovery

ORA-01110: data file 1: '+DATA/racdb/datafile/system.260.849510771'

 

Recovey恢复

SQL> recover database;

Media recovery complete.

 

SQL> alter database open;

Database altered.

 

可以启动了,但是查看alert发现如下信息。

 

ORA-12012: error on auto execute of job "SYS"."BSLN_MAINTAIN_STATS_JOB"

ORA-25153: Temporary Tablespace is Empty

ORA-06512: at "DBSNMP.BSLN_INTERNAL", line 2073

ORA-06512: at line 1

Tue Jun 10 16:26:04 2014

Starting background process SMCO

Tue Jun 10 16:26:04 2014

SMCO started with pid=39, OS id=12213

Tue Jun 10 16:26:06 2014

Errors in file /u01/app/oracle/diag/rdbms/racdb/RACDB2/trace/RACDB2_j000_12209.trc:

ORA-25153: Temporary Tablespace is Empty

 

创建控制文件的SQL没有执行全,临时表空间是空。

在trace文件中找到相应sql重新执行。

ALTER TABLESPACE TEMP ADD TEMPFILE '+DATA/racdb/tempfile/temp.263.849510777' REUSE;

 

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '+DATA/racdb/tempfile/temp.263.849510777' REUSE;

Tablespace altered.

 

 

改回rac环境的参数并重启两个实例

SQL> alter system set cluster_database=true scope=spfile;

System altered.

 

SQL> alter system set cluster_database_instances=2 scope=spfile;

System altered.

 

SQL> alter system checkpoint;

System altered.

 

SQL> /

System altered.

 

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup;

ORACLE instance started.

Total System Global Area  839282688 bytes

Fixed Size                      2233000 bytes

Variable Size              574623064 bytes

Database Buffers      260046848 bytes

Redo Buffers               2379776 bytes

Database mounted.

Database opened.

 

启动第二个节点

SQL> startup;

ORACLE instance started.

Total System Global Area  839282688 bytes

Fixed Size                      2233000 bytes

Variable Size              557845848 bytes

Database Buffers      276824064 bytes

Redo Buffers               2379776 bytes

Database mounted.

Database opened.

 

实例全部启来了。

 

总结:

1.执行alter database backup controlfile to trace生成可以重建控制文件的trace文件

2.在alert日志中找到生成的trace文件路径

3.如果在 rac环境下需要修改参数cluster_database

4.打开此trace文件再找到创建控制文件的SQL语句

5.执行此SQ语句重新创建控制文件

6.如果在RAC环境需改回cluster_database参数设置
7.重启数据库(需要recovery)

      

            DBA_
建瑾
            2014.6.21

 

 

 

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

请登录后发表评论 登录
全部评论

注册时间:2013-11-15

  • 博文量
    22
  • 访问量
    261216