`

How To Partition Existing Table Using DBMS_Redefinition [ID 472449.1]来自Metalink

阅读更多

Applies to:

Oracle Server - Standard Edition - Version: 9.2.0.4
Information in this document applies to any platform.

Goal

The purpose of this document is to provide step by step instructions on how to convert unpartitioned table to partitioned one using dbms_redefinition package.

Solution

1) Create unpartitioned table with the name unpar_table

SQL> CREATE TABLE unpar_table (
id NUMBER(10),
create_date DATE,
name VARCHAR2(100)
);


2) Apply some constraints to the table:

SQL> ALTER TABLE unpar_table ADD (
CONSTRAINT unpar_table_pk PRIMARY KEY (id)
);

SQL> CREATE INDEX create_date_ind ON unpar_table(create_date);


3) Gather statistics on the table:

SQL> EXEC DBMS_STATS.gather_table_stats(USER, 'unpar_table', cascade => TRUE);

4) Create a Partitioned Interim Table:

SQL> CREATE TABLE par_table (
id NUMBER(10),
create_date DATE,
name VARCHAR2(100)
)
PARTITION BY RANGE (create_date)
(PARTITION unpar_table_2005 VALUES LESS THAN (TO_DATE('01/01/2005', 'DD/MM/YYYY')),
PARTITION unpar_table_2006 VALUES LESS THAN (TO_DATE('01/01/2006', 'DD/MM/YYYY')),
PARTITION unpar_table_2007 VALUES LESS THAN (MAXVALUE));


5) Start the Redefinition Process:

a) Check the redefinition is possible using the following command:

SQL> EXEC Dbms_Redefinition.can_redef_table(USER, 'unpar_table');

b)If no errors are reported, start the redefintion using the following command:

SQL> BEGIN
DBMS_REDEFINITION.start_redef_table(
uname => USER, 
orig_table => 'unpar_table',
int_table => 'par_table');
END;
/


Note: This operation can take quite some time to complete.

c) Optionally synchronize new table with interim name before index creation:

SQL> BEGIN
dbms_redefinition.sync_interim_table(
uname => USER, 
orig_table => 'unpar_table',
int_table => 'par_table');
END;
/

d) Create Constraints and Indexes:

SQL> ALTER TABLE par_table ADD (
CONSTRAINT unpar_table_pk2 PRIMARY KEY (id)
);

SQL> CREATE INDEX create_date_ind2 ON par_table(create_date);

e) Gather statistics on the new table:

SQL> EXEC DBMS_STATS.gather_table_stats(USER, 'par_table', cascade => TRUE);

f) Complete the Redefintion Process:

SQL> BEGIN
dbms_redefinition.finish_redef_table(
uname => USER,
orig_table => 'unpar_table',
int_table => 'par_table');
END;
/

At this point the interim table has become the "real" table and their names have been switched in the name dictionary.

g) Remove original table which now has the name of the interim table:

SQL> DROP TABLE par_table; 

h)Rename all the constraints and indexes to match the original names.

ALTER TABLE unpar_table RENAME CONSTRAINT unpar_table_pk2 TO unpar_table_pk;
ALTER INDEX create_date_ind2 RENAME TO create_date_ind;

i) Check whether partitioning is successful or not:

SQL> SELECT partitioned
FROM user_tables
WHERE table_name = 'unpar_table';

PAR
---
YES

1 row selected.

SQL> SELECT partition_name
FROM user_tab_partitions
WHERE table_name = 'unpar_table';

PARTITION_NAME
------------------------------
unpar_table_2005
unpar_table_2006
unpar_table_2007

3 rows selected.

Please not that the 9i redefinition procedures has some restrictions:

* There must be enough space to hold two copies of the table.
* Primary key columns cannot be modified.
* Tables must have primary keys.
* Redefinition must be done within the same schema.
* New columns added cannot be made NOT NULL until after the redefinition operation.
* Tables cannot contain LONGs, BFILEs or User Defined Types.
* Clustered tables cannot be redefined.
* Tables in the SYS or SYSTEM schema cannot be redefined.
* Tables with materialized view logs or materialized views defined on them cannot be redefined.
* Horizontal sub setting of data cannot be performed during the redefinition.

分享到:
评论

相关推荐

    Rockchip_Introduction_Partition_CN.pdf

    标题中的“Rockchip_Introduction_Partition_CN.pdf”提示本文档是关于Rockchip产品的分区介绍,且文档为中文版本。标题中的“分区”一词表明本文档将涵盖有关Rockchip芯片的存储器分区信息。 在描述中,“Rockchip...

    A20_sys_partition.fexv1.3.zip_A20_partition_sys_partition.fex

    《A20_sys_partition.fex 分区表详解v1.3》 在嵌入式系统设计中,存储设备的管理是至关重要的一个环节。这里我们关注的是针对A20处理器的`sys_partition.fex`文件,它是一个用于定义和管理设备分区的配置文件。这个...

    get_size_database_and_table.rar_Table_get_table_size sql

    标题“get_size_database_and_table.rar_Table_get_table_size_sql”和描述“如何获取SQL数据库大小”都指向了这个核心主题。本文将深入探讨如何使用SQL语句来获取数据库和表的大小信息。 1. 数据库大小获取: ...

    A40-T3的sys_partition.fex分区表说明

    A40-T3的sys_partition.fex分区表说明 A40-T3的sys_partition.fex分区表是全志A40i T3芯片的分区表配置文件,用于在V40项目中实现系统的分区管理。该文件中包含了系统的各个分区的配置信息,包括bootloader分区、...

    kafka_2.11-2.0.0.tgz

    - **分区(Partition)**:分区是主题的物理实现,每个分区在集群中都有一个副本,负责消息的存储。分区的目的是为了提供并行度,提高系统吞吐量。 - **生产者(Producer)**:生产者是向Kafka发布消息的应用程序...

    kafka_2.12-3.3.1.tgz

    1. **高吞吐量**: Kafka能够在单个服务器上处理数十万条消息每秒,这得益于其基于磁盘的数据存储方式和优化的I/O操作。它将消息持久化到磁盘,并使用内存缓存来加速消息的读写速度。 2. **分布式设计**: Kafka是一...

    kafka_2.10-0.8.2.1.tgz

    Kafka的核心概念包括生产者、消费者、主题(Topic)和分区(Partition)。生产者负责发布消息到主题,消费者则订阅并消费这些消息。主题被划分为多个分区,每个分区在集群中的不同节点上进行复制,确保了数据的冗余...

    MT6755_Android_scatter.txt

    ##### 1. GeneralSetting 部分 这部分定义了通用设置,包括平台配置信息等。 - **-general:** 指定了平台为“MTK_PLATFORM_CFG”,这是联发科平台配置的基本标识。 - **info:** 进一步提供关于配置的信息。 - **-...

    kafka_2.13-3.2.3.tgz

    1. **主题(Topic)**:主题是Kafka中的基本数据单元,类似于数据库中的表,用于存储消息。每个主题可以被分为多个分区(Partition)。 2. **分区(Partition)**:分区是主题的逻辑细分,每个分区是有序的、不可变...

    oracle partition 深入讨论

    DBMS_REDEFINITION.COPY_TABLE_DATA( user, 'ORIGINAL_TABLE', 'TEMP_TABLE', null, null, 0, 0); -- 创建新的分区表结构 CREATE TABLE original_table_new ( ... -- 定义表结构,包括分区 ); -- 完成重...

    kafka_2.12-1.0.0.zip

    `partition.count`,主题分区数。 四、安装与启动 解压"**kafka_2.12-1.0.0.zip**"后,按照以下步骤操作: 1. 设置环境变量,如`KAFKA_HOME`指向解压目录。 2. 启动Zookeeper服务,它是Kafka的协调组件。 3. 启动...

    最新版 kafka_2.12-2.7.0.tgz

    2. **分区(Partition)**:分区是主题的逻辑划分,每个分区都是一个有序的不可变日志。分区有助于水平扩展和提供容错性,因为它们可以在多个broker(Kafka节点)上分布。 3. **生产者(Producer)**:生产者是向...

    ntfs-3g_ntfsprogs-2011.4.12.zip

    sudo mount -t ntfs-3g /dev/sdb1 /mnt/ntfs-partition -o defaults,uid=1000,gid=1000,dmask=000,fmask=000 ``` 这里的参数 `-o` 后面的 `defaults,uid=1000,gid=1000,dmask=000,fmask=000` 是挂载选项,可以根据...

    oracle_partition_index.zip_partition

    本资料“oracle_partition_index.zip_partition”着重讨论了Oracle分区和索引的相关知识,下面将对这些主题进行详细解释。 一、Oracle分区 1. 分区概念:Oracle分区是将一个大表或索引分成多个较小、更易管理的...

    kafka_2.9.2-0.8.2.1.tgz

    在config目录下的server.properties文件中,可以配置Kafka的各项参数,如broker.id、zookeeper.connect等。同时,启动和停止Kafka服务可以通过bin目录下的kafka-server-start.sh和kafka-server-stop.sh脚本进行。 ...

    Array-Partition_2.0.tar.gz_partition_西门子数据集

    《Array-Partition_2.0.tar.gz:西门子数据集在软件测试中的应用与解析》 在软件工程领域,测试是确保产品质量的关键环节。其中,数据集的使用对于验证测试方法的有效性和准确性至关重要。"Array-Partition_2.0.tar...

    kafka_2.11-2.2.0.tgz

    5. **数据集成**:在数据湖或数据仓库建设中,Kafka用于集成来自多个系统的数据。 四、Kafka的部署与配置 在实际使用中,用户需要配置Kafka的broker、producer和consumer参数,例如设置broker的端口、数据存储路径...

    建立新年分区脚本.txt

    to_char(to_date(rq, 'yyyymmdd') + 1, 'YYYY-MM-DD HH24:MI:SS') || '''' || ',' || '''' || 'YYYY-MM-DD HH24:MI:SS' || '''' || '))' || 'tablespace ' || v_part_tablespace || ';' from (select to_char...

    cubie_nand_uboot_partition_image.bin

    网上现在很难找到这个资源,现在共享给大家!

    ZedBoard REV_C的BOOT.BIN、devicetree.dtb、logo.bin、zImage、led_test.sh、oled_test.sh

    针对ZedBoard REV_C开发板配套的HDMI显示Linaro Ubuntu系统界面需要的BOOT.BIN、devicetree.dtb、logo.bin、zImage文件,测试LED、OLED的可执行文件。

Global site tag (gtag.js) - Google Analytics