重建控制文件的方法

參考原文:

How to Recreate a Controlfile (Doc ID 735106.1)

适用于:

Oracle Database - Enterprise Edition - Version 9.0.1.0 and later

Information in this document applies to any platform.

解决方式:

警告:

仅仅有遇到下列场景时,你才应该recreate 你的控制文件

1.全部的当前的控制文件copies 已经丢失 或者 都已经损坏(corrupted)

2.你正在restore一个backup,在此backup中控制文件已经损坏 或者丢失(missing)

3.你须要在控制文件里改变一个hard limit 的数据库參数(database parameter)

4.假设你正在move 你的database 到一个server上,而且files位于不同的location上。

5. oracle 技术支持人员建议你重建控制文件。

第一种情况:在已经存在的db中(而且该db是mount or  open状态)建立一个新的controlfile

首先。必须生成一个控制文件的ascii dump文件

SQL> alter database backup controlfile to trace;

该trace文件被生成在udump文件夹下:

SQL> show parameter user_dump_dest

NAME            TYPE         VALUE

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

user_dump_dest  string       /oracle/product/11.1.0/db_1/diag/rdbms/V11/trace

到/oracle/product/11.1.0/db_1/diag/rdbms/V11/trace文件夹下。依照时间排序:

% cd /oracle/product/11.1.0/db_1/diag/rdbms/V11/trace

% ls -ltr

一旦定位到该文件。该文件会与一般的trace file一样显演示样例如以下:

Trace file /oracle/product/11.1.0/db_1/diag/rdbms/V11/trace/V11_ora_31225.trc

Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

ORACLE_HOME = /oracle/product/11.1.0/db_1

你感兴趣的是 包含 控制文件创建脚本的那一段。

改动trace file 并用改动后的脚本来建立控制文件

CREATE CONTROLFILE REUSE DATABASE "V11" NORESETLOGS ARCHIVELOG 

MAXLOGFILES 16 

MAXLOGMEMBERS 3 

MAXDATAFILES 100 

MAXINSTANCES 8 

MAXLOGHISTORY 292 

LOGFILE 

GROUP 1 '/oradata/V11/redo01.log' SIZE 50M, 

GROUP 2 '/oradata/V11/redo02.log' SIZE 50M, 

GROUP 3 '/oradata/V11/redo03.log' SIZE 50M 

DATAFILE 

'/oradata/V11/system01.dbf', 

'/oradata/V11/sysaux01.dbf', 

'/oradata/V11/undotbs01.dbf',

'/oradata/V11/user01.dbf' 

CHARACTER SET WE8MSWIN1252 

;

--->请特别注意:CHARACTER SET WE8MSWIN1252  能够由 alert_sid.log中得到。

ALTER TABLESPACE TEMP_TEST ADD TEMPFILE '/oradata/V11/temp01.dbf'  reuse;

"CREATE CONTROLFILE"之前的不论什么东西请删掉。

CHARACTER SET之后的不论什么东西请删掉。一定要保留那个分号

在上面的样例中,我们选择了NORESETLOGS 选项,而且该db执行于archivelog模式下。

请务必保证使用shutdown immediate选项来关闭数据库。然后启动到nomount状态下:

 SQL> shutdown immediate;

 SQL> startup nomount;

 SQL>@control.sql

 

注意:当重建控制文件完成后,务必保证加入已经存在temp file:

alter tablespace temp_ts add tempfile '?

/oradata/V11/temp01.dbf'?

reuse;

控制文件一旦被创建,db 被自己主动带入到mounted 状态。

假设你使用了resetlogs打开了database,请尽快做一个backup

另外一种情况:该db无法到mount 状态

1.要么restore 控制文件,

2.要么有一个重建控制文件的脚本,例如以下是一个样例:

CREATE CONTROLFILE REUSE DATABASE "DBNAME" NORESETLOGS ARCHIVELOG

Follow the format listing:

- Location of redo logs.

- Location of datafiles

- Specifying the characterset.

Once you have listed all files correctly you are ready to recreate your controlfile

SQL> startup nomount;

SQL>@control.sql

