您的位置:首页 > 数据库 > Oracle

oracle 的数据库、表空间、表是什么关系

2014-12-02 19:08 274 查看
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语句,系统会将中间数据放在临时表空间里暂存
临时表空间会自己删除(可以选择会话结束就删除)

不知道我说明白了没,有问题欢迎继续追问


追问

首先先谢谢您的热心解答。

我在系统默认的数据库文件夹里面看到了几种文件(比如.ctl,.dbf等)
我听我朋友说oracle是先读取.ctl然后读dbf然后读日志(好像是这样,不知道记错没)
请问oracle这个控制文件.ctl到底是做什么用的呢?


回答

你这个问题,就涉及到Oracle的启动机制了,如果你没有看过书的,我给你你讲起来也不太容易,简单说几句,
oracle启动的时候,读取ctl文件(叫控制文件),这个控制文件里记录的内容告诉oracle目前这个数据库都是由哪些dbf组成的。然后读取所有的dbf文件,看这些dbf文件的最后修改时间是否和控制文件中记录的一样(同事还要比对日志文件中记录的最后修改时间),如果这些文件的最后修改时间都一致,那么说明oracle上次关闭是正常的,假如不一致,则利用日志文件重现之前的操作(日志文件里记录oracle的所有操作),最终时所有类型的文件的最后修改时间一致,然后打开,相信你已经看出来了,如果ctl文件坏了的话,你的数据实际上全都无法读取,因为oracle已经不知道自己的结构了。因此oracle默认将控制文件复制3份保存,足见其重要性。
因为估计你没有看过书,所以我用了浅显易懂的词来描述,他们在oracle中应该叫:
最后修改时间: SCN(System Change Number)
日志文件:redo log(可能还涉及到Archive 归档文件)
重现操作:roll forward (前滚)(实际上发生SCN不一致时需要进行恢复,在前滚后还要回滚,以后再说)
以上,请您参考
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: