Oracle体系结构.ppt_第1页
Oracle体系结构.ppt_第2页
Oracle体系结构.ppt_第3页
Oracle体系结构.ppt_第4页
Oracle体系结构.ppt_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库开发技术第3章 Oracle体系结构,福建工程学院,本章要点,Oracle服务器体系结构 Oracle 实例 Oracle内存结构 Oracle进程结构 Oracle 数据库逻辑存储结构 Oracle 数据库物理存储结构,3.1 Oracle服务器体系结构概述,数据库系统是一个存储和管理数据记录的系统,通常由DB、DBMS及其开发工具、应用系统和用户组成。其中,DB实现数据存储功能,DBMS是数据库和其它部分的中间层,具有对数据库的管理和控制功能,开发工具、应用系统和用户通过DBMS可以实现对数据库的操作和数据存储。,3.1 Oracle服务器体系结构概述,Oracle 服务器 Orac

2、le服务器由Oracle数据库和Oracle实例组成 。 Oracle数据库是指Oracle保存数据的一系列物理结构和逻辑结构,主要由一系列操作系统文件组成。 Oracle实例就是在运行状态下的Oracle软件,主要是由操作系统的内存结构和一些进程组成。,Oracle体系结构,OS,RAM,DISK,Net,Oracle构架,实 例 内存结构 后台进程,PMON SMON DBWR LGWR CKPT 其他,数据库,数据文件,数据文件,数据文件,控制文件,控制文件,日志文件,日志文件,参数文件,归档日志文件,口令文件,SGA,用户进程,服务器进程,PGA,共享池,数据缓冲区,日志缓冲区,3.1

3、 Oracle服务器体系结构概述,Oracle 服务器 1、Oracle数据库 Oracle数据库是一个存储数据的容器,由一些操作系统文件组成,它的基本功能是存储数据库全部的数据,数据的种类主要包括用户数据、控制数据以及操作信息等。数据库文件可分为数据文件、控制文件和重做日志文件三类。,Oracle数据库文件,3.1 Oracle服务器体系结构概述,Oracle 服务器 2、Oracle实例 Oracle实例是运行在内存中的Oracle软件,主要包括Oracle内存结构和一些Oracle进程。在启动Oracle服务器时,实际上是在内存中创建一个Oracle实例,然后由这个实例访问和控制数据库文

4、件的存取。,Oracle实例,3.1 Oracle服务器体系结构概述,Oracle 服务器 3、用户进程和其它进程 用户进程是当用户执行一个Oracle应用程序(如Pro*C/C+),或启动一个Oracle工具(如SQL*Plus)时,Oracle所创建的用于管理这些应用程序或Oracle工具与Oracle实例通信的进程。用户进程不是实例的一部分。,是一些试图连接数据库的软件,用户进程连接Oracle实例,3.1 Oracle服务器体系结构概述,Oracle 服务器工作过程 以取款过程为例,跟踪Oracle对这一事务的执行过程,了解Oracle各组成部分的功能和Oracle服务器的工作过程。

5、1) 首先通过银行柜员机查询银行卡上存款情况。柜员机接受请求后,向远程服务器发出SQL语句: SELECT USER, ACCOUNT FROM BANK_ACCOUNT WHERE PASEWORD 123456 AND ACCOUNT_ID 1938743228;,3.1 Oracle服务器体系结构概述,Oracle 服务器工作过程 SQL语句通过网络传送到服务器端,服务器进程接收到SQL语句后,检查共享池中是否保存有该SQL语句解析后的程序代码。如果SQL不在共享池中,服务器进程将解析SQL语句,然后执行此程序,否则从共享池中取出SQL语句直接执行。服务器将保存有存款数量的数据块从数据文

6、件中读出并放到SGA的数据高速缓存中。一旦存款数据放进数据高速缓冲区中,客户进程即可读出此数据并将其返回至柜员机。,3.1 Oracle服务器体系结构概述,Oracle 服务器工作过程 (3)根据存款情况从银行卡上取出一部分现金。柜员机接收取款数量后,形成下列SQL语句并发送到服务器: UPDATE BANK_ACCOUNT SET ACCOUNT_BALANCE = 100 WHERE PASEWORD 123456 AND ACCOUNT_ID 1938743228;,3.1 Oracle服务器体系结构概述,Oracle 服务器工作过程 Oracle按下列步骤执行UPDATE语句: (1)

