控制文件

目录

 

控制文件概念

控制文件存放的数据库的信息

如何限定控制文件的大小

查看控制文件的配置

查看控制文件的位置

怎么添加和移动控制文件

控制文件的备份


控制文件概念


oracle的控制文件是数据库中及其重要的文件,该文件是一个比较小的二进制文件,它记载了物理数据库的当前状态。每个控制文件只属于一个数据库,但为了防止控制文件丢失,一个数据库一般不止一个控制文件。这些控制文件中的内容完全一样。在数据库装载或打开之前,oracle服务器必须能够访问控制文件。当数据库打开状态下,oracle服务器会随时修改控制文件中的内容。任何用户,包括数据库管理员都不能修改控制文件中的数据。如果由于某种原因oracle服务器不能访问控制文件了,那么数据库就无方正常工作了。如果一个数据库的所有控制文件都出现了问题,那么这个数据库就需要进行恢复,因此,实际的商用数据库至少需要2个控制文件,为了防止磁盘的物理故障,这些控制文件最好放在不同的物理磁盘上,而且最好放在不同的物理磁盘控制器上。

控制文件存放的数据库的信息


数据库名字
数据库标识符。
数据库创建的时间戳
联机重做日志文件的名字和准确位置。当在增加重做做日志文件、删除重做日志文件和修改重做日志文件时,oracle会修改相关的信息。
当前日志的序列号,它是在日志切换时oracle记录的。
校验(检查)点信息。
日志的历史信息
归档日志文件的准确位置和状态。
数据文件的名字和准确位置
表空间的信息
备份的准确位置和状态、

 

如何限定控制文件的大小


oracle数据库管理员可以间接地决定控制文件的大小。控制文件由两大部分组成:可重用的部分和不可重用的部分。
可重用的部分的大小可用control_file_record_keep_time参数来控制。该参数的默认值为7天,即可重用的部分的内容保留7天,一周之后这部分的内容可能会被覆盖。可重用的部分是供恢复管理器使用的,这部分的内容可以自动扩展。可以使用create database或create controlfile语句中下列关键字来间接影响不可重用的部分的大小。
maxdatafiles
maxinstances
maxlogfiles
maxloghistory
maxlogmembers
读者在create database语句中包含了maaxdatafiles 1024时,oracle就在控制文件中预留1024个记录的空间,因此为了使控制1文件尽可能小,应该在创建数据库时把以上的参数设置得尽可能小,但这样的风险是,一旦数据库需要扩展,而且所需的规模超过了所设置的参数大小,就可能需要重建数据库。在实际工作中是在能够保持控制文件尽可能小的同时,又为数据库今后的扩展留下够用的空间。


查看控制文件的配置


SQL> select type,record_size,records_total,records_used from v$controlfile_record_section;

TYPE                 RECORD_SIZE RECORDS_TOTAL RECORDS_USED
---------------------------- ----------- ------------- ------------
DATABASE                 316         1          1
CKPT PROGRESS         8180        11          0
REDO THREAD                256         8          1
REDO LOG                  72        16          4
DATAFILE                 520       100         12
FILENAME                 524      2298         20
TABLESPACE                  68       100         13
TEMPORARY FILENAME              56       100          4
RMAN CONFIGURATION            1108        50          0
LOG HISTORY                  56       292         15
OFFLINE RANGE                 200       163          0

TYPE                 RECORD_SIZE RECORDS_TOTAL RECORDS_USED
---------------------------- ----------- ------------- ------------
ARCHIVED LOG                 584        28          9
BACKUP SET                  40       409          0
BACKUP PIECE                 736       200          0
BACKUP DATAFILE              200       245          0
BACKUP REDOLOG                  76       215          0
DATAFILE COPY                 736       200          0
BACKUP CORRUPTION              44       371          0
COPY CORRUPTION               40       409          0
DELETED OBJECT                  20       818          0
PROXY COPY                 928       246          0
BACKUP SPFILE                 124       131          0

TYPE                 RECORD_SIZE RECORDS_TOTAL RECORDS_USED
---------------------------- ----------- ------------- ------------
DATABASE INCARNATION              56       292          2
FLASHBACK LOG                  84      2048          0
RECOVERY DESTINATION             180         1          1
INSTANCE SPACE RESERVATION          28      1055          1
REMOVABLE RECOVERY FILES          32      1000          0
RMAN STATUS                 116       141          0
THREAD INSTANCE NAME MAPPING          80         8          8
MTTR                     100         8          0
DATAFILE HISTORY             568        57          0
STANDBY DATABASE MATRIX          400        31         31
GUARANTEED RESTORE POINT         212      2048          0

TYPE                 RECORD_SIZE RECORDS_TOTAL RECORDS_USED
---------------------------- ----------- ------------- ------------
RESTORE POINT                 212      2083          0
DATABASE BLOCK CORRUPTION          80      8384          0
ACM OPERATION                 104        64          6
FOREIGN ARCHIVED LOG             604      1002          0

已选择37行。

SQL> select type,record_size,records_total,records_used from v$controlfile_record_section where type in ('DATAFILE','TABLESPACE','REDO LOG');

TYPE                 RECORD_SIZE RECORDS_TOTAL RECORDS_USED
---------------------------- ----------- ------------- ------------
REDO LOG                  72        16          4
DATAFILE                 520       100         12
TABLESPACE                  68       100         13


查看控制文件的位置


select value from v$parameter where name='control_files';

VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/XE/control.dbf


怎么添加和移动控制文件


有两种方式添加和移动控制文件
1.在已经安装oracle中使用正文初始化参数文件添加或移动控制文件步骤如下:
a.利用数据字典v$controlfile来获取现有的控制文件名字
b.正在关闭oracle,如shutdown或shutdown immediate
c.将新的控制文件添加到参数文件的control_files参数中。
d.使用操作系统的复制命令将现有控制文件复制到指定位置。
e,重启oracle 如:startup
f.利用数据字典v$controlfile来验证新的控制文件名是否正确
g.如果有误,重做上述操作,如果无误,删除无用的旧控制文件。
2.使用二进制初始化参数文件
a.利用数据字典v$controlfile来获取现有控制文件名字。
b.修改SPFILE,使用alter system set control_files 命令来改变控制文件的位置
c.正在关闭oracle,如shutdown或shutdown immediate
d.使用操作系统的复制命令将现有控制文件复制到指定位置。
e.重启oracle 如:startup
f. 利用数据字典v$controlfile来验证新的控制文件名是否正确
g.如果有误,重做上述操作,如果无误,删除无用的旧控制文件。


SQL> conn sys as sysdba
已连接。
SQL> select value from v$parameter where name='control_files';

VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/XE/control.dbf
SQL> alter system set control_files='/u01/app/oracle/oradata/XE/control1.ctl' scope=spfile;
系统已更改。
SQL> shutdown
数据库已经关闭。
bash-4.2$ mv control.dbf /backup/
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  413372416 bytes
Fixed Size            2227040 bytes
Variable Size          322962592 bytes
Database Buffers       83886080 bytes
Redo Buffers            4296704 bytes
ORA-00205: ?????????, ??????, ???????


SQL> select value from v$parameter where name='control_files';
VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/XE/control1.ctl


控制文件的备份


由于控制文件是一个极其重要的文件,除了将1控制文件的多个副本存在不同的硬盘上的保护措施外,数据库的结构变化之后,应立即对控制文件进行备份。
alter database backup controlfile to '/backup/control.bak'
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值