Oracle数据库控制文件的概述

Oracle数据库控制文件的概述

数据库控制文件是一个小的二进制文件,仅与一个数据库相关联。

每个数据库有一个唯一的控制文件,尽管它可能维护多个相同的拷贝。

使用控制文件

控制文件是 Oracle 数据库用来查找数据库文件,并从总体上管理数据库状态的根文件。

控制文件中主要内容

1、数据库名称和数据库唯一标识符(DBID)

2、创建数据库的时间戳

3、有关数据文件、 联机重做日志文件、和归档重做日志文件的信息

4、表空间信息

5、RMAN 备份

控制文件目的

1、包含有关数据文件、 联机重做日志文件等为打开数据库所需的信息。

控制文件跟踪数据库的结构变化。例如,当管理员添加、 重命名、或删除数据文件或联机重做日志文件时,数据库将更新控制文件以反映此更改。

2、包含未打开数据库时必须可访问的元数据。

例如,控制文件中包含,包括检查点在内的用于恢复数据库所需的信息。检查点指示在重做流中进行实例恢复所需的起始 SCN。每一个检查点 SCN 之前提交的更改被确保已保存到磁盘上的数据文件中。至少每隔三秒,检查点进程会在控制文件中,记录有关联机重做日志中的检查点位置。

在数据库使用期间, Oracle 数据库不断读取和写入控制文件,并且只要数据库处于打开状态,控制文件就必须是可用的,以便可以写入。例如,恢复数据库涉及从控制文件中读取数据库中包含的所有数据文件名称。其他的操作,如添加数据文件,会更新存储在控制文件中的信息。

多个控制文件

Oracle 数据库对同一数据库启用多个完全相同的控制文件,并同时打开和写入。

通过在不同的磁盘上多路复用控制文件,数据库可以实现冗余,从而避免单点故障。

备注:

Oracle 建议维护多个控制文件副本,每个都在不同的磁盘上。

Oracle数据库创建时,默认创建两个控制文件。

如果控制文件变得不可用,则当数据库实例尝试访问已损坏的控制文件时,会遭遇失败。当其他的当前控制文件副本存在时,可以重新装入数据库并打开,而不需进行介质恢复。如果数据库的所有控制文件都丢失了,那么,实例会失败,且需要进行介质恢复。如果控制文件的当前副本不可用,而必须使用一个旧备份控制文件,则介质恢复就没那么直截了当了。

控制文件结构

有关数据库的信息存储在控制文件的各个不同部分中,**每个部分是有关数据库的某个方面的一组记录。**例如,控制文件中有一个部分跟踪数据文件,并包含一个记录集合,每一个数据文件有一条记录。每个部分存储在多个逻辑控制文件块中。同一部分的记录可以跨越块。

控制文件中包含以下类型的记录:

1、循环重用记录

这些记录包含必要时可以被覆盖的非关键信息。当所有可用的记录槽用完时,数据库要么会扩展控制文件,以便为新记录腾出空间,要么会覆盖最旧的记录。例如有关归档重做日志文件和 RMAN 备份的记录。

2、非循环重用记录

这些记录包含不经常更改且不能被覆盖的关键信息。其示例包括表空间、 数据文件、 联机重做日志文件、和重做线程。

Oracle 数据库绝不会重用这些记录,除非从表空间中删除相应的对象。

控制文件的读取和写入

控制文件块的读取和写入不同于数据块的读取和写入。对控制文件,Oracle 数据库直接从磁盘读取并写入到程序全局区(PGA)。每个进程为控制文件块分配一定的 PGA 内存。

参数和视图补充

可以查询动态性能视图(也称为 V 视图)来查看存储在控制文件中的信息。例如,可以查询 VDATABASE 获取数据库名称和 DBID。但是,只有数据库可以修改控制文件中的信息。

复制代码
V$CONTROLFILE_RECORD_SECTION视图,显示控制文件中记录的信息,以记录方式展示(每个记录,是控制文件中存储的有关数据库信息的某一方面的记录)
CONTROL_FILE_RECORD_KEEP_TIME 初始化参数,记录rman信息在控制文件中保留多久。
control_files 初始化参数,记录数据库中的控制文件位置和名称
相关推荐
前端 贾公子7 分钟前
LangGraph == 图的状态(State)管理 (上)
java·开发语言·数据库
薛晓刚15 分钟前
PGA 超限的一次应急处置:扩容、清游标、杀会话
数据库
CJi0NG23 分钟前
【自用】MySQL-事务
数据库·mysql
我不会插花弄玉1 小时前
4.string类型【由浅入深-redis】
数据库·redis·缓存
PHP实战开发录1 小时前
MySQL数字排序为什么乱
数据库·mysql·php
不停喝水2 小时前
【前端转全栈java速通课】 项目实战④7-11节 操作数据库-登录-注册-修改密码-注销-mubatis-plus简化crud-
java·前端·数据库
leisoo80973 小时前
融资融券数据怎么查两融指标含义与杠杆观察方法 IG50免费开源股票数据API接口
开发语言·jvm·数据库·python·json
Aric_Jones3 小时前
pgsql内置publication/subscription功能,实现数据同步
数据库
有想法的py工程师3 小时前
PostgreSQL 字符集双重转义击穿 磁盘 I/O
数据库·postgresql