7、 用户进程通过服务器进程把该语句传给Oracle实例; (2) 服务器进程在共享池中查找该SQL的可执行版本。如果找到,则转向第(4)步,否则执行第(3)步; (3) 解析这条SQL语句,并将其可执行版本送入共享池; (4) 执行此SQL语句; (5) 服务器进程在数据高速缓存中查找该语句处理的数据,如果有,则转向第(7)步;否则,执行第(6)步; (6) 从数据库文件中把数据读入数据高速缓冲区; (7) 在回退段中记录原来的存款数量; (8) 在重做日志中生成该事务的一个重做日志项; (9) 将数据高速缓冲区中的存款数据改为取款后的数据; (10) LGWR进程在重做日志文件中记录已完成事务

8、; (11) DBWn进程在数据文件中记录取款后的数据;,3.1 Oracle服务器体系结构概述,数据字典 1.数据字典的概念 数据字典是Oracle数据库中最重要的逻辑结构之一,它是由一些只读的基础表和视图组成。在这些基础表中,保存着Oracle服务器所有的信息。,3.1 Oracle服务器体系结构概述,数据字典 1.数据字典的概念 数据字典中的信息主要包括: 数据库物理结构和逻辑结构的定义 数据的完整性约束信息 数据库的安全信息 审计信息数据库运行时的性能和统计信息 其它关于数据库的基本信息,3.1 Oracle服务器体系结构概述,数据字典 2.数据字典的结构 基础表 数据字典中的数据都是

9、保存在基础表中的。 用户视图 大多数用户通过从视图而不是从基表进行选择来检查数据字典。它们将基表数据解码为有用的信息,使用连接和WHERE子句来简化基表信息。,3.1 Oracle服务器体系结构概述,数据字典 3.数据字典的作用 获取有关用户、模式对象和存储结构的信息,从而控制和管理服务器工作。 任何数据库用户都可从DD中读取关于数据库的信息,从而实现对数据库进行相关的开发、修改和维护等操作。 DBA可以从数据字典中获取数据库的各种参数信息和运行状态信息,从而进行有效的数据库管理。 Oracle服务器在执行DDL语句时对其进行修改,3.1 Oracle服务器体系结构概述,数据字典 4.用户视图

10、 用户视图也叫静态数据字典视图,内容是基本表中的数据,只有基本表改变后,视图的内容才随之改变。,3.1 Oracle服务器体系结构概述,数据字典 4.数据字典视图类别,3.1 Oracle服务器体系结构概述,数据字典 4.用户视图 (1)“USER_”为前缀的用户视图通常包含执行查询的用户所拥有的对象的信息,这类视图可以被一般用户使用。,例如,用户SCOTT想知道自己拥有那些表。 SQLSELECT TABLE_NAME, TABLESPACE_NAME FROM USER_TABLES; 结果将会显示用户SCOTT所拥有的全部表的表名和表空间情况。 TABLE_NAME TABLESPACE

11、_NAME - - BONUS SYSTEM DEPT SYSTEM EMP SYSTEM ,3.1 Oracle服务器体系结构概述,数据字典 4.用户视图 (2)ALL_为前缀的用户视图通常包含包括执行查询的用户所拥有的对象信息及授权给该用户所拥有的对象信息,这类视图可以被一般用户使用。,例如,用户SCOTT想知道自己能够访问那些表。 SQLSELECT TABLE_NAME, TABLESPACE_NAME FROM ALL_TABLES; 结果将会显示用户SCOTT所能访问的全部表的表名和表空间情况。 TABLE_NAME TABLESPACE_NAME - - DUAL SYSTEM

12、SYSTEM_PRIVILEGE_MAP SYSTEM TABLE_PRIVILEGE_MAP SYSTEM STMT_AUDIT_OPTION_MAP SYSTEM ,3.1 Oracle服务器体系结构概述,数据字典 4.用户视图 (3)DBA_为前缀的用户视图则包含所有数据库对象的信息,而不管其所有者是谁,这类视图只能被具有DBA权限的用户或被授予了SELECT ANY TABLE 权限的用户使用。,如:以用户SCOTT登录Oracle服务器,执行下述语句: SQLSELECT TABLE_NAME, TABLESPACE_NAME FROM DBA_TABLES; 结果将会显示如下提示信

