zoukankan      html  css  js  c++  java
  • oracle 12.2 alter table move online

    我们使用主键和辅助索引创建和填充测试表。这将用于示例移动操作。

    DROP TABLE t1 PURGE;
    
    -- Create table.
    CREATE TABLE t1 AS
    SELECT level AS id,
           'Description for ' || level AS description,
           SYSDATE AS created_date
    FROM   dual
    CONNECT BY level <= 1000;
    COMMIT;
    
    ALTER TABLE t1 ADD CONSTRAINT t1_pk PRIMARY KEY (id);
    CREATE INDEX t1_created_date_idx ON t1(created_date);

    移动(离线)

    在以前的版本中,移动表是脱机操作,默认情况下,标记索引为不可用。

    -- Offline: Basic move.
    ALTER TABLE t1 MOVE TABLESPACE users;
    
    -- Check indexes.
    SELECT index_name, status FROM user_indexes ORDER BY 1;
    
    INDEX_NAME                     STATUS
    ------------------------------ --------
    T1_CREATED_DATE_IDX            UNUSABLE
    T1_PK                          UNUSABLE
    
    2 rows selected.
    
    SQL>

    我们可以手动重新生成索引。

    -- Manually rebuild indexes.
    ALTER INDEX t1_pk REBUILD ONLINE;
    ALTER INDEX t1_created_date_idx REBUILD ONLINE;
    
    -- Check indexes.
    SELECT index_name, status FROM user_indexes ORDER BY 1;
    
    INDEX_NAME                     STATUS
    ------------------------------ --------
    T1_CREATED_DATE_IDX            VALID
    T1_PK                          VALID
    
    2 rows selected.
    
    SQL>

    或者,我们可以包括子句来管理我们的索引。UPDATE INDEXES

    -- Offline: Include UPDATE INDEXES to manage the indexes.
    ALTER TABLE t1 MOVE TABLESPACE users UPDATE INDEXES;
    
    -- Check indexes.
    SELECT index_name, status FROM user_indexes ORDER BY 1;
    
    INDEX_NAME                     STATUS
    ------------------------------ --------
    T1_CREATED_DATE_IDX            VALID
    T1_PK                          VALID
    
    2 rows selected.
    
    SQL>

    MOVE ONLINE

    From Oracle 12.2 onward we can move the table as an online operation using the keyword. In addition to moving the table, the online move automatically maintains the indexes.ONLINE

    -- Online: Basic move.
    ALTER TABLE t1 MOVE ONLINE TABLESPACE users;
    
    -- Check indexes.
    SELECT index_name, status FROM user_indexes ORDER BY 1;
    
    INDEX_NAME                     STATUS
    ------------------------------ --------
    T1_CREATED_DATE_IDX            VALID
    T1_PK                          VALID
    
    2 rows selected.
    
    SQL>

    我们还可以使用此功能在联机操作中更改表压缩和存储参数。

    -- Online: Change table compression.
    ALTER TABLE t1 MOVE ONLINE TABLESPACE users COMPRESS;
    ALTER TABLE t1 MOVE ONLINE TABLESPACE users NOCOMPRESS;
    
    -- Online: Change storage parameters.
    ALTER TABLE t1 MOVE ONLINE STORAGE (PCTINCREASE 0);

    限制

    • 不能与任何其他子句结合使用。
    • 它不能用于分区索引组织的表或索引组织的表,这些表的列定义为 LOB、VARRAY、Oracle 提供的类型或用户定义的对象类型。
    • 如果表上存在域索引,则不能使用它。
    • 不支持对具有持续联机移动的对象进行并行 DML 和直接路径插入。
  • 相关阅读:
    Irrlicht引擎I 配置
    lua学习笔记
    C语言 可变参数
    lua5.2版本在VS2010下的环境搭建
    确实太悠闲了
    【python游戏编程之旅】第四篇---pygame中加载位图与常用的数学函数。
    【LINUX/UNIX网络编程】之简单多线程服务器(多人群聊系统)
    【python游戏编程之旅】第三篇---pygame事件与设备轮询
    【python游戏编程之旅】第二篇--pygame中的IO、数据
    【python游戏编程之旅】第一篇---初识pygame
  • 原文地址:https://www.cnblogs.com/nadian-li/p/13705877.html
Copyright © 2011-2022 走看看