--把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;
如何把單庫資料遷移到分庫分表?
面試官 如何把單個資料庫的資料遷移到分庫分表裡面?面試官心理剖析 主要是看你在生產環境弄過?沒弄過的話看你有沒有思考過這個問題?因為在做分庫分表的時候肯定會遇到這個問題。回答 假設你的分庫分表中介軟體已經選好了,分庫分表的資料庫都已經建好了。分庫分表的功能也都已經測試通過了,可以上線了。資料遷移的系...
併發 六 用Exchanger實現資料交換
在多執行緒程式的設計中,最難處理就是各執行緒之間的耦合關係,所以jdk提供了很多用於解耦的類,例如blockingqueue blockingdeque等,這些類的特點是既可以適用於消費者 生產者模式,還可以適用於消費者與生產者混合模式。今天介紹的exchanger除了在資料交換方面表現得非常優秀之...
系統間資料交換的5種方式
工作中常會遇到系統對接,交換資料,將用過的對接資料交換方式簡要回顧一下。一,原始的方式,直接檔案交換 通過定義csv,xml,json等檔案,一方支援資料匯出,另一方支援資料匯入。最開始是人手工完成,做的好點的可以通過程式自動完成,比如資料提供方自動匯出後放入某個目錄,資料接收方定時訪問目錄獲取資料...