1、oracle内存结构:sga + pga ;
2、oracle数据库体系结构:
a.在数据库服务器上启动oracle实例;
b.应用程序在客户端的用户进程中运行,启动oralce网络服务驱动器与服务器创建连接;
c.服务器运行oralce网络服务驱动器,创建专用的服务器进程执行用户进程;
d.客户端提交事务;
e.服务器端进程获取SQL语句,检查共享池中是否有相同SQL语句,如果有,服务器进程再检查用户权限,反之则分配新的SQL共享区分析并执行SQL语句;
f.服务器从数据文件或SGA中获得所需数据;
g.服务器进程再sga中更新数据,DBWN将更新过的数据写入磁盘,进程LGWR在重做日志中记录事务;
h.事务成功,服务器进程发送消息到应用程序中.
4、oracle服务器:
a.oralce服务器由数据库和实例组成;
b.数据库是一个数据的集合,存放在数据文件中;
c.实例:内存结构 + 后台进程;
5、oracle数据库实例:
a.oracle实例由内存结构和后台进程组成;
b.启动oracle数据库实例,即分配内存、启动后台进程;
c.oracle内存结构:SGA和PGA
d.oralce实例后台进程:SMON、PMON、DBWR、LGWR、CKPT等;
6、SGA(System Global Area):系统全局区
系统全局区(System Global Area,SGA)是包含了一个oralce实例所拥有的数据及控制信息的共享内存区域.oralce在实例启动时分配SGA空间,并在实例关闭时回收,每个实例都有自己的SGA.
SGA包括:共享池(shared pool)、数据库缓冲区(Database Buffer)、重做日志缓冲区(Redo Log Buffer)、大池、Java池、Stream池.
a.共享池(shared pool)中包含的是共享的内存结构,例如共享sql区(shared sql area). 处理所有提交到数据库的sql语句都要用到共享sql区. 共享sql区中包含了语句对应的解析树(parse tree)、执行计划(execution plan)等信息. 一个共享sql区可以被提交了相同sql语句的多个应用程序使用,以便节约内存空间.
b.数据库缓冲区(Database Buffer)存储最近使用的数据块.一个实例中全部的数据库缓冲区被称为"数据缓存".数据缓存同时包含修改过和没修改的数据块.如果最近使用的数据被放在了内存中,对磁盘I/O的需求就减少了,因此性能也得到提高.
c.重做日志缓冲区(Redo Log Buffer)用户存储重做条目(redo entry)--用于记录数据库变化的日志。重做日志缓冲区中存储的条目将被写入联机的重做日志(online redo log)文件中,以备份数据库恢复使用。重做日志文件的容量是固定的。
d.大池:为了进行大的后台进程操作而分配的内存空间,主要指备份恢复、大型IO操作、并行查询等。
e.Stream池:为了stream应用而分配的内存空间
f.Java池:为java应用而分配的内存空间
7、PGA(program global area,PGA) 程序全局区
PGA(program global area,PGA) 程序全局区是供服务进程(server process)存储数据及控制信息内存区域。这是一种在服务进程启动时由oracle创建的非共享的内存区。只有服务进程才能访问属于它的PGA,而对PGA的读写操作是由oralce代码实现的。一个oralce实例中为所有服务进程分配的全部PGA内存也被称为此实例的合计PGA。
8、后台进程
a.PMON 进程监控进程,监控用户进程是否正常
1)清理出现故障的进程
2)释放所有当前挂起的锁定
3)释放故障进程使用的资源
b.SMON 系统监控进程,实时监控oralce状况
1)在实例失败之后,重新打开数据库自动恢复实例
2)负责清除系统中不再使用的临时段
3)整理数据文件的自由空间,将相邻区域结合起来
c.DBWR 数据写入进程
1)管理数据缓冲区,将最近使用过的块保留在内存中
2)将修改后的缓冲区数据写入数据文件中
d.LGWR 日志写入进程
1)负责将日志缓冲区中的日志数据写入日志文件
2)系统有多个日志文件,该进程以循环的方式将数据写入文件
e.CKPT 检查点进程
1)为了防止实例崩溃,为了尽快进行实例恢复的进程
2)检查点包括两种:完全检查点、增量检查点
9、物理结构
a.主要物理文件可分为三类:
数据文件:数据文件用于存储数据,如表、索引数据等
控制文件:控制文件是记录数据库物理结构的二进制文件
日志文件:记录对数据库所有的修改信息,用于故障恢复
注:丢失以上任意一种文件数据库都无法正常运行,需要进程介质恢复。
b.非主要物理文件:参数文件、密码文件、告警和跟踪文件...
10、表空间:
a.表空间是数据库中最大的逻辑单位,一个oralce数据库至少包含一个表空间
b.每个表空间都由一个或多个数据文件构成,一个数据文件只能与一个表空间关联
c.表空间的大小等于构成表空间的数据文件的大小之和