• oracle添加控制文件,ORA-00214: 错误


    今天学习oracle添加控制文件,控制文件是一个二进制文件,记录了物理数据库的当前状态,每一个数据文件只属于一个数据库,为了防止文件损坏丢失等情况,一个数据库不止一个控制文件。一个数据库的控制文件中的内容完全一样。

    利用数据字典v$controlfile查询数据文件的位置、名字:

    select name from v$controlfile;

    结果:

    NAME
    --------------------------------------------------------------------------------
    H:APPORACLEADMINORADATAMLDNCONTROL01.CTL
    H:APPORACLEADMINORADATAMLDNCONTROL02.CTL

    数据库有两个控制文件,放在相同的文件夹下。

    接下来在另一个文件夹添加新的控制文件。

    此时犯了一个错误,将控制文件复制出来,改名contro03.ctl,放在了新的文件夹。

    修改SPFILE,指定控制文件的位置和名称,

     alter system set control_files=
    'H:APPORACLEADMINORADATAMLDNCONTROL01.CTL',
    'H:APPORACLEADMINORADATAMLDNCONTROL02.CTL',
    'H:oracleackupCONTROL03.CTL' SCOPE=SPFILE;

    关闭数据库

    SHUTDOWN IMMEDIATE

    重启数据库

    STARTUP

    这个时候就会报错了:

    Total System Global Area 2550136832 bytes
    Fixed Size                  8922136 bytes
    Variable Size             838863848 bytes
    Database Buffers         1694498816 bytes
    Redo Buffers                7852032 bytes
    ORA-00214: ???? ''H:APPORACLEADMINORADATAMLDNCONTROL01.CTL'' ?? 18735 ???
    ''H:ORACLEBACKUPCONTROL03.CTL'' ?? 18718 ???

    ora-00214错误,控制文件版本不一致。

    错误的原因是,在数据库打开状态下,oracle服务器会随时修改控制文件中的内容。

    在之前的操作中是先复制的控制文件,后关闭数据库,导致复制出来的control03与contorl02、control01的内容不一样,

    此时,复制control01覆盖掉其他控制文件,关闭数据库并重启。

    这次就能成功打开数据库了:

    正确的添加控制文件顺序

    1 )查找控制文件位置和名称

    2)修改SPFILE,设置新的控制文件位置和名称

    3)关闭数据库

    4)复制控制文件到指定位置

    5)重启数据库

    现在验证一下,再查找一遍数据库控制文件

    select name from v$controlfile;

    得到:

    可以看出增加了控制文件control03.ctl,与设置的一致。

  • 相关阅读:
    54. 八皇后问题[eight queens puzzle]
    53. 特殊的O(n)时间排序[sort ages with hashtable]
    52. 不用+、-、×、÷做加法[add two numbers without arithmetic]
    C++基础知识面试精选100题系列(11-20题)[C++ basics]
    C++基础知识面试精选100题系列(1-10题)[C++ basics]
    洛谷 P1479 宿舍里的故事之五子棋
    洛谷 P2084 进制转换
    codevs 1700 施工方案第二季
    POJ 3278 Catch That Cow(求助大佬)
    POJ 2251 Dungeon Master
  • 原文地址:https://www.cnblogs.com/winterbear/p/10360640.html
Copyright © 2020-2023  润新知