Oracle控制文件的作用

发布网友

我来回答

2个回答

懂视网



  1.     参数文件(parameter file)
  2.     跟踪文件(trace file)
  3.     警告文件(alert file)
  4.     数据文件(data file)
  5.     临时文件(temp file)
  6.     控制文件(control file)
  7.     重做日志文件(redo log file)
  8.     密码文件(password file)

 

我认为最重要的是数据文件和重做日志文件。因为就算其他文件都损坏了,我也能恢复出需要的其他数据。
(数据管理的重心是重在预防,而不是亡羊补牢)


控制文件是什么?控制文件的作用?
    其实吧,控制文件是一个很小的二进制文件,用于记录数据库的物理结构。
    ----(也是说,把它需要重建策成跟踪文件才能用文本工具打开阅览内容)。
    

控制文件记录着oracle很重要的信息。
    比如说:

  1.         创建数据库的时间戳,
  2.         数据文件的名字及位置,
  3.         重做日志文件的名字及位置,
  4.         检查点信息(Checkpoint),
  5.         表空间信息
  6.         日志历史记录(Log History)
  7.         归档日志的信息
  8.         备份信息
  9.         当前的日志序列号(Log Sequence Number)


控制文件以数据的重要性来分可分为两种: 不可覆盖部分和可覆盖部分。

        不可覆盖部分:记录着数据文件,重做日志文件的名称和位置,表空间信息,检查点信息等。
            (数据库启动-->参数文件-->控制文件-->数据,重做日志文件)-----文件的联系
        
        可覆盖部分: 归档日志文件信息和RMAN备份信息。
        control_file_record_keep_time参数决定着这两者的保存时间。(一般默认是7天)


与控制文件相关的视图:
   
     v$controlfile_record_section----录了几乎全部的controlfile中的相关信息。
    SQL> desc v$controlfile_record_section
     Name                                      
     ----------------
     TYPE                                      -------类型
     RECORD_SIZE                               ------每个类型每条记录占用的空间       
     RECORDS_TOTAL                             ------每个类型所能保留的最大记录数       
     RECORDS_USED                              -------每个类型当前已占用的记录数
     FIRST_INDEX                                 
     LAST_INDEX                                        
     LAST_RECID                                         

    v$controlfile---"name列",记录每个控制文件的存储的位置。
    或---
    参数文件----control_files参数也记录着控制文件的位置.

    SQL> select name from v$controlfile
      2  /
    NAME
    --------------------------------------------------------------------------
    /home/app/oracle/oradata/orcl/control01.ctl
    /home/app/oracle/flash_recovery_area/orcl/control02.ctl



    SQL> select value from v$parameter2 where name=<control_files>;
    VALUE
    -----------------------------------------------------------------------------
    /home/app/oracle/oradata/orcl/control01.ctl
    /home/app/oracle/flash_recovery_area/orcl/control02.ctl



    看来我的oracle的控制文件当前只有一个备份,即共两个而已。
    但控制文件太重要了!
    oracle官方建议至少应该拥有控制文件的三个以上的副本!
    
---而您可以通过多路复用技术,将控制文件的副本创建到不同的磁盘上。
    然后再修改初始化参数文件spfile中的 control_files 参数,使之包含所有的控制文件.
    也就是说,把oracle中的控制文件全包含到spfile文件中。

这样做的好处有哪些呢?
    如果你的磁盘坏了,oracle仍能够快速恢复。(是不是很方便?)
    


-----下面是如何使用多路复用技术了。
    
    1.查看$controlfile,我oracle的控制文件有1个。
    SQL> select name from v$controlfile;
    NAME
    --------------------------------------------------------------------------------
    /home/app/oracle/oradata/orcl/control01.ctl
            
    2.oracle离线。
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    
    3.在你的操作系统上手动备份控制文件。(注意:控制文件的手动备份一定要在数据库停止后再执行!)
      [oracle@yzh ~]$ cp /home/app/oracle/oradata/orcl/control01.ctl /oracle1
    [oracle@yzh ~]$ cp /home/app/oracle/oradata/orcl/control01.ctl /oracle2

    4.SQL> startuo nomount      
      -------非安装启动,这种方式启动下可执行:重建控制文件、重建数据库
    
    5. 接着呢,修改 spfile 中的 control_files 这个属性,为其增加2个控制文件信息,
       存放在/oracle1/和/oracle2/下。

    SQL> alter system set control_files=
      2  </home/app/oracle/oradata/orcl/control01.ctl>,
      3  </oracle1/control01.ctl>,
      4  </oracle2/control01.ctl> scope=spfile
      5  /
    System altered.

    6.启动oracle,查看控制文件,多了两个控制文件。
    SQL> startup
    SQL> select name from v$controlfile;

    NAME
    --------------------------------------------------------------------------------
    /home/app/oracle/oradata/orcl/control01.ctl
    /oracle1/control01.ctl
    /oracle2/control01.ctl



哪些情况需要备份控制文件呢?----

  1.     增加,删除,或者重命名数据文件时
  2.     增加,删除表空间时,或者表空间可读可写状态时
  3.     增加或者删除重做日志文件或组时。


------备份控制文件的命令
    alter database backup controlfile to <PATH.bak>;-----PTAH:路径。
    
----备份到控制文件后,如果突然你三个控制文件都损坏(这个几率太小了。)
 


oracle_控制文件--笔记

标签:

热心网友

控制文件记录了如下信息:
1、数据库的创建时间
2、数据文件的位置
3、日志文件的位置

作用是指导数据库
找到数据文件,日志文件并将数据库启动到
open
状态。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com