用数据交换方式把表数据迁移到分区表实例

--把kingstar.emp表的数据迁移到kingstar.EMP_partition分区表中

  --创建数据源表结构  

drop table kingstar.emp; 
  create table kingstar.emp as select * from scott.emp where 1=2; 
  alter table kingstar.EMP 
  add constraint PK_EMP primary key (EMPNO) 
  using index 
  tablespace USERS 
  pctfree 10 
  initrans 2 
  maxtrans 255 
  storage 
  ( 
  initial 64K 
  minextents 1 
  maxextents unlimited 
  ); 
  truncate table kingstar.emp; 

  --插入数据   


 insert into kingstar.emp values (1,’ 蔡浪’,’D’,0,to_date(’20080801 12:22:13’,’yyyymmdd hh24:mi:ss’),1000,1000,10); 
  insert into kingstar.emp values (2,’ 蔡星’,’D’,1,to_date(’20080901 13:23:12’,’yyyymmdd hh24:mi:ss’),5000,5000,10); 
  commit; 


  --查看迁移表中的数据    


 select * from kingstar.emp; 
  1 1  蔡浪 D 0 2008-8-1 12:22:13 1000.00 1000.00 10 
  2 2  蔡星 D 1 2008-9-1 13:23:12 5000.00 5000.00 10 

  --创建分区表 结构与kingstar.emp一样

  -- create table  


 create table kingstar.EMP_partition 
  ( 
  EMPNO NUMBER(4), 
  ENAME VARchar2(10), 
  JOB VARchar2(9), 
  MGR NUMBER(4), 
  HIREDATE DATE, 
  SAL NUMBER(7,2), 
  COMM NUMBER(7,2), 
  DEPTNO NUMBER(2) 
  ) 
  tablespace KINGSTAR 
  partition by range(hiredate) 
  (partition emp_max values less than(maxvalue))--由于交换数据时需指定分区,所以这里不做详细分区,数据交换完后进行分区的拆分 
  ; 

--进行数据交换


alter table kingstar.EMP_partition exchange partition emp_max with table kingstar.emp; 

  --查分区表数据 

 select * from kingstar.EMP_partition; 
  1 1  蔡浪 D 0 2008-8-1 12:22:13 1000.00 1000.00 10 
  2 2  蔡星 D 1 2008-9-1 13:23:12 5000.00 5000.00 10 


  --查源表数据已被清空  

 select * from kingstar.emp; 
  --往源表插数据,索引失效 
  insert into kingstar.emp values (1,’ 蔡浪’,’D’,0,to_date(’20080801 12:22:13’,’yyyymmdd hh24:mi:ss’),1000,1000,10); 
  insert into kingstar.emp values (2,’ 蔡星’,’D’,1,to_date(’20080901 13:23:12’,’yyyymmdd hh24:mi:ss’),5000,5000,10); 
  第 1 行出现错误: 
  ORA-01502: 索引 ’KINGSTAR.PK_EMP’ 或这类索引的分区处于不可用状态 

  --索引重建


alter index kingstar.pk_emp rebuild ; 


  --再插入数据可以完成  


 insert into kingstar.emp values (1,’ 蔡浪’,’D’,0,to_date(’20080801 12:22:13’,’yyyymmdd hh24:mi:ss’),1000,1000,10); 
  insert into kingstar.emp values (2,’ 蔡星’,’D’,1,to_date(’20080901 13:23:12’,’yyyymmdd hh24:mi:ss’),5000,5000,10); 

  --查询数据    


 select * from kingstar.emp; 
  1 1  蔡浪 D 0 2008-8-1 12:22:13 1000.00 1000.00 10 
  2 2  蔡星 D 1 2008-9-1 13:23:12 5000.00 5000.00 10 


  --拆分分区,只能将一个分区插成两个分区,并且指定插分后的第一个分区的内容如to_date(’200809’,’YYYYMM’)就是该分区emp_200808存放200808这个月数据

  --也就是相当于定义分区时的 partition emp_200808 values less then(to_date(’200809’,’yyyymm’))

  


-- into (partition emp_200810,partition emp_maxes); 指定拆分出来的less than 的分区名字和maxvalue的分区名字
alter table kingstar.emp_partition split partition emp_max at(to_date(’200809’,’YYYYMM’)) into (partition emp_200808,partition emp_max); 
  alter table kingstar.emp_partition split partition emp_max at(to_date(’200810’,’YYYYMM’)) into (partition emp_200809,partition emp_max); 
  alter table kingstar.emp_partition split partition emp_max at(to_date(’200811’,’YYYYMM’)) into (partition emp_200810,partition emp_upper); 
  alter table kingstar.emp_partition split partition emp_upper at(to_date(’200812’,’YYYYMM’)) into (partition emp_200811,partition emp_max); 

  --查询分区数据  


select * from  kingstar.emp_partition partition(emp_200808); 
  1 1  蔡浪 D 0 2008-8-1 12:22:13 1000.00 1000.00 10 

  --修改分区名字


alter table kingstar.emp_partition rename partition emp_max to emp_upper;

 

转载请标明出处:http://www.searchdatabase.com.cn/showcontent_12985.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值