oracle 中的控制文件和数据文件

发布网友 发布时间:2022-04-23 10:40

我来回答

4个回答

懂视网 时间:2022-04-29 20:37



  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_控制文件--笔记

标签:

热心网友 时间:2022-04-29 17:45

1、数据文件:

Oracle数据库中每个表空间(tablespace)都是由一个或多个物理数据文件(datafile)构成的。

当一个数据文件(datafile)首次被创建时,为其分配的磁盘空间被格式化为Oracle格式,此时其中尚不包含任何用户数据。Oracle将使用这些空间存储属于(
与此数据文件对应的)表空间的段(segment),这些空间专为Oracle使用。随着表空间内的数据增长,Oracle使用数据文件中的可用空间为段分配新的数据扩展(extent)。

2、控制文件

控制文件(control
file)是一个二进制文件,供数据库启动及正常工作时使用。

在数据库运行过程中,控制文件会频繁地被Oracle修改,因此数据库处于开启(open)状态时控制文件必须可写。如果控制文件因故不能访问,数据库
也将无法正常工作。

每当添加,重命名,或移除数据库中的数据文件(datafile)及重做日志文件(redo
log
file)时,控制文件(control
file)就会被更新以反映这些数据库物理结构变化。

热心网友 时间:2022-04-29 19:03

控制文件主要是用来启动的
Oracle的启动分为三步

umount
mount
open
第一步启动到umount
这是Oracle会读取参数文件spfile
pfile
来启动实例
但是这时候并不知道启动哪一个数据库所以是umount
第二步找到控制文件,然后实例就会与数据库真的的连接上,所以是mount
第三步就是为了恢复上次非正常关闭没有提交的事务,回滚,保持数据的一致性
数据文件主要就是存放数据信息的,你的每一个记录都在数据文件中存放

热心网友 时间:2022-04-29 20:38

控制文件是oracle数据库启动时使用的文件,里面存放了数据库结构的一些信息,例如:数据库的名称、实例名称、数据文件位置、表空间、日志文件等等信息;
数据文件是oracle数据库实际存放数据的地方,例如你利用insert语句插入的数据,首先是在内存中,然后oracle会根据它自己的机制,写入到数据文件中;
明白了吗?

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