广告
返回顶部
首页 > 资讯 > 数据库 >ORACLE之重建控制文件
  • 937
分享到

ORACLE之重建控制文件

2024-04-02 19:04:59 937人浏览 薄情痞子
摘要

这里上传图片一直失败,想要查看详细信息和截图的可以下载附件首先看一下控制文件的理解:控制文件是一个二进制文件,用于记录数据库的物理结构。一个控制文件只属于一个数据库。创建数据库时,创建控制文件。当数据库的物

这里上传图片一直失败,想要查看详细信息和截图的可以下载附件


首先看一下控制文件的理解:

控制文件是一个二进制文件,用于记录数据库的物理结构。一个控制文件只属于一个数据库。创建数据库时,创建控制文件。当数据库的物理结构改变的时候,oracle会更新控制文件,不能手动修改内容。


控制文件内容有:数据库名、数据库创建的时间戳、数据文件的名字和位置、redo log (联机重做日志文件)的名字和位置、表空间信息、当前日志的序列号、checkpoint 信息、最新的 RMAN备份信息、归档日志信息

当这些信息更改或者变动时,oracle数据库会自动把最新信息更新到controlfile文件里面。

启动数据库时,Oracle从初始化参数文件(pfile/spfile)中获得控制文件的名字及位置,打开控制文件,然后从控制文件中读取数据文件和联机日志文件的信息,最后打开数据库。数据库运行时,Oracle会修改控制文件,所以,一旦控制文件损坏,数据库将不能正常运行。


创建控制文件有几个前提和几个区别:

前提:

1.如果是RAC下,则需要关闭群集:

alter system set cluster_database=FALSE scope=spfile sid='*';

否则恢复的时候会报错;

2.数据库在mount或者OPEN状态下,才能够重建。

区别:

重建控制文件有两种1.resetlogs恢复和noresetlogs恢复方式

下面还是着手恢复步骤:


重建控制文件,

备份方式

sql>alter  database backup  controlfile to trace  as ‘/u01/controlfile.trcd’;

创建controlfile备份文件到本地

alter database backup controlfile to  '+UNDO/ORCL/control';

这个是备份控制文件到ASM管理存储里面

如果不知道当前控制文件在哪里

查看位置:select * from v$controlfile;


首先,库能够进入mount状态或者处于OPEN状态:

SQL>startup mount;   或者直接open状态

SQL> alter database backup controlfile to trace as '/u01/controlfile.trc';

进入/u01/下面

然后编辑这个控制文件

里面包含两部分恢复脚本

一个就是使用norestlogs和另外一个是使用resetlogs恢复的脚本:

内容就不详细全部列出来了:

标识Set #1.NORESETLOGS  case的是使用noresetlogs恢复的

标识Set #1.RESETLOGS  case的是使用resetlogs恢复的

内容如下:

第一个是noresetlogs恢复的脚本

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE"ORCL" NORESETLOGS  ARCHiveLOG

    MAXLOGFILES 192

    MAXLOGMEMBERS 3

    MAXDATAFILES 1024

    MAXINSTANCES 32

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1'+UNDO/orcl/onlinelog/group_1.257.912261307'  SIZE 50M BLOCKSIZE 512,

  GROUP 2'+UNDO/orcl/onlinelog/group_2.258.912261307'  SIZE 50M BLOCKSIZE 512,

  GROUP 3'+UNDO/orcl/onlinelog/group_3.259.912261453'  SIZE 50M BLOCKSIZE 512,

  GROUP 4'+UNDO/orcl/onlinelog/group_4.260.912261453'  SIZE 50M BLOCKSIZE 512

DATAFILE

 '+DATA/orcl/datafile/system.256.912261237',

 '+DATA/orcl/datafile/sysaux.257.912261239',

 '+DATA/orcl/datafile/undotbs1.258.912261239',

 '+DATA/orcl/datafile/users.259.912261239',

 '+DATA/orcl/datafile/undotbs2.261.912261395'

CHARACTER SET UTF8

VARIABLE RECNO NUMBER;

EXECUTE :RECNO :=SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','ON');

RECOVER DATABASE

ALTER SYSTEM ARCHIVE LOG ALL;

ALTER DATABASE OPEN;

ALTER TABLESPACE TEMP ADD TEMPFILE'+DATA/orcl/tempfile/temp.260.912261313'

     SIZE 33554432 REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

下面这就是一个resetlog恢复的脚本:

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE"ORCL" RESETLOGS  ARCHIVELOG

    MAXLOGFILES 192

    MAXLOGMEMBERS 3

    MAXDATAFILES 1024

    MAXINSTANCES 32

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1'+UNDO/orcl/onlinelog/group_1.257.912261307'  SIZE 50M BLOCKSIZE 512,

  GROUP 2'+UNDO/orcl/onlinelog/group_2.258.912261307'  SIZE 50M BLOCKSIZE 512

