暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

什么是控制文件?它有哪些特性?

原创 t 2020-05-17
1432

什么是控制文件?它有哪些特性?
定义:控制文件是定义当前数据库物理状态的二进制文件。
特性:
1)控制文件若丢失需要恢复
2)在MOUNT状态可以读取
3)数据库运行期间控制文件不断地被更新
4)每个控制文件都只关联一个数据库
5)应该被多元化
6)维护数据库实体
7)由CREATE DATABASE语句初始化大小

注:控制文件由DBA管理维护。

3.控制文件包含哪些内容?
1)数据库名及数据库唯一标识
2)数据文件和日志文件标识
3)数据库恢复所需的同步信息,即检查点号
4)数据库创建时间
5)表空间名
6)当前重做日志文件SCN
7)回滚段的开始和结束
8)重做日志归档信息
9)备份信息

4.控制文件的简单操作介绍?
1)控制文件由参数control_files指定,格式如下:
   control_files=(“home/app/…/control01.ctl”,“home/app/…/control02.ctl”)
   参数中各个文件是镜像关系,也就是说,几个文件中只要有一个文件完好,数据库就可以正常运行。

2)以下语句查询控制文件的信息:
  sql>select * from v$controlfile
  如果控制文件损坏或丢失,数据库将终止并且无法启动,所以,要对控制文件进行镜象,手工镜像步骤如下:
  a.关闭数据库
  b.复制控制文件
  c.修改参数文件,加入新增的控制文件位置描述
  d.重新启动数据库
  另外注意,控制文件中还包含几个服务器参数的设置,如果修改这些参数的值,刚需要重新创建控制文件,这些参数是:
  MAXLOGFILES:最大日志文件个数
  MAXLOGMEMBERS:最大日志成员个数
  MAXLOGHISTORY:最大历史日志个数
  MAXDATAFILES:最大数据文件个数
  MAXINSTANCES:最大实例文件个数
  所有修改数据库结构的命令都会引起控制文件的改变。同时出会记录在oracle跟踪文件中,跟踪文件的名称为alter_SID.log,路径如下:
  d:\oracle\product\10.1.0\admin\DB_NAME\bdump\SIDALRT.log(unix是alter_SID.ora)
  也可以在参数文件中指定跟踪文件的存储路径,后台进程跟踪文件目录由参数background_dump_dest指定,用户跟踪文件位置由参数user_bdump_dest指定,如:
  background_bdump_dest=/u01/app/oracle/oralog/bdump
  user_bdump_dest=/u01/app//oralog/udump

5.如何多元化控制文件?
步骤:
1)修改SPFILE:
ALTER SYSTEM SET control files =
HOME/ORADATA/u01/ctrl01.ctl,HOME/ORADATA/u01/ctrl01.ctl', 'HOME/ORADATA/u02/ctrl02.ctl’ SCOPE=SPFILE;

2)关闭数据库
SQL> shutdown

3)创建额外的控制文件
$ cp $HOME/ORADATA/u01/ctrl01.ctl      复制现有控制文件       
     $HOME/ORADATA/u02/ctrl02.ctl
4)启动数据库
SQL> startup

6.使用OMF管理控制文件?
1)如果control_files参数没有制定就会使用OMF创建控制文件。
2)OMF控制文件将会位于DB_CREATE_ONLINE_LOG_DEST_N。

但是,下面语句修改系统控制文件时(可能是操作随意),到底应将控制文件是放在什么位置呢?
SQL>Alter system set control_files = ‘control01.ctl’,‘control02.ctl’,‘control03.ctl’ scope=spfile;

当按上面语句更改控制文件设置后,必须将控制文件放置到 %ORACLE_HOME%\database 目录下,否则数据库无法正常启动。

数据库正常启动后,按下面语句操作恢复控制文件的制定位置:
SQL>Alter system set control_files = ‘D:\oracle\Administrator\oradata\db_1\control01.ctl’,‘D:\oracle\Administrator\oradata\db_1\control02.ctl’,‘D:\oracle\Administrator\oradata\db_1\control03.ctl’ scope=spfile;

7.查询控制文件信息?
1)SQL> select name from v$controlfile;

NAME

E:\ORADATA\ORCL\CONTROL01.CTL
E:\ORADATA\ORCL\CONTROL02.CTL
E:\ORADATA\ORCL\CONTROL03.CTL

2)SQL> select name, value from v$parameter where name=‘control_files’;

NAME

VALUE

control_files
E:\ORADATA\ORCL\CONTROL01.CTL, E:\ORADATA\ORCL\CONTROL02.CTL, E:\ORADATA\ORCL\CONTROL03.CTL

3)SQL> show parameter control_files;

NAME                                 TYPE        VALUE


control_files                        string      E:\ORADATA\ORCL\CONTROL01.CTL,
                                                  E:\ORADATA\ORCL\CONTROL02.CTL
                                                 , E:\ORADATA\ORCL\CONTROL03.CT
                                                 L
4)SQL> select type, record_size, records_total, records_used
  2  from v$controlfile_record_section
  3  where type=‘DATAFILE’;

TYPE                         RECORD_SIZE RECORDS_TOTAL RECORDS_USED


DATAFILE                             428           100           11

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论