到目前为止,接触Oracle已经将近2年了,但是总也没有好好的总结过这些东西,今天闲下来了,从头到尾捋一捋,写一写,如果能真正写下来,那么这个印象可就更加深刻了。。。
学习一门技能,你首先应该搞清楚它的架构,了解到它的架构,懂得它的组成、工作过程、原理,你学习起来才能更简单些。如下图所示就是Oracle体系架构
学习Oracle数据库,你首先应该清楚它的两个比较重要的概念:
- 实例(Instance):是由内存结构和后台进程组成的,每次实例启动时,会分配一个称为SGA(System Global Area)的共享内存区域,启动后台进程。
- 数据库:数据库是由物理结构和逻辑结构构成。物理结构是:比较实际的东西,看得见的,如:数据文件、控制文件、日志文件、参数文件和归档日志文件等,逻辑结构是:描述Oracle内部组织和管理数据的方式,说起来可能你感觉你比较抽象,哈哈哈,但是你映射到表空间、数据段、数据区、数据块等,差不多就能理解了~
实例和数据库,这两个是如何相辅相成的呢?
实例是用来管理和控制数据库的,而数据库是用来存储数据的,这些数据就是为实例准备的,一个数据库可以被一个或多个实例打开,但是一个实例的运行时期只能打开一个数据库。我们常见的单机数据库,就是一个实例对应一个数据库,而高性能RAC,就是多个实例,一个库,还有容灾环境DG,是多个数据库,多个实例。
下面咱们详解上图SGA的各个组件:
- 系统全局区(SGA):SGA是一组为系统分配的共享的内存结构,可以包含一个数据库实例的数据或控制信息。如果多个用户连接到同一个数据库实例,在实例的SGA中,数据可以被多个用户共享,当数据库实例启动时,SGA的内存被自动分配;当数据库实例关闭时,SGA内存被回收。SGA是占用内