13、息: ERROR 位于第 1 行: ORA-00942: 表或视图不存在,3.1 Oracle服务器体系结构概述,数据字典 4.用户视图 现在以用户SYSTEM登录Oracle服务器,查询数据库用户信息。 SQLSELECT TABLE_NAME , TABLESPACE_NAME FROM DBA_TABLES; 结果将会显示系统中所有表的表名和表空间情况。 TABLE_NAME TABLESPACE_NAME - - SEG$ SYSTEM CLU$ SYSTEM OBJ$ SYSTEM ,常用数据字典用户视图,说明:每个视图都对应着一个“DBA_”、一个“ALL_”和一个“USER_”视

14、图。,Oracle服务器体系结构概述,数据字典 5、动态性能表-V$视图 Oracle服务器在运行过程中,会将当前服务器的运行状态记录在内存中的一些“虚拟”表中,这些“虚拟”表称之为动态性能表。 Oracle在动态性能表的基础上建立了动态性能视图,这些动态性能视图由前缀V_$标示,其公共同义词具有前缀V$或GV$,因此,动态性能视图一般又称为V$视图。,常用的动态性能视图,Oracle服务器体系结构概述,数据字典 例如,使用V$SGA视图查询SGA情况。 首先用SYS帐户,以SYSDBA连接身份登录SQL*Plus,执行下列命令: SQLSELECT * FROM V$SGA; 结果显示为:

15、NAME VALUE - - Fixed Size 453492 Variable Size 109051904 Database Buffers 25165824 ,Oracle服务器体系结构概述,数据字典 例如,使用V$FIXED_TABLE视图可看所有动态性能表和动态性能视图的信息。 SQLSELECT * FROM V$FIXED_TABLE; 结果显示为: NAME OBJECT_ID TYPE TABLE_NUM - - - - X$KQFTA 4294950912 TABLE 0 X$KQFVI 4294950913 TABLE 1 X$KQFVT 4294951149 TABL

16、E 2 ,3.1 Oracle服务器体系结构概述,数据字典 6. 其它视图 例如,下面的代码以另一种方式显示当前用户(如:scott)已创建的所有表 Select * from tab; TNAME TABTYPE CLUSTERID - - - ACCOUNT TABLE BONUS TABLE DEPT TABLE EMP TABLE RECEIPT TABLE SALGRADE TABLE 已选择6行。,3.2 Oracle 实例,Oracle实例是运行在内存中的Oracle软件,主要包括Oracle内存结构和一些Oracle进程。在启动Oracle服务器时,实际上是在内存中创建一个Or

17、acle实例,然后由这个实例访问和控制数据库文件的存取。,3.2 Oracle 实例,实例的概念 1. 实例 实例就是运行状态下的Oracle软件,主要是由内存结构和一些进程组成。在Oracle中,每一个数据库至少有一个与之对应的实例,但一个实例只能打开和使用一个数据库。,Oracle体系结构,OS,RAM,DISK,Net,Oracle实例,3.2 Oracle 实例,实例的概念 2.实例的组成 系统全局区SGA。 后台进程。,3.2 Oracle 实例,实例的概念 实例可以实现数据库的访问和控制功能。 单节点服务器 多节点服务器,3.2 Oracle 实例,实例的概念 例如: 假定有一台计

18、算机上有两个数据库,分别称作ORCL和TEACH,如果这两个数据库分别有自己的SGA和独立的Oracle服务器进程集,那么就有了两个数据库实例。 为了不致使这两个数据库混淆,每个实例都要用称为SID(System Identifier,系统标识符)的符号来标识。,3.3 Oracle内存结构,内存结构是Oracle服务器体系结构中最重要的组成部分之一,是决定Oracle服务器整体性能的关键因素。,3.3 Oracle内存结构,内存结构的组成 系统全局区(SGA):在实例启动的时候分配,是Oracle实例中的一个基本部分 程序全局区(PGA):服务器进程启动时分配,与SGA区不同的是,PGA不是

