ORACLE体系结构

一.Oracle数据库由实例(instance)和数据库组成。

1.实例是在内存中的,数据库是放在硬盘(可能用物理介质更准确)上的。PGA也是在内存中的,但PGA不属于实例。

    1.1实例又是由SGA和一系列后台进程组成的。

        1.1.1 SGA由共享池(Shared Pool),数据缓冲池(Database buffer Cache)、日志缓冲池(Redo Log Buffer)等组成。SGA不仅仅由这三个部分组成,这是主要的。

        1.1.2 后台进程包括:PMON、SMON、LGWR、DBWR、CKPT、ARCH等

    1.2放在硬盘上的数据库包括一系列文件,参数文件、控制文件、日志文件、数据文件

      1.2.1 说到各个文件的作用,就有必要提到 Oracle数据库启动的三个阶段:nomount,mount,open。nomount阶段启动实例,必须要读取参数文件;mount阶段需要读取控制文件连接数据库;open阶段读取数据文件。

               对应的Oracle数据库的关闭,内部是启动的相反过程,但不分几个阶段了。只是几种关闭模式。

               shutdown abort   可以理解为直接断电;shutdown normal 这个可以理解为等所有用户都断开连接后再关机,这个一般不现实,除非oracle数据库安装在你笔记本上或实验机器上就你一个人试用;shutdown immediate这个最常用,一般都是使用这个,当然这个没法关机的时候,可能直接按电源哦,哈哈。这个就理解为在连的用户断开,在运行的终止,没提交的回滚,比abort稍显温柔!shutdown transactional 这个其实关注的是事务了,等在运行的事务提交或回滚,阻止新事务的生成。

             参数文件主要就是启动时用到,主要就是spfile<sid>.ora、pfile<sid>.ora、init.ora三个文件。

    1.3 PGA的作用,保存用户连接信息及权限,还有个作用就是排序,sql语句中的Order By,如果order by数据量很大,性能很低的话, 就要考虑PGA的大小是否合适,或者优化SQL是否有必要排序;当然还有很多其他思考方法。

2.Oralce逻辑结构

Oracle数据库(上面讲的硬盘中的数据库)由表空间(tablespace)组成,表空间由段(segment)组成,段又是由区(extent)组成,区又是由块(block,严格的说这里的block是Oracle data block)组成。Oracle data block又是由OS block组成。

我们通常create table中的table其实对应的逻辑结构是段。create table 后面可以加tablespace的,这个tablespace明显就是对应的逻辑结构的tablespace。这样就可以容易理解段组成表空间了,其实create table带tablespace,table组成了tablespace。

表空间又分为系统表空间(system,sysaux)、数据表空间、回滚表空间(Undo tablespace)、临时表空间。

想到哪写到哪,本来很想一步一步来,不过感觉写多了,就没层次感了!想精确的有的又要查资料!写些只是为了理理自己的思绪。

原文地址:https://www.cnblogs.com/cnmarkao/p/3658386.html