本系列是作为学习笔记,用于记录学习过程,加深学习印象,以及自己重新回顾学习内容只用,参考书籍为《oracle 11g从入门到精通(第二版)》,如果需要深入学习,请购买原书籍,谢谢!

1、oracle 11g体系结构概述

1.1 三个重要概念

  • 实例:Instance-一组oracle后台进程以及在服务器中分配的共享内存区域;

  • 数据库:Database-由基于磁盘的数据文件、控制文件、日志文件、参数文件和归档文件等组成的物理文件集合

  • 数据库服务器:Database Server-是指管理数据库的各种工具(如:SQLPLUS、OEM等)和实例以及数据库三个部分

三者之间的关系:实例用于管理和控制数据库,数据库为实例提供数据。一个数据库可以被多个实例加载和打开;而一个实例在其生存期内只能装载和打开一个数据库

启动数据库实际上是在服务器内存中创建一个oracle实例,然后使用这个实例来访问和控制磁盘中的数据文件

oracle数据库的基本体系结构如下所示

1.2 oracle数据库存储结构

数据库的主要功能就是存储数据,存储数据的方式通常称为存储结构,Oracle数据库的存储结构分为逻辑存储结构和物理存储结构。

  • 逻辑存储结构:用于描述oracle内部组织和管理数据的方式

  • 物理存储结构:用于指示oracle在操作系统中的物理文件组成情况

2 逻辑存储结构

逻辑存储结构是从逻辑的角度缝隙数据库的构成,是对数据存储结构在逻辑概念上的划分。

oracle逻辑存储结构是一种层次结构,主要由表空间、段、区间和数据快等概念组成,Oracle的逻辑存储结构中所包含的多个结构对象从数据块到表空形成了不同层次的粒度关系,如下所示:

2.1 数据块(Data Blocks)

数据块是oracle逻辑存储结构中的最小逻辑单位,俄式执行数据库输入、输出操作额最小存储单位,通常Oracle数据块是操作系统块的整数倍,如果操作系统快的大小为2048b,并且oracle数据块的大小为8092b,则表示oracle数据块由4个操作系统块组成。

oracle数据库的大小由初始化参数中的DB_BLOCK_SIZE决定,打开sqlplus,连接数据库。


col name format a30
col value format a30
select name,value from v$parameter where name = 'db_block_size'

如下所示:

数据块中可以存放表数据、索引数据和簇数据,无论存放那种数据,其结构都是相同的。

数据块组成如下:

组成部分 说明
块头 存放数据块的基本信息,如块的物理地址,块所属的段的类型
表目录 存放表的相关信息。如果数据块中存储的数据是表数据,则标目钟中存储有关这些表的相关信息
行目录 如果块中有行数据存在,则这些行的信息被记录在行目录中,这些信息包括行的地址等
空余空间 空余空间是一个块中未使用的区域,这片区域用于新行的插入和已经存在的行的更新
行数据 用于存放表数据和索引数据的地方,这部分空间已被数据行所占用(如表中若干行数据记录)

通常把块头、表目录、行目录这三部分合起来称作头部信息区,头部信息区不存放数据,它存放整个块的引导信息。

2.2 数据区(Extent)

数据区(也可以成为数据扩展区)是由一组连续的oracle数据块所构成的oracle存储结构,一个或多个数据块组成一个数据区,一个或多个数据区再组成一个段(segment)。当一个段中的所有空间被使用完以后,Oracle系统将自动为该段分配一个新的数据区。数据区是oracle存储分配的最小单位,oracle就是以数据区为单位进行存储空间的扩展。一个oracle对象至少包含一个数据区

2.3 段(segment)

段是由一个或者多个数据区组成,为特定的数据对象(数据、索引、回滚等)分配一系列的数据区。段内包含的数据区可以不连续,并且可以跨越多个文件。数据段的大小随着表中数据量的增大而增长,数据段的增大过程是通过向其添加新的数据区来实现的。oracle数据库通常有以下4个类型的段:

类型 说明
数据段 保存表中的数据记录,当创建一个表时,系统自动创建一个以该表名命名的数据段
索引段 包含了用于提高系统性能的索引
回滚段 回滚段也可称作撤销段,保存了回滚条目,oracle将修改前的机制保存在回滚条目中
临时段 当执行船舰索引、查询等操作时,Oracle可能会使用一些临时存储空间,用于暂时性地保存解析过的查询语句以及在排序过程中产生的临时数据。

2.4 表空间(TableSpace)

oracle使用表空间将相关的逻辑结构(如段、数据区等)组合在一起,表空间是数据库最大的逻辑划分区域,通常用来存放数据表、索引、回滚段等数据对象(segment),任何数据对象在创建时都要指定存储在某个表空间中。

表空间(属逻辑存储结构)和数据文件(属物理存储结构)相对应,一个表空间由一个或多个数据文件组成,一个数据文件只属于一个表空间。每个数据库至少有一个表空间(即system表空间),表空间的大小等于所有从属于它的数据文件大小的总和。

在创建数据时,系统会自动船舰多个默认的表空间,这些表空间除了用于管理用户数据的表空间之外,还包括用于管理oracle系统内部数据(如数据字典)的表空间:

2.4.1 system表空间。

系统表空间,用于存放oracle系统内部表和数据字典的数据,如表名、列名、用户名等。

例:通过dict查看数据库中数据字典的信息:


col table_name for a30
col comments for a30
select * from dict;

例:通过v$fixed_view_definition查看数据库中内部信息表的信息


col view_name for a30
col view_definition for a30
select * from v$fixed_view_definition;

