存储结构

一  逻辑结构

段、区、块
 Segments/Extents/DataBlocks
  从存储的角度只有段
   记录到数据字典
   创建段

1、表空间 tablespace
  表空间是数据库的最大逻辑存储结构,和物理数据文件相对应,一个表空间可以由多个数据文件组成,一个数据文件只能属于一个表空间
  主要的几个表空间:

SYSTEM: 系统表空间,用于存放内部表和数据字段的数据,如表名、列名、用户名。#查看数据字典的信息SQL> COL TABLE_NAME FOR A30SQL> COL COMMENTS FOR A30SQL> SELECT * FROM DICT;#查看数据库内部表的信息SQL> COL VIEW_NAME FOR A30SQL> COL VIEW_DEFINITION FOR A30SQL> SELECT * FROM V$FIXED_VIEW_DEFINITION;SYSAUX: 系统辅助表空间,由ORACLE自行维护

SYSAUX: 系统辅助表空间,由ORACLE自行维护
UNDO: 存放撤销信息的表空间
USERS; 建议用户使用的表空间,scott用户的表就在这个表空间上


建议:不同应用系统存放在不同的表空间上,不同的表空间的文件放在不同的磁盘上,减少并发,提高性能。
  
 段 一个独立的逻辑存储结构,用于存储表、索引或簇等占用空间的对象,一个段只能属于一个数据库对象
  有以下几种段:
   数据段
    数据段存放的是数据表中的数据,数据段的增大时向数据段增加区,创建表时,系统自动创建一个同名的段
   索引段
    包含了用于提高系统性能的索引,一旦建立索引,系统自动创建一个同名的索引段
   回滚段
    也叫撤销段,该段保存了回滚的条目,oracle将修改前的旧数据存放在回滚段中,利用这个,可以撤销未提交的操作
   临时段
    当执行创建索引、查询等操作时,系统会使用一些临时空间用来保存解析过的查询语句以及在排序过程中产生的临时数据
 区: 段空间分配时最小的单位,由连续的数据块组成
 块 :组成区的最小单位,通常是操作系统数据块的整数倍,ORACLE支持同时使用多种大小


SQL> col name for a30;
SQL> col value for a30;
SQL> select name,value from v$parameter where name='db_block_size';
NAME                   VALUE
------------------------------ ------------------------------
db_block_size              8192

块组成部分:
   块头 存放数据块的基本信息,如块的物理地址,块所属段的类型
   表目录 如果是数据表,存放数据表的相关信息
   行目录 如果有行数据,那么存储行信息
   空余空间 新行插入和存在行的更新
   行数据 存放表数据和索引数据

表空间: 大于数据文件的逻辑概念

分类:
 基本表空间: 一般为用户使用的永久性表空间,存储用户永久性数据
 临时表空间: 临时表空间是一个磁盘空间,存储用户在执行ORDER BY等语句进行排序或汇总时产生的临时数据,默认情况下所有用户都使用temp作为默认的临时表空间,也允许使用其他临时表空间作为默认临时表空间,需要在创建用户时指定
 大文件表空间: 存储大型数据
 非标准数据块表空间:在一个实例中创建数据库大小不同的表空间
 撤销表空间:存储事务的撤销数据,在数据恢复时使用,一个数据库中可以有多个撤销表空间,但是数据库一次只能使用一个,默认使用自动创建的undotbs撤销表空间。

默认:
 SYSTEM: 数据字典
 SYSAUX: 辅助系统表空间
 UNDOTBS1: UNDO回滚段,存储修改前的数据
 TEMP: 临时表空间,会话使用
 USERS:

状态属性:
 ONLINE:  在线,允许访问该表空间中的数据
 OFFLINE: 离线,不允许访问该表空间的数据
 READ ONLY: 只读,只允许读
  必须处于ONLINE状态
  不能包含任何事务的回滚段
  不能处于在线备份期间
 READ WRITE: 读写,可以读写
  必须处于ONLINE状态

