• row movement // 分区表


    Alter table table_name enable row movement;

    通查在三种情景下,需要启用row movement

    1:分区表

    当我们允许分区表的分区键是可更新的时候,如果分区键的更新导致当前修改的数据条目需要移动到其他分区,此时就会发生rowid的改变

    2:闪回操作

    在闪回操作时,我们同样需要开启表的row movement特性。

    3:回收空间

    在收缩空间时,也会造成行的移动.

    Shrink space操作(without  compact)会导致所有已经打开的游标失效,因此需要谨慎使用.

    select owner, row_movement from dba_tables where table_name = 'A';  查看当前table 的 row 状态

    一、创建分区表
    分区表分为四类:1、范围分区表 2、列表分区表 3、哈希分区表 4、组合分区表

    CREATE TABLE range_example(
         range_key_column DATE,
         DATA VARCHAR2(20),
         ID integer
     ) PARTITION BY RANGE(range_key_column)
     (
         PARTITION part01 VALUES LESS THAN (TO_DATE('2008-07-1 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE tbs01,
         PARTITION part02 VALUES LESS THAN (TO_DATE('2008-08-1 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE tbs02,
         PARTITION part03 VALUES LESS THAN (TO_DATE('2008-09-1 00:00:00','yyyy-mm-dd hh24:mi:ss')) TABLESPACE tbs03
    );

    CREATE TABLE list_example(
         dname VARCHAR2(10),
         DATA VARCHAR2(20)
    )PARTITION BY LIST(dname)
    (
          PARTITION part01 VALUES('ME','PE','QC','RD'),
          PARTITION part02 VALUES('SMT','SALE')
    );

    CREATE TABLE hash_example(
          hash_key_column DATE,
          DATA VARCHAR2(20)
    ) PARTITION BY HASH(hash_key_cloumn)
    (
         PARTITION part01 ,
         PARTITION part02
    )

    CREATE TABLE range_hash_example(
     range_column_key DATE,
     hash_column_key INT,
     DATA VARCHAR2(20)
    )
    PARTITION BY RANGE(range_column_key)
    SUBPARTITION BY HASH(hash_column_key) SUBPARTITIONS 2
    (
       PARTITION part_1 VALUES LESS THAN (TO_DATE('2008-08-01','yyyy-mm-dd'))(
          SUBPARTITION part_1_sub_1,
          SUBPARTITION part_1_sub_2,
          SUBPARTITION part_1_sub_3
       ),
       PARTITION part_2 VALUES LESS THAN (TO_DATE('2008-09-01','yyyy-mm-dd'))(
          SUBPARTITION part_2_sub_1,
          SUBPARTITION part_2_sub_2
       )
    );

    普通表转为分区表

    分区表

    优点:

    a.改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。

    b.增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用。

    c.维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可。

    d.均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能。

    缺点:

    分区表相关,已经存在的表没有方法可以直接转化为分区表。不过oracle提供了在线重定义表的功能

  • 相关阅读:
    http响应码总结 lq
    孙哥讲解spring5day 3&day 4 lq
    MySql实现远程连接
    Django 截取中英文混合字符串
    ubuntu安装skype及配置中文输入
    如何通过使用 SQL Server 中的 Detach 和 Attach 函数将 SQL Server 数据库移到新位置
    oracle 在redhat6.2上部署
    优化javascript中mouseover和mouseout事件
    Django如何重设Admin密码
    CoffeeScript 安装配置
  • 原文地址:https://www.cnblogs.com/jgmor/p/10945143.html
Copyright © 2020-2023  润新知