暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

Oracle从入门到精通(第2章Oracle11g体系结构)

原创 从小就很霸道的胖虎 2023-01-02
420

2.1 Oracle11g体系结构概述

Oracle的体系结构是从某一角度来分析数据库的组成和工作过程,以及如何管理数据库和组织数据。--记住这句话!

    1、Oracle数据库是一个逻辑概念。3个重要的概念:实例(Instance)、数据库(Database)和数据库服务器(DatabaseServer)

    2、实例是指一组Oracle后台进程以及在服务器中分配的共享内存区域;数据库是由基于磁盘的数据文件、控制文件、日志文

件、参数文件和归档日志文件等组成的物理文件集合;数据库服务器是指管理数据库的各种软件工具(比如sqlplus、OEM等)、实例及数据库3个部分。

2.2逻辑存储结构

1、Oracle的逻辑存储结构是一种层次结构,主要由表空间、段、区间和数据块等概念组成。


2、数据块是Oracle逻辑存储结构中最小的逻辑单位,也是执行数据库输入输出操作的最小存储单位。其大小被写入到初始化参数DB_BLOCK_SIZE中。

SQL> select name,value from v$parameter where name = 'db_block_size' ; --> 8192

3、数据块由块头、表目录、行目录、空余空间和行数据这5部分组成

通常把块头、表目录、行目录这3部分组合起来称为头部信息区,头部信息区不存放数据

4、空余空间和行数据共同构成块的存储区,用于存放真正的数据记录。

5、数据区(Extent):是由一组连续的Oracle数据块所构成的Oracle存储结构。一个或多个数据块组成一个数据区,一个或

多个数据区再组成一个段(Segment)。数据区是Oracle存储分配的最小单位。

6、数据区是表中数据增长的基本单位,在Oracle数据库中,分配存储空间就是以数据区为单位的。

7、段是为特定的数据对象(如表、索引、回滚等)分配的一系列数

据区。段内包含的数据区可以不连续,并且可以跨越多个文件,使用段的目的是用来保存特定对象。

8、四种类型的段:数据段、索引段、回滚段、临时段。

8.1、当创建一个表时,系统自动创建一个以该表的名字命名的数据段

8.2、索引段中包含了用于提高系统性能的索引。

8.3、回滚段(也可称作撤销段)中保存了回滚条目,Oracle将修改前的旧值保存在回滚条目中。利用这些信息,可以撤销未提交的操作,

8.4、在执行“CREATE INDEX”、“SELECT ORDER BY”、“SELECT DISTINCT”和“SELECT GROUP BY”等几种类型的SQL语句时,Oracle

系统就会在临时表空间中为这些语句的操作分配一个临时段。

8.5、若经常需要执行上面这类SQL语句,最好调整SORT_AREA_SIZE初始化参数来增大排序区,从而使排序操作尽量在内存中完成,以获得更好的执行效率。

9、表空间:Oracle使用表空间将相关的逻辑结构(如段、数据区等)组合在一起,表空间是数据库的最大逻辑划分区域,通常用来存放数据表、

索引、回滚段等数据对象,任何数据对象在创建时都必须被指定存储在某个表空间中。表空间(属逻辑存储结构)与数据文件(属物理存

储结构)相对应,一个表空间由一个或多个数据文件组成,一个数据文件只属于一个表空间;Oracle数据的存储空间在逻辑上表现为表空

间,而在物理上表现为数据文件。

9.1、表空间相当于操作系统中的文件夹,而数据文件就相当于文件夹中的文件。

9.2、Oracle 11g默认创建的主要表空间:SYSTEM表空间/SYSAUX表空间/UODO表空间/USER表空间

SQL> select * from v$fixed_view_definition; -->查看数据库中内部系统表的信息

9.3、除了Oracle系统默认创建的表空间外,用户可根据应用系统的实际情况及其所要存放的对象类型创建多个自定义的表空间,以区分用户数据与系统数据。

2.3 物理存储结构

Oracle数据库的物理存储结构由多种物理文件组成,主要有数据文件、控制文件、重做日志文件、归档日志文件、参数文件、口令文件和警告日志文件等。


1、数据文件:数据文件是用于保存用户应用程序数据和Oracle系统内部数据的文件。Oracle数据库在逻辑上由表空间组

成,每个表空间可以包含一个或多个数据文件,一个数据文件只能隶属于一个表空间。

SQL> select file_name,tablespace_name from dba_data_files-->通过查询dba_data_files或v$datafile数据字典来了解Oracle系统的数据文件信息

1、系统数据文件( SYSTEM01.DBF 和 SYSAUX01.DBF ):用于存放“特殊”的用户数据和Oracle系统本身的数据。

