本系列是作为学习笔记,用于记录学习过程,加深学习印象,以及自己重新回顾学习内容只用,参考书籍为《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. react页面跳转 window.location.href和window.open的几种用法和区别

    https://www.cnblogs.com/Qian123/p/5345298.html

  2. P1929 迷之阶梯

    题目描述 在经过地球防卫小队的数学家连续多日的工作后,外星人发的密码终于得以破解.它 告诉我们在地球某一处的古老遗迹中,存在有对抗这次灾难的秘密武器.防卫小队立即赶 到这处遗迹.要进入遗迹,需要通过一 ...

  3. 实验1C语言开发环境使用和数据类型、运算符、表达式

    # include <stdio.h> int main() { char ch; printf("输入一个字符:\n"); scanf("%c", ...

  4. CodeForces 750A New Year and Hurry

    #include<bits/stdc++.h> using namespace std; int main() { int n, k, i, sum; while(~scanf(" ...

  5. python学习:模块(第一节)

    1.什么是模块? 如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了.为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这 ...

  6. 怎么样使用vuex

    https://www.cnblogs.com/songrimin/p/7815850.html

  7. AT2306 Rearranging

    有一个显然的,就是不互质的数的相对位置是不会改变的,那么我们把它们放到一个连通块里面去,然后我交换就是交换两个里面最小的对吧.直接连起来然后跑\(TopSort\)就行了. #include<s ...

  8. android studio: no idea annotations attached to the jdk 1.8 some issues will not be found

    Android Studio今天早上打开项目提示错误信息: No IDEA annotations attached to the JDK 1.8 (C:\Program Files\Android\ ...

  9. delphi 获得父目录–指定级父目录

    function get_dir_parent(dir:string;n:integer):string; //n为几级父目录varst:string;i:integer;begin st:=GetC ...

  10. java-mybaits-013-mybatis-Interceptor-拦截器执行顺序

    一.概述 已知拦截器能够拦截四种类型:Executor.ParameterHandler.ResultSetHandler.StatementHandler. 1.1.不同类型拦截器的执行顺序 背景: ...