Home  >  Article  >  Database  >  对于创建控制文件后MISSINGnnnn文件的处理

对于创建控制文件后MISSINGnnnn文件的处理

WBOY
WBOYOriginal
2016-06-07 17:40:57740browse

1MISSINGnnnn文件产生的原因数据字典file$中存在某个数据文件,而新创建控制文件时没有指定该数据文件,则数据库会在新的控制文件中创建一个该数据文件条目,文

1 MISSINGnnnn文件产生的原因
数据字典file$中存在某个数据文件,而新创建控制文件时没有指定该数据文件,则数据库会在新的控制文件中创建一个该数据文件条目,网站空间,文件名为MISSINGnnnn其中nnnn为十进制文件号
2 对于missingnnnn数据文件的处理
如果MISSSINGnnnn文件属于只读或者正常离线,则可通过重命名MISSINGnnnn文件为真实文件来进行处理。
如果MISSINGnnnn文件不属于只读或者正常离线,则需要通过重命名和介质恢复来处理。
如果file$中不存在该数据文件,而新创建控制文件时指定该数据文件,则数据库会在数据库中删除该数据文件,而数据文件还会存在于系统。
3 5个相关例子
例一:测试如果file$中不存在某个数据文件,而新建控制文件时指定该数据文件,则数据库会在数据库中删除该数据文件,服务器空间,而数据文件不会删除

例二:测试以noresetlogs方式创建控制文件,产生missingnnnn文件的处理方法:

例三:测试以noresetlogs方式创建控制文件+正常离线数据文件,产生missingnnnnn文件的处理过程

例四:测试以resetlogs方式创建控制文件+正常离线数据文件,产生missingnnnn文件的处理过程

例五:测试以resetlogs方式创建控制文件产生missingnnnn文件的处理过程
4 实验过程如下:       
例一:测试如果file$中不存在某个数据文件,而新建控制文件时指定该数据文件,则数据库会在数据库中删除该数据文件,而数据文件不会删除。
1 准备重建控制文件的语句如下:
[oracle@oracle CRM]$ cat /oracle/control.sql
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "CRM" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    '/oracle/app/db1/dbs/log1CRM.dbf',
    '/oracle/CRM2/CRM/redo01b.log'
  ) SIZE 200M,
  GROUP 2 (
    '/oracle/app/db1/dbs/log2CRM.dbf',
    '/oracle/CRM2/CRM/redo02b.log'
  ) SIZE 50M,
  GROUP 3 (
    '/oracle/CRM2/CRM/redo03.log',
    '/oracle/CRM2/CRM/redo03b.log'
  ) SIZE 200M,
  GROUP 4 (
    '/oracle/CRM2/CRM/redo04.log',
    '/oracle/CRM2/CRM/redo04b.log'
  ) SIZE 200M,
  GROUP 5 (
    '/oracle/CRM2/CRM/redo05.log',
    '/oracle/CRM2/CRM/redo05b.log'
  ) SIZE 200M,
  GROUP 6 (
    '/oracle/CRM2/CRM/redo06.log',
    '/oracle/CRM2/CRM/redo06b.log'
  ) SIZE 200M
DATAFILE
  '/oracle/CRM2/system1.dbf',
  '/oracle/CRM2/zxb.dbf',
  '/oracle/CRM2/CRM/sysaux01.dbf',
  '/oracle/CRM2/CRM/users01.dbf',
  '/oracle/CRM2/zxa.dbf',
  '/oracle/CRM2/CRM/undotbs2.dbf',
  '/oracle/CRM2/zxc.dbf',
  '/oracle/CRM2/CRM/zxbig1.dbf',
  '/oracle/CRM2/CRM/jiujian.dbf'
CHARACTER SET ZHS16GBK
;
2 删除file$中关于file#=9的条目:
SQL> select file#,status$,ts#,relfile# from  file$;

     FILE#    STATUS$        TS#   RELFILE#
---------- ---------- ---------- ----------
         1          2          0          1
         2          2          6          2
         3          2          2          3
         4          2          4          4
         5          2          6          5
         6          2          5          6
         7          2          6          7
         8          2          7       1024
         9          2         13          9

9 rows selected.

SQL> delete from file$ where file#=9;

1 row deleted.

SQL> commit;

Commit complete.
注意v$datafile 中存在file#=9的文件信息。
SQL> select file#,name,status from v$datafile;

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn