一、数据库体系结构
Oracle在Unix/Linux上体现为多个不同的操作系统进程,每个进程负责一个主要功能。而在Windows系统上,Oracle实现为一个多线程的进程。
首先要分清实例(Oracle Instance)和数据库(Oracle Database)的区别:
数据库:是操作系统中相应的文件或磁盘的集合。
实例:一组Oracle后台进程/线程以及一个共享内存区,这些内存由所有进程/线程所共享。
简单得说:实例就是一组系统进程/线程以及一些内存,这些进程可以操作数据库;而数据库只是一个文件集合(包括数据文件、临时文件、重做日志文件、控制文件等)。一个实例在同一时刻只能控制一个数据库;相对的,一个数据库在绝大部分情况下也只能由一个实例操作(除了RAC-Real Application Clusters)。
实例的启动:startup(nomount)
数据库的创建:create database
一个instance在其生命周期中只能打开一个database
SQL> alter database close;
Database altered.
SQL> alter database open;
ORA-16196:database has been previously opened and closed
数据库和实例的简单关系如下图:
SGA:系统全局区(Oracle的一个最大内存块)
作用:1、维护所有进程需要访问的多种内部数据结构
2、缓存磁盘上的数据,并缓存重做数据写入磁盘之前
3、保存已解析的SQL计划
4、其他
二、连接Oracle
用户连接Oracle共有两种方式,分别为:专用服务器连接(dedicated server)和共享服务器连接(shared server)。
专用服务器连接:为每一个连接分配一个进程/线程
共享服务器连接:又称多线程服务器(Multi-Threaded Server),用户通过调度器与Oracle连接,可减少进程/线程数,提高系统资源利用效率。
如图:
看一下加上调度器和连接服务后的图:
三、zhouwf版主文章里的详细工作流图
-The End-