#查看表空间
SQL> select tablespace_name, contents from dba_tablespaces;#查看表空间对应的数据文件
SQL> col file_name for a50;
SQL> set linesize 800;
SQL> select distinct file_name,tablespace_name from dba_data_files;查看USERS表空间
SQL> SELECT SEGMENT_TYPE,SEGMENT_NAME,OWNER FROM DBA_SEGMENTS WHERE TABLESPACE_NAME='USERS';##创建一个表
SQL> create table hehe (c1 varchar2(10)) segment creation immediate;##查询该表的段的表空间,区id等信息
SQL> select tablespace_name,extent_id,bytes,file_id,block_id from dba_extents where segment_name='HEHE';##根据文件编号查找对应的数据文件
SQL> select name from v$datafile where file#=&file_id;##根据块id和和块大小来计算块的起始位置
SQL> select block_size * &block_id from dba_tablespaces where tablespace_name='&tablespace_name';
##创建表空间 newtab
SQL> create tablespace newtab datafile '/u01/app/oracle/oradata/orcl/newtab01.dbf' 2  size 10m extent management local autoallocate segment space management auto;#创建表newtable 到表空间newtab
SQL> create table newtable(c1 date) tablespace newtab;#查看该表相关段信息,确定第一个分区大小
SQL> select extent_id,segment_name,segment_type,tablespace_name,bytes from dba_extents where segment_name='NEWTABLE';#手动增加区,重复执行,然后再次查看相关区的信息
SQL> alter table newtable allocate extent;#让该表空间脱机
SQL> alter tablespace newtab offline;#插入数据到表newtable;
SQL> insert into newtable values(sysdate);#如果报错,说明正常,现在将表空间上线
SQL> alter tablespace newtab online;#再次插入数据正常
SQL> insert into newtable values(sysdate);#将表空间设置为 只读
SQL> alter tablespace newtab read only;#插入数据到表newtable ,提示错误
SQL> insert into newtable values(sysdate);
insert into newtable values(sysdate)
*
第 1 行出现错误:
ORA-00372: 此时无法修改文件#将表空间修改为读写,插入数据观察
SQL> alter tablespace newtab read write;#插入数据到表newtable,正常
SQL> insert into newtable values(sysdate);?将表空间脱机或者只读后,可以删除表吗?#查看表空间状态
SQL> select tablespace_name,status from dba_tablespaces;#向表空间newtab中增加数据文件
SQL> alter tablespace newtab add datafile '/u01/app/oracle/oradata/orcl/newtab02.dbf' size 50m;#查看新增的数据文件
SQL> select distinct file_name, tablespace_name,autoextensible from dba_data_files;#修改数据文件
SQL> alter database datafile '/u01/app/oracle/oradata/orcl/newtab02.dbf' autoextend on next 50m maxsize 2g;#修改数据文件大小
SQL> alter database datafile '/u01/app/oracle/oradata/orcl/newtab02.dbf' resize 50m;#删除表空间newtab
SQL> drop tablespace newtab including contents and datafiles;

2、段管理
 使用自动段管理,使用位图进行管理

#查看表空间的段管理方式
SQL> select tablespace_name, segment_space_management from dba_tablespaces;#***手动转换自动请新创建表空间。

3、区管理
 区管理方法为每个表空间设置,应用于表空间中的所有段,可使用字典管理或者本地管理,但是请不要使用字典管理。
 字典管理:
  使用两张表对区进行管理
 本地管理:
  使用位图来管理区

使用uniform size指定每次分配的区大小

#创建一个区大小为150m的表空间dabiao
SQL> create tablespace dabiao datafile '/u01/app/oracle/oradata/orcl/dabiao_01.dbf' size 1g extent management local uniform size 150m;#查看创建好的表空间中数据文件的大小
SQL> select name,bytes/1024/1024 from v$datafile;#查看表空间的信息
SQL> select tablespace_name, next_extent,min_extlen from dba_tablespaces;#创建一个区大小为150k的表空间xiaobiao
SQL> create tablespace xiaobiao datafile '/u01/app/oracle/oradata/orcl/xiaobiao_01.dbf' size 2g extent management local uniform size 150k;#查看创建好的表空间中数据文件的大小
SQL> select name,bytes/1024/1024 from v$datafile;#查看表空间信息
SQL> select tablespace_name,next_extent,min_extlen from dba_tablespaces;#OEACLE公司建议使用autoallcate关键字
SQL> create tablespace xiaobiao1 datafile '/u01/app/oracle/oradata/orcl/all_01.dbf' size 2g extent management local autoallocate;

