本篇着重从物理角度来说明oracle数据库的组成。
Oracle数据库,就是操作系统文件的集合。包括下面几种文件。
参数文件init.ora记录了控制文件的位置
控制文件中的主要信息:
数据库的名字,检查点信息,数据库创建的时间戳,所有的数据文件,联机日志文件,归档日志文件信息,备份信息等。
有了这些信息,oracle就知道哪些文件是数据文件,重做日志文件是哪些,这些都是系统启动和运行的基本条件,没有控制文件,系统是不可能启动的。控制文件很重要,一般采用多个镜像。
控制文件信息可以从v$controlfile中查询获得
数据文件的详细信息记载在控制文件中。
Select name fromV$datafile;
可以查看数据文件
数据文件可以大致分以下几类:
存放系统表,和数据字典,一般不放用户数据,但是用户脚本,如过程,函数,包等却是保存在数据字典中。
数据字典,是一些系统表或试图,包括数据库版本,数据文件信息,表与索引等段信息,系统的运行状态等各种和系统有关的信息和用户脚本信息。通过数据字典,可以了解oracle的运行状态。
回滚段,用来临时存放修改前的数据。回滚段通常都放在一个单独的表空间(回滚表空间),避免表空间碎片化,这个表空间里的数据文件就是回滚数据文件。
主要存放用户的排序等临时数据,在临时表空间里,数据文件就是临时数据文件,主要用于不能在内存上进行的排序操作。我们必须为用户指定一个临时表空间。
存放用户数据,两类常见的用户型数据,一般数据和索引数据。
用户对数据库进行的任何操作都会记录在重做日志文件。
两个概念: 重做日志组、重做日志组成员
一个数据库中,至少有2个日志组文件,一组写完后再写另一组,即轮流写。一个日志组中的多个日志成员是镜像关系,有利于日志文件的保护,因为日志文件的损坏,特别是当前联机日志的损坏,对数据库的影响很大。
联机日志组的交换过程叫切换,日志切换在一个优化效果不好的数据库中会引起临时的‘挂起’。挂起大致有两种情况:
在归档情况下,需要归档的日志来不及归档,而联机日志又需要被重新利用;
检查点事件还没有完成,而联机日志需要被重新利用。
解决手段:
1) 增加日志组
2) 增大日志文件成员大小
通过v$log查看日志组,v$logfile可以查看具体的成员文件
Oracle可以运行在两种模式之中,归档模式和不归档模式。
如果不用归档模式,当然,你就不会有归档日志,但是,这样可能会丢失数据。
在归档模式中,为了保护用户的所有修改,在重做日志文件切换后和被覆盖之间系统将他们另外保存成一组连续的文件系列,该文件系列就是归档日志文件。
Init.ora文件
初始化文件记载了许多数据库启动参数,如内存、控制文件、进程数等。在数据库启动的时候加载,初始化文件记录了很多重要参数,对数据库的性能影响很大,不要轻易改写,否则可能引起数据库性能下降。
用于oracle具有sysdba权限用户的认证
记录数据库启动,关闭和一些重要的出错信息。数据库管理员应该经常检查这个文件,并对出现的问题作出即时的反映。可以通过sql找到他的路径:
Select value from v$PARAMETER where name=”background_dump_dest”;
系统进程或用户进程出错前写入的信息,可以通过oracle的tkprof工具转化为可以读懂的格式。对于系统进程产生的跟踪文件与报警日志文件的路径一样,用户跟踪文件的路径,可以通过sql找到路径:
Select value from v$PARAMETER wherename=”user_dump_dext”;
主要内容来自:
oracle 体系结构:
http://blog.csdn.net/wanghai__/article/details/4683983