【翻译自mos中文文章】重建控制文件的方法的更多相关文章

  1. 【翻译自mos文章】在重建控制文件之前应该考虑的事情

    在重建控制文件之前应该考虑的事情 来源于: Things to Consider Before Recreating the Controlfile (文档 ID 1475632.1) 适用于: Or ...

  2. Oracle 重建控制文件一例

    环境:OEL 5.7 + Oracle 10.2.0.5 背景:在Oracle的运维过程中,时常会遇到一些场景是需要重建控制文件才可以解决的.本文的场景可以通过复制控制文件到新路径,运行一段时间后,再 ...

  3. 【练习】trace文本重建控制文件

    这个小练习是针对控制文件全部丢失后怎么能快速的重建一个控制文件,快速的起库 1.备份控制文件到trace下 SQL> alter database backup controlfile to t ...

  4. Oracle 重建控制文件

    前些天在做Oracle数据库恢复测试时,因为一些异常操作导致控制文件出了问题,数据库无法正常使用,这里记录一下重建控制文件的操作 一.使用sysdba用户登入数据库 此时普通用户已无法链接数据库 二. ...

  5. 重建控制文件ORA-12720

    重建过程出错:ORA-01503: CREATE CONTROLFILE failedORA-12720: operation requires database is in EXCLUSIVE mo ...

  6. oracle之 利用 controlfile trace文件重建控制文件

    一. 11g RAC 重建控制文件 1. --"create controlfile"命令生成到追踪文件中:alter database backup controlfile to ...

  7. Oracle控制文件多路复用以及Oracle备份重建控制文件

    控制文件中记录了oracle数据库的物理结构,也就是记录了数据库数据文件和日志文件的位置,控制文件中还记录了多种SCN,用这些SCN来确定数据文件和日志文件是否是正确的.如果不正确那么数据库就需要恢复 ...

  8. 【Oracle】利用trace文件重建控制文件

    重建步骤: 1.生成trace文件: alter database backup controlfile to trace; 2.找到生成的trace文件: show parameter dump u ...

  9. oracle rac重建控制文件

    1.使用sqlplus连接到已经mount或open的rac数据库 sql> alter database backup controlfile to trace noresetlogs; 2. ...

随机推荐

  1. Linux下通用线程池的创建与使用

    线程池:简单地说,线程池 就是预先创建好一批线程,方便.快速地处理收到的业务.比起传统的到来一个任务,即时创建一个线程来处理,节省了线程的创建和回收的开销,响应更快,效率更高. 在linux中,使用的 ...

  2. PHP实现4种排序算法

    1.冒泡排序 冒泡排序其实是基于“交换”.每次从第一个记录开始,一.二两个记录比较,大的往后放,二三两个记录比较...依次类推,这就是一趟冒泡排序.每一趟冒泡排序后,无序序列中值最大的记录冒到序列末尾 ...

  3. 网络工程实训_4RIP路由(动态路由)

    实验4:RIP路由.包括RIPv1:RIPv2 动态路由协议包括距离向量路由协议和链路状态路由协议.RIP(Routing Information Protocol,路由信息协议)是使用最广泛的距离向 ...

  4. 使用SoapUI生成WS请求报文

    WSDL地址示例:http://10.1.84.10:8100/webService/common/mail?wsdl   打开SoapUI,创建一个Project,输入wsdl地址就ok. 1.访问 ...

  5. Android 应用开发者必看的 9 个 Tips

    去年,Android应用数量已经超过iOS成为全球最大的生态系统,不过在这多大百万的应用中,有些应用的下载量很大,赚的盆满钵满:另外一些应用就石沉大海.无人问津了. 拥有多年程序开发经验,最近在开发A ...

  6. C# Timer使用方法示例

    实例化一个timer: // 每5分钟执行一次,每次执行的间隔毫秒时长 System.Timers.Timer timer = new System.Timers.Timer(5*60*1000); ...

  7. C#单线程内存占用过大导致无法创建新的对象

    https://msdn.microsoft.com/zh-cn/library/8cxs58a6.aspx  按照csdn原文 默认分配的堆栈大小为1mb  可以通过maxstacksize改变默认 ...

  8. 转CentOS — MySQL备份 Shell 脚本

    http://www.cnblogs.com/bruceleeliya/archive/2012/05/04/2482733.html 使用 mysqldump 备份数据库,通过 FTP 上传到备份服 ...

  9. Python log() 函数

    描述 log() 方法返回x的自然对数,x > 0. 语法 以下是 log() 方法的语法: import math math.log( x ) 注意:log()是不能直接访问的,需要导入 ma ...

  10. Tomcat7 catalina.out 日志切割

    安装步骤例如以下: 下载(最新版本号)     #  wget http://cronolog.org/download/cronolog-1.6.2.tar.gz 假设下载不了,直接网上查找,ftp ...