Oracle 数据库是目前应用广泛的大型商用关系数据库产品,因此掌握基本的 Oracle 数据库知识也成了每个开发人员的必须要求,本文是笔者对 Oracle 数据库的一些浅薄理解,希望能通过写博客在提高自己的同时也能帮助更多人,如有错漏,还望包涵指教。
Oracle 数据库经过数十年发展,功能丰富,性能优越,可以满足企业级的数据密集型业务处理需求,它有如下主要特点
(1)可移植性强
(2)支持多用户以及高并发事务
(3)具有高度可扩展能力,提高大规模数据的处理能力
(3)安全性能优越
(5)支持多种标准操作接口以及编程规范
Oracle 数据库具有复杂的体系结构,包括数据库实例和数据库文件两大组成部分。其中数据库实例包括内存结构和各种后台进程;数据库文件包括数据文件、控制文件以及重做日志文件等多种文件类型
数据库实例内存结构包括
(一)SGA(系统全局区):由所有服务器进程和后台进程共享。SGA 各个主要组成部分如下
(1)数据高速缓存:缓存频繁访问的数据,提高数据读写效率
(2)重做日志缓存:缓存重做日志,通过批量写入磁盘的方式提高重做日志的保存效率
(3)共享池:缓存已执行的SQL语句的编译方案和执行计划
(4)大型池:缓存大型 I/O 数据的可选区域,支持并行查询、数据备份以及恢复操作
(5)Java 池:内嵌的 Java 存储过程或其他 Java 程序运行时需要的内存
(6)流池:缓存流进程在数据库间移动或复制数据时使用的队列消息,采用队列结构存储
(二)PGA(程序全局区):由各个服务器进程和后台进程专用
(1)排序区:存放排序操作所产生的临时数据
(2)会话区:存放用户会话所具有的角色、权限以及性能统计
(3)游标区:存放执行游标操作时产生的数据
(4)堆栈区:存放用户会话过程产生的程序变量和会话变量数据
数据库实例后台进程:数据库服务器接受用户请求后,会调用相关后台进程进行数据库操作。包括 DBWR,LGWR 等等
(1)DBWR:数据库写入进程,负责把数据高速缓存中的被修改的数据写入磁盘文件,从而保证数据高速缓存中有足 够的空闲空间
(2)LGWR:重做日志写入进程,把重做日志缓存中的日志内容写入联机的重做日志文件中,从而释放重做日志缓存 空间
(3)RECO:分布式事务恢复进程,可以用于自动解决分布式数据库环境中出现的事务故障
(4)CKRT:检查点进程,用于执行数据库检查点事件,触发 DBWR 和 LGWR 进程保存数据,可以维护数据库的一 致性状态
(5)SMON:系统监控进程,负责在实例启动时对数据库进行恢复,并用于清理不再使用的临时空间
(6)PMON:进程监控进程,在用户进程出现故障时执行进程恢复,并负责清理内存储区和释放该进程所使用的资源
(7)ARCH:日志归档进程,用于将写满的在线日志文件复制到指定的存储位置,实现重做日志文件的在线备份
(8)LCKn:锁进程,用于实例间的封锁,在具有并行服务器选项环境下使用,可最多建立 10 个进程
用于实际保存各类数据,实际上构成数据库的物理结构
(1)数据文件:存储数据库的所有数据
(2)控制文件:用户记录数据库的物理存储结构信息
(3)重做日志文件:保存用户对数据库的操作记录
(4)归档日志文件:保存已写满的重做日志文件,是历史重做日志文件的备份
(5)参数文件:保存数据库启动时需要的初始化参数值
(6)备份文件:进行数据库备份操作时产生的文件
(7)其他文件:包括跟踪文件、口令文件和警告文件等