19、一个共享全局区,而是一个私有区。,3.2 Oracle内存结构,内存结构的组成 Oracle内存结构保存有以下信息: 解析后的SQL语句和PL/SQL程序代码 连接数据库的所有会话信息 缓存数据,包括用户执行SQL语句和PL/SQL程序生成的数据和重做日志数据 Oracle运行所需要的信息,如数据字典信息等 Oracle进程共享和通信所需要的信息,例如锁信息。,3.2 Oracle内存结构,系统全局区 (1)SGA的结构 数据库高速缓存(Database Buffer Cache) 重做日志缓存(Redo Log Buffer) 共享池(Shared Pool) Java池(Java Pool

20、) 大型池(Large Pool) 数据字典高速缓存(Data Dictionary Cache) 其它信息存储结构,SGA结构图,3.2.1 系统全局区(SGA),数据库高速缓存 数据库高速缓存(Database Buffer Cache)是SGA的一个缓冲存储区,暂存有从数据文件中读取的数据,Oracle可以对这些数据进行各种数据库操作,并且连接到Oracle数据库的所有用户可以共享其中的数据。,数据库高速缓存 (Database Buffer Cache) 存放最近使用的数据 采用最近最少使用(LRU)算法来管理空间。 有关参数:db_block_buffers db_block_siz

21、e,3.2.1 系统全局区(SGA),重做日志缓存 (Redo Log Buffer) 存放日志条目 由log_buffer参数决定大小,3.2.1 系统全局区(SGA),共享池 包括: 字典缓冲区(Date Dictionary Cache) 库缓冲区(Library Cache) 大小由参数SHARED_POOL_SIZE 决定,3.2.1 系统全局区(SGA),3.2.1 系统全局区(SGA),共享池 共享池(Shared Pool)主要用来存储SQL,PLSQL、过程和包、数据字典、字符设置信息和安全属性等。共享池是SGA中最关键的内存结构之一,太小的共享池会严重影响Oracle的性能

22、和可伸缩性。,共享池 1.库高速缓存 库高速缓存用来保存已经提交给Oracle的SQL语句、解析并执行过的PL/SQL程序。 库高速缓存又可分为: 共享SQL区 在共享SQL区中,保存有执行过的SQL的解析结果和执行计划。 共享PL/SQL区 共享PL/SQL区就是存储经过解析、编译后的Oracle程序单元(存储过程、函数、包和触发器等)代码的一块内存区域。,3.2.1 系统全局区(SGA),共享池 2.数据字典高速缓存 保存数据字典信息 也是采取最近最少使用算法来管理空间的。,3.2.1 系统全局区(SGA),大型池 1.大型池的概念 大型池(Large Pool)是用来暂存大块数据的一个内

23、存结构。它不是Oracle实例必须有的,DBA可根据需要选配。在下述情况下,最好配置大型池: 在共享服务器模式下,设置大型池可以用来保存会话信息。 较多的I/O服务操作,设置大型池可作为磁盘 I/O 缓冲区。 进行数据库备份或恢复操作,设置大型池可作为磁盘 I/O 缓冲区。,3.2.1 系统全局区(SGA),Java池 Java池(Java Pool)是为Java 程序设置的,用于存储 Java 的方法和类定义在共享内存中的表示法,以及在调用结束时移植到 Java 会话空间的 Java 对象。 Java池是一个静态内存结构,它的大小由JAVA_POOL_SIZE设置。取值范围没有限制,可根据操

24、作系统而定。Oracle 9i的默认值为24MB。,3.2.1 系统全局区(SGA),程序全局区或叫进程全局区(PGA) 是一个内存区域。 它包含单个进程工作时需要的数据和控制信息。 与几个进程共享的SGA 正相反,PGA 是只被一个进程使用的区域,是不共享的。它类似家中的对讲电话,进程的不同部分可以相互通信,但与外界没有联系。 PGA 在创建进程时分配,在终止进程时回收,3.2.2 程序全局区 (PGA),3.3 进程结构,所有Oracle用户必须通过两类程序才能访问数据库,一类是应用程序或Oracle工具,另一类是Oracle代码。这两类程序构成了Oracle服务器的进程结构。,进程结构的

25、组成 Oracle进程的分类 用户进程(User Process) 用户进程执行的是应用程序代码或Oracle工具代码。 Oracle进程 Oracle进程执行的是Oracle服务器的代码。它包括服务器进程和后台进程两种。,3.3 进程结构,3.3.1 用户进程,用户进程 用户通过用户进程连接到Oracle实例,实现用户命令的提交和执行结果的获取功能。当用户运行应用程序时,Oracle自动为用户建立一个用户进程,用户进程通过用户程序接口(User Program Interface,简称UPI)在应用程序和服务器进程之间建立起了一个完整的通信连接。通过这个连接,用户和Oracle服务器建立起了

