oracle学习笔记(1)--oracle体系结构

1、Oracle的版本

Oracle 11.2.0.4.0

第一个数字,代表新版本,比如9i、10g、11g、12c
第二个数字,代表维护发行版本,包含一些新的特性,比如R1、R2
第三个数字,代表Oracle中间件的版本号
第四个数字,代表组件的发布版本,比如Oracle的patch包
第五个数字,代表平台的版本,通常表示patch号

目前市场可见版本:9i、10g、11g、12c、18c、19c,当前主流使用版本11gR2

2、Oracle的体系结构


从上图,可以总结出来,Oracle Server = 实例 + 数据库

(1)什么是实例?

Oracle实例,是一种访问Oracle数据库的基本方式 。换句话说,就是用户要访问数据库,首先要访问的入口就是实例入口。一个实例总是打开且只打开一个数据库,实例是由内存结构+进程结构组成,也就是oracle中的SGA和PGA。创建连接和会话的示意图如下:

(2)什么是SGA和PGA?

SGA和PGA是Oracle实例中的内存结构。

  • SGA:系统全局区,在实例启动的时候分配。SGA 是实例启动时分配的共享内存结构,关闭时释放。是一组包含一个数据库实例的数据和控制信息的共享内存结构。
  • PGA:服务器进程启动时分配。是会话开始时为每个会话分配的私有内存区,当会话结束时释放。

(3)Oracle的服务进程描述?

  • PMON:是 Oracle 数据库中最活跃的一个进程,是调节所有其他进程的进程监视器。PMON 能够清理异常连接的数据库连接,并自动向侦听器进程注册数据库实例。
  • SMON:是执行系统级清理操作的系统监视进程。它有两个主要职责,包括在发生故障的情况下自动恢复实例,例如断电和清理临时文件。
  • DBWR:数据库编写器。Oracle 在内存中执行每个操作而不是磁盘。因为在内存中的处理速度比在磁盘上快。DBWn 进程从磁盘读取数据并将其写回到磁盘。
  • LGWR:日志写入过程,是可恢复架构的关键。 在数据库中发生的每一个变化都被写出到一个名为 redo 日志文件中用于恢复目的。 而这些变化是由 LGWR 进程编写和记录的。 LGWR 进程首先将更改写入内存,然后将磁盘写入重做日志,然后将其用于恢复。
  • CKPT:负责发起检查点信号,在 Oracle 中,磁盘上的数据称为块,内存中的数据称为缓冲区。 当该块写入缓冲区并更改时,缓冲区变脏,需要将其写入磁盘。CKPT 进程使用检查点信息更新控制和数据文件头,并向脏盘写入脏缓冲区的信号。

(4)什么是Oracle数据库?

Oracle数据库是一个单元数据的集合体,由3种文件类型组成:

(5)Oracle的数据库结构组成是怎样的?

Oracle的数据库结构组成分为物理结构和逻辑结构。

(6)什么是Oracle数据库的物理结构?

其中物理结构是指Oracle数据库的物理存储,而其物理存储实际是由操作系统文件所决定,如(2)中的三大类文件:控制文件(.ctl文件)、数据文件(.dbf文件)、重做日志文件(.log文件)。理解公式:

数据库物理结构 = 数据文件 + 控制文件 + 重做日志文件 = N * 物理文件 = N * 物理块

  • 物理块:物理块是操作系统分配的基础存储单位,逻辑结构中的数据块由若干个物理块构成。

  • 物理文件:每个物理文件由若干个物理块所组成,包括数据块文件、控制文件、日志文件等。

  • 数据文件:数据文件是实际存储插入到数据库表中的实际数据的操作系统文件。在oracle中数据文件的扩展名为*.dbf

  • 重做日志文件:Oracle使用重做日志文件在故障发生之后重现当时的数据库操作,用于数据库恢复。重做日志文件的扩展名为*.log

  • 控制文件:控制文件为二进制文件,它存储了数据库的名称,数据库文件和重做日志文件的名称、位置、联机/脱机状态和大小等信息。只有控制文件正常,才能装载、打开数据库,控制文件的扩展名为*.ctl

如下:在已安装完成的oracle数据库的显示:

