Oracle的启动机制

问题1:搞不明白  表空间,数据表,数据库   这几个概念在oracle里面是什么关系啊

oracle 数据库就是指的oracle 整体,一般一个机器上只安装一个oracle数据库

oracle建立好以后,实际上oracle是一个一个的DBF文件,然后N个DBF文件组成一个表空间

你的表就建立在表空间下,比如我举个例子:

一个数据库叫jack,

jack下用户使用的表空间有3个: users , abc, jacc

其中

users由d:\1.dbf组成

abc由d:\11.dbf d:\22.dbf组成

jacc 由 d:\jacc.dbf组成

你建的表可以选择放在这3个表空间的任意一个里(如果不写,就放在你这个用户的默认表空间里,一般都是users,这个表空间是系统自己建立的)

临时表空间你也可以用,但是只能将临时表放在里面,临时表空间主要放置一些临时数据,比如你查询一个复杂的sql语句,系统会将中间数据放在临时表空间里暂存

临时表空间会自己删除(可以选择会话结束就删除)


问题2:我在系统默认的数据库文件夹里面看到了几种文件(比如.ctl,.dbf等)

我听我朋友说oracle是先读取.ctl然后读dbf然后读日志(好像是这样,不知道记错没)

请问oracle这个控制文件.ctl到底是做什么用的呢?

oracle启动的时候,读取ctl文件(叫控制文件),这个控制文件里记录的内容告诉oracle目前这个数据库都是由哪些dbf组成的。然后读取所有的dbf文件,看这些dbf文件的最后修改时间是否和控制文件中记录的一样(同事还要比对日志文件中记录的最后修改时间),如果这些文件的最后修改时间都一致,那么说明oracle上次关闭是正常的,假如不一致,则利用日志文件重现之前的操作(日志文件里记录oracle的所有操作),最终时所有类型的文件的最后修改时间一致,然后打开,相信你已经看出来了,如果ctl文件坏了的话,你的数据实际上全都无法读取,因为oracle已经不知道自己的结构了。因此oracle默认将控制文件复制3份保存,足见其重要性。

因为估计你没有看过书,所以我用了浅显易懂的词来描述,他们在oracle中应该叫:

最后修改时间: SCN(System Change Number)

日志文件:redo log(可能还涉及到Archive 归档文件)

重现操作:roll forward (前滚)(实际上发生SCN不一致时需要进行恢复,在前滚后还要回滚,以后再说)






你可能感兴趣的:(oracle,文件,启动)