二 物理结构

数据文件
 操作系统块 os blocks

数据库的几类文件
 CONTROL FILE  控制文件  在线
 DATA FILE   数据文件  在线
 REDO LOG FILE  重做日志文件 在线
 PARAMETER FILE  参数文件  在线
 
 ARCHIVE LOG FILE 归档日志文件 离线
 PASSWORD FILE  密码文件  离线
 alert file   告警文件
 trace file    追踪文件
 
 在线文件 文件实时改变,不能进行操作
 离线文件 文件生成后不会改变
 安全:
  复用:一个不行就两个
  分散:一个地方不保险就整两个地方

1、控制文件 (control file)

==========================
    每个数据库都有一个唯一的控制文件,其中包含关于数据库本身的数据,可以维护多个副本以防止完全丢失,还可以包含与备份相关的元数据,控制文件对数据库至关重要,没有控制文件,数据库无法打开

作用:
 用于记录数据库的物理结构,属于重要角色,没有控制文件,实例立即崩溃,数据库的启动和正常运行都离不开控制文件。
包含的内容:
 数据库物理结构信息
 数据库归档历史信息
 各个数据文件的SCN号和系统检查点信息
 RMAN元数据
 
性质:
 控制文件是一个二进制文件,不可以通过文本编辑器编辑,该文件由oracle自行维护,oracle建议至少有两份冗余,并且放在不同的磁盘上。

查看:SQL> show parameters control_files;SQL> col name for a50;SQL> select * from v$controlfile;默认块大小为16K

2、数据文件

=====================================================
    包含数据库的用户或应用程序数据,以及元数据和数据字典

作用:
 用来存储实际数据,数据文件是存储数据的物理概念。

数据文件的状态
 ONLINE:  联机状态
 OFFLINE: 脱机状态
 OFFLINE DROP: 删除数据文件
 
 将数据文件OFFLINE时,不影响表空间的状态,但是表空间的状态会影响到数据文件的状态。


SQL> col name for a50;
SQL> select file#,name,status from v$datafile;SQL> select * from dba_data_files;SQL> col file_name for a50;
SQL> col tablespace_name for a20;
SQL> select distinct file_name,tablespace_name from dba_data_files;
SQL> select distinct file_name,tablespace_name from dba_temp_files;FILE_NAME                    TABLESPACE_NAME
-------------------------------------------------- --------------------
/u01/app/oracle/oradata/orcl/temp01.dbf        TEMP

3、 日志文件 (redo  log)
============================================================
    允许数据库实例恢复,如果数据库服务器崩溃并且没有丢失任何数据文件,实例可以用这些文件中的信息恢复数据库

作用:记录数据文件的每一个变化过程,保证数据库一致性

包含:
 三组redo log
 每组中有多个成员
 成员和成员之间是完全相同的关系
 无需备份,无法备份
 使用复用来保护
 
状态:
 unused  刚启用的时候,还没有循环过来
 inactive 没有启用
 active  启用
 current  当前

