oracle数据库由实例和数据库组成:
实例:由内存和后台进程组成,暂时存在于RAM和CPU中,是运行某个程序时所需要的进程及消耗的内存,实例的生命周期就是其在内存中存在的时间,可以启动和停止。当关闭运行的实例时,实例将随即消失。
数据库:由磁盘上的物理文件组成,不管在运行状态还是停止状态,这些文件就一直存在。一旦创建数据库,数据库将永久存在。数据库就相当于安装某个程序所生成的安装目录。
实例的结构
由内存和后台进程组成,内存架构包含两部分系统全局区(SGA)和程序全局区(PGA)。
内存结构:
程序全局区 (PGA):专用于每一个服务器进程或后台进程。每一个进程使用一个PGA.
系统全局区 (SGA):由所有服务器进程和后台进程共享,SGA在实例启动时分配,在关闭时释放。
系统全局区 (SGA):
(1)数据库缓冲区高速缓存:缓存从数据库检索的数据块。处理某个查询时,Oracle 服务器进程会在数据库缓冲区高速缓存中查找它所需的所有数据块。如果未在数据库缓冲区高速缓存中找到数据块,服务器进程会从数据文件中读取数据块,并在数 据库缓冲区高速缓存中添加一个副本。因为关于同一数据块的后续请求可能会在内存中找到该数据块,因此,这些请求可能不需要进行物理读操作。Oracle 服务器使用最近用过的算法腾出最近未访问的缓冲区,以便在数据库缓冲区高速缓存中为新数据块提供空间。
(2) 重做日志缓冲区:高速缓存重做信息(用于实例恢复),直到可以将其写入磁盘中存储的物理重做日志文件。
(3)共享池:缓存可在用户间共享的各个结构。
库缓存是内存区域,按其已分析的格式存储最近执行的代码。分析就是将编程人员编写的代码转换为可执行的代码,这是oracle根据需要执行的一个过程。通过将代码缓存在共享池,可以在不重新分析的情况下重用,极大地提高性能。
数据字典缓存有时称为“行缓存”,它存储最近使用的对象定义:表、索引、用户和其他元数据定义的描述。通过将此类定义放在SGA的内存中,以便使所有会话可以直接访问它们,而不是被迫从磁盘上的数据字典中重复读取它们,从而提高分析性能
PL/SQL区:存储的PL/SQL对象是过程、函数、打包的过程、打包的函数、对象类型定义和触发器。它们全都像源代码那样存储在数据字典中,也使 用已编译的格式。当会话调用存储的PL/SQL对象时,它必须从数据字典读取。为了避免重复读取,将对象缓存到共享池的PL/SQL区
(4)大型池:是一个可选区域,可为某些大型进程(如 Oracle备份和恢复操作、I/O 服务器进程)提供大量内存分配
(5)Java 池:用于 Java 虚拟机 (JVM) 中所有特定会话的 Java 代码和数据
(6)Streams 池:由Oracle Streams 使用。
进程结构:
用户进程:在数据库用户请求连接到 Oracle 服务器时启动
服务器进程:可以连接到 Oracle 实例,它在用户建立会话时启动
后台进程:在启动 Oracle 实例时启动
系统监视器 (SMON):出现故障后启动实例时执行崩溃恢复任务
进程监视器 (PMON):用户进程失败时执行进程清理任务
数据库写进程 (DBWn):将修改后的块从数据库缓冲区高速缓存写入磁盘中的数据文件
检查点 (CKPT):通过更新数据库的所有数据文件和控制文件指出最新的检查点
日志写进程 (LGWR):将重做日志条目写入磁盘
归档进程 (ARCn):发生日志切换时将重做日志文件复制到归档存储器
数据库的结构
Oracle数据库有物理结构和逻辑结构。数据库的物理结构是数据库中的操作系统文件的集合。数据库的物理结构由数据文件、控制文件和重做日志文件组成。
数据文件:数据文件是数据的存储仓库。
联机重做日志文件:联机重做日志文件包含对数据库所做的更改记录,在发生故障时能够恢复数据。重做日志按时间顺序存储应用于数据库的一连串的变更向量。其中仅包含重建(重做)所有已完成工作的最少限度信息。如果数据文件受损,则可以将这些变更向量应 用于数据文件备份来重做工作,将它恢复到发生故障的那一刻前的状态。重做日志文件包含联机重做日志文件(对于连续的数据库操作时必须的)和归档日志文件(对于数据库操作是可选的,但对于时间点恢复是必须的)。
控制文件:控制文件包含维护和验证数据库完整性的必要的信息。控制文件虽小,但作用非常大。它包含指向数据库其余部分的指针:联机重做日志文件和数据文件的位置,以及更新的归档日志文件的位置。它还存储着维护数据库完整性所需的信息。控制文件不过数MB,却起着至关重要的作用。
除了三个必须的文件外数据库还能有其它非必须的文件如:参数文件、口令文件及归档日志文件。
实例参数文件:当启动oracle实例时,SGA结构会根据此参数文件的设置内置到内存,后台进程会据此启动。
口令文件:用户通过提交用户名和口令来建立会话。Oracle根据存储在数据字典的用户定义对用户名和口令进行验证。
归档重做日志文件:当重做日志文件满时将重做日志文件进行归档以便还原数据文件备份。