好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

oracle_控制文件--笔记



    参数文件(parameter file)     跟踪文件(trace file)     警告文件(alert file)     数据文件(data file)     临时文件(temp file)     控制文件(control file)     重做日志文件(redo log file)     密码文件(password file)

 

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


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

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

         创建数据库的时间戳,         数据文件的名字及位置,         重做日志文件的名字及位置,         检查点信息(Checkpoint),         表空间信息         日志历史记录(Log History)         归档日志的信息         备份信息         当前的日志序列号(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个。
    S QL> 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



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

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


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


oracle_控制文件--笔记

标签:

查看更多关于oracle_控制文件--笔记的详细内容...

  阅读:19次