为了访问数据库中的数据,
Oracle
使用一组所有用户共享的后台进程为其提供服务。此外,
SGA
用来存放最近查询操作的一些数据。数据库实例
(Instance)
也称作服务器
(Server),
是用来访问数据库文件集的内存结构及后台进程的集合。通俗点说,访问数据库的硬盘文件需要一些进程,并一些内存结构来实现。而这些进程加内存结构的组合就是数据库实例了,
Oracle
实例为存取和控制数据库的软件机制。每当启动数据库时,
SGA
首先被分配。一个实例为管理数据库数据和该数据库一个或多个用户服务而工作。在
Oracle
系统中,首先启动实例,然后再由实例装配数据库。
特点:一个数据库可以被多个实例访问
实例图:
SGA的结构分为:数据库缓冲存储区、日志缓冲区、共享池、大池、Java池等,下面主要讲数据库缓冲存储区和日志缓冲区
硬盘上的数据文件先读取到数据库缓冲存储区中,然后供用户使用。如果要访问的数据已经存储在于数据库缓冲存储区中,那么就不用再到硬盘上的数据库文件中取数据了,直接从缓冲区中拿。数据库缓冲存储区总是保存最近从硬盘读出的数据
它主要分为三个部分:
l
脏缓存块:脏缓存中保存的是已经修改过的缓存块。当一条
Sql
语句对某个缓存块中的数据进行修改后,这个缓存块就被标记为脏缓存块。它们迟早要被
DBWR
进程写入对应的硬盘中的数据文件,以便永久性地保留修改结果
l
空闲缓冲块:空闲缓冲块中没有数据,它在等待被写入数据。当
Oracle
从数据文件中读取数据后,将会寻找空闲缓存块,以便将数据写入其中
l
命中缓存块:命中缓存块保存的是最近正在被访问的缓存块。命中缓存将始终被保留在高速缓存中,不会被写入数据文件。
当执行
INSERT
、
UPDATE
、
DELETE
语句对表进行修改时,或执行
Create
、
ALTER
、
DROP
等语句创建方案对象时,
Oracle
都会为这些操作生成重做记录。重做日志高速缓存就是用于存储重做记录的缓存。
当重做日志缓存达到一定数量后,由
LGWR
进程将其写入相应的日志文件。
Oracle
总是先做日志文件,后才做数据文件的,先缓存进内存,再写入硬盘的,前者是为了方便恢复,后者为了提高效率
三、 用户和模式(USERS and SCHEMA)
Oracle数据库中,用户可以直接操作表、视图等数据库对象,对于这些对象Oracle不是随意保存在数据库中的,Oracle通过模式“Schema”来组织和管理这些数据库对象,并且一个模式只有一个用户。也就是说,模式是属于特定用户的数据库对象集合。
模式与用户一一对应,模式本身并不是对象,它只是一个用来描述属于特定用户的对象结合的术语。
转载于:https://blog.51cto.com/wanqiufeng/463677