Oracle 数据库体系结构

来源:互联网 发布:淘宝网页 编辑:程序博客网 时间:2024/05/29 07:36





Oracle数据库体系结构包括 实例(instance)、数据库文件、用户进程(user process)、
服务器进程(Server process)、以及其他文件
(如 参数文件(Parameter file)、密码文件(Password file)
和归档日志文件(Archived log files));数据库实例(Instance)包括SGA(系统全局区)和一系列后台管理、监视进程【SMON,系统监控进程;
PMON:进程监控;DBWR:数据库写进程;
LGWR:日志写进程;CKPT:检验点进程;数据库启动时此五个进程是必须启动的,
否则数据库实例无法创建;】数据库包括数据文件(Data files)、控制文件(Control files)和
重做日志文件(Redo log files)

Oracle服务器由数据库实例和数据库文件组成;

Oracle数据库由三类文件组成:

1、数据文件(data files):数据文件包含数据库中的实际数据,是数据库操作中数据的最终存储位置;

2、控制文件(control files):包含维护数据库和验证数据库完整性的信息,它是二进制文件;

3、重做日志文件(redo files):重做日志文件包含数据库发生变化的记录,在发生故障时用于数据恢复;


参数文件(parameter files):参数文件中定义了数据库实例的特性,在参数文件中包含为SGA中内存分配空间的参数,如分配数据库高速缓冲区的大小等,参数文件是正文文件,可以使用操作系统文本编辑器查看;

密码文件(password files):密码文件授予用户启动和关闭数据库实例,在刚安装数据库时,Oracle的默认用户名和密码就存储在密码文件中,Oracle可以借此判断用户的操作权限;

归档日志文件(archive log files):归档日志文件是日志文件的脱机备份,在发生故障后进行数据恢复时可以使用该文件;


数据库连接Connection 与 会话Session

数据库连接:连接指用户进程与数据库服务器之间的通信途径,一个连接可以有多个会话,Oracle提供了3种数据库连接方式:

 1、基于主机的方式(Host-Based):此方式中,服务器和客户端运行在同一台计算机上,用户可以直接连接数据库服务器;

 2、基于客户机-服务器的方式(Client-server):该方式中数据库服务器和客户端运行在不同的计算机上,客户通过网络连接数据库服务器。在DBA的日常维护中,会经常使用这种方式访问数据库,实现数据库的远程维护;

 3、客户-应用服务器-数据库服务器方式(Client-Application Server-Server):这种方式称为三层访问模式,用户首先访问应用服务器,然后由应用服务器连接数据库服务器,应用服务器相当于一个中介,完成客户和数据库的交互,在很多应用系统中,客户的应用程序往往通过三层方式访问数据库,如应用服务器为IIS或Apache服务器等;


会话:指一个明确的数据库连接。

示意图如下:





一个连接可以对应多个会话,连接仅仅是一种通信途径,如通过Socket建立通信,但是一个用户可以启动多个进程通过一个连接建立多个会话;


Oracle内存结构有SGA和PGA组成:PGA称为程序全局区,PGA不是实例的一部分,当服务器进程启动时,才分配PGA。而SGA称为系统全局区,它是数据库实例的一部分,当数据库实例启动时,会首先分配SGA,在SGA中包含几个重要的内存区,数据库高速缓存(Database buffer cache)、重做日志缓存(Redo log buffer cache)、共享池(Shared pool)、大池(Large pool)和Java池(java pool)。


共享池由两部分组成,即库高速缓存(Libray cache)和数据字典高速缓存(Data dict cache);oracle引入共享池的目的就是共享SQL或PL/SQL代码,即把解析得到的SQL代码的结果在这里缓存,其中PL/SQL的代码不仅在这里缓存,还在这里共享。

1、库高速缓存存储了最近使用过的SQL和PL/SQL语句,使用LRU(least recently used)算法管理该缓存区;

2、数据字典高速缓存,该缓冲区总存储了数据文件、表、索引、列、用户、权限信息和其他一些数据库对象的定义;



数据库高速缓冲区(Database buffer cache):存储了最近从数据文件读入的数据块信息或用户更改后需要写回数据库的数据信息,此时这些没有提交给数据库的更改后的数据成为脏数据。  Oracle使用参数 DB_BLOCK_SIZE 和 DB_BLOCK_BUFFERS 设置高速缓存的大小,DB_BLOCK_SIZE是Oracle数据块的大小,而DB_BLOCK_BUFFERS是数据库的个数,二者的乘积就是库高速缓存的大小;Oracle 9i 及以上版本中提供了一个DB_CACHE_SIZE 参数来设置Oracle数据库高速缓存区的大小,该参数可以动态更改可查询其大小(show parameter db_cache_size);

0 0
原创粉丝点击