zoukankan      html  css  js  c++  java
  • oracle之二控制文件

    控制文件
     
    3.1 控制文件的功能和特点:
           1)定义数据库当前物理状态,不断在往controlfile写入[SCN等]
           2)维护数据的一致性
           3)是一个二进制文件
           4)在mount阶段被读取
           5)记录RMAN备份的元数据[账本]
           
    查看database控制文件位置:
     
    19:02:27 SQL> show parameter control_file

    NAME                                         TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    control_file_record_keep_time            integer     7
    control_files                                string      /u01/oradata/timran11g/control01.
                                                             ctl, /u01/oradata/timran11g/contr
                                                             ol02.ctl, /u01/oradata/timran11g/
                                                             control03.ctl
    19:02:42 SQL> select name from v$controlfile;

    NAME
    ---------------------------------------------------------------------------------------------------
    /u01/oradata/timran11g/control01.ctl
    /u01/oradata/timran11g/control02.ctl
    /u01/oradata/timran11g/control03.ctl
     

    desc v$controlfile_record_section控制文件详细信息
    3.2 控制文件多元化                                    

    1)配置多个control_files,控制文件最好有三个,是相互镜像的(shutdown下cp命令复制即可),然后修改spfile中的control_files参数,Oracle建议分配在不同的物理磁盘上。

    *考点:最多可以有8个control files多路复用。
        
    19:10:25 SQL> alter system set control_files='/u01/oradata/timran11g/control01.ctl','/u01/disk1/control02.ctl','/u01/disk1/control03.ctl' scope=spfile;

    System altered.

    2)三个control文件要一致(同一版本,scn相同),本来就是镜像关系

    -rw-r----- 1 oracle oinstall    7356416 07-16 20:00 control01.ctl
    -rw-r----- 1 oracle oinstall    7356416 07-16 20:01 control02.ctl
    -rw-r----- 1 oracle oinstall    7356416 07-16 20:01 control03.ctl

    3)控制文件查看:v$controlfile 、show parameter controlfile、 v$parameter
                   
    3.3 控制文件的重建与备份
        
    1)trace 文件: 可以在mount或open模式下生成一个脚本,用于控制文件重建。

    19:59:24 SQL> alter database backup controlfile to trace;   //生成的trace 文件在udump的最新trc文件里
        
    或者     SQL> alter database backup controlfile to trace as '/u01/con.trace';  //存到自己起的文件名里。        
        
    2)binary 文件:控制文件的备份
    20:00:20 SQL> alter database backup controlfile to '/u01/oradata/timran11g/con.bak';


    3.4 控制文件手工恢复

    控制文件一但损坏,系统将崩溃或死机。

    1)单个文件损坏了:数据库关闭,使用操作系统命令复制其副本到指定的位置。

    2)所有的控制文件丢失,(正常关闭,shutdown immediate后删除控制文件)

    假设控制文件的备份也没有,利用前面做的trace文件重新生成控制文件

    在nomount 状态下执行trace脚本

    15:37:16 SQL> startup force nomount
    ORACLE instance started.

    SQL>
    CREATE CONTROLFILE REUSE DATABASE "TIMRAN11" NORESETLOGS  ARCHIVELOG
        MAXLOGFILES 16
        MAXLOGMEMBERS 3
        MAXDATAFILES 100   
        MAXINSTANCES 8
        MAXLOGHISTORY 292
    LOGFILE
      GROUP 1 '/u01/oradata/timran11g/redo01.log'  SIZE 50M,
      GROUP 2 '/u01/oradata/timran11g/redo02.log'  SIZE 50M,
      GROUP 3 '/u01/oradata/timran11g/redo03.log'  SIZE 50M
    DATAFILE
      '/u01/oradata/timran11g/system01.dbf',
      '/u01/oradata/timran11g/sysaux01.dbf',
      '/u01/oradata/timran11g/user01.dbf',
      '/u01/oradata/timran11g/example01.dbf',
      '/u01/oradata/timran11g/test01.dbf',
      '/u01/oradata/timran11g/undotbs01.dbf'
    CHARACTER SET ZHS16GBK
    ;

    可以看到执行后三个控制文件又重新建立了。

    说明:这个重建控制文件的过程主要有两大部分内容:

    第一部分是脚本中的可见信息:1)定义了几个参数的最大值,2)在线日志的物理信息,3)数据文件的物理信息,4)使用的字符集。
    第二部分是隐含的不可见信息,比如SCN信息,重建最关键的是将当前所有数据文件头部的最新SCN信息复制到了控制文件中。以便接下来打开数据库。

    SQL> select file#,checkpoint_change# from v$datafile;        //从控制文件读出

         FILE# CHECKPOINT_CHANGE#
    ---------- ------------------
             1            5629150
             2            5629150
             3            5629150
             4            5629150
             5            5629150
             6            5629150


    SQL> select file#,checkpoint_change# from v$datafile_header;    //从数据文件读出

         FILE# CHECKPOINT_CHANGE#
    ---------- ------------------
             1            5629150
             2            5629150
             3            5629150
             4            5629150
             5            5629150
             6            5629150


    15:39:49 SQL> alter database open;

    2)利用控制文件备份(手动备份或RMAN备份都可以)恢复控制文件。(有点复杂,留在053备份恢复中再介绍吧)
    3)控制文件恢复后里面的记录会丢失,如归档的记录等[SQL> select name from v$archived_log;]

    oerr ora 错误号 查看错误

  • 相关阅读:
    【CH 5501】环路运输【DP】【单调队列】
    【CH 5501】环路运输【DP】【单调队列】
    【POJ 1456】Supermarket【并查集】
    【POJ 1456】Supermarket【并查集】
    【POJ 1456】Supermarket【并查集】
    【POJ 2411】Mondriaan's Dream【DP】
    数据结构实验之二叉树二:遍历二叉树
    数据结构实验之二叉树二:遍历二叉树
    36 静态数据成员与静态成员函数
    36 静态数据成员与静态成员函数
  • 原文地址:https://www.cnblogs.com/jinxf/p/9166729.html
Copyright © 2011-2022 走看看