ORACLE数据库概念
1.1 ORACLE数据库结构
1.1.1 ORACLE数据库结构图
ORACLE数据库由控制文件(controlfile)、数据文件(data file)、重做日志文件(redo log files)组成;同时,ORACLE使用其他的文件诸如parameter file、password file、alert.log、archived log file等。
ORACLE实例(instance)由SGA区(系统全局区)及ORACLE后台进程组成。SGA(system global area 或称为 share global area)由共享池(shared pool)、数据缓冲区(db buffer cache)、重做日志缓冲区(redo log buffer)组成。
Shared pool由库缓存(library cache)和字典缓存(data dictionary cache)组成:
l 库缓存保存SQL语句文本、SQL语句的分析树、SQL语句的执行计划(SQL语句的执行步骤)等内容。如果一个SQL语句在库缓存区中已经存在,那么这个SQL语句执行时就不需要进行重新编译,从而减少了编译时间、减少了内存的需求,提高了应用的性能。
l 数据字典缓存保存最近访问过的数据块对象的定义,包括表、索引、列、数据文件、用户、权限等。
ORACLE默认启动的后台进程包括:PMON、SMON、CKPT、DBWR、LGWR等组成,一旦ORACLE启动了其他数据库选项,还需要启动诸如ARCH、Dnnn、LCKn、RECO等后台进程。
l PMON:后台进程PMON负责清除失败进程所占用资源,包括回滚失败进程的事务、释放失败进程锁资源及其他进程。
l SMON:SMON进程负责在数据库启动时进行实例恢复(包括回滚未提交的数据;提交重做日志文件中确认已发生改变的数据)、相邻表空间合并、回收临时扩展段。
l DBWR:DBWR负责将数据缓冲区中发生更改的数据写入数据文件
当发生以下四种情况时,数据缓冲区中的数据将写入数据文件:
- 数据缓冲区中发生更改的数据(dirty buffer)超过极限
- 数据缓冲区中的剩余空间不足
- 超时(3s)
- 发生checkpoint(同步数据缓冲区和数据文件)
l LGWR:LGWR将重做日志缓冲区中的数据顺序写入重做日志文件中
当发生以下几种情况时,重做日志缓冲区中的数据写入重做日志文件:
- 事务提交
- 重做日志缓冲区使用超过1/3
- 重做日志缓冲区发生超过1MB的更改
- 进行DBWR之前
l CKPT:修改数据文件及控制文件头
l Dnnn:MTS(Multi Thread Server)启动的多个多线索服务器进程
l ARCH:数据块运行在归档模式下,将重做日志文件转储到磁盘或其他介质上
l LCKn:并行数据库启动进程,用于避免多个实例对同一个数据块进行同时修改
l RECO:负责在分布式应用中保证不同数据块间相关数据的同步
1.1.2 user process和server process
user process:用户进程
server process (服务器进程):客户端应用程序登录系统后,ORACLE服务器将启动一个进程,即称为服务器进程。
1.2 PGA:
Program Global Area(程序全局区)由服务进程产生时生成,PGA是一个非共享的内存结构,它包含排序区(sort area)、会话信息(诸如用户权限等信息)、游标状态、堆栈区(记录诸如全局变量等信息)等内容。