26、会话,最终实现用户访问数据库。,3.3.2 服务器进程,服务器进程主要完成以下功能: 对用户发出的SQL语句进行语法分析、编译和执行。 在数据库高速缓存中搜索所需的数据,如果数据不在数据库高速缓存中,则从磁盘中读取数据,并将数据复制到数据库高速缓存中。 将结果返回给用户。,服务器进程分类 专用服务器进程(Dedicated Server Process) 一个服务器进程只能服务于一个用户进程 共享服务器进程(Shared Server Process) 一个服务器进程可以服务于多个用户进程,为多个用户进程共享。,3.3.2 服务器进程,Oracle服务器工作模式 专用服务器模式 在专用服务器模

27、式中,Oracle为每一个连接到实例上的用户进程创建一个专用的服务器进程,这个专用服务器进程只为该用户进程提供服务。 共享服务器模式 在共享服务器模式中,Oracle在创建实例时启动一定数量的共享服务器进程,调度进程从服务器进程共享池中取出一个空闲的共享服务器进程为用户进程服务。,3.3.2 服务器进程,专用服务器进程 在专用服务器模式下,用户进程和服务器进程的数量是相等的。专用服务器进程随着用户进程的产生而产生,随着用户进程的终止而终止,并始终为一个用户进程服务。,3.3.2 服务器进程,共享服务器进程 在共享服务器模式下,用户进程和服务器进程的数量是不相等的。共享服务器进程是在Oracle

28、实例启动时创建的,直到数据库实例停止运行。少数服务进程为任意数量的用户进程提供。,3.3.2 服务器进程,3.3.3 后台进程,必须的后台进程包括: DBWn 数据库写进程 PMON 进程监控进程 CKPT 检查点进程 LGWR 日志写进程 SMON 系统监控进程,3.3.3 后台进程,可选的后台进程包括: ARCn 归档进程 QMNn 队列监控进程 CJQ0 作业队列进程 RECO 恢复进程 Dnnn 调度进程 LMS 锁管理服务器进程 Snnn 共享服务器进程,3.3.3 后台进程,后台进程 Oracle为每个实例创建一组后台进程,这些后台进程执行I/O操作、监控其它进程工作、维护系统的可

29、靠性,为多个用户的并发访问提供有效的服务。,3.3.3 后台进程,后台进程 1. DBWn(数据库写进程) DBWn进程负责将数据库高速缓存中“脏”的数据写入到数据文件。在下列情况下,DBWn进程将“脏”数据块写入数据文件: 当检查点发生时 当数据库高速缓存中“脏”数据块达到一定数量时, 在服务器进程需要读入大量的数据文件中的数据,但通过扫描数据库高速缓存没有找到足够的空闲块时 发生超时(3秒)时 设置表空间为脱机状态时 设置表空间为只读状态时 删除或删减一个表时 备份表空间时,3.3.3 后台进程,后台进程 2. LGWR(日志写进程) LGWR进程是一个管理日志缓冲区的后台进程,负责将重做

30、日志缓冲区的重做项写入到重做日志文件中。在下列情况下 ,LGWR进程将重做日志缓冲区的数据写入到重做日志文件中: 当用户提交一个事务时 重做数据占有重做日志缓存13时 DBWn进程将数据库高速缓存中的“脏”写入数据文件之前 每3秒中执行一次LGWR进程 日志切换,3.3.3 后台进程,后台进程 3. CKPT(检查点进程) 检查点是Oracle设置的触发事件。 当检查点发生时,CKPT进程将更新数据文件和控制文件的头信息,DBWn进程将数据库高速缓存中的“脏”数据块写入数据文件,DBWn进程的运行又会启动LGWR进程将重做日志缓存的内容写入重做日志文件,这样就完全同步了数据文件,日志文件和控制

