控制文件
6.1 控制文件介绍
控制文件是一个很小的二进制文件
定义当前数据库的物理状态
保证数据库的完整性
需求的
在数据库启动到
mount状态时使用,帮助数据库启动
控制文件在数据库服务器启动过程中必须是可写的。没有控制文件数据库不能
mount,并且恢复时也是困难的。
数据库创建的过程中创建控制文件。默认的至少一个控制文件在数据库创建时创建。
6.2 查看控制文件的位置
1.通过
spfile
Strings spfileSID.ora
2.通过
show parameter spfile
3.selecet * from v$controlfile;
6.3 数据库启动的过程
1.Unmount
启动进程
读取
$oracle_home/dbs中的spfile文件
分配
sga
启动后台进程
打开
alter.log和trace 文件
2.mount
实例和启动的数据库绑定
加载并启动控制文件
读取控制文件中包含的数据库名字和数据文件和联机重做日志的状态
3.open
开启
redo文件和数据文件
6.4 controlfile中包含的内容
数据库的名字和
dbid
数据库创建的时间
表空间的名字
数据文件和联机重做日志的名称和位置
联机重做日志的顺序号
备份信息
联机重做日志信息
6.5 特点
每个数据库至少有两个控制文件,并且存放在不同的磁盘上。数据库同时给每个控制文件同时写信息,读只读第一个控制文件,如果控制文件中的任何一个损坏的时,实例失败。
6.6 备份控制文件的条件
1.增加,删除,或者重命名数据文件时
2.增加,删除表空间时,或者表空间可读可写状态时
3.增加或者删除重做日志文件或组时。
6.7 控制文件大小的决定因素
主要是受在创建数据库文件时的
maxdatafiles ,maxlogfiles,maxlogmembers,maxloghistory,maxinstances参数决定的。
6.8 创建控制文件
6.8.1 创建初始控制文件
初始化参数文件是在创建数据库时创建的,控制文件的名称是由初始化参数文件中的
control_files参数决定的。下面是一个control_files的初始化参数的例子
Control_files=(‘/ u01/oracle/prod/control01.ctl’,
‘/ u01/oracle/prod/control02.ctl’,
‘/ u01/oracle/prod/control03.ctl’)
如果在数据库创建时参数文件指定的控制文件的文件名存在则使用controlfile reuse,否则将会报错。如果创建的新的控制文件与旧的控制文件的尺寸不一致时,不能使用controlfile reuse。
6.8.2创建额外的控制文件,重命名和修改控制文件的位置
Alter system set control_file=’’,’’;
Shutdown immediate
Cp controlfile01.log control02.log
Startup
6.8.3 创建新的控制文件
创建新的控制文件的条件
1. 数据文件中所有的控制文件已经永久损坏,并且没有备份
2. 你想修改在创建数据库时的一些参数时。这些参数包含数据库的名字,
maxlogfiles,maxlogmembers,maxloghistory,maxdatafiles,
maxinstances.
步骤
1. 列出说有的数据文件和联机重做日志文件
Select member from v$logfile;
Select name from v$datafile;
Select value from v$parameter where name=’control_files’
2. 关闭数据库
Shutdown immediate
3. 备份所有的数据文件和重做日志文件数据库
4. 启动新的实例到
unmount状态
5. 使用
create controlfile命令创建数据库
如果重命名数据库的名字时,必须使用
resetlogs,其他则可以使用noresetlogs。
6. 备份新的控制文件
7. 编辑
control_files,使控制文件中参数和初始化参数中的值一致,控制文件中不包含备份信息,如果想更改数据库的名字,则需要修改db_name指定新的名称。
8. 如果有必要则恢复数据库,如果不能恢复数据库则调到下一步。
如果控制文件是恢复数据库中的一部分则恢复数据库。如果使用
noresetlogs创建控制文件,你可以恢复数据库完成后,关闭数据库恢复。
如果新创建的控制文件使用了
resetlogs语句,你必须使用 using backup control file。如果数据文件和连接重组日志丢失,则用工具恢复他们。
9. 使用下面的方法打开数据库
如果没有执行恢复,或者执行步骤完成后关闭了数据库的恢复,用
Alter database open;
如果在创建
controlfile时使用了resetlogs创建了控制文件时,使用alter database open resetlogs;
6.9 备份控制文件
备份到指定文件
Alter database backup controlfile to ‘/u01/backup/controlfile.bkp’;
或者备份到
trace文件中
Alter database backup controlfile to trace;
6.7 创建新的控制文件
在下列情况下你必须创建新的控制文件
1.数据库中的所有控制文件都损坏,并且没有备份
2.你要更改数据库的名称
6.8相关的动态性能参数
V$controlfile
Status 如果名字不能确定 这这个值是
invalid
如果这个名字能确定则这个值为空
Name 是控制文件的路径加名称
IS_RECOVERY_DEST_FILE
表明控制文件是否在闪回区。
Block_size
控制文件的块大小
File_size_blks
控制文件的大小
V$controlfile_record_section
转载于:https://blog.51cto.com/wgk002/619294