DATAFILE

 '+DATA/orcl/datafile/system.256.912261237',

 '+DATA/orcl/datafile/sysaux.257.912261239',

 '+DATA/orcl/datafile/undotbs1.258.912261239',

  '+DATA/orcl/datafile/users.259.912261239',

 '+DATA/orcl/datafile/undotbs2.261.912261395'

CHARACTER SET UTF8

;

VARIABLE RECNO NUMBER;

EXECUTE :RECNO :=SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','ON');

RECOVER DATABASE USING BACKUP CONTROLFILE

ALTER DATABASE ADD LOGFILE THREAD 2

  GROUP 3'+UNDO/orcl/onlinelog/group_3.259.912261453' SIZE 50M BLOCKSIZE 512 REUSE,

  GROUP 4'+UNDO/orcl/onlinelog/group_4.260.912261453' SIZE 50M BLOCKSIZE 512 REUSE;

ALTER DATABASE OPEN RESETLOGS;

ALTER TABLESPACE TEMP ADD TEMPFILE'+DATA/orcl/tempfile/temp.260.912261313'

     SIZE 33554432 REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;


好了,下面开始停库恢复:

启动到nomount状态下:

Startup  nomount

直接在nomount状态下复制粘贴下面这段脚本:

CREATE CONTROLFILE REUSE DATABASE"ORCL" NORESETLOGS  ARCHIVELOG

    MAXLOGFILES 192

    MAXLOGMEMBERS 3

    MAXDATAFILES 1024

    MAXINSTANCES 32

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1'+UNDO/orcl/onlinelog/group_1.257.912261307'  SIZE 50M BLOCKSIZE 512,

  GROUP 2'+UNDO/orcl/onlinelog/group_2.258.912261307'  SIZE 50M BLOCKSIZE 512,

  GROUP 3'+UNDO/orcl/onlinelog/group_3.259.912261453'  SIZE 50M BLOCKSIZE 512,

  GROUP 4 '+UNDO/orcl/onlinelog/group_4.260.912261453' SIZE 50M BLOCKSIZE 512

DATAFILE

 '+DATA/orcl/datafile/system.256.912261237',

 '+DATA/orcl/datafile/sysaux.257.912261239',

 '+DATA/orcl/datafile/undotbs1.258.912261239',

 '+DATA/orcl/datafile/users.259.912261239',

 '+DATA/orcl/datafile/undotbs2.261.912261395'

CHARACTER SET UTF8;

好了

现在控制文件创建好了;如果有报错,查看是不是RAC状态下没有关闭集群

查看当前状态:已经到了MOUNTED状态下了

执行后面的:

VARIABLE RECNO NUMBER;

EXECUTE :RECNO :=SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','YES');

在后面的

RECOVERY DATABASE就不用执行了,因为已经有数据文件了。

这里仅仅只是控制文件没有而已

直接ALTER DATABASE OPEN;

成功启动数据库

最后执行以下TEM表空间

ALTER TABLESPACE TEMP ADD TEMPFILE'+DATA/orcl/tempfile/temp.260.912261313'

     SIZE33554432  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;


resetlogs方式重建controlfile

数据文件在,但是日志文件没有是可以用这个方式回复

启动到nomount状态下:

Startup  nomount

直接在nomount状态下复制粘贴下面这段脚本:

CREATE CONTROLFILE REUSE DATABASE"ORCL" RESETLOGS  ARCHIVELOG

    MAXLOGFILES 192

    MAXLOGMEMBERS 3

    MAXDATAFILES 1024

    MAXINSTANCES 32

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1'+UNDO/orcl/onlinelog/group_1.257.912261307'  SIZE 50M BLOCKSIZE 512,

  GROUP 2'+UNDO/orcl/onlinelog/group_2.258.912261307'  SIZE 50M BLOCKSIZE 512

DATAFILE

 '+DATA/orcl/datafile/system.256.912261237',

 '+DATA/orcl/datafile/sysaux.257.912261239',

 '+DATA/orcl/datafile/undotbs1.258.912261239',

  '+DATA/orcl/datafile/users.259.912261239',

 '+DATA/orcl/datafile/undotbs2.261.912261395'

CHARACTER SET UTF8;

好了

查看当前状态:已经到了MOUNTED状态下了

执行后面的:

VARIABLE RECNO NUMBER;

EXECUTE :RECNO :=SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','YES');

这里因为是用resetlogs恢复的所以启动数据库的时候也要resetlogs

ALTER DATABASE OPEN resetlogs;

成功启动数据库

最后执行以下TEM表空间

ALTER TABLESPACE TEMP ADD TEMPFILE'+DATA/orcl/tempfile/temp.260.912261313'

     SIZE33554432  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

Ok这个也恢复成功了。


总结

两种恢复方式基本一样,只有在启动数据库的时候有差别,可以根据数据库当时情况具体操作。

但是一般情况下不可能出现控制文件丢失。而且控制文件最少要备份两份以上放在不同的位置。



                                                                                          如有不足或缺漏请一起讨论,共同进步

附件:Http://down.51cto.com/data/2367810
您可能感兴趣的文档:

