ITPub博客

首页 > 数据库 > Oracle > Oracle学习笔记2--------------控制文件

Oracle学习笔记2--------------控制文件

原创 Oracle 作者:htyro 时间:2010-06-23 09:37:37 0 删除 编辑
控制文件是Oracle中用来记录数据文件存放位置,日志文件存放位置,以及数据文件,日志文件的checkpoint_scn,checkpoint_cnt等重要信息,数据库在启动时是否需要介质恢复和实例恢复都是通过控制文件来判定的。

在nocatalog的备份模式下,控制文件里还记录有rman的备份信息,所以说,一旦所有控制文件丢失而又没有备份,是相当严重的事情,切忌。

一般库中控制文件都有3个,其中2个是镜像,3个文件内容一模一样,强烈推荐将3个控制文件分别存放在不同的磁盘,用以提高容错。

Control file状态可以在mount状态下通过v$controlfile视图来查看。

平时可以通过alter database backup controlfile to trace来备份控制文件。
然后找到转存的trace文件,里面有noresetlogs和resetlogs两种恢复方式分别对应联机日志文件存在和丢失的情况。

另外,如果控制文件不小心丢失,那么分两种情况来重建控制文件。

1. resetlogs方式
这种方式来重建控制文件,对应的情况是联机日志文件丢失,则重建的控制文件会从当前数据文件头部获得scn信息,数据库打开后的scn为该scn+1,对应打开库的方式为  alter database open resetlogs;

2.noresetlogs方式
这种方式来重建控制文件则是直接从当前的联机日志组里面获得最新的scn,同时在库打开的时候会检测是否需要进行介质以及实例恢复,打开库则直接
alter database open 方式。

控制文件里面记录有datafile,database,last_change# 3个scn,在数据库open阶段会跟datafile_header的scn进行比较,如果一致则不需要进行恢复,同时last_change#会在启动后变为null, 所以看一个数据库需不需要恢复,在mount阶段直接查看last_change#,如果为null,那是肯定要进行恢复的。

接着上面的,如果不一致,则查看v$database里面的chk_cnt和v$datafile_header里面的chk_cnt是否一致,如果一致则只需要进行instance恢复,如果不一致,则要进行介质恢复,恢复的时间点则是控制文件里面所记录的online log的on disk scn,也就是写到磁盘上的最后一条redo的scn。

smon这个进程会检查数据库是否需要恢复,这个可以在数据库启动的时候在alertOraclesid_log日志上查看到。



















来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22166274/viewspace-665938/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-07-22

  • 博文量
    12
  • 访问量
    86814