热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

oracle联机重定义非分区表到分区表的转换

联机重定义非分区表到分区表的转换数据库版本:SQL>select*fromv$version;BANNER----------------------------------------------------------------OracleDatabase10gEnterpriseEditionRel...

联机重定义 非分区表到分区表的转换
数据库版本: 
SQL> select * from v$version; 
BANNER 
---------------------------------------------------------------- 
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod 
PL/SQL Release 10.2.0.3.0 - Production 
CORE    10.2.0.3.0    Production 
TNS for 32-bit Windows: Version 10.2.0.3.0 - Production 
NLSRTL Version 10.2.0.3.0 - Production
创建原始表和中间表: 
SQL> create table testcol (a number,b varchar2(20),d varchar2(20)); 
Table created   www.2cto.com  
SQL> create table testcol_tmp (a number,b varchar2(20),d varchar2(20)) 
  2  partition by range(a) 
  3  ( 
  4    PARTITION test_part1 values less than (10), 
  5    PARTITION test_part2 values less than (20), 
  6    PARTITION test_part3 values less than (30), 
  7    PARTITION test_part4 values less than (40), 
  8    PARTITION test_part5 values less than (50) 
  9  ); 
Table created
根据上篇的经验,给原始表建立主键: 
SQL> alter table testcol add constraints pk_testcol primary key (a); 
Table altered
插入数据: 
insert into testcol values(1,'1','1'); 
insert into testcol values(11,'1','1'); 
insert into testcol values(21,'1','1'); 
insert into testcol values(31,'1','1'); 
insert into testcol values(41,'1','1');
SQL> select * from testcol;   www.2cto.com  
         A B                    D 
---------- -------------------- -------------------- 
         1 1                    1 
        11 1                    1 
        21 1                    1 
        31 1                    1 
        41 1                    1
 
查看转换之前原始表和中间表的分区情况:        
SQL> select table_name,partitioned from user_tables where table_name in('TESTCOL','TESTCOL_TMP'); 
TABLE_NAME                     PARTITIONED 
------------------------------ ----------- 
TESTCOL                        NO 
TESTCOL_TMP                    YES
检测原始表是否能够联机重定义: 
SQL> exec dbms_redefinition.can_redef_table('SCOTT','TESTCOL'); 
PL/SQL procedure successfully completed 
检测通过。 
开始联机重定义: 
SQL> exec dbms_redefinition.start_redef_table('SCOTT','TESTCOL','TESTCOL_TMP'); 
PL/SQL procedure successfully completed 
这步执行完后,分区属性还没改变。 
SQL> select table_name,partitioned from user_tables where table_name in('TESTCOL','TESTCOL_TMP'); 
TABLE_NAME                     PARTITIONED 
------------------------------ ----------- 
TESTCOL                        NO 
TESTCOL_TMP                    YES
主键也没同步到中间表: 
SQL> select a.constraint_name,a.constraint_type from dba_constraints a where a.table_name='TESTCOL_TMP';   www.2cto.com  
CONSTRAINT_NAME                CONSTRAINT_TYPE 
------------------------------ --------------- 
但是数据已经传到中间表: 
SQL> select * from testcol_tmp; 
         A B                    D 
---------- -------------------- -------------------- 
         1 1                    1 
        11 1                    1 
        21 1                    1 
        31 1                    1 
        41 1                    1
sync_interim_table的目的是为了缩短finish时锁定表的时间: 
SQL> exec dbms_redefinition.sync_interim_table('SCOTT','TESTCOL','TESTCOL_TMP'); 
PL/SQL procedure successfully completed 
完成联机重定义的最后一步,这步会暂时性的对原始表进行锁定: 
SQL> exec dbms_redefinition.finish_redef_table('SCOTT','TESTCOL','TESTCOL_TMP'); 
PL/SQL procedure successfully completed
这步执行完成后,主键交换过来了: 
SQL> select a.constraint_name,a.constraint_type from dba_constraints a where a.table_name='TESTCOL_TMP'; 
CONSTRAINT_NAME                CONSTRAINT_TYPE 
------------------------------ --------------- 
PK_TESTCOL                     P
SQL> select a.constraint_name,a.constraint_type from dba_constraints a where a.table_name='TESTCOL'; 
CONSTRAINT_NAME                CONSTRAINT_TYPE 
------------------------------ --------------- 
分区属性也交换了: 
SQL>  select table_name,partitioned from user_tables where table_name in('TESTCOL','TESTCOL_TMP');   www.2cto.com  
TABLE_NAME                     PARTITIONED 
------------------------------ ----------- 
TESTCOL                        YES 
TESTCOL_TMP                    NO
分区中有了数据: 
SQL> select * from testcol partition(test_part3); 
         A B                    D 
---------- -------------------- -------------------- 
        21 1                    1
 
 
 
作者  雅飞士

推荐阅读
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 2023 ARM嵌入式系统全国技术巡讲旨在分享ARM公司在半导体知识产权(IP)领域的最新进展。作为全球领先的IP提供商,ARM在嵌入式处理器市场占据主导地位,其产品广泛应用于90%以上的嵌入式设备中。此次巡讲将邀请来自ARM、飞思卡尔以及华清远见教育集团的行业专家,共同探讨当前嵌入式系统的前沿技术和应用。 ... [详细]
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 国内BI工具迎战国际巨头Tableau,稳步崛起
    尽管商业智能(BI)工具在中国的普及程度尚不及国际市场,但近年来,随着本土企业的持续创新和市场推广,国内主流BI工具正逐渐崭露头角。面对国际品牌如Tableau的强大竞争,国内BI工具通过不断优化产品和技术,赢得了越来越多用户的认可。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • Valve 发布 Steam Deck 的新版 Windows 驱动程序
    Valve 最新发布了针对 Steam Deck 掌机的 Windows 驱动程序,旨在提升其在 Windows 环境下的兼容性、安全性和性能表现。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 在 Windows 10 中,F1 至 F12 键默认设置为快捷功能键。本文将介绍几种有效方法来禁用这些快捷键,并恢复其标准功能键的作用。请注意,部分笔记本电脑的快捷键可能无法完全关闭。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
author-avatar
琉璃梦0_471
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有