非分区表与分区表相互转换
1.非分区表转分区表
(1)--普通表
table T1
(
OBJECT_ID NUMBER not null,
OBJECT_NAME VARCHAR2(128),
OWNER VARCHAR2(30),
STATUS VARCHAR2(7)
--分区表
create table PT1
(
OBJECT_ID NUMBER,
OBJECT_NAME VARCHAR2(128),
OWNER VARCHAR2(30),
STATUS VARCHAR2(7)
)
partition by hash (OBJECT_ID)
(
partition SYS_P105
tablespace DATA
);
(2)-
SQL> select count(*) from t1;
COUNT(*)
----------
29218402
SQL> select count(*) from pt1;
COUNT(*)
----------
0
(3)--在线检查是否符合分区的条件
SQL> EXEC DBMS_REDEFINITION.CAN_REDEF_TABLE(user, 'T1', DBMS_REDEFINITION.CONS_USE_PK);
(4)--开始在线定义SQL> EXEC DBMS_REDEFINITION.START_REDEF_TABLE(USER, 'T1','PT1');
执行完这个命令后可以看到后台变为(多了一份表的容量)
以及在当前schema表下可以看到多了两个表MLOG$_T1,RUPD$_T1;
SQL> select count(*) from t1;
COUNT(*)
----------
29218402
Elapsed: 00:00:00.60
SQL> select count(*) from pt1;
COUNT(*)
----------
29218402
(5)--在向t1表插入两行数据;
SQL> insert into t1
2 select sequence1.nextval,object_name,owner,status from dba_objects
3 where rownum<3;
2 rows created.
SQL> select count(*) from t1;
COUNT(*)
----------
29218404
Elapsed: 00:00:00.60
SQL> select count(*) from pt1;
COUNT(*)
----------
29218402
(5)执行两表数据同步--exec dbms_redefinition.sync_interim_table(USER, 'T1','PT1');
SQL> select count(*) from t1;
COUNT(*)
----------
29218404
Elapsed: 00:00:00.60
SQL> select count(*) from pt1;
COUNT(*)
----------
29218404
(6)结束--EXEC DBMS_REDEFINITION.FINISH_REDEF_TABLE(user,'T1','PT1');
再后台可以看到pt1与t1进行自动相互转换名字;
create table T1
(
OBJECT_ID NUMBER,
OBJECT_NAME VARCHAR2(128),
OWNER VARCHAR2(30),
STATUS VARCHAR2(7)
)
partition by hash (OBJECT_ID)
(
partition SYS_P105
tablespace DATA
);
2--------------------------------------------------------------分区转非分区(exchange)------------------------------------------------------------
例子alter table pt1
exchange partition sys_p105 with table t1;--将t1的内容转化到PT1的单个分区sys_p105中
再次执行上面的命令,可将分区表的内容转回t1表;
注意:当出现分区表中有多个分区表含数据时
执行分区转分区按上面的命令会报错,这种 情况可以先将分区表进行coalesce到一个分区为止再进行转换;
ALTER TABLE pt1
COALESCE PARTITION
非分区表与分区表相互转换相关推荐
- oracle 分区表转换,Oracle 12.2之后ALTER TABLE .. MODIFY转换非分区表为分区表
Oracle 12.2之后ALTER TABLE .. MODIFY转换非分区表为分区表 发布时间:2020-08-08 06:57:47 来源:ITPUB博客 阅读:77 作者:你好我是李白 说明 ...
- DM巧用分区交换将非分区表转换为分区表
在实际业务中,随着时间推移,表的数据量越来越大,影响了业务的读写性能:而如果表在设计之初使用的是普通表,没有使用分区表,此时随着系统的减慢,则考虑将大表转化为分区表. 非区分表转换为分区表的方法有多种 ...
- oracle 10g分区表,oracle10g-11gR2 分区表汇总一
在oracle10g(在10.2.0.4中测试)中:分区表共分为:range.list.hash,复合分区可以是:range-list.range-hash 测试之前先创建4个表空间tbs_1,tbs ...
- 14.PG分区表-传统分区表
前言 一.PG分区表-传统分区表 pg10版本之前pg分区表一般通过继承加触发器方式实现,这种分区方式不能算是内置分区表,而且步骤非常繁琐. pg10版本一个重量级的新特性是支持内置分区表.pg10支 ...
- hive 创建分区表 删除分区表 插入分区表
目录 创建分区表 插入分区表 删除分区表 创建分区表 CREATE TABLE IF NOT EXISTS test( a string,b string )PARTITIONED BY (c str ...
- 非分区表转换为分区表的三种方式
创建测试环境 --创建非分区表 CREATE TABLE T_NOPARTITIONTAB( ID INT, NAME VARCHAR(20)); --插入测试数据 beginfor i in 1.. ...
- 6.3、分区表、分区表索引--Oracle模式对象
分区: (1).一种分区技术,可以在创建表时应用分区技术,将数据以分区形式保存. (2).可以将巨型表或索引分割成相对较小的.可独立管理的部分. (3).表分区时必须为表中的每一条记录指定所属分区. ...
- oracle 10g分区表,oracle10g--11gR2分区表汇总四
3.2.7.2 (分区表enable)-(非分区表diable keep index)-exchange--exchange 解释: 首先:分区表primary key是enable的,非分区表pri ...
- mysql8分区表_MySQL 分区表
MySQL分区就是将一个表分解为多个更小的表.从逻辑上讲,只有一个表或一个索引,但在物理上这个表或者索引可能由多个物理分区组成.每个分区在物理上都是独立的.MySQL数据库分区类型:Range分区:行 ...
最新文章
- 采用TurboGate邮件网关防止企业邮箱被盗用
- 千万别只顾着代码不上厕所
- 差异备份、增量备份、完全备份的区别
- 解读金山网盾3.5 0day漏洞免疫技术
- oracle导入初始数据死机,Sqoop导入Oracle数据至hive卡死在hive.HiveImport: Connecting to jdbc:hive2不执行...
- “高仿版拼多多”宣告破产!曾一年收割1.3亿用户,如今自救失败负债16亿
- vue 入门环境搭建
- find命令使用方法
- jquery click()方法模拟点击事件对a标签不生效的解决办法
- 账龄分析表excel模板_老会计分享财务报表及EXCEL会计报表分析系统模板!收藏领取!...
- 解决永中集成office和opera的中文输入问题
- STM8S_007_片内FLASH和EEPROM编程
- python十进制转换_python 十进制转换成任意进制
- 计算机编程语言排行榜—TIOBE世界编程语言排行榜(2020年6月份最新版)
- 手机计算机dj音乐,教你如何用手机制作电子音乐
- DB2怎么根据开始和结束时间算相隔天数
- MySQL 8.0 安装教程
- Linux实用的快捷键
- python3从零学习-5.3.2、复数库cmath
- jupyter kernel