iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle表空间详解
  • 255
分享到

Oracle表空间详解

Oracle表空间介绍Oracle表空间 2023-04-19 05:04:28 255人浏览 八月长安
摘要

目录1. 基本概念2. 范围分区3. Hash分区(散列分区)4. 复合分区1. 基本概念 oracle表分区是将一个大型表分割成更小、更易于管理的部分的技术。分区后的表被称为分区表,其中每个分区都可以独立地进行维护、管

1. 基本概念

oracle表分区是将一个大型表分割成更小、更易于管理的部分的技术。分区后的表被称为分区表,其中每个分区都可以独立地进行维护、管理和查询。表分区可基于表中的一列或多列,称为分区键,分区键的值确定了每行数据属于哪个分区。

使用分区具有以下优点:

  • (1)改善查询性能:由于表分区将数据分割成更小、更可管理的部分,对分区对象的查询可以仅搜索特定分区,提高检索速度。如在范围分区的情况下,可以更快地查询特定时间段的数据。
  • (2)维护方便:分而治之,每个分区都可以独立地进行维护和管理,更容易地维。如表的某个分区出现故障,需要修复数据,只修复该分区即可;又如在范围分区的情况下,可以更容易地删除或归档旧数据。
  • (3)可用性:实际各分区的数据是独立存放,如果表的某个分区出现故障,表在其他分区的数据仍然可用;
  • (4)均衡I/O:可把不同的分区映射到磁盘以平衡I/O,改善整个系统性能;并且可以更快地加载数据,因为可以并行加载多个分区。如在哈希分区的情况下,可以并行加载多个分区,从而大大提高了数据加载的速度。

Oracle数据库提供对表或索引的分区常用方法主要有三种:

  • 范围分区
  • Hash分区(散列分区)
  • 复合分区

先建三个表空间:

create tablespace ma_tra01 datafile 'D:\oracle\product\10.2.0\oradata\orcl\ma_tra01.dnf' size 50M; 
create tablespace ma_tra02 datafile 'D:\oracle\product\10.2.0\oradata\orcl\ma_tra02.dnf' size 50M; 
create tablespace ma_tra03 datafile 'D:\oracle\product\10.2.0\oradata\orcl\ma_tra03.dnf' size 50M;

2. 范围分区

范围分区就是对数据表中的某个值的范围进行分区,根据某个值的范围,决定将该数据存储在哪个分区上。如根据序号分区,根据业务记录的创建日期进行分区等。

e.g.

需求描述:有一个物料交易表,表名:material_transactions。该表将来可能有千万级的数据记录数。要求在建该表的时候使用分区表。 这时候我们可以使用序号分区三个区,每个区中预计存储三千万的数据,也可以使用日期分区,如每五年的数据存储在一个分区上。

  • 根据交易记录的序号分区建表
create table material_transactions ( 
transaction_id number primary key,
item_id number(8) not null,
item_description varchar2(300),
transaction_date date not null 
) 
partition by range (transaction_id) ( 
partition part_01 values less than(30000000) tablespace ma_tra01,
partition part_02 values less than(60000000) tablespace ma_tra02, 
partition part_03 values less than(maxvalue) tablespace ma_tra03); 
  • 根据交易日期分区建表
create table material_transactions (
transaction_id number primary key, 
item_id number(8) not null,
item_description varchar2(300), 
transaction_date date not null ) 
partition by range (transaction_date) (
partition part_01 values less than(to_date('2006-01-01','yyyy-mm-dd')) tablespace ma_tra01,
partition part_02 values less than(to_date('2010-01-01','yyyy-mm-dd')) tablespace ma_tra02,
partition part_03 values less than(maxvalue) tablespace ma_tra03); 

这样分别建了以交易序号和交易日期来分区的分区表。

  • 插入数据:每次插入数据的时候,系统将根据指定的字段的值来自动将记录存储到制定的分区(表空间)中。
insert into material_transactions values(1,12,'BOOKS1',sysdate); 
insert into material_transactions Values(2,12, 'BOOKS2',sysdate+30); 
insert into material_transactions values(3,12, 'BOOKS3',to_date('2006-05-30','yyyy-mm-dd')); 
insert into material_transactions values(4,12, 'BOOKS4',to_date('2007-06-23','yyyy-mm-dd')); 
insert into material_transactions values(5,12, 'BOOKS5',to_date('2011-02-26','yyyy-mm-dd')); 
insert into material_transactions values(6,12, 'BOOKS6',to_date('2011-04-30','yyyy-mm-dd')); 
Commit;
  • 查询分区表