31、文件的内容。,3.3.3 后台进程,后台进程 3. CKPT(检查点进程) CKPT工作的检查点包括: 在重做日志文件切换时 将表空间设置为脱机状态时 数据库关闭时 根据初始化参数LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、LOG_CHECKPOINT_TO_ALERT的设置的时间间隔来确定 用户触发,3.3.3 后台进程,后台进程 4. SMON(系统监控进程) SMON进程在实例启动时,执行数据库恢复工作。如果数据库非正常关闭,在数据库再次启动时,SMON自动读取重做日志文件,对数据库进行恢复。除此之外,SMON进程还负责清理临时段,收回不

32、再使用的存储空间,以及对表空间中的存储碎片进行整理合并等工作。,3.3.3 后台进程,后台进程 5. PMON(进程监控进程) PMON进程在用户进程出现故障(如用户非正常关闭了应用程序等)时,清除失效的用户进程,释放用户进程所占用的资源。如PMON将回滚未提交的事务,释放锁,释放分配给失败进程的SGA和PGA资源。同SMON进程一样,PMON进程周期性地被唤醒检查是否需要它服务。,3.3.3 后台进程,后台进程 6. ARCn(归档进程) 当数据库以归档方式运行的时候,ARCn进程负责将写满的重做日志文件复制到一个或多个指定的目录或存储设备中。这些被复制的目标文件被叫做归档日志文件。,3.3

33、.3 后台进程,后台进程 7. RECO(恢复进程) RECO进程用于解决分布式数据库环境下由于网络或系统故障而失败的事务。 8. Dnnn(调度进程) Dnnn存在于共享服务器模式中,负责接受用户进程的请求、调度服务器进程,并将结果返回给用户。,3.3.4 Oracle 服务器工作过程,Oracle按下列步骤执行SELECT语句: (1) 用户进程通过服务器进程把该语句传给Oracle实例; (2) 服务器进程在共享池中查找该SQL的可执行版本。如果找到,则转向第(4)步,否则执行第(3)步; (3) 解析这条SQL语句,并将其可执行版本送入共享池; (4) 执行此SQL语句; (5) 服务

34、器进程在数据高速缓存中查找该语句处理的数据,如果有,则转向第(7)步;否则,执行第(6)步; (6) 从数据库文件中把数据读入数据高速缓冲区; (7) 用户进程即可通过服务器进程读出此数据。,Oracle按下列步骤执行UPDATE语句: (1) 用户进程通过服务器进程把该语句传给Oracle实例; (2) 服务器进程在共享池中查找该SQL的可执行版本。如果找到,则转向第(4)步,否则执行第(3)步; (3) 解析这条SQL语句,并将其可执行版本送入共享池; (4) 执行此SQL语句; (5) 服务器进程在数据高速缓存中查找该语句处理的数据,如果有,则转向第(7)步;否则,执行第(6)步; (6

35、) 从数据库文件中把数据读入数据高速缓冲区; (7) 在回退段中记录原来的存款数量; (8) 在重做日志中生成该事务的一个重做日志项; (9) 将数据高速缓冲区中的存款数据改为取款后的数据; (10) LGWR进程在重做日志文件中记录已完成事务; (11) DBWn进程在数据文件中记录取款后的数据;,3.3.4 Oracle 服务器工作过程,3.4 Oracle 数据库存储结构,Oracle数据库是一个数据集合,它的主要功能是存储和检索数据。Oracle数据库采用了两种存储结构: 逻辑存储结构和物理存储结构,这两种结构相互独立,互不影响。逻辑存储结构主要是指在Oracle内部使用的组织和管理数

36、据的数据结构;物理存储结构是Oracle在操作系统中存储和管理数据的方式,即保存数据的Oracle文件在操作系统中的存储结构。,3.4 Oracle 数据库逻辑存储结构,Oracle存储结构 1.逻辑存储结构 块(Block) 块是Oracle存储结构中最小的逻辑存储单元,是读写数据文件的最小单位。 区(Extent) 区是由一定数量连续的块组成的逻辑存储结构,是Oracle进行存储分配的单位。 段(Segment) 段是由一个或多个区组成的逻辑存储结构,可以用来保存特定的模式对象(表、索引等)。段可以分为数据段、索引段、临时段和回退段四类。 表空间(Tablespace) 表空间是最高一级的

