【动手实践】Oracle 12.2新特性:多列列表分区和外部表分区

Oracle 12.2版本中,增加了大量的分区新特性,这其中包括:

自动的列表分区创建

在线的普通表转换分区表

支持只读分区和读写分区混合

以下介绍的三个特性同样是12.2新增的:

多列列表分区、外部表分区、维护过滤

而对于多列列表分区的支持,也是大家关注已久的特性,先看一下脚本(在 livesql.oracle.com 测试执行,推荐动手实践):

CREATE TABLE dba_by_db_in_yhem

 (dbalic           NUMBER, 

  username         VARCHAR2(20),

  dbcat            VARCHAR2(4),

  region           VARCHAR2(10)

 )

 PARTITION BY LIST (dbcat, region)

 (

  PARTITION north_part VALUES (('ORCL','BEIJING'), ('ORCL','TIANJIN')),

  PARTITION south_part VALUES (('DB2','SHENZHEN'), ('DB2','GUANGZHOU')),

  PARTITION west_part  VALUES (('SQL','CHENGDU'),('ORCL','CHENGDU'),('DB2','KUNMING')),

  PARTITION east_part  VALUES ('ORCL','SHANGHAI'),

  PARTITION rest VALUES (DEFAULT)

 );

insert into  dba_by_db_in_yhem values(1,'EYGLE','ORCL','BEIJING');

insert into  dba_by_db_in_yhem values(2,'KAMUS','ORCL','BEIJING');

insert into  dba_by_db_in_yhem values(3,'LAOXIONG','SQL','CHENGDU');

insert into  dba_by_db_in_yhem values(4,'ORA-600','DB2','GUANGZHOU');

insert into  dba_by_db_in_yhem values(5,'YANGTINGKUN','ALL','BEIJING');

select * from dba_by_db_in_yhem partition (north_part);

select * from dba_by_db_in_yhem partition (south_part);

select * from dba_by_db_in_yhem partition (west_part);

select * from dba_by_db_in_yhem partition (east_part);

select * from dba_by_db_in_yhem partition (rest);

现在Oracle支持通过多列定义列表分区,最多支持16个列值定义,这极大的丰富了列表分区的适用场景。

为了简化维护操作,12.2 增加了维护过滤特性 - Filtered Partition on Maintenance Operations,也就是说,在执行分区的Move、Split和Merge等操作时,可以选择对数据进行过滤,通过一个 INCLUDING ROWS 进行限制。

继续前面的测试用例,当MOVE时指定保留分区中区域为「BEIJING」的数据后,『TIANJIN』的数据则被移除了:

insert into  dba_by_db_in_yhem values(6,'SECOOLER','ORCL','TIANJIN');

select * from dba_by_db_in_yhem partition (north_part);

ALTER TABLE dba_by_db_in_yhem MOVE PARTITION north_part

INCLUDING ROWS WHERE REGION = 'BEIJING';

select * from dba_by_db_in_yhem partition (north_part);

在12.2中,Oracle还支持外部表分区,类似如下的语法展示了这一特性的用途,对于一个统一的外部表,可以通过分区指向不同的外部文件,不同文件可以用于存储已经分类的数据,从而更加灵活的使用外部表:

CREATE TABLE sales (loc_id number, prod_id number, cust_id number, amount_sold number, quantity_sold number)

 ORGANIZATION EXTERNAL

 (TYPE oracle_loader

  DEFAULT DIRECTORY load_d1

  ACCESS PARAMETERS

  ( RECORDS DELIMITED BY NEWLINE CHARACTERSET US7ASCII

    NOBADFILE

    LOGFILE log_dir:'sales.log'

    FIELDS TERMINATED BY ","

   )

 )

  REJECT LIMIT UNLIMITED

 PARTITION BY RANGE (loc_id)

 (PARTITION p1 VALUES LESS THAN (1000) LOCATION ('california.txt'),

  PARTITION p2 VALUES LESS THAN (2000) DEFAULT DIRECTORY load_d2 LOCATION ('washington.txt'),

  PARTITION p3 VALUES LESS THAN (3000))

了解了Oracle这些新的变化,将有助于我们深入和灵活的去使用Oracle数据库。

文章转自数据和云公众号,原文链接

时间: 2024-12-03 06:47:03

【动手实践】Oracle 12.2新特性:多列列表分区和外部表分区的相关文章

【动手实践】Oracle 12.2 新特性:自动的列表分区创建

2017年来了,我们要启动新的学习征程了.在过去我们一直思考,什么样的内容能够更帮助大家了解和学习到有用的知识? 这个『动手实践』栏目就是这样一个改进和尝试吧,一个小小的范例,几分钟的线上实践(感谢Oracle),就能帮助大家熟悉一个知识点,几个重要的命令.如此是否会有不一样的体验?试一试吧. 在Oracle Database 12.2 之前,如果使用列表分区,当插入的数据超过了分区列表值设定,则会抛出异常:而如果存在大量的列表值需要定义,则可能需要一一设置. 在12.2引入的新特性中 - Au

