1 sqlplus sys as sysdba/
2 online redefine
2-1 exec dbms_redefinition.can_redef_table('NTSMSALL','T_TEAM');
2-2 CREATE TABLE NTSMSALL.TMP_T_TEAM…
CREATE TABLE "NTSMSALL"."TMP_T_TEAM"
( "UUID" VARCHAR2(36) NOT NULL ENABLE,
"CTEAMCODE" VARCHAR2(50) NOT NULL ENABLE,
"ULINEID" VARCHAR2(36),
"CLINENAME" VARCHAR2(100) NOT NULL ENABLE,
"IDAYS" NUMBER(*,0) DEFAULT 1 NOT NULL ENABLE,
"DBGNDATE" DATE NOT NULL ENABLE,
"DENDDATE" DATE NOT NULL ENABLE,
"IGUIDES" NUMBER(*,0) DEFAULT 0,
"IQTY" NUMBER(*,0) DEFAULT 0,
"IADULTS" NUMBER(*,0) DEFAULT 0,
"ICHILDS" NUMBER(*,0) DEFAULT 0,
"IBABYS" NUMBER(*,0) DEFAULT 0,
"IOLDS" NUMBER(*,0) DEFAULT 0,
"COPTYPE" VARCHAR2(12) NOT NULL ENABLE,
"CAREA" VARCHAR2(10),
"CNATION" VARCHAR2(400) NOT NULL ENABLE,
"CTYPE" VARCHAR2(20),
"CGUESTTYPE" VARCHAR2(10) DEFAULT '中国人',
"CGUESTNATION" VARCHAR2(20),
"CGUESTCO" VARCHAR2(70),
"CSTARTCITY" VARCHAR2(50),
"CADTITLE" VARCHAR2(80),
"CLONGTRAFFIC" VARCHAR2(255),
"CLOCALTRAFFIC" VARCHAR2(255),
"CHOTELSTANDARD" VARCHAR2(255),
"CFOODSTANDARD" VARCHAR2(255),
"CPROGRAMSTANDARD" VARCHAR2(255),
"CCHILDNOTE" VARCHAR2(255),
"CFEATURE" CLOB,
"CSTANDARD" CLOB,
"CPROMPT" CLOB,
"CPRICEINCUDE" CLOB,
"CPRICENOTINCUDE" CLOB,
"CMEMO" CLOB,
"UUSERID" VARCHAR2(36) NOT NULL ENABLE,
"UDEPTID" VARCHAR2(36) NOT NULL ENABLE,
"UCORPID" VARCHAR2(36) NOT NULL ENABLE,
"UADMINDIVID" VARCHAR2(36) NOT NULL ENABLE,
"CSTATUS" VARCHAR2(10),
"CLOOKSTATUS" VARCHAR2(10) DEFAULT '未审',
"CLOOKMIND" VARCHAR2(200),
"ULOOKMANID" VARCHAR2(36),
"CLOOKTIME" DATE,
"DCREATE" DATE,
"DUPDATE" DATE NOT NULL ENABLE,
"CGUIDEMEMO" VARCHAR2(60),
"UGUIDEID" VARCHAR2(36),
"CCARDCODE" VARCHAR2(20),
"CTRIPMEMO" CLOB,
"CNEEDAUDIT" VARCHAR2(1) DEFAULT 0,
"CORP" VARCHAR2(255 CHAR),
"CBOARDTIME" VARCHAR2(255 CHAR),
"CINLINENO" VARCHAR2(255 CHAR),
"CINPORT" VARCHAR2(255 CHAR),
"COFFTIME" VARCHAR2(255 CHAR),
"COUTLINENO" VARCHAR2(255 CHAR),
"COUTPORT" VARCHAR2(255 CHAR),
"USUPPLIERID" VARCHAR2(255 CHAR))
partition by range(dbgndate)
interval(numtodsinterval(1,'day') )
(partition p2011 values less than(to_date ('2012-01-01','yyyy-mm-dd')));
SQL> alter table inter_table add constraint pk_inter_table primary key (id);
表已更改。
/*
SQL> begin
2 dbms_redefinition.start_redef_table('yangtk', 'orgin_table', 'inter_table',
3 'ID ID, FID FID, NAME NEW_NAME, CREATE_DATE CREATE_DATE, ''NO COMMENTS'' COMMENTS',
4 DBMS_REDEFINITION.CONS_USE_PK);
5 END;
6 /
*/
SQL> select * from (select to_char((dbgndate),'yyyy-mm-dd') from ntsmsall.t_team order by dbgndate desc) bd where rownum<10;
TO_CHAR((DBGNDATE),'
--------------------
5787-10-21
5787-10-20
2015-10-02
2014-07-06
2013-09-02
2013-04-05
2013-02-13
2012-12-24
2012-12-13
Select count(uuid) from ntsmsall.t_team where dbgndate= to_date('5787-10-20', 'yyyy-mm-dd');
update ntsmsall.t_team set dbgndate=to_date('2012-10-20', 'yyyy-mm-dd') where dbgndate= to_date('5787-10-20', 'yyyy-mm-dd');
1 row updated.
Select count(uuid) from ntsmsall.t_team where dbgndate= to_date('5787-10-21', 'yyyy-mm-dd');
update ntsmsall.t_team set dbgndate=to_date('2012-10-21', 'yyyy-mm-dd') where dbgndate= to_date('5787-10-21', 'yyyy-mm-dd');
1 row updated.
2-3 EXEC dbms_redefinition.start_redef_table('NTSMSALL', 'T_TEAM', 'TMP_T_TEAM');
-- tail -n 100 alert_sid.log
2-4
DECLARE
error_count pls_integer := 0;
BEGIN
dbms_redefinition.copy_table_dependents('NTSMSALL', 'T_TEAM', 'TMP_T_TEAM',
0, true, true, true, true,
error_count);
dbms_output.put_line('errors := ' || to_char(error_count));
END;
/
2-5 EXEC DBMS_REDEFINITION.SYNC_INTERIM_TABLE('NTSMSALL', 'T_TEAM', 'TMP_T_TEAM');
2-6 EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE('NTSMSALL', 'T_TEAM', 'TMP_T_TEAM');
2-6-MUST disable and drop constraints on tmp_t_team + drop table OR
2-7 DROP TABLE NTSMSALL.TMP_T_TEAM CASCADE CONSTRAINTS;
分享到:
相关推荐
### Oracle表自动按月分区步骤详解 #### 一、背景介绍 在大数据处理与分析领域,数据库表的性能优化显得尤为重要。特别是在面对大量历史数据时,合理地利用表分区技术可以显著提高查询效率,减少资源消耗。Oracle...
根据提供的文件信息,本文将详细解释Oracle分区技术及其在解决UNDOTBS01.DBF文件过大问题中的应用方法,并进一步探讨Oracle分区的不同类型及其应用场景。 ### Oracle 分区概述 Oracle分区是一种将大表或索引分割成...
### 导入导出Oracle分区表数据 #### 一、概述 在Oracle数据库管理中,对分区表进行数据的导入与导出是一项常见的任务。分区技术可以显著提高大型表的性能,尤其是在处理大规模数据集时。为了有效地管理和迁移这些...
在Unix AIX环境下进行Oracle分区表的备份操作是IT领域中一项重要的技能,尤其是在处理大量数据和维护系统稳定性时。本文将深入解析如何在Unix AIX环境下使用exp工具备份Oracle分区表,包括环境配置、备份策略及恢复...
实现Oracle表分区通常涉及以下步骤: 1. **设计分区策略**:根据业务需求和数据特性选择合适的分区策略。 2. **创建分区表**:在CREATE TABLE语句中指定分区选项。 3. **插入数据**:数据将自动根据分区规则分配到...
Linux安装Oracle19C详细步骤 在这篇文章中,我们将详细介绍如何在 CentOS 7 和 Red Hat 7 系统中安装 Oracle 19C。整个安装过程可以分为六个步骤:系统要求和准备、关闭防火墙、图形桌面、selinux、修改静态 IP、...
执行计划是Oracle数据库处理SQL查询的一种步骤序列,它详细描述了数据如何从表中提取、如何进行排序或聚合,以及如何返回到应用程序。理解执行计划对于优化SQL语句和提高数据库性能至关重要。 1. **执行计划的理解...
以下是将普通表转化为分区表的步骤: 1. **确认表是否适合分区**: 使用`DBMS_REDEFINITION.CAN_REDEF_TABLE`函数检查表`EMP`是否可以进行重定义。在这个例子中,确认基于主键的重定义是可行的。 2. **创建临时...
三、Oracle分区表的创建示例 本篇文档通过一个留言版应用的案例来说明分区表的创建和使用。案例中提到了创建独立表空间、备份旧数据、创建分区表、导入数据和分区表扩容的步骤。 1. 创建独立的表空间:这是创建分区...
在Oracle数据库系统中,表分区是一种高级特性,用于提高数据管理效率、提升查询性能和简化维护工作。"Oracle自动一年建立表分区.zip"文件显然包含了用于自动创建按时间(一年)分区的Oracle脚本。这样的脚本对于处理...
本文详细介绍了将 Oracle 普通表转换为分区表的方法,包括备份创建表脚本、查看数据类型、创建分区表、迁移数据和更新索引和约束等步骤。通过将普通表转换为分区表,可以提高查询效率、减少存储空间和提高数据管理...
如果现有的表不是分区表,可以通过以下步骤将其转换为分区表: 1. **创建临时分区表**:首先创建一个新的分区表结构,但不包含任何数据。 2. **导入数据**:使用 `INSERT INTO ... SELECT FROM` 或其他方法将原始表...
支持自动ORACLE大表分区: 版本进度: 31. 20110420 V2.2 支持任意表任意时间字段分区 以下为安装部署部分: 1.分区相关脚本部署执行顺序,安装前请确保该用户拥有管理员权限, 同时请执行GRANT CREATE ANY TABLE ...
#### 一、Oracle分区表概述 **Oracle分区表**是一种将大表分成多个较小部分的技术,这些部分称为分区。通过分区技术,可以显著提高查询性能,减少磁盘I/O操作,并简化数据库管理和维护工作。本文将详细介绍Oracle中...
1. **单独的/Oracle分区**:为了提高性能和便于管理,建议为Oracle软件及其数据文件创建单独的分区或逻辑卷。 2. **数据文件分区**:Oracle数据库的数据文件应存放在单独的分区或逻辑卷上,以便于扩展和维护。 3. **...
【Oracle分区技术】是Oracle数据库管理系统提供的一种高级数据管理策略,尤其适用于处理大规模数据的存储和查询优化。...因此,掌握和运用Oracle分区技术是构建高性能大数据处理系统的关键步骤之一。
### Linux环境下Oracle数据库安装步骤详解 #### 一、概述 本文档主要介绍如何在Linux环境下安装Oracle数据库。针对具体的步骤,我们将从环境准备、系统配置调整到安装过程进行详细阐述,确保用户能够顺利地完成...