【IT168 服务器学院】ORACLE数据库可分为三个范畴:
数据库内部(如表)
内存存储取(包括公用存储区以及进程)
数据库外部
if you want to know ORACLE architecture well,you should know two basic conceptions .database and instance
instance,也叫服务器server,就是用来访问一个数据库文件集的一个存储结构以及后台进程的集合
它使一个单独的数据库可以被多个instance 访问。这就是ORACLE的并行服务器方式。
决定instance的组成以及大小的参数存储在文件init.ora中
这个文件在instance启动时候需要装载
instance 的init.ora文件通常包含instance 的名字,比如一个instance 叫ORA9,其init.ora将被起名为initORA9.ora
关于instance,simply speaking.讲下表空间
i.e.,tablespace,是数据库的逻辑划分,每个数据库at least have a tablespace,叫system表空间
其他表空间可供用户群以及应用系统共同使用。
for example,USER 表空间供一般用户用,RBS表空间供回滚段使用
RBS= rollback segments
下面谈下文件FILE,每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件。一个数据文件只能属于一个表空间。数据文件在其建立后个改变大小。建立新表空间需要建立新的文件。
一个数据文件一旦被加入到一个表空间,就不能再从这个表空间移走,也不能再加入到其他表空间中!!
不要乱移啊,否则failure ,even collapse!
谈下第二个,ORACLE的内部存储结构
ORACLE使用两种类型的存储结构,即后台进程以及全局区域。
一个用户帐号拥有数据库的对象,如表,视图等
用户的权限 depend on you and me
为访问一个其他拥护拥有的对象 典型情况,如对表或VIEW进行insert,select ,update,delete,or execute等操作。必须授权
关于如何看数据库的background process ?
select * from v$bgprocess
其中PADDR不为0的说明是正在使用的,
l 表(Table)
存放专门数据而建立和分配的空间。
l 表空间(Tablespace)
是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间。
上文来自cu精华帖,。。。感觉事实上oracle的表空间,就可以看做是postgresql或者mysql 中的库。。。当然肯定有差别。。。在硬件方面,表空间可能跨了多个硬盘,在逻辑上,表空间下面主要就是表,估计还有存储过程,触发器这些。。。 那就基本等于其他系统里的库了。。。
数据库间的物理以及存储结构关系又后台进程来维持,数据库有多个后台进程
1. 系统监控(SMON)
1.当一个数据库开始工作时,SMON所扮演的实例恢复角色进程呢感也同时开始了,使用联机日志文件(onlie redo log files)
1.日志文件=Redo log
Oracle保存所有数据库事务的日志,这些日志被写入一个叫online redo log files中。当数据库被破坏时,这些日志文件能够以正确顺序来恢复数据库事务。
日志文件信息存储"外部“数据库文件中
每一个Oracle数据库将同拥有两个或更多的日志文件。Oracle以循环方式写入:当第一个日志文件被填满时,就向第二个文件写入,依次类推,到所有日志文件都被填满时,就又回到第一个日志文件,用新事务的数据对其进行重写。
当数据库余兴在ARCHIVELOG模式时,数据库在重写日志文件前将先对其进行备份。日志文件可以被镜像。谈完了Redo log files,再谈下控制文件control file
控制文件对数据库来说是决定性的,所以存储多个copy.。这些分别存储在各个不同磁盘上,以减少磁盘失效引起的potential risk.when database created,correspondingly
the control file created
在实例中运行的每一个后台进程都有一个跟踪文件与之相连,跟踪文件记载后台进程遇到的重大的EVENTS‘S information.除了跟踪文件,ORACLE还有一个修改日志(Alert Log)。比如,alter database backup controlfile to trace; 然后查看对应的跟踪文件看看内容。
比如,ROMAN兄的init.ora配置control file
control_files=''/T3/ORACLE/oradata/ORA9/control01.ctl'',''/T3/ORACLE/
oradata/ORA9/control02.ctl'',''/T3/ORACLE/oradata/ORA9/control03.ctl'',''/
T3/ORACLE/oradata/ORA9/control04.ctl''
为了访问数据库中的数据,ORACLE为所有用户提供一组后台进程,并且,有一些存储结构专门用来存储最近的有对数据库访问的数据。数据库实例,也称为服务器Server,就是用来访问一个数据库文件集的一个存储结构及后台进程的集合。
决定实例的组成以及大小的参数存储在init.ora(ORA8I以前)和SPFILE(ORACLE9I 以后)中。