37、逻辑存储单元,是连接逻辑存储结构和物理存储结构之间的桥梁,表空间建立起了两者之间的对应关系。,Oracle通过表空间、段、区间和数据块,实现磁盘空间使用的细粒度控制,3.4 Oracle 数据库逻辑存储结构,Oracle存储结构 2.物理存储结构 在操作系统级,Oracle以文件的形式组织和管理数据,而这些文件是存储在物理磁盘上的,是具体的物理存在,因此把这种结构叫物理存储结构。Oracle物理存储结构组成包括: 数据文件 数据文件用来存储所有的数据库数据。 控制文件 控制文件用来存储数据库的物理结构等信息。 重做日志文件 重做日志文件用来记录对数据库的所有修改信息。,数据库存储结构,Data

38、base,Physical,Tablespace,Data file,OS block,Oracle block,Segment,Extent,数据库存储结构,3.4 Oracle 数据库逻辑存储结构,Oracle存储结构 3.模式对象 模式是一个数据库对象的集合。 表 Oracle数据库中基本的数据单元。 视图 从表或视图中抽取出来的数据的表现形式。 序列 Oracle自动生成的一个代码唯一的连续数值列。 索引 一种与表相关的数据结构。利用索引,Oracle能够提高数据检索的性能。 程序单元 包括存储过程、函数、程序包、触发器等。 同义词 表、索引、视图或其它模式对象的一个别名。 簇 一组由

39、于共享公共列而在物理上存放在一起的一个或多个表。,3.4 Oracle 数据库逻辑存储结构,块 1.标准块 是Oracle存储结构的最小单位,是Oracle进行存储管理的最小单元。 初始化参数DB_BLOCK_SIZE指定的数据块被称为标准块。标准数据块是在创建数据库时设定的,数据库创建完成后,该参数就不能改变。,3.4 Oracle 数据库逻辑存储结构,区 区(Extent)是Oracle进行存储空间分配的最小单位,是由一系列物理上连续的块组成的逻辑存储结构。区存在于段中,是段的组成单位。一个或多个数据块组成区,一个或多个区组成一个段。,3.4 Oracle 数据库逻辑存储结构,段 1.段的

40、类型 在Oracle中,不同类型的模式对象拥有不同类型的段,主要段的类型包括: 数据段(Data Segment) 数据段用来存储表和簇的数据。主要包括表、分区的表和簇。 索引段(Index Segment) 索引段保存索引的索引条目。 临时段(Temporary Segment) 在临时表空间中保存临时操作的段。 回退段(Rollback Segment) 回退段主要用来保存数据被事务修改之前的原始数据 。,3.4 Oracle 数据库逻辑存储结构,表空间 表空间(Tablespace)是Oracle DB最高层次的逻辑存储结构,是由一系列数据文件组成的集合,其中保存着由段、区和块等逻辑存储

41、结构描述的各种模式对象。表空间是数据文件的集合,也是段的集合。因此,可以将表空间看作是逻辑存储结构和物理存储结构之间的桥梁,表空间建立起了两者之间的对应关系。,表空间Oracle的文件夹。Oracle使用表空间组织数据库,在将数据插入到数据库之前,必须首先建立表空间,然后将数据插入表空间的一个对象中。,3.4 Oracle 数据库逻辑存储结构,表空间 一个表空间必须包含一个或多个数据文件,但是一个数据文件只能属于一个表空间。一个数据库对象可以在一个数据文件中,也可以在多个数据文件中。,3.4 Oracle 数据库逻辑存储结构,表空间 每个数据库至少有一个表空间(系统表空间),一个表空间在某一时

42、刻只能属于一个数据库。系统建立表空间的目的是尽量将相同目的的表存放在一起,是为了便于管理及提高使用效率。,3.4 Oracle 数据库逻辑存储结构,3.4 Oracle 数据库逻辑存储结构,表空间 3.表空间的查询 SQLSELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES TABLESPACE_NAME STATUS - - SYSTEM ONLINE UNDOTBS1 ONLINE TEMP ONLINE ,3.4 Oracle 数据库逻辑存储结构,表空间 3.表空间的查询 通过数据字典DBA_FREE_SPACE查询表空间的可用空间状态。

43、 SQLSELECT TABLESPACE_NAME, SUM(BYTES) 2 FROM DBA_FREE_SPACE 3 GROUP BY TABLESPACE_NAME; 结果显示为: TABLESPACE_NAME SUM(BYTES) - - CWMLITE 11141120 DRSYS 10813440 EXAMPLE 524288 其中,SUM(BYTES)为总的可用空间。,3.5 Oracle 数据库物理存储结构,Oracle数据库的物理结构是指Oracle在运行过程中存储数据的操作系统文件。这些操作系统文件主要包括数据文件、控制文件、重做日志文件和归档日志文件四种类型 。 数

