1.1.TAB_TAOBAO_BILL
1.1.1检查下这张表是否可以在线重定义,无报错表示可以,报错会给出错误信息:
exec dbms_redefinition.can_redef_table('ycheng', 'P_TAB_TAOBAO_BILL');
 
1.1.2.expdp导出表进行备份(这里的DATA_PUMP_1目录是/data1/dpdump)
expdp \'\/ as sysdba\' directory=DATA_PUMP_1 tables=TAB_TAOBAO_BILL dumpfile=ycheng_TAB_TAOBAO_BILL0914.dmp logfile=ycheng_TAB_TAOBAO_BILL0914.log parallel=2;
 
 
1.1.3检查TAB_GS_BAG表使用的表空间使用率(这里检查表空间是否充裕,如果表空间不足,执行1.1.4,增加表空间)
SELECT D.TABLESPACE_NAME,
SPACE || 'M' "SUM_SPACE(M)",
BLOCKS "SUM_BLOCKS",
SPACE - NVL (FREE_SPACE, 0) || 'M' "USED_SPACE(M)",
ROUND ( (1 - NVL (FREE_SPACE, 0) / SPACE) * 100, 2) || '%'
"USED_RATE(%)",
FREE_SPACE || 'M' "FREE_SPACE(M)"
FROM ( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE,
SUM (BLOCKS) BLOCKS
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) D,
( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES) / (1024 * 1024), 2) FREE_SPACE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
UNION ALL
SELECT D.TABLESPACE_NAME,
SPACE || 'M' "SUM_SPACE(M)",
BLOCKS SUM_BLOCKS,
USED_SPACE || 'M' "USED_SPACE(M)",
ROUND (NVL (USED_SPACE, 0) / SPACE * 100, 2) || '%' "USED_RATE(%)",
NVL (FREE_SPACE, 0) || 'M' "FREE_SPACE(M)"
FROM ( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE,
SUM (BLOCKS) BLOCKS
FROM DBA_TEMP_FILES
GROUP BY TABLESPACE_NAME) D,
( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES_USED) / (1024 * 1024), 2) USED_SPACE,
ROUND (SUM (BYTES_FREE) / (1024 * 1024), 2) FREE_SPACE
FROM V$TEMP_SPACE_HEADER
GROUP BY TABLESPACE_NAME) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
ORDER BY 1;
 
 
1.1.4增加表空间
ALTER TABLESPACE USERS ADD DATAFILE '/data1/ycmain/USERS20160914.dbf' SIZE 31G;
 