,如用户建立的表名、列名及字段类型等,这些属于用户数据范畴,这些数据被存放在系统表空间所包含的数据文件中;

2、撤销数据文件撤 销 数 据 文 件( UNDOTBS01.DBF ):撤销数据文件隶属于撤销表空间。如果修改Oracle数据库中的数

据,那么就必须使用撤销段,撤销段用来临时存放修改前的旧数据。

3、用户数据文件用 户 数 据 文 件 ( USERS01.DBF EXAMPLE01.DBF、TBSP_1.DBF和TBSP_2.DBF):用于存放用户应用系统的数据。

解释为何没看到临时表空间包含的数据文件:

这是由于临时数据文件本身的特殊性,从Oracle 9i以后,Oracle将临时表空间所对

应的临时数据文件与一般数据文件分开,要了解Oracle系统的临时数据文件信息,可以从dba_temp_files或v$tempfile数据字典中查询。

SQL> select file_name,tablespace_name from dba_temp_files; 

4、控制文件是一个二进制文件,它记录了数据库的物理结构,其中主要包含数据库名、数据文件与日志文件的名字和位置、数据库建立

日期等信息。控制文件一般在Oracle系统安装时或创建数据库时自动创建,控制文件所存放的路径由服务器参数文件spfileorcl.oracontrol_files参数值来指定。

4.1、由于控制文件存放有数据文件、日志文件等的相关信息,因此,Oracle实例在启动时必须访问控制文件。只有控制文件正常,实例才

能加载并打开数据库。

SQL> select name from v$controlfile;--> 通过查询v$controlfile数据字典来查看Oracle系统的控制文件信息

5、日志文件的主要功能是记录对数据所作的修改,对数据库所作的修改几乎都记录在日志文件中。在出现问题时,可以通过日志文件得

到原始数据,从而保障不丢失已有操作成果。

5.1、Oracle的日志文件包括重 做 日 志 文 件 ( Redo Log File ) 和 归 档 日 志 文 件 ( Archive LogFile)

5.2、重做日志文件用来记录数据库所有发生过的更改信息(修改、添加、删除等信息)及由Oracle内部行为(创建数据表、索引等)而引

起的数据库变化信息。

5.3、在数据库运行期间,当用户执行COMMIT命令(数据库提交

命令)时,数据库首先将每笔操作的原始记录写入到日志文件中,写入日志文件成功后,才把新的记录传递给应用程序。所以,在日志文

件上可以随时读取原始记录以恢复某些数据。

5.4、通过对表或者整个表空间设定NOLOGGING属性时,使基于表或表空间中所有的DML操作(如创建表、删除视图、修改索引等操

作)都不会生成日志信息,这样就会减少日志信息的产生。--生产系统严禁操作。

SQL> select member from v$logfile;--> 解Oracle系统的日志文件信息

工作原理:

LGWR进程(日志写入进程)将日志信息从“重做日 志缓冲区”中读取出来,并将“读取的日志信息”

写入到日志文件组中序 列号较小的文件里,一个日志组写满后接着写另外一个日志组。

6、在所有的日志文件被写入一遍之后,LGWR进程将再次转向第一个日志组进行重新覆写,这样势必会导致一部分较早的日志信息被覆

盖掉,但Oracle通过归档日志文件解决了这个问题。

6.1、归档模式是在各个日志文件都被写满而即将被覆盖之前,先由归档进程(ARCH)将即将被覆盖的日志文件中的日志信息 读出,并将“读出的日志信息”写入到归档日志文件中,而这个过程又 被称为归档操作。

6.2:且归档日志文件本身又会占用大量的磁盘空间,这些都会影响系统的整体性能。所以在默认情况下,Oracle系统不采用归

档模式运行。

SQL> select dbid,name,log_mode from v$database; -->查看归档模式。

SQL> show parameter log_archive_dest; -->查看归档位置

7、服务器参数文件SPFILE(Server parameter File),用来记录了Oracle数据库的基本参数信息(如数据库名、控制文件所

在路径、日志缓冲大小等)。数据库实例在启动之前会读取这些参数。

7.1、查看服务器参数:SQL> select name,value,ismodified from v$parameter;

alter system set db_block_size=4096 -->生产环境别操作。

8、密码文件是Oracle系统用于验证sysdba权限的二进制文件,当远程用户以sysdba或sysoper连接到数据库时,一般要用密码文件验证。 

9、警告文件(即警告日志文件)是一个存储在Oracle系统目录下的

文本文件(名称通常为alert_orcl.log),它用来记录Oracle系统的运行信息和错误信息。运行信息一般包括Oracle实例的启动与关闭、建立