select * from material_transactions partition(part_03) t

可以对分区表进行跟新或删除,默认情况下,oracle的分区表对于分区字段是不允许进行update操作的,如果有对分区字段行进update,就会报ORA-14402错误: 更新分区关键字列将导致分区的更改。但是可以通过打开表的row movement属性来允许对分区字段的update操作,但是这样会导致无效对象的产生,所以不推荐使用。可通过删除旧数据,插入新数据来解决。

还可以根据需求,使用两个字段的范围分布来分区,如partition by range ( transaction_id ,transaction_date), 分区条件中的值也做相应的改变。

  • 增加一个分区
Alter Table  material_transactions Add Partition part_04 Values Less Than (to_date('20150101','yyyymmdd')) Tablespace ma_tra04

增加分区的条件必须大于现有分区的最大条件值,否则会提示ORA-14074:分区界限必须调整为高于最后一个分区界限

  • 合并两个个分区
Alter Table material_transactions Merge Partitions part_01,part_02 Into Partition part_02;
  • 删除分区(数据也会被删除)

3. Hash分区(散列分区)

散列分区为通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使得这些分区大小一致。如将物料交易表的数据根据交易ID散列地存放在指定的三个表空间中:

create table material_transactions_hash (
transaction_id number primary key,
item_id number(8) not null,
item_description varchar2(300), 
transaction_date Date) 
partition by hash(transaction_id) (
partition part_01 tablespace ma_tra01, 
partition part_02 tablespace ma_tra02, 
partition part_03 tablespace ma_tra03); 

建表成功,此时插入数据,系统将按transaction_id将记录散列地插入三个分区中,这里也就是三个不同的表空间中。

4. 复合分区

有时需要根据范围分区后,每个分区内的数据再散列地分布在几个表空间中,这样我们就要使用复合分区。复合分区是先使用范围分区,然后在每个分区内 再使用散列分区的一种分区方法,如将物料交易的记录按时间分区,然后每个分区中的数据分三个子分区,将数据散列地存储在三个指定的表空间中:

create table material_transactions_test  (
transaction_id number primary key,
item_id number(8) not null,
item_description varchar2(300), 
transaction_date date ) 
partition by range(transaction_date) subpartition by hash(transaction_id) 
subpartitions 3 store in (ma_tra01,ma_tra02,ma_tra03) (
partition part_01 values less than(to_date('2006-01-01','yyyy-mm-dd')), 
partition part_02 values less than(to_date('2010-01-01','yyyy-mm-dd')), 
partition part_03 values less than(maxvalue) ); 

该例中,先是根据交易日期进行范围分区,然后根据交易的ID将记录散列地存储在三个表空间中。

分区表可以建立局部索引与全局索引,当分区表中出现许多事务并且要保证所有分区中的数据记录的唯一性时需要采用全局索引。

Create Index idx_matra_itemid On material_transactions(item_id) Local;
Create Index idx_matra_itemid On material_transactions(item_id);

到此这篇关于Oracle表空间详解的文章就介绍到这了,更多相关Oracle表空间内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: Oracle表空间详解