day06:02oracle体系结构_存储结构相关推荐

  1. 计算机组成原理与体系结构——层次化存储结构

    1. 简介   存储层次是在计算机体系结构下存储系统层次结构的排列顺序.每一层于下一层相比都拥有较高的速度和较低延迟性,以及较小的容量.大部分现今的中央处理器的速度都非常的快.大部分程序工作量需要存储 ...

  2. pytorch默认初始化_小白学PyTorch | 9 tensor数据结构与存储结构

    [机器学习炼丹术]的学习笔记分享<> 小白学PyTorch | 8 实战之MNIST小试牛刀 小白学PyTorch | 7 最新版本torchvision.transforms常用API翻 ...

  3. 队列的链式存储结构及其实现_了解队列数据结构及其实现

    队列的链式存储结构及其实现 A queue is a collection of items whereby its operations work in a FIFO - First In Firs ...

  4. sql2008表结构查看_【赵强老师】Oracle数据库的存储结构

    Oracle的存储结构分为:物理存储结构和逻辑存储结构. 一.物理存储结构:指硬盘上存在的文件 数据文件(data file) 一个数据库可以由多个数据文件组成的,数据文件是真正存放数据库数据的.一个 ...

  5. 链表list(链式存储结构实现)_数据结构知否知否系列之 — 线性表的顺序与链式存储篇(8000 多字长文)...

    从不浪费时间的人,没有工夫抱怨时间不够. -- 杰弗逊 线性表是由 n 个数据元素组成的有限序列,也是最基本.最简单.最常用的一种数据结构. 作者简介:五月君,Nodejs Developer,热爱技 ...

  6. 将图的广度优先遍历在邻接矩阵和邻接表存储结构上分别实现_图解:什么是“图”?

    从今天开始,我们开始介绍图的相关算法 什么是"图" 1.背景 作为图的开始,我们先来看一个经典的问题,它被认为是图论的起源. 这个问题是基于一个现实生活中的事例:河中心有两个小岛. ...

  7. 数据结构 二叉树的存储结构_线程二叉树| 数据结构

    数据结构 二叉树的存储结构 线程二叉树 (Threaded Binary Tree ) A binary tree can be represented by using array represen ...

  8. java对象底层原存储结构图解_图解图库JanusGraph系列-一文知晓“图数据“底层存储结构...

    大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 转载文章请保留以下声明: 一:存储模式 留言或私信我,邀请你加入"图数据库交流"微信群! 1. ...

  9. oracle临时表经常被锁_【赵强老师】Oracle数据库的存储结构

    Oracle的存储结构分为:物理存储结构和逻辑存储结构. 一.物理存储结构:指硬盘上存在的文件 数据文件(data file) 一个数据库可以由多个数据文件组成的,数据文件是真正存放数据库数据的.一个 ...

最新文章

  1. 【Ubuntu入门到精通系列讲解】常用其他命令(find ln tar apt)等速查
  2. python调用usb摄像头黑屏_ORB-SLAM2编译安装和USB摄像头例程运行
  3. python检测端口是否被侦听
  4. 用友A8 mysql配置文件_用友nc 读取配置文件方法
  5. Vue项目中 实现ElementUi框架el-select拼音搜索功能
  6. 从步履蹒跚到举重若轻,阿里基础架构如何扛住全球最猛的流量洪峰?
  7. SpringBoot整合elasticsearch (java整合es)
  8. centos7设置Java服务开机自启
  9. ZK zul中显示纯的HTML代码
  10. Python学习笔记(12)-Python进阶12-类和对象
  11. 人工智能6-GA遗传算法
  12. ABAP GIT 使用教程
  13. 网址拦截查询接口API源码
  14. Springboot + elementUI实现上传用户头像
  15. OMRON E6B2-CWZ6C
  16. 国内外微服务技术架构演进背景
  17. git detached
  18. 移植u-boot-2012.04.01到JZ2440(二:分析启动流程)
  19. [BMVC 2021] Feature Fusion Vision Transformer for Fine-Grained Visual Categorization
  20. Java基础案例-买飞机票

热门文章

  1. Linux和Windows文件系统
  2. TikTok玩家,路在何方?
  3. 影响LAN/WAN方向流量的方法
  4. DDoS攻击可能损害企业品牌的四种方式
  5. better-scroll 的介绍
  6. loj #143. 质数判定
  7. 操作系统内核(linux)
  8. HDU 6143 Killer Names(排列+容斥,dp)
  9. 在WildFly中运行多个standalone模式的实例
  10. 备份全网服务器数据生产架构方案案例模型