1.2 创建YCHENG.P_TAB_TAOBAO_BILL中间表
create table P_TAB_TAOBAO_BILL
(
tx_logistic_id VARCHAR2(64) not null,
trade_no VARCHAR2(64),
bill_code VARCHAR2(64),
flag NUMBER,
create_date DATE default sysdate not null,
status NUMBER(2) default 0 not null,
rec_site VARCHAR2(30),
rec_man VARCHAR2(30),
rec_bill_man VARCHAR2(30),
rec_date DATE,
accept_date DATE,
send_site VARCHAR2(30),
send_man VARCHAR2(30),
send_date DATE,
bl_cancel NUMBER(1) default 0 not null,
cancel_date DATE,
cancel_desc VARCHAR2(215),
bl_dispart NUMBER(1) default 0 not null,
prepare_site VARCHAR2(400),
name VARCHAR2(120),
address VARCHAR2(256),
post_code VARCHAR2(20),
phone VARCHAR2(32),
mobile VARCHAR2(32),
prov VARCHAR2(64),
city VARCHAR2(64),
county VARCHAR2(64),
send_start_time DATE,
send_end_time DATE,
item_name VARCHAR2(256),
piece NUMBER,
special NUMBER,
remark VARCHAR2(512),
insurance_value NUMBER,
package_or_not NUMBER(1),
send_name VARCHAR2(120) not null,
send_address VARCHAR2(256) not null,
send_post_code VARCHAR2(20),
send_phone VARCHAR2(32),
send_mobile VARCHAR2(32),
send_prov VARCHAR2(64) not null,
send_city VARCHAR2(64) not null,
send_county VARCHAR2(64) not null,
cancel_site VARCHAR2(30),
cancel_man VARCHAR2(30),
rec_goods_man VARCHAR2(30),
message VARCHAR2(100),
customer_id VARCHAR2(64),
goods_value NUMBER(10,2),
items_value NUMBER,
companyname VARCHAR2(110),
send_companyname VARCHAR2(110),
total_weight NUMBER(10,2),
total_volume NUMBER(10,2),
pay_type VARCHAR2(10),
transport_price NUMBER default 0.0,
insurance_price NUMBER,
package_service VARCHAR2(32),
package_service_price NUMBER,
other_price NUMBER,
total_price NUMBER,
promotion VARCHAR2(500),
member_type VARCHAR2(32),
business_network_no VARCHAR2(32),
gmt_commit DATE,
gmt_updated DATE,
logistic_company_id VARCHAR2(32),
schedule_type NUMBER,
order_flag VARCHAR2(32),
tms_service_code VARCHAR2(64),
logisticproviderid VARCHAR2(20),
opt_date DATE,
opt_man VARCHAR2(64),
other7 NUMBER(10,2),
other9 VARCHAR2(30),
wmsaddress VARCHAR2(500),
other8 VARCHAR2(3),
other10 VARCHAR2(30),
logistype VARCHAR2(30),
eccompanyid VARCHAR2(64),
total_service_fee NUMBER(9,2),
buy_service_fee NUMBER(9,2),
cod_split_fee NUMBER(9,2),
type VARCHAR2(5),
ordertype NUMBER,
servicetype NUMBER,
seq NUMBER,
send_company VARCHAR2(110),
is_beyond NUMBER(1),
guid VARCHAR2(36),
cus_id VARCHAR2(36),
weight_rate NUMBER(5,2),
volume_rate NUMBER(5,2),
least_expenses NUMBER,
transport_type VARCHAR2(20),
vist_receive VARCHAR2(1),
vist_receive_price NUMBER(8,2),
delivery_type VARCHAR2(2),
delivery_price NUMBER(8,2),
cod_type VARCHAR2(2),
cod_price NUMBER(8,2),
back_signbill VARCHAR2(2),
back_signbill_price NUMBER(8,2),
wait_notifysend VARCHAR2(2),
wait_notifysend_price NUMBER(8,2),
sms_notify VARCHAR2(1),
sms_notify_price NUMBER(8,2),
fuelsurcharge VARCHAR2(1),
fuelsurcharge_price NUMBER(8,2),
duty_site VARCHAR2(30),
modifier VARCHAR2(30),
modify_site VARCHAR2(30),
modify_code VARCHAR2(30),
destination VARCHAR2(50),
favourable_bill VARCHAR2(50),
bl_order_status NUMBER(1),
online_price NUMBER(10,2),
sign_status VARCHAR2(20),
bl_insurance NUMBER(1),
creater_man VARCHAR2(30),
creater_site VARCHAR2(30),
creater_code VARCHAR2(30),
rec_bill_code VARCHAR2(30),
bl_depute NUMBER(1),
bl_tms_control NUMBER(1),
ordersource VARCHAR2(10)
)
partition by range(create_date)
interval (numtoyminterval(1,'month'))
(
partition TAB_TAOBAO_BILL_2014_12 values less than (TO_DATE(' 2015-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2015_01 values less than (TO_DATE(' 2015-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2015_02 values less than (TO_DATE(' 2015-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2015_03 values less than (TO_DATE(' 2015-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2015_04 values less than (TO_DATE(' 2015-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2015_05 values less than (TO_DATE(' 2015-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2015_06 values less than (TO_DATE(' 2015-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2015_07 values less than (TO_DATE(' 2015-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2015_08 values less than (TO_DATE(' 2015-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2015_09 values less than (TO_DATE(' 2015-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2015_10 values less than (TO_DATE(' 2015-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2015_11 values less than (TO_DATE(' 2015-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2015_12 values less than (TO_DATE(' 2016-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2016_01 values less than (TO_DATE(' 2016-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2016_02 values less than (TO_DATE(' 2016-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2016_03 values less than (TO_DATE(' 2016-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2016_04 values less than (TO_DATE(' 2016-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2016_05 values less than (TO_DATE(' 2016-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2016_06 values less than (TO_DATE(' 2016-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2016_07 values less than (TO_DATE(' 2016-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2016_08 values less than (TO_DATE(' 2016-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2016_09 values less than (TO_DATE(' 2016-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2016_10 values less than (TO_DATE(' 2016-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2016_11 values less than (TO_DATE(' 2016-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2016_12 values less than (TO_DATE(' 2017-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2017_01 values less than (TO_DATE(' 2017-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2017_02 values less than (TO_DATE(' 2017-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2017_03 values less than (TO_DATE(' 2017-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2017_04 values less than (TO_DATE(' 2017-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2017_05 values less than (TO_DATE(' 2017-06-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2017_06 values less than (TO_DATE(' 2017-07-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2017_07 values less than (TO_DATE(' 2017-08-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2017_08 values less than (TO_DATE(' 2017-09-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2017_09 values less than (TO_DATE(' 2017-10-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2017_10 values less than (TO_DATE(' 2017-11-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2017_11 values less than (TO_DATE(' 2017-12-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2017_12 values less than (TO_DATE(' 2018-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS')),
partition TAB_TAOBAO_BILL_2018_01 values less than (TO_DATE(' 2018-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS'))
TABLESPACE "USERS";
 
 
1.3.1.删除索引
drop INDEX "YCHENG"."TAB_TAOBAO_BILL_I";
drop INDEX "YCHENG"."TAB_TAOBAO_BILL_I1";
drop INDEX "YCHENG"."TAB_TAOBAO_BILL_I2";
drop INDEX "YCHENG"."TAB_TAOBAO_BILL_I3";
drop INDEX "YCHENG"."TAB_TAOBAO_BILL_I4";
drop INDEX "YCHENG"."TAB_TAOBAO_BILL_I6";
drop INDEX "YCHENG"."TAB_TAOBAO_BILL_I7";
drop INDEX "YCHENG"."TAB_TAOBAO_BILL_I8";
drop INDEX "YCHENG"."TAB_TAOBAO_BILL_I9";
 
 
 
1.3.2.新建索引
-- Create/Recreate indexes
create index TAB_TAOBAO_BILL_I on P_TAB_TAOBAO_BILL (BILL_CODE)
nologging local;
 
create index TAB_TAOBAO_BILL_I1 on P_TAB_TAOBAO_BILL (CREATE_DATE, REC_SITE, STATUS)
nologging local;
 
create index TAB_TAOBAO_BILL_I2 on P_TAB_TAOBAO_BILL (CREATE_DATE, SEND_SITE, STATUS)
nologging local;
 
create index TAB_TAOBAO_BILL_I3 on P_TAB_TAOBAO_BILL (CREATE_DATE, BL_DISPART, STATUS)
nologging local;
 
create index TAB_TAOBAO_BILL_I4 on P_TAB_TAOBAO_BILL (CUSTOMER_ID)
nologging local;
 
create index TAB_TAOBAO_BILL_I6 on P_TAB_TAOBAO_BILL (MOBILE)
nologging local;
 
create index TAB_TAOBAO_BILL_I7 on P_TAB_TAOBAO_BILL (SEND_MOBILE)
nologging local;
 
create index TAB_TAOBAO_BILL_I8 on P_TAB_TAOBAO_BILL (SEND_PHONE)
nologging local;
 
create index TAB_TAOBAO_BILL_I9 on P_TAB_TAOBAO_BILL (ACCEPT_DATE, LOGISTICPROVIDERID)
nologging local;
 
CREATE INDEX ind_bill_status ON P_tab_taobao_bill ("REC_BILL_MAN", "STATUS") online nologging parallel 8;
 
 
1.4.1新建立主键
-- Create/Recreate primary, unique and foreign key constraints
alter table P_TAB_TAOBAO_BILL
add constraint P_TAB_TAOBAO_BILL_P primary key (TX_LOGISTIC_ID)
using index
tablespace USERS
 
1.42授权
grant select on TAB_TAOBAO_BILL to YCQUERY;
 
 
 
1.5启动在线重定义:
exec dbms_redefinition.start_redef_table('ycheng', 'TAB_TAOBAO_BILL', 'P_TAB_TAOBAO_BILL');
 
1.6.查看量表数据是否一致
select count(1) from YCHENG.TAB_TAOBAO_BILL;
select count(1) from YCHENG.P_TAB_TAOBAO_BILL;
 
 
1.7.使用dbms_redefinition包的sync_interim_table模块刷新数据后,中间表也可以看到数据更改(这里,当原表数据发生改变时,可用如下刷新同步数据)
--管理员权限执行sql命令行执行,同步两边数据
exec dbms_redefinition.sync_interim_table('ycheng', 'TAB_TAOBAO_BILL', 'P_TAB_TAOBAO_BILL');
--管理员权限执行sql命令行执行
 
 
 
1.8.结束在线重定义
--管理员权限执行sql命令行执行,结束重定义
exec dbms_redefinition.finish_redef_table('ycheng', 'TAB_TAOBAO_BILL', 'P_TAB_TAOBAO_BILL');
--管理员权限执行sql命令行执行
 
 
1.9.验证数据
select count(1) from YCHENG.TAB_TAOBAO_BILL;
select count(1) from YCHENG.P_TAB_TAOBAO_BILL;
 
 
1.10.查看各分区数据是否正确
select PARTITION_NAME from user_tab_partitions where table_name = 'TAB_TAOBAO_BILL';
select * from TAB_TAOBAO_BILL partition(TAB_TAOBAO_BILL_2016_12);
 
 
 
1.11.删掉中间表
drop table P_TAB_TAOBAO_BILL;
 
1.12.修改主键
alter table "YCHENG"."TAB_TAOBAO_BILL" drop constraint P_TAB_TAOBAO_BILL_P cascade drop index;
 
 
-- Create/Recreate primary, unique and foreign key constraints
alter table TAB_TAOBAO_BILL
add constraint TAB_TAOBAO_BILL_P primary key (TX_LOGISTIC_ID)
using index
tablespace USERS
 
 
1.13 收集TAB_TAOBAO_BILL分区表及相关对象的优化器统计信息
需要用到sys用户在SQLPLUS下进行操作
EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>'YCHENG',TABNAME=>'TAB_TAOBAO_BILL',ESTIMATE_PERCENT=>100,METHOD_OPT=>'FOR ALL COLUMNS SIZE AUTO',DEGREE=>2,NO_INVALIDATE=>FALSE,CASCADE=>TRUE);
 

oracle普通表转分区表(在线重定义方式)的更多相关文章

  1. oracle 11g 将非分区表转换为分区表在线重定义

    --操作的用户需要有以下的权限 GRANT CONNECT, RESOURCE TO CMIGDW; GRANT EXECUTE ON DBMS_REDEFINITION TO CMIGDW; GRA ...

  2. oracle 11g 通过在线重定义方式修改表结构

    今天因为要对一套数据库的数据抽取进行io优化,希望通过修改表结构将抽取io降下来,因为抽取只针对标签HAVE_FLAG为"0"的值进行抽取,抽取之后更新HAVE_FLAG为其他值, ...

  3. Oracle在线重定义(online redefinition)--将普通表改为分区表

    使用Oracle的在线重定义技术,可以将Oracle的普通表改为分区表.操作如下: STEP1:测试表是否可以在线重定义,这里以unixdev数据库的LIJIAMAN.BSTEST为例 EXEC DB ...

  4. 基于 dbms_redefinition 在线重定义表

    Oracle 支持在线重定义表,也就是说我们可以在修改表结构(DDL)的同时进行相关的DQL.DML操作,使得前端的DML根本感觉不到表结构实际上已经发生了变化,对于用户而言是完全透明的.当然在线重定 ...

  5. 通过DBMS_REDEFINITION包对表在线重定义

    基础介绍 Oracle Online Redefinition可以保证在数据表进行DDL类型操作,如插入.删除数据列,分区处理的时候,还能够支持DML操作,特别是insert/update/delet ...

  6. Oracle在线重定义DBMS_REDEFINITION 普通表—>分区表

    实验环境:RHEL 6.4 + Oracle 11.2.0.3实验:在线重定义 普通表 为 分区表,包括主键对应的索引都改造为分区索引. 1,构造普通表t_objects conn test1/tes ...

  7. oracle在线重定义表

    在一个高可用系统中,如果需要改变一个表的定义是一件比较棘手的问题,尤其是对于7×24系统.Oracle提供的基本语法基本可以满足一般性修改,但是对于把普通堆表改为分区表,把索引组织表修改为堆表等操作就 ...

  8. (Oracle)已有数据表建立表分区—在线重定义

    今天在做数据抽取的时候,发现有一张业务表数据量达到了5000W,所以就想将此表改为分区表.分区表的有点如下: 1.改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度.2.增强可用性: ...

  9. Oracle 在线重定义表分区

    ==================原始表================原始表=====================原始表 create table BUILDING_temp(building ...

随机推荐

  1. 轮播插件unsilder 源码解析(一)---使用

    啰嗦几句:学习的可以直接省略,一直本着写原生的插件想法,但是前天看了吕大豹的博客觉得自己都没有正经的写个jquery插件:所以在开始写之前我会先对几个比较热门的jquery的插件进行源码分析:至于为什 ...

  2. cpp 调用python

    在用cpp调用python时, 出现致命错误: no module named site  ,  原因解释器在搜索路径下没有找到python库.可以在调用Py_Initialize前,调用 Py_Se ...

  3. redis 常用命令

    临时启动:redis-server.exe redis.conf/redis-server redis.windows.conf安装Windows服务:redis-server.exe --servi ...

  4. NC凭证接口(Java发送流和处理返回结果)

    问题描述: 金融行业在系统模块分为财务和业务两个系统,我公司是负责业务模块系统,NC公司负责财务系统.但是财务有时候需要生成凭证,这时候就涉及业务模块了,我方就需要写NC凭证接口.这时候就需要三方交互 ...

  5. 用JMeter测试monggodb的请求

    JMeter测试MongoDB性能有两种方式,一种是利用JMeter直接测试MongoDB[即通过MongoDB协议测试],另一种是写Java代码方式测试MongoDB[即通过java请求测试] 注: ...

  6. 推荐几款我一直在用的chrome插件(上)

    我用的chrome插件挺多的,所谓工欲善其事必先利其器,我热衷于搜寻好用的工具来让我平时的工作事半功倍.下面介绍几款我正在用的感觉还不错的插件,如果大家还有其它好用的(肯定有,chrome插件库太庞大 ...

  7. java时间类型操作

    java中Date类型与字符串相互转化 Date date = new Date();        System.out.println(date);        //DateFormat类为一个 ...

  8. R语言画云字图

    install.packages('wordcloud') library(wordcloud) colors=c('red','blue','green','yellow','purple') da ...

  9. 微信小程序与传统APP十大优劣对比

    随着微信公众平台的开放,微信端小程序涌现市场,带来很很多便利和简单的原生操作,询:微信端小程序是否会替代传统的APP应用?两者的优劣如何?我们一起来看看传统APP与微信端小程序十大优劣对比       ...

  10. java基础知识(六)日期处理

    一.日期处理类 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值.它也允许格式化和解析日期字符串.不过,这些函数的 API 不易于实现国际化.从 ...