Oracle分区表转换
Oracle普通表—>分区表转换(9亿数据量)
背景介绍:
环境:Linux 5.5 + Oracle 10.2.0.4
某普通表T,由于前期设计不当没有分区,如今几年来的数据量已达9亿+, 空间占用大约350G,在线重定义为分区表不现实,故采取申请时间窗口停此表应用,改造为分区表。
若T表数据量适当,可选用在线重定义操作时,可参考:http://www.cnblogs.com/jyzhao/p/3876634.html
1.创建分区表
-- Create table 创建分区表T_PART,分区从14年6月开始。
|
1
2
3
4
5
6
7
8
|
create table T_PART(……)partition by range(time_stamp)( partition P20140601 values less than (TO_DATE(' 2014-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace DBS_D_JINGYU); |
使用分区添加工具添加到15年6月份。
2.设置新建分区表为nologging, 重命名原表T为T_OLD
|
1
2
3
|
alter table t_part nologging;rename T to T_old; |
3.并行直接路径插入
|
1
|
alter session enable parallel dml; |
|
1
2
3
|
insert /*+ append parallel(p,10) */ into t_part p select /*+ parallel(n,10) */ * from T_old n;commit; |
查看下insert的执行计划,确定都能用到并行度。
|
1
|
explain plan for insert /*+ append parallel(p,10) */ into t_part p select /*+ parallel(n,10) */ * from T_old n; |
执行插入脚本
|
1
2
3
4
5
6
7
8
9
10
11
|
SQL> @/home/oracle/insert~~~~~~~~~~~~~~~~~~~~~~~~~已创建908792694行。已用时间: 02: 09: 37.94提交完成。已用时间: 00: 08: 13.76 |
4.为分区表建立索引
4.1 重命名历史表的索引名
|
1
2
3
4
|
alter index PK_T rename to PK_T_bak;alter table T_old rename constraint PK_T to PK_T_bak;alter index IDX_T_2 rename to IDX_T_2_bak;alter index IDX_T_3 rename to IDX_T_3_bak; |
4.2 给新分区表T_PART创建主键及索引
|
1
2
3
4
5
6
|
create unique index PK_T on T_PART(OID, TIME_STAMP, SERIAL_NO, CITY_ID) local tablespace DBS_I_JINGYU nologging parallel 32;索引已创建。已用时间: 04: 39: 53.10alter table T_PART add constraint PK_T primary key (OID, TIME_STAMP, SERIAL_NO, CITY_ID);表已更改。已用时间: 00: 00: 00.43 |
|
1
2
3
4
5
6
|
create index IDX_T_2 on T_PART (TIME_STAMP, SERIAL_NO, CITY_ID) local tablespace DBS_I_JINGYU nologging parallel 32;索引已创建。已用时间: 02: 27: 49.92create index IDX_T_3 on T_PART (TIME_STAMP, CITY_ID) local tablespace DBS_I_JINGYU nologging parallel 32;索引已创建。已用时间: 02: 19: 06.74 |
4.3 修改索引和表为logging,noparallel
|
1
2
3
4
|
alter index PK_T logging noparallel;alter index IDX_T_2 logging noparallel;alter index IDX_T_3 logging noparallel;alter table T_PART logging; |
4.4 遇到的问题
建立唯一性索引时报错:
|
1
2
3
4
5
6
7
|
SQL> create unique index PK_T on T_PART(OID, TIME_STAMP, SERIAL_NO, CITY_ID) local tablespace dbs_i_jingyu nologging parallel 32;create unique index PK_T on T_PART(OID, TIME_STAMP, SERIAL_NO, CITY_ID) local tablespace dbs_i_jingyu nologging parallel 32ORA-12801: 并行查询服务器 P000 中发出错误信号ORA-01652: 无法通过 128 (在表空间 TMP 中) 扩展 temp 段 |
解决方式:增加临时表空间大小
|
1
2
3
4
5
|
alter tablespace TMP add tempfile '/usr3/oradata2/sysdata/tmp02.dbf' size 30G;alter tablespace TMP add tempfile '/usr3/oradata2/sysdata/tmp03.dbf' size 30G;alter tablespace TMP add tempfile '/usr3/oradata2/sysdata/tmp04.dbf' size 30G; |
5.rename表,恢复T表的相关应用
rename T_PART为T,恢复T表应用。
|
1
|
rename T_PART to T; |
根据实际情况决定是否彻底drop掉T_OLD,释放空间。
|
1
|
drop table T_OLD purge; |
Bootstrap开发漂亮的前端界面之实现原理
Oracle分区表转换的更多相关文章
- 深入学习Oracle分区表及分区索引
关于分区表和分区索引(About Partitioned Tables and Indexes)对于10gR2而言,基本上可以分成几类: • Range(范围)分区 • Has ...
- oracle 分区表和分区索引
很复杂的样子,自己都没有看完,以备后用 http://hi.baidu.com/jsshm/item/cbfed8491d3863ee1e19bc3e ORACLE分区表.分区索引ORACLE对于分区 ...
- ORACLE分区表、分区索引详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt160 ORACLE分区表.分区索引ORACLE对于分区表方式其实就是将表分段 ...
- 【三思笔记】 全面学习Oracle分区表及分区索引
[三思笔记]全面学习Oracle分区表及分区索引 2008-04-15 关于分区表和分区索引(About PartitionedTables and Indexes) 对于 10gR2 而言,基本上可 ...
- 探讨Oracle分区表
一年又一年,又到年底了,对于数据库的分区表需要检查一下,有无最大分区,次分区是否需要追加分区,如果程序不是自动追加分区的话,那么年中结算的时候,就会报错. 1.oracle分区主要有五种类型 (1)R ...
- (转)Oracle分区表和索引的创建与管理
今天用到了Oracle表的分区,就顺便写几个例子把这个表的分区说一说: 一.创建分区表 1.范围分区 根据数据表字段值的范围进行分区 举个例子,根据学生的不同分数对分数表进行分区,创建一个分区表如下: ...
- Oracle 分区表管理之组合分区(分区索引失效与性能比较)
整体结构如下: Oracle 分区表管理之组合分区(分区索引失效与性能比较) 虽然老早就使用了分区表,终于有时间写有关分区表的内容:不是所有的场景数据量变大需要用到分区表,一般单表数据超过2g可以考 ...
- 谈一下如何设计Oracle 分区表
在谈设计Oracle分区表之间先区分一下分区表和表空间的个概念: 表空间:表空间是一个或多个数据文件的集合,所有数据对象都存放在指定的表空间中,但主要存放表,故称表空间. 分区表:分区致力于解决支持极 ...
- SQL Server 2005中的分区表(六):将已分区表转换成普通表(转)
我的俄罗斯名叫作“不折腾不舒服斯基”,所以,不将分区表好好折腾一下,我就是不舒服. 在前面,我们介绍过怎么样直接创建一个分区表,也介绍过怎么将一个普通表转换成一个分区表.那么,这两种方式创建的表有什么 ...
随机推荐
- nodejs显现events.js:72抛出错误
随着人们开始学习,我用nodejs过程中遇到如下列错误执行: events.js:72 throw er; // Unhandled 'error' event ^ Error: listen EAD ...
- SQL Server 2005,2008 正则表达式 替换函数应用详解
CREATE function dbo.regexReplace ( @source ntext, --原字符串 ), --正则表达式 ), --替换值 , --是否是全局替换 --是否忽略大小写 ) ...
- 【夯实基础】javakeywordsynchronized 详细说明
尊重版权:http://www.cnblogs.com/GnagWang/archive/2011/02/27/1966606.html Java语言的keyword.当它用来修饰一个方法或者一个代码 ...
- Codeforces 442B Andrey and Problem(贪婪)
题目链接:Codeforces 442B Andrey and Problem 题目大意:Andrey有一个问题,想要朋友们为自己出一道题,如今他有n个朋友.每一个朋友想出题目的概率为pi,可是他能够 ...
- net开发过程中Bin目录net开发过程中Bin目录下面几种文件
.net开发过程中Bin目录下面几种文件格式的解释 在.NET开发中,我们经常会在bin目录下面看到这些类型的文件: .pdb..xsd..vshost.exe..exe..exe.config..v ...
- linux处置服务Iptables
一:Iptables防火墙服务 iptables分为两个部分:一个部分在内核中实现,一个为用户接口命令iptables,用户通过该命令来改动防火墙的功能.所以,iptables要使用对应的功能.必需要 ...
- Python中国的学习方式处理问题
a = '你们' 至 str 物 a = u'你们' 至 unicode 物 1. >>> print 'u' + '你们' >>> u欢 输出乱码 2. > ...
- Codeforces Round #216 (Div. 2) E. Valera and Queries (BIT)
标题效果: 给很多分布 x 行轴. 然后给出了一个非常的多点集,问该组点分布多少不同段. IDEAS: 分散成多个线段点集的. 给出的线段的话,也就是说这个点集上不会有点在这条线段上. 所以我们就是求 ...
- 基于docker构建jenkins和svn服务(转)
码农们很定都知道svn的重要性,机器坏掉丢代码的惨痛教训想必很多人都有. jenkins可能很多人都不了解.这是一个持续集成的工具,在敏捷开发领域很流行:跟svn结合可以实现定期build.check ...
- Android.9图片评论(一个)
什么是.9图片 至于什么是.9图片这里就简单提一下,即图片后缀名前有.9的图片,如pic.9.png.pic1.9.jgp,诸如此类的图片就称为.9图片. .9图片的作用 ①.9图片的作用是在图片拉伸 ...