Oracle Interval Partition 生產環境-建立表FACT_STORAGE_SHEET為分割槽的過程
-
#################################################################################
-
2015-12-24
-
建立表FACT_STORAGE_SHEET為分割槽的過程
-
-
1)備份原表
-
09:53:36 SQL> create table FACT_STORAGE_SHEET_20151224 as select * from FACT_STORAGE_SHEET;
-
-
表已建立。
-
-
已用時間: 00: 12: 48.52
-
-
2)建立分割槽中間表 FACT_STORAGE_SHEET_PP
-
-
20141211之前的資料預設在分割槽P0.
-
-
drop table FACT_STORAGE_SHEET_PP purge;
-
-
CREATE TABLE FACT_STORAGE_SHEET_PP
-
( "ID" NUMBER(11,0),
-
"PRODUCT_SKU" NUMBER(11,0) NOT NULL ENABLE,
-
"BATCH_ID" NUMBER(11,0),
-
"NUMS" NUMBER(11,0),
-
"STORAGE_PRICE" NUMBER,
-
"SELL_KEY" NUMBER(4,0),
-
"DATE_KEY" NUMBER(11,0),
-
"BATCH_KEY" CHAR(20),
-
"CREATE_TIME" TIMESTAMP (7),
-
"PROPERTY_KEY" NUMBER(11,0),
-
"RETAIL_PRICE" NUMBER,
-
"SUPPLIER_KEY" NUMBER(11,0),
-
"AGEING_NUM" NUMBER(11,0),
-
"AGEING_KEY" NUMBER(11,0),
-
"TIMER" DATE
-
)
-
PARTITION BY RANGE (DATE_KEY)
-
INTERVAL(1)
-
(
-
PARTITION p0 values LESS THAN (20141211)
-
)
-
TABLESPACE "TBS_YHBI_RETAIL"
-
;
-
-
3)將備份表的資料插入到分割槽表 FACT_STORAGE_SHEET_PP,Oracle會根據分割槽鍵自動建立以SYS_開頭的分割槽。
-
-
14:23:47 SQL> insert into FACT_STORAGE_SHEET_PP select * from FACT_STORAGE_SHEET_20151224;
-
-
已建立 344847585 行。
-
-
已用時間: 01: 54: 50.20
-
-
4)提交
-
16:27:17 SQL> commit;
-
-
提交完成。
-
-
已用時間: 00: 00: 00.06
-
-
-
5)rename原表
-
16:49:45 SQL> rename FACT_STORAGE_SHEET to FACT_STORAGE_SHEET_old;
-
-
表已重新命名。
-
-
已用時間: 00: 00: 00.01
-
-
6)將分割槽表 FACT_STORAGE_SHEET_PP 重新命名為生產表 FACT_STORAGE_SHEET
-
16:50:04 SQL> rename FACT_STORAGE_SHEET_PP to FACT_STORAGE_SHEET;
-
-
表已重新命名。
-
-
已用時間: 00: 00: 00.26
-
-
-
7)分割槽重新命名 sh rename_part.sh
-
-
sqlplus YHBI_RETAIL/yhbi_retail <<EOF >> rename.log
-
-
declare
-
v_sql varchar(400);
-
v_table_name user_tab_partitions.table_name%type;
-
v_partition_name user_tab_partitions.partition_name%type;
-
v_high_value varchar(200);
-
v_tmp_partition_name user_tab_partitions.partition_name%type;
-
-
cursor cur is
-
select
-
table_name ,
-
partition_name ,
-
high_value
-
from user_tab_partitions
-
where partition_name like 'SYS%' and table_name = 'FACT_STORAGE_SHEET' ;
-
-
begin
-
open cur;
-
loop
-
fetch cur into v_table_name,v_partition_name,v_high_value;
-
exit when cur%notfound;
-
v_tmp_partition_name := to_char(to_date(v_high_value - 1, 'yyyymmdd'),'yyyymmdd');
-
v_sql := 'alter table '|| v_table_name ||' rename partition '
-
||v_partition_name
-
||' to P' || v_tmp_partition_name;
-
dbms_output.put_line( v_sql );
-
execute immediate v_sql;
-
end loop;
-
close cur;
-
end;
-
/
-
exit
-
EOF
-
-
-
-
8)刪除備份表
-
-
17:35:27 SQL> drop table FACT_STORAGE_SHEET_old purge;
-
-
表已刪除。
-
-
17:32:33 SQL> drop table FACT_STORAGE_SHEET_20151224 purge;
-
-
表已刪除。
-
-
######################################################################
-
--檢視 表FACT_STORAGE_SHEET的所有分割槽
-
-
17:36:01 SQL> select
-
table_name ,
-
partition_name ,
-
high_value
-
from user_tab_partitions
-
where table_name = 'FACT_STORAGE_SHEET' --and partition_name like 'SYS%'
-
order by 2;
-
-
-
TABLE_NAME PARTITION_NAME HIGH_VALUE
-
------------------------------ -------------------- --------------------------------------------------------------------------------
-
FACT_STORAGE_SHEET P0 20141211
-
FACT_STORAGE_SHEET P20141211 20141212
-
FACT_STORAGE_SHEET P20141212 20141213
-
...
-
-
注意:
-
--20141211之前的資料在分割槽P0
-
-
-
--檢視錶fact_storage_sheet中的分割槽P20151222 記錄數,建完分割槽,統計記錄數很快。
-
17:35:22 SQL> select count(*) from YHBI_RETAIL.fact_storage_sheet partition(P20151222);
-
-
COUNT(*)
-
----------
-
1463827
-
-
已用時間: 00: 00: 00.18
-
-
17:35:41 SQL> select count(*) from YHBI_RETAIL.fact_storage_sheet partition(P0);
-
-
COUNT(*)
-
----------
-
1090011
-
-
已用時間: 00: 00: 00.05
-
-
-
--表fact_storage_sheet分割槽P0的資料:
-
-
17:35:57 SQL> select distinct date_key from fact_storage_sheet partition(P0);
-
-
DATE_KEY
-
----------
-
20141209
-
20141203
-
20141202
-
20141206
-
20141201
-
20141205
-
20141210
-
20141204
-
20141207
-
20141208
-
-
已選擇10行。
-
- 已用時間: 00: 00: 00.15
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22661144/viewspace-1960903/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle查詢Interval partition分割槽表內資料Oracle
- Oracle Partition 分割槽詳細總結Oracle
- 分割槽Partition
- oracle將表配置為分割槽表Oracle
- oracle分割槽表和分割槽表exchangeOracle
- oracle分割槽表和非分割槽表exchangeOracle
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- 記一次Oracle分割槽表全域性索引重建的過程Oracle索引
- oracle 分割槽表move和包含分割槽表的lob moveOracle
- interval 分割槽表clob預設表空間指定問題
- Oracle 12.2之後ALTER TABLE .. MODIFY轉換非分割槽表為分割槽表Oracle
- 分割槽partition知識點
- oracle 根據虛擬列建立以周幾為單位的分割槽表Oracle
- 使用parted建立大分割槽時 mkpart Warning: The resulting partition is not properly
- OceaBase 分割槽表建立技巧
- ORACLE分割槽表梳理系列Oracle
- Oracle drop分割槽表單個分割槽無法透過閃回恢復Oracle
- 分割槽函式Partition By的基本用法函式
- Oracle分割槽表基礎運維-04列表分割槽Oracle運維
- Oracle分割槽表基礎運維-07增加分割槽(3列表分割槽)Oracle運維
- 對oracle分割槽表的理解整理Oracle
- oracle 普通表-分割槽表改造流程Oracle
- Spark學習——分割槽Partition數Spark
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- Oracle分割槽表基礎運維-06分割槽表索引Oracle運維索引
- 週六直播充電:探究Oracle分割槽表建立和使用Oracle
- Oracle12c:建立主分割槽、子分割槽,實現自動分割槽插入效果Oracle
- Oracle 12C新特性-線上把非分割槽錶轉為分割槽表Oracle
- Oracle分割槽表基礎運維-09刪除分割槽Oracle運維
- Oracle分割槽表基礎運維-05組合分割槽Oracle運維
- Oracle分割槽表基礎運維-02範圍分割槽Oracle運維
- Oracle分割槽表基礎運維-03HASH分割槽Oracle運維
- 記一次分割槽表update調優過程
- Oracle分割槽表基礎運維-07增加分割槽(1範圍分割槽)Oracle運維
- Oracle分割槽表基礎運維-01分割槽表分類Oracle運維
- Kafka分割槽分配策略(Partition Assignment Strategy)Kafka
- oracle 11g 分割槽表建立(年月日周時分秒)Oracle
- 教程:如何使用DataLakeAnalytics建立分割槽表
- 分割槽函式partition by的基本用法【轉載】函式