事先声明:把控制文件比喻成oracle的大脑我深表赞同,但这个比喻并不是出自我,而是oracle大师eygle说滴~
每个oracle数据库都有相应的控制文件,用于打开、存取数据库。
一个数据库可以拥有多个控制文件(通常都是镜像关系),但是一个控制文件只能属于一个数据库。
每个数据库必须至少拥有一个控制文件,不管什么时候,如果由于某些原因无法访问,数据库就无法工作了。
为啥呢?
因为控制文件中保存着许多数据库启动时必须的重要信息。
粗略介绍这些经常登场的信息:
1、数据库的名称和创建时间等,在创建oracle时生成的。
2、重做日志文件和归档日志文件的名字、位置和状态等信息。这些信息是在增加重做日志文件、删除重做日志文件、修改重做日志文件以及重做日志被归档时,这些信息将被oralce记录
3、当前日志的序列号。它在日志切换时由oracle记录的
4、检查点(checkpoint)和SCN信息。这两个信息估计得在另一篇博客里详细介绍。
5、数据文件的名称和位置。当在增加数据文件、删除数据文件和修改数据文件的名称时,oracle会修改相关信息。
6、表空间信息。当在增加或删除表空间时,oracle会修改相关信息。
7、备份信息的位置和状态等信息。
... ...
接下来简单看看数据库启动的3个模式,Look一下控制文件所处的位置:
启动一个实例时,根据参数文件定位控制文件(即NOMOUNT模式),在启动实例后,数据库的后台进程已经运行,进一步的mount数据库之后通过加载控制文件,确定数据文件、重做日志文件的路径(即MOUNT模式),最后才能打开数据库(即OPEN模式)
为啥eygle大师把控制文件比喻成oracle的大脑呢,因为,控制文件除了启动数据库时是必须的,在数据库运行时也发挥着important的作用,比如,记录检查点的相关信息,归档文件路径、备份信息(如果是RMAN备份的话),数据库发生结构修改(类似表空间、数据文件、日志文件)等操作都必须同步到控制文件中。
这也是为什么一开始时就说不管什么时候,如果由于某些原因无法访问控制文件,数据库就无法工作了。
最后要说的是,控制文件是一个二进制文件,里面的信息是如此的地位非凡,所以直接打开是无法阅读的。除了转储出来看之外,那么我们是否有其他方法能获得里面的信息呢?
鉴于这些信息的地位,这是必须有滴——使用数据字典,由此又体现了认识数据字典这位仁兄的重要性了。
有请这位仁兄出来自我介绍一二:
v$archived、v$tempfile、v$datafile、v$archived_log、v$sgastat、v$backup、v$database、v$instance、v$session、v$log、v$logfile、v$tablespace
... ...
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26685854/viewspace-740703/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26685854/viewspace-740703/