`

ORACLE-分区表分区字段的update操作

阅读更多

默认情况下,oracle的分区表对于分区字段是不允许进行update操作的,如果有对分区字段行进update,就会报错——ORA-14402: 更新分区关键字列将导致分区的更改。但是可以通过打开表的row movement属性来允许对分区字段的update操作。

例:创建分区表test_part进行实验

create table TEST_PART
(
  A1 NUMBERnot null,
  A2 DATE      not null,
  A3 VARCHAR2(6) not null,
  A4 DATE not null,
  A5 NUMBER not null,
)
partition by range (A1)
(
  partition P1 values less than (1000),
  partition P2 values less than (2000),
  partition P3 values less than (3000),
  partition P4 values less than (4000),
  partition P5 values less than (5000),
  partition P6 values less than (MAXVALUE)
);

插入如下的数据
SQL> select * from test_part;

        A1 A2          A3     A4                  A5
---------- ----------- ------ ----------- ----------
       123 2006-06-30  123456 2006-06-30         123
       456 2006-06-30  asdfgh 2006-06-30         456
         1 2006-06-30  234123 2006-06-30           1
         2 2006-06-30  234234 2006-06-30           2
      1234 2006-06-30  456789 2006-06-30        1234
      1111 2006-06-30  ewrqwe 2006-06-30        1111
      2222 2006-06-30  fdafda 2006-06-30        2222
      3333 2006-06-30  342342 2006-06-30        3333
      5678 2006-06-30  qwerty 2006-06-30        5678

9 rows selected

分区P1、P2的数据分别为:
SQL> select rowid,t.* from test_part partition(p1) t;

ROWID                      A1 A2          A3     A4                  A5
------------------ ---------- ----------- ------ ----------- ----------
AAAGLoAAGAAAtsEAAB        456 2006-06-30  asdfgh 2006-06-30         456
AAAGLoAAGAAAtsEAAC          1 2006-06-30  234123 2006-06-30           1
AAAGLoAAGAAAtsEAAD          2 2006-06-30  234234 2006-06-30           2
AAAGLoAAGAAAtsEAAE        123 2006-06-30  123456 2006-06-30         123

SQL> select rowid,t.* from test_part partition(p2) t;

ROWID                      A1 A2          A3     A4                  A5
------------------ ---------- ----------- ------ ----------- ----------
AAAGLwAAGAAA+8MAAC       1234 2006-06-30  456789 2006-06-30        1234
AAAGLwAAGAAA+8MAAD       1111 2006-06-30  ewrqwe 2006-06-30        1111

直接update提示错误
SQL> update test_part set a1=1123 where a1=123;

update test_part set a1=1123 where a1=123

ORA-14402: 更新分区关键字列将导致分区的更改

打开row movement属性
SQL> alter table test_part enable row movement;

Table altered

再次执行update操作
SQL> update test_part set a1=1123 where a1=123;

1 row updated

执行是成功的并迁移到分区P2上了,且这时候rowid也发生了变化
SQL> select rowid,t.* from test_part partition(p2) t;

ROWID                      A1 A2          A3     A4                  A5
------------------ ---------- ----------- ------ ----------- ----------
AAAGLwAAGAAA+8MAAC       1234 2006-06-30  456789 2006-06-30        1234
AAAGLwAAGAAA+8MAAD       1111 2006-06-30  ewrqwe 2006-06-30        1111
AAAGLwAAGAAA+8PAAB       1123 2006-06-30  123456 2006-06-30         123

SQL>

enable row movement可以允许数据段的压缩、update分区字段的数据(跨分区的)

但是,也是有限制性的:对于普通表(heap-organized)行迁移后rowid会发生变化,对于索引表(index-

分享到:
评论

相关推荐

    oracle千万级别数据简单操作

    #### 一、创建表空间与分区表 在Oracle数据库中处理千万级别的数据时,合理的表空间管理和分区策略是非常重要的。以下是从给定的部分内容中提取的关键步骤: 1. **创建表空间**: - 创建了三个表空间:`dinya_...

    ORACLE-----ORACLE笔记

    9. 分区:Oracle支持表和索引的分区,将大型表分割成更小、更易管理和查询的部分。分区可以显著提升大规模数据的查询性能。 10. RAC(Real Application Clusters):Oracle的集群技术,允许多个服务器共享同一...

    某培训机构的Oracle-PPT.rar

    3. **数据模型**:Oracle基于实体-关系(E-R)模型,其中包含表、字段、键(主键、外键)、索引等概念。理解这些概念对于设计高效的数据结构至关重要。 4. **数据库架构**:Oracle数据库由多个组件构成,如数据文件...

    oracle-record.rar_oracle

    `record notebook.txt`可能包含了用户在操作Oracle数据库时的详细步骤记录,包括但不限于创建表、插入数据、更新数据、查询数据以及各种数据库对象(如索引、视图、存储过程等)的管理。在Oracle数据库中,SQL(结构...

    oracle分区与索引

    - **全局索引分区**:与分区表关联的索引,支持跨分区的查询。 - **局部索引分区**:仅索引特定分区的数据。 ##### 2. 索引的优缺点 - **优点**: - 加快查询速度。 - 提高数据完整性。 - **缺点**: - 占用...

    oracle-MySQL笔记整理资料 适合初学者

    4. 表与索引:理解表结构、字段类型、主键、外键以及如何创建和管理索引。 5. 数据库安全管理:用户权限、角色管理、审计和备份恢复策略。 6. 高级特性:如分区、物质化视图、游标、事务管理和并发控制。 MySQL则是...

    Oracle课件---个人感觉不错,是我们老师做的

    - 分区技术:将大表分成小的、可独立操作的部分,提高查询和维护速度。 - AWR(Automatic Workload Repository)和ASH(Active Session History)报告:提供性能监控和分析工具。 7. **高级特性** - PL/SQL:...

    Oracle在线建立超大表的索引

    - **表结构**:该表按照本地网进行分区 - **表使用情况**: - 客户开户(INSERT操作频繁) - 更改客户资料(UPDATE操作极低频) - 其他查询(SELECT操作极为频繁) #### 索引字段与类型 - **字段**:PARENT_...

    玩转oracle学习笔记(二)-Oracle表的管理

    另外,分区表和物化视图也是提升性能的有效手段,尤其对于大数据量的表。 最后,备份和恢复策略对于数据库的高可用性至关重要。Oracle提供数据泵(Data Pump)工具,如`EXPDP`和`IMPDP`,用于导出和导入数据,以及...

    华为面试题(附答案)Oracle-DBA数据库管理员JAVA程序员架构师必看..pdf,这是一份不错的文件

    3. 分区表:分区表是大型数据库中的优化策略,它将大表分成多个逻辑部分,每个部分称为分区。分区可以按范围、散列或组合方式划分,以提高DML操作的并行性,并适用于历史数据存储、销售记录等场景。截断分区表的命令...

    Oracle 11i 表结构

    5. **分区策略**:对于大数据量的表,采用分区技术可以显著提升查询性能。 6. **数据安全性**:通过设置适当的权限控制确保数据的安全性。 #### 三、表间关系 在Oracle 11i中,表间关系主要通过外键约束实现,常见...

    Oracle 词汇表

    因此,掌握Oracle 词汇表能够帮助用户更高效、准确地理解和操作数据库。 1. 数据库概念: - 表(Table):存储数据的基本单元,由列和行组成。 - 列(Column):表中的字段,定义了数据类型和约束。 - 行(Row)...

    oracle教程--深入浅出oracle学习资料

    SQL优化包括选择合适的索引、优化查询计划、调整表分区等。 总之,Oracle教程——深入浅出Oracle学习资料涵盖了Oracle数据库的各个方面,从基础概念到高级特性的运用,无论是对于初学者还是有经验的数据库管理员,...

    ORACLE技巧 - 不同记录集的横向合并

    - 创建触发器`TRG_Upd_xxx_TB`,当向表`xxx`中插入数据后触发,用于更新表`xxx`中的`xDate`字段为当前时间。 3. **批量插入数据**: 使用`InsertMultiRecord`过程来向表`yyy`中批量插入10万条记录。 4. **同步...

    oracle数据库

    - 分区表:将大表分为多个逻辑部分,提高查询速度和管理效率。 4. **Oracle数据库管理** - 用户和权限:创建和管理数据库用户,分配不同级别的权限,确保数据安全性。 - 索引:加速数据检索,有B树索引、位图...

    oracle 资料--图片存取

    除了使用PL/SQL直接操作BLOB外,还可以通过Oracle的外部表功能将文件系统上的文件映射为数据库中的虚拟表,从而实现图片的存取。例如,"dummy.dcm"、"goats.gif"和"flowers.jpg"可能就是这样的例子,它们可以被读取...

    oracle数据库中如何处理clob字段方法介绍

    在Oracle数据库中,CLOB...总之,处理Oracle中的CLOB字段需要对数据库特性和事务管理有深入理解,同时也需要熟悉Java或其他编程语言中的CLOB操作。通过合理的策略和技巧,可以有效地管理和操作这些大型文本数据。

    Oracle 40 道面试题及答案.docx

    Oracle 分区是将一张大表的数据按照某种规则使用多张子表来存储,然后这些子表使用统一的表名对外提供服务,子表实际上对用户不可见。类似于在多张子表上建立一个视图,然后用户直接使用该视图来访问数据。 Oracle ...

    ORACLE__SQL语句教学.zip

    - 分区表:将大表分成逻辑上独立的子集,提高查询性能。 - 子查询:嵌套在其他SQL语句中的查询,用于获取或比较数据。 - 视图:虚拟表,基于一个或多个表的查询结果,提供安全性和简化查询。 - 游标:处理单个或...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...

Global site tag (gtag.js) - Google Analytics