【动手实践】Oracle 12.2 新特性:只读分区的使用和维护

12.2的分区新特性中引入了只读分区的特性,可以帮助我们将某些分区的数据进行静态化保护. 这一特性通过将表或者分区设置为READ ONLY或者READ WRITE来进行控制,以下是一个测试Demo(可以在 https://livesql.oracle.com )网站验证体验. 以下测试首先将数据表置为READ ONLY模式,对部分分区设置为READ WRITE的读写模式: drop table YHEM_ODS; CREATE TABLE YHEM_ODS (oid  number, odate

Oracle 12.2新特性掌上手册 - 第二卷 In-Memory增强

编辑手记: In-Memory 是 Oracle 在 12.1.0.2 中引入的新特性,旨在加速分析型 SQL 的速度.传统的 OLTP 应用通过 buffer cache 修改数据,分析性的 SQL 从 IM 列式存储中扫描数据,避免物理读成为性能瓶颈.那么在12.2最新版本中,In-Memory有哪些增强特性呢?我们一起来学习. 注:文章内容来自官方文档翻译.若需要了解更多,请查阅官方文档.文中配图来自Oracle文档. 1.In-Memory Expressions(列式存储表达式) 内存

Oracle 12.2新特性掌上手册 - 第一卷 Availability

编辑手记:12.2的发布,让很多技术爱好者迫不及待要尝尝鲜了,然而众多的新特性却可能让我们无所适从,为此我们节选12.2中一些重要的新特性,将在接下来的几期晨读中分享给大家,希望大家能够在12.2的应用中游刃有余. 注:文章内容来自官方文档翻译.若需要了解更多,请查阅官方文档. 1.Multi-Instance Redo Apply (多实例redo应用) 在Oracle Database 12.2 之前的版本上,对于物理standby 数据库,将Redo应用于Oracle RAC standb

Oracle 12.2新特性掌上手册 - 第三卷 Core Improvements

编辑手记:Oracle 12.2 在内核上有许多创造性的改进,这些改进让数据库的操作更加高效便捷,同时一些面向智能运维和大数据的改进,则迈出了云和大数据时代的重要一步.在今年的DB-Engines的评选中,Oracle位居榜首,而我们从12.2的这些更新中便知道,Oracle是DBMS当之无愧的领导者. 注:文章内容来自官方文档翻译.若需要了解更多,请查阅官方文档. 1.Partition-Specific Near Real-Time Indexes(近实时索引的配置) 12.2中可以在分区级

Oracle 12.2 新特性 | PDB不同字符集变更深入解析

从12c版本12.1开始,就有了新特性--Pluggable Database,相比较之前通过schema的管理方式实现多用户管理,Pluggable Database实现了进一步的隔离,其中包含如下特点: 将业务用户元数据和数据库本身的元数据进行分离,减少核心数据字典的性能衰减,增加管理便捷性. sga统一分配,各PDB通过各自的标识进行空间管理. 但在12.1中,PDB的字符集与root容器必须保持一致,这样无形中造成了PDB迁移或者克隆的限制性.从12.2开始,同一个cdb中的各个PDB字

Oracle 12.2新特性掌上手册 - 第七卷 Big Data and Data Warehousing

编辑手记:也许Oracle 12.2在内核上的智能改进只能让你眼前一亮,那今天基于Big Data和数据仓库的性能优化增强则会让你伸手触Oracle的强大灵魂.细腻中霸气侧漏,这就是Oracle 12.2. 1Partitioning:External Tables(外部表) 外部分区表提供了将分区的Hive表映射到Oracle数据库生态系统以及在基于Hadoop分布式文件系统(HDFS)的数据存储之上提供声明分区的功能. 作用 Oracle数据库基于外部HDFS的数据存储功能,使得数据库分区能

Oracle 12.2新特性掌上手册 - 第三卷 Sharding 的增强

编辑手记:Sharding技术我们谈了好久,想必大家并不陌生,该功能12.2最新版本中,也将变得越来越完善,今天我们一起来学习. 注:文章内容来自官方文档翻译.若需要了解更多,请查阅官方文档. 1.about Sharding 简单来说,Oracle的Sharding技术就是通过分区(Partioning)技术的扩展来实现的.以前一个表的分区可以存在于不同的表空间,现在可以存在于不同的数据库.不同分区存在于不同数据库,这就将数据隔离了开来,Sharding就此实现. Sharding是一种数据层

Oracle 12.2新特性掌上手册 - 第六卷 ADG的性能与诊断

编辑手记:在Oracle 12.2中,ADG有许多惊人的改进,通过ADG standby数据库的性能数据收集和诊断.快照standby数据库的应用,以及实时的数据库操作监控的实现,能够根据用户需求相协调来提高DBA效率,从而为业务应用程序提供更好的服务质量. 1.Oracle Data Guard Support for Oracle Diagnostics Pack(Oracle DG 提供诊断包的支持) Oracle诊断包可以与以read-only的ADG standby数据库一起使用.能够