oracle 11g 将非分区表转换为分区表在线重定义
- --操作的用户需要有以下的权限
- GRANT CONNECT, RESOURCE TO CMIGDW;
- GRANT EXECUTE ON DBMS_REDEFINITION TO CMIGDW;
- GRANT ALTER ANY TABLE TO CMIGDW;
- GRANT DROP ANY TABLE TO CMIGDW;
- GRANT LOCK ANY TABLE TO CMIGDW;
- GRANT CREATE ANY TABLE TO CMIGDW;
- GRANT SELECT ANY TABLE TO CMIGDW;
- GRANT CREATE ANY TRIGGER TO CMIGDW;
- GRANT CREATE ANY INDEX TO CMIGDW;
- --需要分区的表
- select * from CMIGDW.TEST_DATE_DIM;
- --表结构
- create table TEST_DATE_DIM
- (
- date_id NUMBER,
- year_ NUMBER,
- half_year VARCHAR2(20),
- season_id VARCHAR2(20),
- season VARCHAR2(20),
- month_ NUMBER,
- week NUMBER
- );
- --创建一个与TEST_DATE_DIM 表字段相同,但是分区的表
- create table TEST_DATE_DIM2
- (
- date_id NUMBER,
- year_ NUMBER,
- half_year VARCHAR2(20),
- season_id VARCHAR2(20),
- season VARCHAR2(20),
- month_ NUMBER,
- week NUMBER
- )
- PARTITION BY list (month_)
- (
- PARTITION P1 values (201501),
- PARTITION P2 values (201502),
- PARTITION P3 values (default)
- );
- --开始在线重定义
- Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0
- Connected as CMIGDW@CMIG_TEST
- SQL> EXEC dbms_redefinition.start_redef_table('CMIGDW', 'TEST_DATE_DIM', 'TEST_DATE_DIM2');
- begin dbms_redefinition.start_redef_table('CMIGDW', 'TEST_DATE_DIM', 'TEST_DATE_DIM2'); end;
- ORA-12089: 不能联机重新定义无主键的表 "CMIGDW"."TEST_DATE_DIM"
- ORA-06512: 在 "SYS.DBMS_REDEFINITION", line 56
- ORA-06512: 在 "SYS.DBMS_REDEFINITION", line 1490
- ORA-06512: 在 line 1
需要有主键- --开始执行在线重定义
- SQL> EXEC dbms_redefinition.start_redef_table('CMIGDW', 'TEST_DATE_DIM', 'TEST_DATE_DIM2');
- PL/SQL procedure successfully completed
- SQL>
- SQL> DECLARE
- 2 error_count pls_integer := 0;
- 3 BEGIN
- 4 dbms_redefinition.copy_table_dependents('CMIGDW', 'TEST_DATE_DIM', 'TEST_DATE_DIM2',
- 5 0, true, false, true, false,
- 6 error_count);
- 7
- 8 dbms_output.put_line('errors := ' || to_char(error_count));
- 9 END;
- 10 /
- PL/SQL procedure successfully completed
- --结束在线重定义
- SQL> EXEC dbms_redefinition.finish_redef_table('CMIGDW', 'TEST_DATE_DIM', 'TEST_DATE_DIM2');
- PL/SQL procedure successfully completed
- SQL> select * from TEST_DATE_DIM PARTITION (p1);
- SQL> select * from TEST_DATE_DIM2;
- -- 删除中间表
- DROP TABLE TEST_DATE_DIM2;
oracle 11g 将非分区表转换为分区表在线重定义的更多相关文章
- Oracle在线重定义DBMS_REDEFINITION 普通表—>分区表
实验环境:RHEL 6.4 + Oracle 11.2.0.3实验:在线重定义 普通表 为 分区表,包括主键对应的索引都改造为分区索引. 1,构造普通表t_objects conn test1/tes ...
- oracle在线重定义表
在一个高可用系统中,如果需要改变一个表的定义是一件比较棘手的问题,尤其是对于7×24系统.Oracle提供的基本语法基本可以满足一般性修改,但是对于把普通堆表改为分区表,把索引组织表修改为堆表等操作就 ...
- (Oracle)已有数据表建立表分区—在线重定义
今天在做数据抽取的时候,发现有一张业务表数据量达到了5000W,所以就想将此表改为分区表.分区表的有点如下: 1.改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度.2.增强可用性: ...
- Oracle在线重定义(online redefinition)--将普通表改为分区表
使用Oracle的在线重定义技术,可以将Oracle的普通表改为分区表.操作如下: STEP1:测试表是否可以在线重定义,这里以unixdev数据库的LIJIAMAN.BSTEST为例 EXEC DB ...
- oracle普通表转分区表(在线重定义方式)
1.1.TAB_TAOBAO_BILL 1.1.1检查下这张表是否可以在线重定义,无报错表示可以,报错会给出错误信息: exec dbms_redefinition.can_redef_table(' ...
- Oracle 在线重定义表分区
==================原始表================原始表=====================原始表 create table BUILDING_temp(building ...
- 基于 dbms_redefinition 在线重定义表
Oracle 支持在线重定义表,也就是说我们可以在修改表结构(DDL)的同时进行相关的DQL.DML操作,使得前端的DML根本感觉不到表结构实际上已经发生了变化,对于用户而言是完全透明的.当然在线重定 ...
- dbms_redefinition在线重定义表结构 可以在表分区的时候使用
dbms_redefinition在线重定义表结构 (2013-08-29 22:52:58) 转载▼ 标签: dbms_redefinition 非分区表转换成分区表 王显伟 在线重定义表结构 在线 ...
- dbms_redefinition在线重定义表结构
dbms_redefinition在线重定义表结构 (2013-08-29 22:52:58) 转载▼ 标签: dbms_redefinition 非分区表转换成分区表 王显伟 在线重定义表结构 在线 ...
随机推荐
- HDU 5038 Grade (水题,坑题)
题意:给 n 个数,输出众数,但是如果所有的频率都相同但数不同输出 Bad Mushroom. 析:直接记录个数直接暴力就,就是要注意只有一种频率的时候. 代码如下: #pragma comment( ...
- Promise 异步函数顺序执行
可以满足需求,且使用方法和Promise.all统一 var a = function() { return new Promise(function(resolve, reject) { setTi ...
- CSS效果:图片切换
HTML: <html lang="en"> <head> <meta charset="UTF-8"> <meta ...
- 线段树 SP1043 GSS1 - Can you answer these queries I
SP1043 GSS1 - Can you answer these queries I 题目描述 给出了序列A[1],A[2],-,A[N]. (a[i]≤15007,1≤N≤50000).查询定义 ...
- 数据结构28:广义表及M元多项式
广义表,又称为列表.记作: LS = (a1,a2,…,an) ;( LS 为广义表的名称, an 表示广义表中的数据). 广义表可以看作是线性表的推广.两者区别是:线性表中的数据元素只能表示单个数据 ...
- FlowLayout(流式布局)用法
https://blog.csdn.net/liujun13579/article/details/7771191
- apache 日志分割
Window apache 全局设置日志分割 apache [ httpd.conf ] 配置文件 开启日志模块:LoadModule log_config_module modules/mod ...
- [USACO18JAN]Cow at Large G(树形DP)
P4186 [USACO18JAN]Cow at Large G(树形DP) Luogu4186 设dp[i]表示i点需要放多少个农民.则有 \(if(near[i]-dep[i]<=dep[i ...
- C/C++中qsort()以及sort()的用法
最近学弟们问快速排序的比较多,今天自己就做一下总结,快速排序在库函数里面有现成的,不用自己实现,调用一下就可以达到自己想要的结果,掌握以后就可以完全摒弃冒泡和选择了,并且时间复杂度也从O(n*n)提升 ...
- poj3040 发工资(贪心)
题目传送门 题目大意:给一个人发工资,给出不同数量不同面额,(大面额一定是小面额的倍数),问最多能发几天,(每天实发工资>=应发工资). 思路:首先,将大于等于c的面额的钱直接每个星期给奶牛一张 ...