recreate a controlfile

简介:
This way is applicable software version that is Oracle Database - Enterprise Edition - Version 9.0.1.0 and later

1、需要重建控制文件的几个场景(circumstances)

1.1 控制文件当前所有副本都已经丢失或者损坏
1.2 当在还原一个控制文件遭到丢失或损坏的备份
1.3 需要更改控制文件中的硬限制数据库参数
1.4 当数据库移动到另一台服务器,并且文件位于不同的位置


2、重建控制文件的一般步骤
2.1 数据库实例在MOUNT或者OPEN阶段,生成一份控制文件的转储(一份ascii dump文件)

SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;


2.2 定位trace文件存放路径的两种方法

[1]使用user_dump_dest参数显示
a.显示路径

SQL> show parameter user_dump_dest 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest                       string      /oravl01/oracle/diag/rdbms/zldb4/zldb4/trace


b.找到trace文件
进入到参数显示出来的路径后,使用命令:ls -lrt 按照日期/时间显示出最新生成的跟踪文件


# cd /oravl01/oracle/diag/rdbms/zldb4/zldb4/trace
# ls -lrt
...
-rw-r-----    1 orauser  asmadmin       9165 Jan 27 17:55 zldb4_ora_15925498.trc


[2]使用ORADEBUG命令输出生成trace文件的名称(全路径)                                             


SQL> oradebug setmypid;         ---跟踪当前会话
Statement processed.
SQL> oradebug tracefile_name;   ---查看trace文件名及位置
/oravl01/oracle/diag/rdbms/zldb4/zldb4/trace/zldb4_ora_15925498.trc


2.3从跟踪文件里找到重建控制文件的命令,并编辑成脚本文件,方便执行(createcon.sql)


CREATE CONTROLFILE REUSE DATABASE "ZLDB4" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 584
LOGFILE
  GROUP 1 '+ZLDB4_DATA1/zldb4/onlinelog/group_1.257.923458569'  SIZE 1024M BLOCKSIZE 512,
  GROUP 2 '+ZLDB4_DATA1/zldb4/onlinelog/group_2.258.923458571'  SIZE 1024M BLOCKSIZE 512,
  GROUP 3 '+ZLDB4_DATA1/zldb4/onlinelog/group_3.259.923458575'  SIZE 1024M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  '+ZLDB4_DATA1/zldb4/datafile/system.260.923458579',
  '+ZLDB4_DATA1/zldb4/datafile/sysaux.261.923458581',
  '+ZLDB4_DATA1/zldb4/datafile/undotbs1.262.923458583',
  '+ZLDB4_DATA1/zldb4/datafile/users.264.923458593',
  '+ZLDB4_DATA1/zldb4/datafile/ts_zhiling_data1.dbf',
  '+ZLDB4_DATA1/zldb4/datafile/ts_zhiling_index1.dbf',
  '+ZLDB4_DATA1/zldb4/datafile/ts_zhiling_param1.dbf',
  '+ZLDB4_DATA1/zldb4/datafile/ts_zhiling_data2.dbf',
  '+ZLDB4_DATA1/zldb4/datafile/ts_zhiling_data3.dbf',
  '+ZLDB4_DATA1/zldb4/datafile/ts_zhiling_data4.dbf',
  '+ZLDB4_DATA1/zldb4/datafile/ts_zhiling_data5.dbf',
  '+ZLDB4_DATA1/zldb4/datafile/ts_zhiling_data6.dbf',
  '+ZLDB4_DATA1/zldb4/datafile/test_data.275.965471119',
  '+ZLDB4_DATA1/zldb4/datafile/test_data_20170116',
  '+ZLDB4_DATA1/zldb4/datafile/big_data.280.965566361',
  '+ZLDB4_DATA1/zldb4/datafile/small_data.281.965566743',
  '+ZLDB4_DATA1/zldb4/datafile/test_data.282.966450905'
CHARACTER SET ZHS16GBK
;



2.4关闭实例,并删除数据库控制文件,模拟控制文件缺失环境


SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

ASMCMD> ls
Current.256.923458569.bak
ASMCMD> rm -f *



2.5在控制文件丢失的情况下,尝试打开数据库

SQL> SHUTDOWN IMMEDIATE
Database closed.
Database dismounted.
ORACLE instance shut down.

SQL> STARTUP
ORACLE instance started.

Total System Global Area 2.1446E+10 bytes
Fixed Size                  2255824 bytes
Variable Size            3087008816 bytes
Database Buffers         1.8321E+10 bytes
Redo Buffers               35782656 bytes
ORA-00205: error in identifying control file, check alert log for more info




2.6重建控制文件

SQL> @/home/orauser/.scrit/createcon.sql

Control file created.


2.7打开数据库

SQL> ALTER DATABASE OPEN;

Database altered.

SQL> SHOW PARAMETER CON

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cluster_interconnects                string
control_file_record_keep_time        integer     7
control_files                        string      +ZLDB4_DATA1/zldb4/controlfile
                                                 /current.256.923458569.bak

SQL> SELECT INSTANCE_NAME,STATUS FROM V$INSTANCE;

INSTANCE_NAME    STATUS
---------------- ------------
zldb4            OPEN



目录
相关文章
|
7月前
19c restore standby controlfile from servic
restore standby controlfile from servic
51 0
两次 backup archivelog like
试试在12.1~19c的RAC连续运行两次 backup archivelog like ‘+%’ not backed up 1 times
|
SQL Oracle 关系型数据库
|
关系型数据库 MySQL 数据库
|
关系型数据库 MySQL 数据库
|
关系型数据库 MySQL 数据库
|
存储 Oracle 关系型数据库
|
Oracle 关系型数据库 数据库
|
SQL Oracle 关系型数据库