Oracle数据库由两个实体组成(1)实例 (2)数据库
实例
实例由存储结构和进程组成,短暂存在于RAM和CPU;因此实例的生存时间其在内存的时间,我们可以启动和停止实例。
一个Oracle实例由一块被称为系统全局区SGA的共享内存以及若干进程组成。
系统全局区(SGA):在实例启动时分配,是Oracle实例的基本组件
SGA也称作共享全局区,用于存储数据库进程共享的数据库信息。它包含有关Oracle服务器的数据和控制信息,在Oracle服务器所在计算机的虚拟内存中分配。
程序全局区(PGA):在服务器进程启动时分配,并在终止进程时回收
它包含有关单个服务器进程或单个后台进程的数据和控制信息
内存结构(其SGA中三个必备元素):
共享池(shared pool):用于存储①最近执行的SQL语句 ②最近使用的数据定义
数据库高速缓冲(Data buffer cache):存储已从数据文件中检索到的数据块的副本
重做日志缓冲区(Redo buffer cache):记录对数据库数据块所做的全部更改,主要用于恢复
还有可选的是:
流池(Streams pool):用于缓存流进程在数据库间移动/复制数据时使用的队列消息
大池(Large pool):用于①共享服务器的会话内存②I/O服务器进程③备份和恢复操作或RMAN④并行执行消息缓冲区
Java池(Java pool):存储Java命令的服务分析要求
后台进程
数据写进程(DBWn):负责将更改的数据从数据库缓冲区高速缓存写入数据文件
日志写进程(LGWR):将重做日志文件缓冲区的更改写入在线重做日志文件
系统监控进程(SMON):检查数据库的一致性,如有必要还会在数据库打开启动时数据库的恢复
进程监控进程(PMON):负责在一个oracle进程失败时清理资源
检查点进程(CKPT):负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和 数据文件中的数据库信息
归档进程:在每次日志切换时把已满的日志组进行备份和归档
服务进程:用户进程服务
用户进程(不属于后台进程):在客户端,负责将用户的SQL语句传递给服务进程组成,并从服务器端 拿回查询数据
用户连接到Oracle实例包括:(1)建立用户连接 (2)创建会话
连接是用户进程和Oracle服务器之间的通信路径
会话是用户与Oracle服务器的一种特定连接
数据库
数据库分为物理结构和逻辑结构。
物理结构(物理结构就是磁盘上的物理文件)包括三类文件:
控制文件(control file):包含维护和验证数据库完整性的必要信息。例如,控制文件用于识别数据文件和重做日志文件,一个数据库至少
需要一个控制文件
重做日志文件(redo log):记录对数据库所做的更改记录,这样一出现故障可以启用数据库恢复。一个数据库至少需要两个重做日志文件
数据文件(data file):存储数据的文件,包含数据库中实际数据
其他管件文件结构:
参数文件(parameter file):定义Oracle实例的特性。例如,它包含调整SGA中一些内存结构大小的参数
归档文件(passwd file):是重做日志文件的脱机副本,在这些副本可能对于从介质失败中进行恢复很重要
密码文件(archivelog file):认证哪些用户有权限启动和关闭Oracle实例
逻辑结构
表空间:是数据库中的基本逻辑结构,一系列数据文件集合
段:是对象在数据库占用的空间
区:是为数据一次性预留的一个较大的存储空间
块:Oracle最基本的存储单位,在建立数据库时指定