Oracle 如何重建一个控制文件?

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com

 

 

适用于:

Oracle Database – Enterprise Edition – 版本9.0.1.0 及以上
本文信息适用于任何平台。

目标

本文描述了如何重建你的控制文件。

解决方案

警告

你仅能在以下情况重建你的控制文件:

  • 控制文件的所有当前副本丢失或损坏。
  • 你在控制文件损坏或丢失的位置还原备份。
  • 你需要在控制文件中更改一个hard limit数据库参数。
  • 如果你在将数据库移动到另一个服务器且文件位于另一个位置。
  • Oracle Customer Support 建议你这么做。

从一个被mount或打开的现有数据库创建一个新的控制文件。

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

虽然数据库被mount或打开,发出:

SQL> alter database backup controlfile to trace;

user_dump_destination 目录中会生成一个跟踪文件。

SQL> show parameter user_dump_dest

NAME            TYPE         VALUE
————–  ——       ————————————————
user_dump_dest  string       /oracle/product/11.1.0/db_1/diag/rdbms/V11/trace

在导航到目录后,通过发出以下命令,以日期/时间定位最近的跟踪文件:   ls -ltr.

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

% ls -ltr

一旦你定位了文件,它会显示为一个普通的跟踪文件:

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

(或)

 

定位跟踪文件一个更简单的方法如下:

 

SQL> alter database backup controlfile to trace;

Database altered.

SQL> oradebug setmypid;
Statement processed.
SQL> oradebug tracefile_name;
/opt/app/oracle/diag/rdbms/ora11g/ORA11G/trace/ORA11G_ora_17822.trc

 

你对包含create controlfile脚本的部分有兴趣。

更改跟踪文件并将起用作创建control的脚本。

 

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
;

ALTER TABLESPACE TEMP_TEST ADD TEMPFILE ‘˜/oradata/V11/temp01.dbf’™ reuse;

 

删除”CREATE CONTROLFILE”以上和CHARACTER SET以后的一切是重要的。确保你留下分号。 “;”。

在上述例子中我们选择了NORESETLOGS选项并在ARCHIVELOG模式下运行数据库。在成功保存脚本后,你现在能重新控制文件。当关闭数据库时,确保你使用immediate选项关闭。

 

SQL> shutdown immediate;

SQL> startup nomount;

SQL>@control.sql

 

注:在重建控制文件后,确保你添加了现有的TEMP 文件:

例如:

alter tablespace temp_ts add tempfile ‘˜/oradata/V11/temp01.dbf’™ reuse;

一旦控制文件被成功创建,数据库被自动mounted。如果你使用了一个resetlogs打开数据库,尽快创建备份很重要。

从无法mount的数据库创建新的控制文件.

在罕见情况下,你没有控制文件来进行:

  1. 还原
  2. 或有”backup controlfile to trace script”中的脚本

你必须从一开始创建脚本。

CREATE CONTROLFILE REUSE DATABASE “DBNAME” NORESETLOGS ARCHIVELOG

按照列出的格式:

– 重做日志的位置。

– 数据文件的位置

– 指定字符集。

一旦你正确列出了所有文件,你就能重建控制文件

SQL> startup nomount;

SQL>@control.sql

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号