44、据库物理结构与逻辑结构是相互联系、密不可分的。一个数据库至少由一个表空间组成,一个表空间可以包含一个或多个数据文件,一个数据文件只能属于一个表空间和一个数据库。控制文件、重做日志文件和归档日志文件不是数据文件,不属于某一个表空间,但是每一个数据库必须包括这些文件。,3.5 Oracle 数据库物理存储结构,数据文件 1.数据文件的种类 系统数据文件 主要用来存储系统数据。 撤销数据文件 主要用来存储撤销记录。 临时数据文件 主要用来暂存临时数据。 用户数据文件 主要用来存储用户数据。,3.5 Oracle 数据库物理存储结构,数据文件 2.数据文件的创建 在为数据库创建表空间时,Oracle自

45、动为表空间创建一个或几个数据文件。 当一个表空间中的数据文件写满后,可以为一个表空间追加一个数据文件。,3.5 Oracle 数据库物理存储结构,数据文件 4.数据文件的状态 脱机状态 在脱机状态下,用户不能访问该数据文件上的数据。 联机状态 在联机状态下,用户可以访问该数据文件上的数据。,3.5 Oracle 数据库物理存储结构,数据文件 5.临时数据文件的特殊性 临时数据文件只能存在于临时表空间中,主要用来存储复杂SQL查询语句产生的临时数据信息。同一般的数据文件相比,它有一定的特殊性: 临时数据文件不能设置成LOGGING模式 临时数据文件不能设置成只读方式 不能对临时数据文件改名 不能

46、使用ALTER DATABASE语句增加临时数据文件,3.5 Oracle 数据库物理存储结构,数据文件 5.数据文件的查询 SQL SELECT NAME, STATUS, ENABLED, BYTES FROM V$DATAFILE; 结果显示为: NAME STATUS ENABLED BYTES - D:ORACLEORADATAORADB01SYSTEM01.DBF SYSTEM READ WRITE 419430400 D:ORACLEORADATAORADB01UNDOTBS01.DBF ONLINE READ WRITE 209715200 D:ORACLEORADATAORA

47、DB01CWMLITE01.DBF ONLINE READ WRITE 20971520 ,3.5 Oracle 数据库物理存储结构,数据文件 5.数据文件的查询 SQLSELECT FILE_NAME, TABLESPACE_NAME, BYTES FROM DBA_DATA_FILES; 结果显示为: FILE_NAME TABLESPACE_NAME BYTES - - D:ORACLEORADATAORADB01SYSTEM01.DBF SYSTEM 419430400 D:ORACLEORADATAORADB01UNDOTBS01.DBF UNDOTBS1 209715200 D:O

48、RACLEORADATAORADB01CWMLITE01.DBF CWMLITE 20971520 ,3.5 Oracle 数据库物理存储结构,控制文件 1.控制文件的概念 控制文件(Control Files)是一个非常小的二进制文件,其中存放有Oracle数据库物理结构(数据文件和重做日志文件等)的信息,是Oracle启动和运行所必须的文件。Oracle系统通过控制文件保持数据库的完整性(Integrity)。,3.5 Oracle 数据库物理存储结构,控制文件 2.控制文件的内容 控制文件所属的数据库的名字,一个控制文件只能属于一个数据库 数据库创建的时间 数据文件的名称、位置、联机、脱

49、机状态信息 重做日志文件和归档日志文件的名称、位置、联机、脱机状态信息 所有表空间信息 当前日志序列号 最近检查点信息,3.5 Oracle 数据库物理存储结构,控制文件 4.控制文件的查询 SQLSELECT FROM V$CONTROLFILE; 结果显示为: NAME - D:ORACLEORADATAORADB01CONTROL01.CTL D:ORACLEORADATAORADB01CONTROL02.CTL D:ORACLEORADATAORADB01CONTROL03.CTL,3.5 Oracle 数据库物理存储结构,重做日志文件 1.重做日志文件的概念 重做日志文件(Redo Files)是Oracle用来记录用户对数据库进行修改操作的文件。在重做日志文件中,用户所作的任何修改操作都以重做项

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论