zoukankan      html  css  js  c++  java
  • Oracle控制文件

    一、控制文件的作用

     

    Control File 是一个较小的二进制文件,描述数据库结构,包括:

    01、数据库建立的日期;

    02、数据库名;

    03、数据库中所有数据文件和日志文件的文件名及路径;

    04、恢复数据库时所需的同步信息;

    05、在打开和存取数据库时都要访问该文件;

    记录控制文件名及路径的参数为:CONTROL_FILES

    总结以下几点:

    01.二进制文件;

    02.记录了数据库当前实例的结构和行为,数据文件日志文件的信息,维护数据库一致性;

    03.参数文件中定义了控制文件的位置和大小;

    04.很小的二进制文件,一般不超过 100MB;

    05.mount 阶段 open 以后,一直在用;

    06.一套控制文件只能连接一个 database;

    07.可以分散放置,至少一份,最多八份;

     

    控制文件相关视图:

    01. v$controlfile ----> 列出实例的所有控制文件的名字和状态

    02. v$parameter ----> 列出所有参数的位置和状态(where name='control_files')

    03.v$controlfile_recode_section ----> 提供控制文件的记录部分的信息

    04.show parameter control_files ----> 列出控制文件的名字、状态和位置

     

    select * from v$controlfile;
    
    select name,type,value from v$parameter where name like '%control%';
    
    select * from v$controlfile_record_section;
    

     

    查看控制文件中关于数据文件中的数据记录信息:(注意 DATAFILE 一定要大写,否则会提示"未选定行")

     

    在 Linux 环境下:

    Control File 丢失(丢失其中一个,不全部丢失),系统还是可以 checkpoint 和 switch logfile 的。

    Control File 不一致,Oracle 马上就挂掉。

    Control File 破坏掉后,Oracle 还是能够坚持一段时间,select update 都没有问题,在 checkpoint 的时候就会挂掉。

     

    control_file_record_keep_time:

    Oracle 基于 RMAN 的备份方式,可分为以 catalog 和 nocatalog 的两种方式进行备份管理。其中 catalog 的方式需要一个 catalog 目录数据库,这个数据库一般运行在另外一台服务器上,这种方式可以用于用户有多个 Oracle 数据库的环境,同时对数据库的备份恢复信息也可以长久的保存,也就是 RMAN 把对数据库 A 的备份恢复记录保留在 catalog 目录数据库中。

     

    而基于 nocatalog 的备份管理方式,是将 RMAN 的备份信息放在控制文件中,由于控制文件的大小不能无限增大,所以在控制文件中只能保留一段时间的备份与恢复信息,而这个时间的控制,由一个参数为参考依据,这个参数就是 control_file_record_keep_time ,使用 show parameter  control_file_record_keep_time 可以查到这个参数的值,默认为 7 天。

    SQL> show parameter control_file_record_keep_time
    

      

     

    二、查看控制文件方法:

     

    01、用操作系统命令查看 strings control.ctl

     

    SQL> show parameter control
    

      

    02、用数据库命令

     

    SQL> alter database backup controlfile to 'controlfile_bak.ctl';
    

      

    然后在 /oracle/app/oracle/product/11.2.0/dbs/ 目录下找到新备份的控制文件 controlfile_bak.ctl

     

    这个文件是二进制的文件,不能直接查看内容。

      

    03、用数据库 trace

     

    生成的 trace 文件在 udump 目录下:

     

    方法一:

    SQL> oradebug setmypid
    Statement processed.
    SQL> oradebug tracefile_name
    /oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_2380.trc
    SQL> alter database backup controlfile to trace;
    
    Database altered.
    

      

    这个文件是可以直接查看内容

    more /oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_2380.trc
    

      

    方法二:

    指定文件路径和文件名 

    alter database backup controlfile to trace as '/oracle/control.trc';
    

      

    然后查看,这个也是可以直接查看的

    more /oracl/control.trc
    

      

    04、直接 dump controlfile 转储控制文件内容(查看控制文件中的具体内容)

    alter session set events 'immediate trace name CONTROLF level 12';
    

      

    level 表示级别

    --level1 块头的内容

    --level2 数据文件内容

    --levle 10 |12 所有内容

    或者

    alter system set events 'immediate trace name controlf level 10';
    

      

    level 1 块头

    level 2 文件内容

    level 3 1+2

    level 10 全部

     

    例1:获得当前的控制文件头并查看

    SQL> oradebug setmypid
    Statement processed.
    SQL> oradebug tracefile_name
    /oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_6081.trc
    SQL> oradebug dump controlf 1;
    Statement processed.
    SQL> alter database backup controlfile to trace;
    Database altered.
    

      

    查看控制文件头的内容

    more /oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_6081.trc
    

      

    例2:获得控制文件里面所有的内容

    SQL> oradebug setmypid
    Statement processed.
    SQL> oradebug tracefile_name
    /oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_5859.trc
    SQL> oradebug dump controlf 12
    Statement processed.
    SQL> alter system set events 'immediate trace name controlf level 10';
    
    System altered.
    
    SQL> show parameter user_dump;
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    user_dump_dest                       string      /oracle/app/oracle/diag/rdbms/
                                                     orcl/orcl/trace
    

      

    这时候,你会发现里面多了好多控制文件的内容。

    more /oracle/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_5859.trc
    

      

  • 相关阅读:
    解决Eclipse中文乱码
    C++中set用法回顾
    二分查找题目汇总
    给网卡配置多个IP地址(win/linux)
    route在windows与liunx下的使用区别
    eclipse 编程 c++ 快捷键
    Git、GitHub、GitLab三者之间的联系以及区别
    SQL语句优化
    《领域驱动设计的原则与实践》读书笔记(一)
    DotNet Core 介绍
  • 原文地址:https://www.cnblogs.com/black-start/p/11050841.html
Copyright © 2011-2022 走看看