【Oracle】控制文件

Published April 20, 2020, 8:23 a.m. by admin

什么是控制文件

每个数据库都有一个control file,它是一个二进制小文件,用于记录数据库的物理结构。控制文件包括:

   SYS@prod> select name from v$datafile;

   NAME
   -----------------------------------------------------------------------------------
   /u01/app/oradata/prod/system01.dbf
   /u01/app/oradata/prod/sysaux01.dbf
   /u01/app/oradata/prod/undotbs01.dbf
   /u01/app/oradata/prod/users01.dbf
   /u01/app/oradata/prod/apps_arp01.dbf
   /u01/app/oradata/prod/indx_arp01.dbf

   SYS@prod> select member from v$logfile;

   MEMBER
   -----------------------------------------------------------------------------------
   /u01/app/oradata/prod/redo01a.log
   /u01/app/oradata/prod/redo01b.log
   /u01/app/oradata/prod/redo02a.log
   /u01/app/oradata/prod/redo02b.log
   /u01/app/oradata/prod/redo03a.log
   /u01/app/oradata/prod/redo03b.log
  1. 查看控制文件的位置:
   SYS@prod> show parameter control_files;

   NAME                                 TYPE        VALUE
   ------------------------------------ ----------- ------------------------------
   control_files                        string      /u01/app/oradata/prod/control0
                                                    1.ctl, /u01/app/oradata/prod/c
                                                    ontrol02.ctl
   SYS@prod> select name from v$controlfile;

   NAME
   -----------------------------------------------------------------------------------
   /u01/app/oradata/prod/control01.ctl
   /u01/app/oradata/prod/control02.ctl

控制文件的实时更新机制

管理控制文件的大小

控制文件大小的主要决定因素是创建CREATE DATABASE语句中的MAXDATAFILESMAXLOGFILESMAXLOGMEMBERSMAXLOGHISTORYmaxinstance参数设置的值。增加这些参数的值会增加控制文件的大小。

控制文件的多路复用(不同磁盘)

由于控制文件非常的重要,让控制文件的镜像存储不同的磁盘上面。保证即使一个控制文件由于硬盘损坏导致丢失,可以用其他的控制文件通过cp命令进行恢复。而不用media recovery

     SYS@prod> create pfile from spfile;

     File created.
  1. 修改控制文件为多路径
     ##在根目录下新建一个目录
     [root@db1 ~]# mkdir -p /backup/control/
     [root@db1 ~]# chown -R oracle:oinstall /backup/control/
     ##修改控制文件多路径参数
     SYS@prod> alter system set control_files='/u01/app/oradata/prod/control01.ctl','/u01/app/oradata/prod/control02.ctl','/backup/control/control03.ctl' scope=spfile
  1. 关闭数据库,复制控制文件
     SYS@prod> shutdown immediate;
     [oracle@db1 ~]$ cp /u01/app/oradata/prod/control01.ctl /backup/control/control03.ctl
  1. 启动数据库,查看控制文件参数
     SYS@prod> startup
     SYS@prod> show parameter control_files;

     NAME                                 TYPE        VALUE
     ------------------------------------ ----------- ------------------------------
     control_files                        string      /u01/app/oradata/prod/control0
                                                      1.ctl, /u01/app/oradata/prod/c
                                                      ontrol02.ctl, /backup/control/
                                                      control03.ctl

备份控制文件

可以使用`ALTER DATABASE BACKUP CONTROLFILE备份控制文件,有两个选项

  ALTER DATABASE BACKUP CONTROLFILE TO '/u01/app/backup/control.bkp';
  ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
  ###自定义路径
  ALTER DATABASE BACKUP CONTROLFILE TO TRACE as '/u01/app/backup/control.trc';

参考文献

Oracle Database Administrator's Guide

--->Managing Control Files

同类文章

【RAC】RAC扩展表空间

【自动化运维】批量查看Oracle的RMAN备份策略

【Oracle】Oracle 9i,10g,11g各自alert日志的位置

【Oracle】锁表的解决方法

0 次评论

没有任何评论

添加一条评论