--结束END--

本文标题: ORACLE之重建控制文件

本文链接: https://www.lsjlt.com/news/40918.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ORACLE之重建控制文件
    这里上传图片一直失败,想要查看详细信息和截图的可以下载附件首先看一下控制文件的理解:控制文件是一个二进制文件,用于记录数据库的物理结构。一个控制文件只属于一个数据库。创建数据库时,创建控制文件。当数据库的物...
    99+
    2022-10-18
  • Oracle Study之--Oracle RAC重建控制文件
    Oracle Study之--Oracle RAC重建控制文件系统环境:操作系统: AIX5.3Cluster:  Oracle 10gR2 CRSOracle:   Oracle 10...
    99+
    2022-10-18
  • oracle之 利用 controlfile trace文件重建控制文件
    一、 11g RAC 重建控制文件 1、 --"create controlfile"命令生成到追踪文件中: alter database backup controlfile to trace;...
    99+
    2022-10-18
  • Oracle如何重建控制文件
    小编给大家分享一下Oracle如何重建控制文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 这几...
    99+
    2022-10-19
  • 控制文件丢失,重建控制文件
    sql>STARTUP NOMOUNTsql>CREATE CONTROLFILE REUSE DATABASE "UNIGUARD" NORESETLOGS NOARCHIVELOGMAXLO...
    99+
    2022-10-18
  • oracle如何快速重建控制文件
    小编给大家分享一下oracle如何快速重建控制文件,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在pfile参数文件中添加下面隐...
    99+
    2022-10-18
  • Oracle重建控制文件的实例教程
    前言 控制文件(control file)是一个相当小的文件(最多能增长到64M左右),其中包含Oracle需要的其他文件的一个目录。参数文件告知实例控制文件的位置,控制文件则告知示例数据库和在线重做日志文...
    99+
    2022-10-18
  • Oracle中怎么重新创建控制文件
    本篇文章为大家展示了Oracle中怎么重新创建控制文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、创建控制文件有2种方式   &...
    99+
    2022-10-18
  • Oracle 11g重建控制文件——控制文件全部丢失,从零开始
    控制文件(control file)是一个相当小的文件(最多能增长到64M左右),其中包含Oracle需要的其他文件的一个目录。参数文件告知实例控制文件的位置,控制文件则告知示例数据库和在线重做日志文件...
    99+
    2022-10-18
  • postgres 9.6.5 重建控制文件
    新版本的pg_resetlog 的参数发生了变化,在网上之前找了一下德哥的文章看了一下重建控制文件的方法,之后根据实际的变化参数对比让大家更容易解决问题。postgresql9.2Options:-l TL...
    99+
    2022-10-18
  • 重建控制文件报错
    SQL> CREATE CONTROLFILE REUSE DATABASE "EMREP" NORESETLOGS FORCE LOGGING ARCHIVELOG  2 &nb...
    99+
    2022-10-18
  • Oracle 控制文件
    <div style="font-family:微软雅黑;font-size:14px;line-height:21px;white-space:normal;widows:auto;bac...
    99+
    2022-10-18
  • Oracle RMAN备份之控制文件备份
    进入RMAN界面rman target / RMAN>修改控制文件备份方式为自动备份RMAN > configure controlfile&...
    99+
    2022-10-18
  • oracle快速拿到重建控制文件语句的方法有哪些
    本篇内容介绍了“oracle快速拿到重建控制文件语句的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2022-10-18
  • Oracle控制文件移动
    Oracle移动控制文件OS:Windowsoracle:10g移动控制文件即将当前的控制文件由当前位置迁移到另一个新位置。六步完成控制文件移动:1.获取控制文件名:SQL> select ...
    99+
    2022-10-18
  •  Oracle控制文件 
    在Oracle中,控制文件是数据库挂载时所使用的文件,控制文件丢失或损坏,实例会崩溃,其中参数文件记录控制文件的位置;在实例启动到nomount后,如果db_names参数与控制文件中记录的数据库名一致,才...
    99+
    2022-10-18
  • oracle密码文件的重建
    oracle11g的密码文件是在目录 /u01/app/oracle/product/11.2.0/dbhome_1/dbs下面新建密码文件的命令orapwd file=orapwcapaas(o...
    99+
    2022-10-18
  • oracle 10g rac 添加控制文件
    1、查看当前控制文件select * from v$controlfile;2、关闭数据库$srvctl stop database -d devdb -o immediate3、启动到nomou...
    99+
    2022-10-18
  • Oracle 11g R2 管理控制文件
    oracle数据库控制文件是非常重要的文件,它是数据库创建的时候自动生成的二进制文件,其中记录了数据库的状态信息,主要包括以下内容 Ø 数据库的名称,一个控制文件只能属于一个数据库 Ø 数据库创建时间 ...
    99+
    2022-10-18
  • ORACLE 控制文件(Control Files)概述
    <h3 style="background-color:#FFFFFF;color:#222222;font-family:Tahoma, sans-serif;font-size:19.7...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作