[oracle@OracleTest itpuxdb]$ ll
total 1512732
-rw-r----- 1 oracle oracle   9748480 Aug 31 13:58 control01.ctl    控制文件
-rw-rw---- 1 oracle oracle  10493952 Aug 31 09:46 kim01.dbf        数据文件
-rw-r----- 1 oracle oracle  52429312 Aug 31 13:56 redo01.log       重做日志文件
-rw-r----- 1 oracle oracle  52429312 Aug 31 13:58 redo02.log
-rw-r----- 1 oracle oracle  52429312 Aug 31 09:18 redo03.log
-rw-r----- 1 oracle oracle 545267712 Aug 31 13:58 sysaux01.dbf
-rw-r----- 1 oracle oracle 713039872 Aug 31 13:57 system01.dbf
-rw-r----- 1 oracle oracle  30416896 Aug 31 13:32 temp01.dbf
-rw-r----- 1 oracle oracle 104865792 Aug 31 13:57 undotbs01.dbf
-rw-r----- 1 oracle oracle   5251072 Aug 31 09:18 users01.dbf

(7)什么是Oracle数据库的逻辑结构?

Oracle体系的逻辑结构描述的是数据库的物理空间如何运用。包括表空间、段、片区、块

数据库逻辑结构 = N * 表空间 = N表 + N索引 + N视图 + ... = 逻辑对象【N数据段 + N索引段 + N临时段 + 回滚段】 = N * 数据区间 = N * 数据块

  • 数据块(Data Block):数据块最小的数据管理单位,即Oracle中所有的I/O操作都是以块为单位。数据块的大小是操作系统块大小的整数倍,常见大小为8kb或16kb

  • 数据区间(Data Extent):数据区间是由物理上连续存放的块所组成,它是Oracle存储分配的最小单位,一个或多个组成一个数据区间。

  • 数据段(Data Segment):若干个数据区间组成数据段。

  • 表空间(Table Space):Oracle 11g采用表空间这种虚拟概念来管理逻辑对象,用户可以将不同性质的逻辑对象存放在不同的表空间下。每个表空间由一个或多个数据文件组成,一个数据文件只能和一个表空间联系。

(8)数据库逻辑结构的对应关系?

  • 每个数据库都必须由一个或多个表空间组成。【一对多关系】
  • 每个表空间都必须由一个或多个数据文件(datafile)组成。【一对多关系】
  • 每个表空间都必须包含一个或多个段。【一对多关系】
  • 每个数据库文件都必须由一个或多个操作系统块(OS block)组成。【一对多关系】
  • 每个段都必须由一个或多个区间组成。【一对多关系】
  • 每个区间都必须由一个或多个Oracle数据块组成。【一对多关系】
  • 每个Oracle数据块都必须由一个或多个操作系统数据块组成。【一对多关系】

(9)Oracle数据库默认的表空间有哪些?

  • EXAMPLE: 实例表空间,存放实例信息。
  • SYSAUX: SYSTEM表空间的辅助空间,用于减少SYSTEM表空间负荷。
  • SYSTEM: 存放数据字典,包括表、视图、存储过程的定义等等。
  • TEMP: 存储SQL语句处理的表和索引的信息。
  • UNDOTBS1: 回滚表空间,存放数据库恢复信息。
  • USERS: 用户表空间,存放用户私有信息。

(10) 如何启动数据库?

[root@OracleTest #] su - oracle
[oracle@OracleTest itpuxdb]$ sqlplus / as sysdba
SQL> startup;

(11) Oracle内存结构如何分配?
Oracle的内存结构分为SGA和PGA,SGA主要用于数据库实例中内部分配内存的方式,PGA主要用于Server process的内存分配
而SGA又有6大内存区域:shared pool、Java pool、database buffer cache、streams pool、redolog cache、large pool
而Server process也可以逻辑上区分为前台进程和后台进程,前台进程主要用于网络连接,如:

[oracle@STHQOADB01 ~]$ ps -ef |grep LOCAL
oracle    1687  1583  0 09:47 pts/0    00:00:00 grep LOCAL
oracle    8147     1  2 Nov10 ?        07:55:09 oracleoadb1 (LOCAL=NO)
oracle    8149     1  1 Nov10 ?        03:10:10 oracleoadb1 (LOCAL=NO)
oracle    8158     1  1 Nov10 ?        03:55:40 oracleoadb1 (LOCAL=NO)
oracle   47668     1  0 Nov02 ?        00:06:58 oracleoadb1 (LOCAL=NO)

而后台进程主要用于数据库实例和数据库交互的系统进程,如PMON、SMON、CKPT等等。每一个数据库连接,都会产生一个前台进程!!如图:

要连接数据库,首先必须要连接数据库实例。假设有webapp产生100个链接请求,那么oracle就会产生100个网络连接(LOCAL)进行连接。

posted @ 2021-07-24 16:21  烟雨浮华  阅读(253)  评论(0编辑  收藏  举报