1、创建表
SQL> CREATE TABLE T (ID NUMBER PRIMARY KEY, TIME DATE);
2、插入数据
SQL> INSERT INTO T SELECT ROWNUM, CREATED FROM DBA_OBJECTS;
SQL> COMMIT;
3、在线重定义的表自行验证,看该表是否可以重定义,
SQL> EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE(user, 'T', DBMS_REDEFINITION.CONS_USE_PK);
(如果没有定义主键会提示以下错误信息
begin dbms_redefinition.can_redef_table(user,'pft_party_profit_detail'); end;
ORA-12089: cannot online redefine table "OFSA"."PFT_PARTY_PROFIT_DETAIL" with no primary key
ORA-06512: at "SYS.DBMS_REDEFINITION", line 8
ORA-06512: at "SYS.DBMS_REDEFINITION", line 247
ORA-06512: at line 1
出错了, 该表上缺少主键,为该表建主键。再执行验证。
SQL> alter table t add constraint pk_t primary key(id);
Table altered)
4、建个和源表表结构一样的分区表,作为中间表。按日期范围分区
SQL> CREATE TABLE T_NEW (ID NUMBER PRIMARY KEY, TIME DATE) PARTITION BY RANGE (TIME)
(PARTITION P1 VALUES LESS THAN (TO_DATE('2004-7-1', 'YYYY-MM-DD')),
PARTITION P2 VALUES LESS THAN (TO_DATE('2005-1-1', 'YYYY-MM-DD')),
PARTITION P3 VALUES LESS THAN (TO_DATE('2005-7-1', 'YYYY-MM-DD')),
PARTITION P4 VALUES LESS THAN (MAXVALUE));
这里值得注意的一个问题是:PARTITION P4 VALUES LESS THAN (MAXVALUE))是把所有剩下的数据分在一个区里,如果你想一个月建一个分区,那最好写成这样,提前建好,目前我还不知道能不能自动建,如果哪位知道请告知我,谢谢
SQL> CREATE TABLE T_NEW (ID NUMBER PRIMARY KEY, TIME DATE) PARTITION BY RANGE (TIME)
(PARTITION P20070201 VALUES LESS THAN (TO_DATE('2007-2-1', 'YYYY-MM-DD')),
PARTITION P20070301 VALUES LESS THAN (TO_DATE('2005-3-1', 'YYYY-MM-DD')),
PARTITION P20070401 VALUES LESS THAN (TO_DATE('2005-4-1', 'YYYY-MM-DD')),
PARTITION P20070501 VALUES LESS THAN (TO_DATE('2005-5-1', 'YYYY-MM-DD')),
PARTITION P20070601 VALUES LESS THAN (TO_DATE('2005-6-1', 'YYYY-MM-DD')));
5、执行表的在线重定义:
SQL> EXEC DBMS_REDEFINITION.START_REDEF_TABLE(USER, 'T', 'T_NEW');
6、执行把中间表的内容和数据源表进行同步。
SQL>execute dbms_redefinition.sync_interim_table(user,'t','t_new');
7、执行结束在线定义过程
SQL> EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE(user, 'T', 'T_NEW');
8、查看数据字典,可以看到改表已经成为了分区表。
SQL> SELECT COUNT(*) FROM T;
COUNT(*)
----------
6264
SQL> SELECT COUNT(*) FROM T PARTITION (P2);
COUNT(*)
----------
6246
SQL> SELECT COUNT(*) FROM T PARTITION (P3);
COUNT(*)
----------
至此普通表转为分区操作完成
9、如果执行在线重定义的过程中出错
可以在执行dbms_redefinition.start_redef_table之后到执行dbms_redefinition.finish_redef_table之前的时间里执行:DBMS_REDEFINITION.abort_redef_table(user, 't', 't_new')以放弃执行在线重定义。
10、如果出现以下错误:
SQL> exec dbms_redefinition.can_redef_table(user, 't');
BEGIN dbms_redefinition.can_redef_table(user, 't'); END;
*
ERROR at line 1:
ORA-12091: cannot online redefine table "user"."t" with
materialized views
ORA-06512: at "SYS.DBMS_REDEFINITION", line 137
ORA-06512: at "SYS.DBMS_REDEFINITION", line 1478
ORA-06512: at line 1
用这句删除materialized view 即可继续进行
drop materialized view log on <tablename>;
drop materialized view log on t;
OR drop materialized t;
附:
原文地址:http://www.blogjava.net/willpower88/archive/2007/04/19/111987.html
分享到:
相关推荐
《Ora 9i SQL参考手册》是Oracle公司为9i数据库系统提供的SQL语言权威指南,旨在帮助数据库管理员、开发人员以及SQL用户深入理解和高效使用9i版本的SQL语句。Oracle 9i(第9代)是Oracle数据库的一个重要里程碑,它...
【ora9i性能调整3】是关于Oracle 9i数据库性能优化的专业教程,主要针对OCP(Oracle Certified Professional)考试中的性能调整部分。这个主题涵盖了数据库性能的关键方面,旨在帮助数据库管理员(DBAs)提升系统...
12. **分区与分片**:为了管理和优化大规模数据,Oracle 9i支持表和索引的分区,以及数据库的分片,这有助于提高查询性能和简化管理。 13. **备份与恢复**:Oracle 9i提供了全面的备份和恢复策略,包括在线备份、...
《Ora9i数据库管理员指南》是一本专为Oracle数据库管理员设计的详尽教程,旨在帮助读者深入理解和熟练掌握Oracle 9i数据库的管理和维护。这本书涵盖了数据库的基础知识、安装配置、性能优化、备份恢复、安全性管理等...
11. **分区表**:Oracle 9i引入了分区表的概念,将大表分成多个逻辑部分,以提高查询性能和管理效率。 12. **安全性**:Oracle 9i提供了用户管理和权限控制,通过`GRANT`和`REVOKE`语句分配和撤销用户的数据库访问...
【ora9i性能调整】是Oracle数据库9i版本的一个核心主题,主要关注如何优化数据库的运行效率,提高系统响应时间和吞吐量。Oracle 9i是Oracle公司在2001年发布的重要数据库版本,它引入了许多性能提升的技术和特性。在...
Oracle 9i的性能优化涉及索引、分区、内存管理等多个方面。理解`v$视图`和`AWR`报告可以帮助监控和调整系统性能。 13. **备份和恢复**: 了解如何使用RMAN(Recovery Manager)进行数据库备份和恢复,以应对可能...
Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值为TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据。 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级...
Oracle 9i是一款由甲骨文公司推出的数据库管理系统,它在当时是Oracle数据库的一个重要版本,提供了许多新的特性和改进。以下将详细讲解Oracle 9i的安装、配置、管理和相关知识点。 一、安装Oracle 9i 1. 系统需求...
- 分区表:Oracle 9i引入了分区表,允许大型表按逻辑分割,提高查询性能。 - 游标:用于逐行处理查询结果,是程序化SQL的关键部分。 - 触发器:在特定数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行的...
Oracle9i 是Oracle公司推出的数据库管理系统的一个重要版本,它的全称是Oracle Database 9i,主要专注于提高数据管理和网络通信的效率。本基础教程旨在帮助初学者理解和掌握Oracle9i的核心概念、安装配置以及基本...
《ORACLE9i官方培训文档——数据库管理基础 II》是一份深入学习Oracle 9i数据库管理系统的重要资料,适合对数据库管理有一定基础或者想要提升这方面技能的读者。文档分为英文版和中文版,对于英语不太熟练的读者,...
Oracle 9i是Oracle数据库的一个重要版本,它引入了许多新特性和改进,使得SQL在数据管理和分析上的效率得到显著提升。以下将详细介绍该书涵盖的关键知识点。 1. SQL基础:本书首先会介绍SQL(Structured Query ...
Oracle 9i数据库是Oracle公司推出的数据库管理系统,它在当时是一个重要的版本,引入了许多创新功能,增强了性能和可管理性。本教程旨在帮助初学者和有一定经验的IT专业人士深入理解Oracle 9i数据库的核心概念、管理...
Oracle 9i是Oracle公司推出的一个重要版本,它在性能、可扩展性和安全性方面都有显著提升,对数据库管理和开发人员来说,理解和掌握其核心概念和技术至关重要。 首先,安装Oracle 9i是成为DBA的第一步。这个过程...
Oracle 9i提供了一套工具和方法,如SQL*Profiler和 tkprof 用于找出性能瓶颈,通过调整SQL语句、创建索引、优化表分区等方式提升查询速度。 此外,Oracle 9i的互联网特性也值得一提,如支持XML和Web服务,使数据库...
- **分区表**:增强的分区技术使得大型表的管理和查询更为高效,通过将表分成较小的逻辑部分,可以提高查询速度和维护性能。 - **数据仓库优化**:Oracle 9i增加了对数据仓库的优化,如星型和雪花模式的支持,以及...
8. **事务和并发控制**:Oracle 9i采用多版本并发控制(MVCC),通过回滚段和重做日志保证事务的一致性。理解提交、回滚和保存点的概念,以及锁定机制对于多用户环境的管理至关重要。 9. **备份与恢复**:Oracle 9i...
本讲座将深入探讨Oracle9i的核心概念、安装与配置、数据存储、SQL查询、表空间管理、备份与恢复、性能优化以及安全性控制等多个方面。 一、Oracle9i核心概念 Oracle9i的基础是关系数据库模型,它以表格形式存储数据...
Oracle 9i是Oracle公司推出的第9个主要版本,它在数据管理、性能优化、网络支持以及安全性等方面都有显著提升,对数据库管理员(DBA)来说,理解其特性和功能至关重要。 1. 数据库安装与配置:Oracle 9i的安装过程...