本文链接: https://www.lsjlt.com/news/201640.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle表空间详解
    目录1. 基本概念2. 范围分区3. Hash分区(散列分区)4. 复合分区1. 基本概念 oracle表分区是将一个大型表分割成更小、更易于管理的部分的技术。分区后的表被称为分区表,其中每个分区都可以独立地进行维护、管...
    99+
    2023-04-19
    Oracle表空间介绍 Oracle表空间
  • oracle表空间扩容详情
    目录1、表空间容量指标查询2、表空间扩容方式1:手工改变已存在数据文件的大小 方式2:允许已存在的数据文件自动增长 方式3:增加数据文件 1、表空间容量指标查询 SELEC...
    99+
    2024-04-02
  • 怎么理解Oracle表空间
    这篇文章主要讲解了“怎么理解Oracle表空间”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解Oracle表空间”吧!1. 查询当前所有表空...
    99+
    2024-04-02
  • oracle 创建表空间详细介绍
    Oracle是一种关系型数据库管理系统,它使用表空间来存储数据和索引。表空间是逻辑上的概念,它是由一个或多个数据文件组成的。一个数据...
    99+
    2023-08-17
    Oracle
  • Oracle 数据库表空间查询方法详解
    Oracle 数据库表空间查询方法详解 在使用 Oracle 数据库时,了解数据库表空间是非常重要的。表空间是 Oracle 数据库中用来存储表和索引数据的逻辑结构,它相当于数据库中数...
    99+
    2024-03-02
    查询 数据库 oracle sql语句
  • oracle 表移动表空间
    在oracle中有时需要把表移动到其他表空间中,下面是移动的步骤。 首先,使用下面的命令移动: alter table table_name move tablespace tablespace_nam...
    99+
    2024-04-02
  • 怎么理解ORACLE MOVE 表空间
    怎么理解ORACLE MOVE 表空间,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。move一个表到另外一个表空间时,索引...
    99+
    2024-04-02
  • Oracle 表空间查询:查看表所在的表空间
    标题:Oracle 表空间查询:查看表所在的表空间,需要具体代码示例 Oracle数据库是企业级数据库管理系统中常用的一种,其中表空间是数据库中存储数据的逻辑结构,表空间在数据库中起着...
    99+
    2024-03-03
    查询 oracle 表空间 sql语句
  • Oracle表空间维护
    表空间维护 (1)创建表空间 CREATE TABLESPACE SUNTX DATAFILE   '/app1/oracle/oradata/SUNTX/SUNTX01.dbf' SIZE 10...
    99+
    2024-04-02
  • oracle 表空间,临时表空间使用率查询
    临时表空间: SELECT a.tablespace_name, a.BYTES total, a.bytes - nvl(b.bytes, 0) free      ...
    99+
    2024-04-02
  • Oracle表空间分配策略解析
    Oracle表空间分配策略解析 概述:在Oracle数据库中,表空间是用来存储表、索引和其他数据库对象的逻辑存储单元。表空间的合理分配和管理对数据库的性能和稳定性具有重要影响。本文将从...
    99+
    2024-03-03
    oracle 表空间 分配策略 sql语句
  • Oracle数据库表空间超详细介绍
    目录表空间概述表空间的分类创建表空间参数详解1、undo2、tablespace3、datafile datefile_spec14、MININUM EXTENT integer [k|m]5、blockSIZE int...
    99+
    2023-05-12
    oracle表空间是什么 oracle 表空间查询 oracle表空间创建
  • oracle表空间是什么
    Oracle表空间是用来存储数据库中表、索引、视图等对象的物理存储空间。每个Oracle数据库可以包含多个表空间,每个表空间可以包含...
    99+
    2024-05-11
    oracle
  • Oracle表怎样移动表空间
    这期内容当中小编将会给大家带来有关Oracle表怎样移动表空间,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。在oracle中有时需要把表移动到其他表空间中,下面是移动的步...
    99+
    2024-04-02
  • Oracle数据库查询表空间大小的方法详解
    Oracle数据库是一种常用的关系型数据库管理系统,表空间是数据库存储数据的重要组成部分。对于数据库管理员和开发人员来说,了解如何查询表空间的大小是非常重要的。本文将详细介绍在Orac...
    99+
    2024-03-03
    查询 oracle 表空间
  • Oracle 查看用户所在的表空间剩余表空间
    SELECT F.TABLESPACE_NAME,(T.TOTAL_SPACE - F.FREE_SPACE) "USED (MB)",F.FREE_SPACE "FR...
    99+
    2024-04-02
  • 怎么理解Oracle临时表空间组
    本篇内容介绍了“怎么理解Oracle临时表空间组”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在oracl...
    99+
    2024-04-02
  • Oracle缩表空间问题如何解决
    这篇文章主要介绍“Oracle缩表空间问题如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Oracle缩表空间问题如何解决”文章能帮助大家解决问题。备注:Oracle 11.2.0.4一. 需...
    99+
    2023-07-02
  • oracle表空间删不掉怎么解决
    如果您无法删除Oracle表空间,可能是因为表空间中尚有对象存在或者其他原因导致无法删除。您可以尝试以下方法解决问题: 确保表空间...
    99+
    2024-04-09
    oracle
  • oracle如何转移表的表空间
    本篇内容主要讲解“oracle如何转移表的表空间”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle如何转移表的表空间”吧! ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作