Oracle 11g R2 DBA 操作指南(10) 控制文件和数据库启动

1.Oracle数据库控制文件是相当重要的文件,它是一个非常小的二进制文件,其中记录了数据库的状态信息,如重做日志文件与数据文件的名字和位置、归档重做日志的历史等。

控制文件在数据库启动的MOUNT阶段被读取,一个控制文件只能与一个数据库相关联,即控制文件和数据库是一对一的关系,因为控制文件的重要性,所以需要将控制文件放在不同的磁盘上,以防止控制文件的失效造成数据库无法启动,控制文件的大小在CREATE DATABASE语句中被初始化。

启动数据库—(通过默认搜索规则找到参数文件)—>打开参数文件—(在参数文件中找到控制文件的位置)—>打开控制文件

2.使用视图v$parameter来查看控制文件的位置
select value from v$parameter where name = ‘control_files’;
Oracle 11g R2 DBA 操作指南(10) 控制文件和数据库启动_第1张图片

使用show parameter 查看当前控制文件的位置
show parameter control_files;
Oracle 11g R2 DBA 操作指南(10) 控制文件和数据库启动_第2张图片

通过数据字典v$controlfile查看控制文件的名字和存储目录
select status, name from v$controlfile;
Oracle 11g R2 DBA 操作指南(10) 控制文件和数据库启动_第3张图片

3.控制文件是二进制文件,是无法通过文本编辑器查看的,而且该文件由Oracle数据库服务器自动维护,DBA无法干预。我们可以通过Oracle的文档得知控制文件中的内容,以及使用v$controlfile_record_section视图查看所有的记录信息

查询控制文件中所存储的内容
select type, record_size, records_total, records_used from v$controlfile_record_section;
Oracle 11g R2 DBA 操作指南(10) 控制文件和数据库启动_第4张图片

很多冬天数据字典视图就是从控制文件中获得数据的,如v$database视图,通过该视图可以查看数据库ID、创建时间和数据库是否处于归档模式等。
select name, created, log_mode from v\$database;
Oracle 11g R2 DBA 操作指南(10) 控制文件和数据库启动_第5张图片

4.在Oracle数据库中,控制文件的默认存储目录和数据库文件,重做日志文件等存放在同一个目录下,以Oracle11g为例,该目录为:$ORACLE_BASE\oradata\ORACLE_SID.

Oracle会同时建立3个控制文件,默认控制文件名依次为CONTROL1.CTL、CONTROL2.CTL、CONTROL3.CTL。

移动控制文件

①使用PFILE(init.ora)文件时移动控制文件
步骤如下:
.01 利用数据字典获得控制文件的名字。
    数据字典v$parameter获得控制文件的名字
    select value from v$parameter where name = 'control_files';
.02 关闭数据库
    shutdown immediate
.03 修改参数文件PFILE中参数control_files的值,即更改控制文件名而使得该文件存储在不同目录下并保存该文件。
.04 使用操作系统命令把步骤1中的控制文件CONTROL2.CTL和CONTROL3.CTL分别复制到其他目录下,之后需要删除掉步骤1中默认目录下的CONTROL2.CTL和CONTROL3.CTL文件,以防止文件冗余。
.05 重启数据库
    startup
.06 验证修改结果
    select value from v$parameter where name = 'control_files';

②使用SPFILE文件时移动控制文件
因为SPFILE是二进制文件,所以无法通过修改PFILE的方式修改控制文件名,Oracle提供了ALTER SYSTEM指令允许修改SPFILE中的参数。此时实现控制文件分布式存储的步骤如下。
.01 或者控制文件名
    select value from v$parameter where name = 'control_files';
.02 使用alter system set指令修改SPFILE中的控制文件名
    alter system set control_files = '目录1','目录2','目录3' SCOPE = SPFILE;
.03 关闭数据库
    shutdown immediate
.04 将控制文件复制到更改的目录下
.05 重启数据库。
    startup

    再验证下是否使用PFILE启动数据库
    show parameter spfile;
    value值不为空,说明此时使用SPFILE文件启动数据库。
.06 验证修改结果。
    select value from v$parameter where name = 'control_files';

添加控制文件
需要5个控制文件该如何处理?(以数据库启动时采用PFILE参数文件为例)步骤如下:

.01 查看控制文件的名字。
.02 关闭数据库。
.03 使用操作系统命令将步骤1在的一个控制文件复制到一个目录下并修改控制文件的名字。
.04 修改参数文件中参数control_files的值,添加一个控制文件名。
.05 重启数据库。

2016/08/08 21:17:00

5.备份和恢复控制文件
由于控制文件的重要性,备份控制文件是非常必要的。

.01 使用ALTER DATABASE BACKUP CONTROL备份控制文件
alter database backup controlfile to 'd:\OraBackup\backup_controlfile_010_06_14.ora';
(***目录d:\OraBackup必须是存在的)

.02 Oracle也提供了一种方式用于备份控制文件,即将控制文件备份到追踪文件中,使用该文件就可以恢复控制文件。其备份方法首先要设置参数sql_trace为true
设置参数sql_trace为true
alter session set sql_trace = true;
再使用如下指令将控制文件备份的追踪文件中。
alter database backup controlfile to trace;

Oracle提供了一个参数user_dump_dest,可以查看跟踪文件的存储目录。
show parameter user_dump_dest;

控制文件的恢复
在数据库在如果有一个或多个控制文件丢失或出错,我们可以根据不同的情况进行处理。
①部分控制文件损坏的情况

如果数据库正在进行,我们可以先关闭数据库,再将完好的控制文件复制到已经丢失或出错的控制文件的位置,但是要更改文件名字为该丢失或出错的控制文件的名字。如果存储丢失的控制文件的目录也被破坏,则需要重新建立一个新的目录用于存放新的控制文件,并为该控制文件命名。

②控制文件全部丢失或损坏

此时使用备份的控制文件重建控制文件。先关闭数据库,再将备份的控制文件复制到先前控制文件的所在位置上,并更改备份控制文件名为先前控制文件的文件名。

通过跟踪文件重建控制文件
跟踪文件中记录了用于建立控制文件的SQL语句,适当的编辑跟踪文件,然后使用SQL指令重建控制文件。

手工重建控制文件
使用CREATE CONTROLFILE指令逐步创建控制文件。

2016/08/09 20:44:00

你可能感兴趣的:(oracle)