【新炬網路名師大講堂】Oracle 12C一個實用的新特性介紹:drop/truncate多個子分割槽
今年年初時候,局方人員反應資料網管系統WAP話單報表查詢非常緩慢,經我們分析了下,發現是由於業務表查詢條件沒有建索引導致全表掃描。該表是一個大分割槽表,大約有350G的資料量,按每小時進行分割槽,保留了大概一個星期多的歷史記錄,經和局方、開發商一起商量後,決定清理掉一部分沒用的資料,以方便新建索引,減少影響業務的時間。於是就寫了個指令碼,裡面的
大概內容就是:
ALTER TABLE ULTRANMS.UC_WAP_PULL_QUERYLOG TRUNCATE PARTITION P_20121231000000;
ALTER TABLE ULTRANMS.UC_WAP_PULL_QUERYLOG TRUNCATE PARTITION P_20121231010000;
……
ALTER TABLE ULTRANMS.UC_WAP_PULL_QUERYLOG TRUNCATE PARTITION P_20130104220000;
一共需要TRUNCATE掉119個子分割槽,由於每執行一個SQL語句就需要經歷語法語義檢查、編譯生成執行計劃消耗一些系統資源,所以連續執行這119個SQL語句對資料庫的效能是一個不小的衝擊,記得當時就在想:Oracle對這種大批次操作怎麼就沒有搞出一種高效的方法呢。
在參加OOW介紹新特性的時候發現,Oracle 12C已經可以實現使用單獨一條SQL語句對子分割槽進行維護操作了。
例如range_sales表有7個子分割槽,
CREATE TABLE range_sales
( prod_id NUMBER(6)
, cust_id NUMBER
, time_id DATE
, quantity_sold NUMBER(3)
, amount_sold NUMBER(10,2)
)
PARTITION BY RANGE (time_id)
(PARTITION SALES_Q2_2011 VALUES LESS THAN (TO_DATE(’01-APR-2011′,’DD-MON-YYYY’)),
PARTITION SALES_Q3_2011 VALUES LESS THAN (TO_DATE(’01-OCT-2011′,’DD-MON-YYYY’)),
PARTITION SALES_Q4_2011 VALUES LESS THAN (TO_DATE(’01-JAN-2012′,’DD-MON-YYYY’)),
PARTITION SALES_Q1_2012 VALUES LESS THAN (TO_DATE(’01-APR-2012′,’DD-MON-YYYY’)),
PARTITION SALES_Q2_2012 VALUES LESS THAN (TO_DATE(’01-JUL-2012′,’DD-MON-YYYY’)),
PARTITION SALES_Q3_2012 VALUES LESS THAN (TO_DATE(’01-OCT-2012′,’DD-MON-YYYY’)),
PARTITION SALES_Q4_2012 VALUES LESS THAN (MAXVALUE));
現在需要對SALES_Q2_2011, SALES_Q3_2011, SALES_Q4_2011這3個子分割槽進行TRUNCATE操作,可以直接在一條SQL語句中單獨實現:
ALTER TABLE range_sales TRUNCATE PARTITIONS SALES_Q2_2011, SALES_Q3_2011, SALES_Q4_2011;
新特性固然好,但是也需要慎重考慮做足測試功夫才行,如對上述資料網管大分割槽表是在12C資料庫中進行操作的時候,可以考慮嘗試在一條單獨的SQL語句中進行小批次進行,如每條SQL語句TRUNCATE 20個子分割槽表,防止如此大的DDL操作過程導致資料庫出現問題等。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29960155/viewspace-1363548/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【新炬網路名師大講堂】Oracle Database 12c 新特性總結OracleDatabase
- 【新炬網路名師大講堂】SOA套件介紹套件
- 【新炬網路名師大講堂】12c高可用新特性what-if command evaluation介紹
- 【新炬網路名師大講堂】12c新特性:備份CDBs和PDBs
- 【新炬網路名師大講堂】12c新特性:使用RMAN連線CDB
- 【新炬網路名師大講堂】關於Oracle 12c Flex ASM特性的理解OracleFlexASM
- 【新炬網路名師大講堂】clone oracle 12c pluggable databasesOracleDatabase
- 【新炬網路名師大講堂】關於IMSI/MSISDN/IMEI的介紹
- 【新炬網路名師大講堂】weblogic整合ejbWeb
- 【新炬網路名師大講堂】總結和結論
- 【新炬網路名師大講堂】Oracle中的回收站(Recycle Bin)Oracle
- 【新炬網路名師大講堂】TUXEDO的配置最佳化之路一UX
- 【新炬網路名師大講堂】j2ee與weblogic簡介Web
- 【新炬網路名師大講堂】svn在linux下的使用Linux
- 【新炬網路名師大講堂】關於LOG FILE SYNC的解惑
- 【新炬網路名師大講堂】Oracle 11g rac 刪除節點Oracle
- 【新炬網路名師大講堂】oracle application server之核心技術opmnOracleAPPServer
- 【新炬網路名師大講堂】Oracle小知識- Oracle KILLED會話的釋放Oracle會話
- 【新炬網路名師大講堂】TUXEDO的配置最佳化之路二UX
- 【新炬網路名師大講堂】初識mysql的體系結構MySql
- 【新炬網路名師大講堂】11gR203 RAC一個比較嚴重的bug
- 【新炬網路名師大講堂】Oracle中大表新增帶有預設值列的討論(包括11G,12C新特性)Oracle
- 【新炬網路名師大講堂】Data Guard–物理主備庫切換
- 【新炬網路名師大講堂】cursor: pin S wait on X模擬AI
- 【新炬網路名師大講堂】GoldenGate的ADD SCHEMATRANDATA命令研究Go
- 【新炬網路名師大講堂】AIX上的配置網路調優引數AI
- 【新炬網路名師大講堂】RAC環境下SYSDATE返回錯誤時間
- 【新炬網路名師大講堂】不同資料庫取前幾條記錄資料庫
- 【新炬網路名師大講堂】記一次打PSU遇到的Copy failed的問題AI
- 【新炬網路名師大講堂】MySQL複製與監控系列文章(1)——篇首MySql
- 【新炬網路名師大講堂】WAS控制檯資料來源資訊無故丟失
- 【新炬網路名師大講堂】有限條件下怎樣做好恢復演練
- 【新炬網路名師大講堂】O2O同步實施涉及的變更V1.0
- 【新炬網路名師大講堂】CBO中”與NULL在cardinality計算上的差別Null
- 【新炬網路名師大講堂】讓業務飛起來,應用效能端到端最佳化
- 【新炬網路名師大講堂】理解TimesTen錯誤日誌資訊”waiting for latch”AI
- 【新炬網路名師大講堂】DATABASE REPLAY加壓播放引數之SCALE_UP_MULTIPLIERDatabase
- Oracle 12C 新特性之表分割槽或子分割槽的線上遷移Oracle