第二部分 Oracle DBA
第4章 Oracle体系结构
作为一个关系数据库产品,Oracle目前占据了关系数据库市场的最大份额。与同类产品比较,Oracle提供了一套完整的机制,保证用户快速、安全地访问数据库,同时保证数据库安全、稳定地运行。在用户眼中,Oracle具有性能稳定、运行高效等优点。
Oracle的优点是显而易见的,然而它的体系结构却是非常复杂的。作为一名数据库管理员,为了使数据库安全高效、安全地运行,并在数据库出现故障时能够快速进行恢复,了解Oracle的体系结构是非常必要的。
数据库中的数据是以文件的形式存储在磁盘上的,人们平常所说的数据库就是指这些存储数据库的数据文件,它是一个静态的概念。然而对数据库的访问则是一个动态的过程,必须通过数据库服务器来进行。数据库服务器不仅包括数据文件,还包括一组用来访问数据文件的内存结构和后台进程,这些内存结构和后台进程叫做实例。
实例是Oracle体系结构中最重要的概念。除此之外,读者还应该了解数据在逻辑上和物理上的组织形式。本章主要包括以下内容:
·实例:介绍实例中内存结构和后台进程。
·物理结构:介绍数据文件、控制文件和参数文件等。
·逻辑结构:介绍表空间、区、段、块等存储结构。
图4.1为Oracle数据库服务器的体系结构。
图 4.1 Oracle的体系结构
4.1 实例的体系结构
当用户希望访问数据库时,需要在操作系统中运行相关的应用程序,如SQL*Plus,启动用户进程。用户进程通过实例访问数据库。实例和数据库组成了数据库服务器,一个数据库服务器中至少有一个实例。在单机环境中,实例和数据库是一一对应的,一个实例只能和一个数据库建立关联关系,一个数据库也只能被一个实例加载。在RAC环境中,一个数据库可以对应多个实例,用户进程可以通过任何一个实例访问数据库。
4.1.1 实例的概念
实例(Instance)是一组内存结构和后台进程的集合。当用户访问数据库时,在数据库服务器端首先要启动一个实例,在内存中分配一定的存储空间,并启动一些后台进程。内存空间的作用是存储与用户访问有关的重要数据,后台进程的功能是监视系统的运行状态,并负责在实例和数据库之间交换数据。在支持线程的操作系统中,这些后台进程以线程的方式运行。
用户访问数据库的操作是通过实例来完成的。实例通过后台进程与数据库中的文件进行交互,将用户修改过的或新增加的数据写入文件,而用户对数据的所有访问都是在实例的内存结构中进行的。引入实例的好处是显而易见的:数据位于内存中,用户读写内存的速度要比直接读写磁盘快得多,而且内存中的数据可以在多个用户之间共享,从而提高了数据访问的并发性。
单机版的数据库(如FoxPro)没有实例的概念,用户对数据的访问是通过直接访问数据文件来完成的,这样在性能上大大低于Oracle。而且因为数据无法在多个用户之间共享,多个用户只能以串行的方式访问数据。可想而知,在一个大型的应用系统中,如果同时有成千上万个用户同时访问数据库时,采用性能低下的数据库是件非常可怕的事情。由此可见,Oracle的实例对于数据库的性能是多么的重要。