2.4.2 sysaux表空间

sysaux表空间是oracle 11g新增加的表空间,作为system表空间的辅助表空间,降低system表空间的负荷,主要存储数据字典意外的其他数据对象。

2.4.3 UODO表空间。

UODO表空间-撤销表空间,用于存放撤销信息的表空间。当用户对数据表进行修改操作(包括插入、更新、删除等操作)时,Oracle系统自动使用撤销表空间来临时存放修改前的旧数据。当所作的修改操作完成并提交命令后,Oracle根据系统设置的保留时间来决定合适释放掉撤销表空间的部分空间/

2.4.4 USERS表空间。

用户表空间,是ORACLE建议用户使用的表空间

除了oracle系统默认创建的表空间外,用户可以根据应用系统的实际情况以及索要存放的对象类型创建多个自定义表空间。

学习笔记:oracle学习一:oracle11g体系结构之体系结构概述和逻辑存储结构的更多相关文章

  1. oracle基本语句(第五章、数据库逻辑存储结构管理)

    1.使用SYS用户以SYSDBA身份登录到SQL Plus,使用视图V$TABLESPACE查看表空间信息 SELECT * FROM V$TABLESPACE; 2.查看视图DBA_TABLESPA ...

  2. 20155234 2016-2017-2第十周《Java学习笔记》学习总结

    20155234第十周<Java学习笔记>学习总结 教材学习内容总结 网络编程 在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接收到指定 ...

  3. #学习笔记#e2e学习使用(一)

    本文仅限于记录本人学习的过程,以及怎么踩的坑,是如何解决的.逻辑肯定是混乱的,有用之处会抽出共通另行发帖. 最终目标:要运用于Vue项目中,进行功能测试甚至自动化测试. 一.e2e概念 理解:end ...

  4. java JDK8 学习笔记——助教学习博客汇总

    java JDK8 学习笔记——助教学习博客汇总 1-6章 (by肖昱) Java学习笔记第一章——Java平台概论 Java学习笔记第二章——从JDK到IDEJava学习笔记第三章——基础语法Jav ...

  5. python3.4学习笔记(七) 学习网站博客推荐

    python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...

  6. 20155234 2610-2017-2第九周《Java学习笔记》学习总结

    20155234第九周<Java学习笔记>学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC(Ja ...

  7. #学习笔记#e2e学习使用(二)

    前言: <#学习笔记#e2e学习使用(一)>主要记录了Vue项目的创建到e2e环境的搭建,以及期间遇到的各种问题和解决方法.本文建立在基础测试环境搭建完毕能正确运行的情况下,编写测试代码, ...

  8. mybatis学习笔记之学习目录(1)

    mybatis学习笔记之学习结构(1) 学习结构: 1.mybatis开发方法 原始dao开发方法(程序需要编写dao接口和dao实现类) mybatis的mapper接口(相当于dao接口)代理开发 ...

  9. Vue学习笔记-rest_framework_jwt 学习

    一  使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7  (Windows x86- ...

随机推荐

  1. Cogs 12. 运输问题2(有上下界的有源汇最大流)

    运输问题2 ★★☆ 输入文件:maxflowb.in 输出文件:maxflowb.out 简单对比 时间限制:1 s 内存限制:128 MB 运输问题 [问题描述] 一个工厂每天生产若干商品,需运输到 ...

  2. 简述*args and **kwargs

    为了能让一个函数接受任意数量的位置参数:* 为了接受任意数量的关键字参数:** *参数只能出现在函数定义中最后一个位置参数后面,而**参数只能出现在最后一个参数 解决的问题:构造一个可接受任意数量参数 ...

  3. Tkinter 之Canvas画布

    一.参数说明 参数 作用 background(bg) 指定 Canvas 的背景颜色 borderwidth(bd) 指定 Canvas 的边框宽度 closeenough 指定一个距离,当鼠标与画 ...

  4. Alpha项目冲刺! Day3-产出

    各个成员今日完成的任务 林恩:任务分工,博客撰写,完善设置等模块 杨长元:安卓本地数据库基本建立 李震:完成注册页面 胡彤:完善服务端 寇永明:画图,学习 王浩:画图,学习 李杰:画图,学习 各个成员 ...

  5. SSH 三大框架整合

    Spring整合web项目 在Servlet当中直接加载配置文件,获取对象 存在问题 每次请求都会创建一个Spring的工厂,这样浪费服务器资源,应该一个项目只有一个Spring的工厂. 在服务器启动 ...

  6. 使用INDY解决BASE64回车换行问题

    使用INDY解决BASE64回车换行问题 使用DELPHI EncodeStream(),对流数据进行BASE64编译以后,每隔75个字符,就会添加回车换行符(#$D#$A),这会造成许多问题. 网上 ...

  7. C++利用openssl进行公钥解密

    私钥加密的部分内容,需要用公钥解密下面的实例代码,由于私钥加密后的字符串有不可打印字符,所以程序里面进行了base64,要用的时候先解dec base64 再传递给函数 进行解密 #include & ...

  8. 阿里PB级Kubernetes日志平台建设实践

    干货分享 | 阿里PB级Kubernetes日志平台建设实践https://www.infoq.cn/article/HiIxh-8o0Lm4b3DWKvph 日志最主要的采集工具是 Agent,在 ...

  9. vue-resource在vuecli3中请求headers修改

    this.$resource.delete({ user_code: Cookie.get("empid"), date: date, file_name: file_name } ...

  10. export命令import命令

    export命令import命令 export { name1, name2, …, nameN }; export { variable1 as name1, variable2 as name2, ...