表空间、增加数据文件等;错误信息包括空间扩展失败、启动实例失败等。 -->优化排错的入口。

SQL> select name, value from v$parameter where name ='background_dump_dest'; -->查看当前实例的警告文件的路径。

2.4 Oracle 11g服务器结构 

 实 例 可 以 进 一 步 划 分 为 系 统 全 局 区 ( SGA ) 和 后 台 进 程(PMON、SMON等)两部分,其中,SGA使用操作系统的内存资

源,而后台进程需要使用CPU与内存资源。

程序全局区(PGA)是一个非共享的内存区域,用于管理用户进程的私有资源。前台进程可

以再划分为用户进程和服务器进程,它们需要使用CPU与内存资源。

1、系统全局区(System Global Area)是所有用户进程共享的一块内 存区域,也就是说,SGA中的数据资源可以被多个用户进程共同使 用。

SGA主要由高速数据缓冲区、共享池、重做日志缓存区、Java池 和大型池等内存结构组成。SGA随着数据库实例的启动而加载到内存 中,

当数据库实例关闭时,SGA区域也就消失了。

1.1 、经常或最近被访问的数据块会被放置到高速数 据缓冲区前端。Oracle把高 速数据缓冲区分为以下3个部分:

脏数据区、空闲区、保留区。

1.2、重做日志缓冲区用于存放对数据库进行修改操作时所产生的日志信息,这些日志信息在写入到重做日志文件之前,首先存放到重做日志缓冲区中.

1.3:共享池:是SGA保留的内存区域,用于缓存SQL语句、PL/SQL句、数据字典、资源锁、字符集以及其他控制结构等。共享池包含库

高速缓冲区(Library cache)和字典高速缓冲区(Dictionary cache)。

1.3.1、库高速缓冲区是共享池的一部分,主要包括共享SQL区和私有SQL区两个组成部分。每条被缓存的SQL或PL/SQL语句都被分成两个部分,

分别被存放 在共享SQL区和私有SQL区中。

1.3.2、字典高速缓冲区用于存放Oracle系统内部管理所需要的数据字典信息,例如用户名、数据对象和权限等。

SQL>alter system set shared_pool_size=30m;--修改共享池大小--谨慎操纵。

1.4、大型池在SGA区中不是必需的内存结构,只在某些特殊情况下,实例需要使用大型池来减轻共享池的访问压力。

SQL> alter system set large_pool_size = 16m;--修改大型池缓存区大小。

2、程序全局区(Program Global Area)也可称作用户进程全局区,它的内存区在进程私有区而不是共享区中。虽然PGA是一个全局区,

可以把代码、全局变量和数据结构都可以存放在其中,但区域内的资源并不像SGA一样被所有的用户进程所共享,而是每个Oracle服务器

进程都只拥有属于自己的那部分PGA资源。通常PGA区由私有SQL区和会话区组成。

2.1、私有SQL区用于存储变量以及SQL语句运行时的内存结构信息,

当每个用户连接到实例时,都会在实例中创建一个会话。每个会话的私有SQL区可以再分为静态区和动态区两部分。

2.2、会话区用于存放用户的会话信息(如登录用户名)。如果数据库

处于共享服务器连接模式下,则会话区将位于SGA区域,而不是PGA

SQL> show parameter pga;-->查看pga

3、前台进程包括用户进程和服务进程、用户进程是指那些能够产生或执行SQL语句的应用程序。

服务进程就是用于处理用户会话过程中向数据库实例发出的SQL 语句或SQL*Plus命令。

4、后台进程:SMON、PMONDBWR、LGWR和CKPT这


1. 数据写入进程(DBWR):数据写入进程的主要任务是负责将内存中的“脏”数据块回写到数 据文件中

2、检查点进程(CKPT):当发生日志切换时(写入操作正要从一个日志文件 组切换到另一组时),就会启动检查点进程

3. 日志写入进程(LGWR):当LGWR进程写满一个日志文件组而转向写另外一组

时,我们称之为日志切换。


4. 归档进程(ARCH) 

。若Oracle数据库处于归档模式,当各个日志文件组都被写满而即将被覆盖之前,先由归档进程(ARCH

把即将被覆盖的日志文件中的日志信息读出,然后再把这些“读出的日志信息”写入到归档日志文件中,


系统监控进程(SMON)、进程监控进程(PMON)、

锁定进程(LCKN):这是一个可选进程,并行服务器模式下可以出现多个锁定进程以利于数据库通信。

 恢复进程(RECO)、调度进程(DNNN)、快照进程(SNPN)

5、数据字典:具体功能可以查。


6、小结:内容很多。对了解Oracle有很大帮助。

























「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论