控制文件
控制文件扩展名通常为 ctl,其在Oracle数据库中具有及其重要的作用,如果该文件损坏或者丢失,那么数据库将无法正常启动
即使是正在运行的数据库也会立即出错关闭,其原因在于控制文件记录了数据库的物理结构信息
数据库启动以及运行过程中的物理存储结构变化都需要读写该文件
控制文件是二进制类型的文件,用户不能使用记事本工具直接编辑,而需要通过 Oracle 相关进程进行自动更新
创建控制文件
数据库创建时会同时自动创建控制文件,当控制文件损坏或者丢失,同时又没有备份的情况下需要用户手工创建控制文件
create controlfile
[reuse] database db_name
[logfile redofiles_list]
[datafile datafiles_list]
[maxlogfiles]
[maxlogmembers]
[maxinstances]
[maxdatafiles]
resetlogs|noresetlogs
[archivelog|noarchivelog]
对参数介绍如下
- reuse:指定原有控制文件能被覆盖使用,如果忽略该参数并且同时已存在控制文件,则创建控制文件将出错
- db_name:为需创建控制文件的数据库名称
- redofiles_list:为重做日志文件列表,包括各文件的存储路径
- datafiles_list:为数据文件列表,包括各文件的存储路径
- maxlogfiles:设置重做日志文件最大数量
- maxlogmembers:设置重做日志文件组的最大成员数量
- maxinstances:设置数据库的最大实例个数
- resetlogs|noresetlogs:表示不使用原有重做日志文件或使用原有重做日志文件
- archivelog|noarchivelog:表示设置数据库为归档模式或非归档模式
控制文件的备份与恢复
Oracle 数据库中用于控制文件备份语句为
alter database backup controlfile
该语句有两种可选的备份方式:一种是将控制文件备份为一个二进制文件,另外一种是备份为纯文本形式的文件
//备份为二进制文件
alter database backup controlfile to 'D:\test.ctl';
//备份为文本文件
alter database backup controlfile to trace;
当控制文件备份为文本文件时,该备份文件也被称为追踪文件,保存在 spfile 中文件的参数 user_dump_dest 所指定路径,该追踪文件实际为 SQL 脚本文件,可以利用它来重新创建控制文件
删除控制文件
如果某个控制文件失效则可以删除该控制文件,但要注意不能将控制文件全部删除,至少要保留一个,否则数据库将无法启动
通过编辑初始化参数 control_files,可以去掉要删除控制文件信息,然后在操作系统中将控制文件手动删除
查询控制文件信息
可以使用 show parameter 命令显示初始化参数 control_files 的设置信息
show parameter control_files;
此外,可以通过查询与控制文件相关的一系列动态性能视图获取相关信息,这些视图包括
- v $ controlfile:包含所有控制文件基本信息
- v $ controlfile_record_section:包含控制文件的各个记录文档段的信息
- V $ parameter:包含系统所有初始化参数,从中可以查询参数 control_files 的值