關於分割槽表的move操作
對於普通的表而言,做move操作室理所當然,oracle提供的方式很直接快捷。當然了這個命令也不是高可用的範疇。但是對於資料重組還是很方便快捷的。
一般來說,如果嘗試對分割槽表進行move操作,會得到如下的錯誤警告。
SQL> alter table charge move tablespace large_data;
alter table charge move tablespace large_data
*
ERROR at line 1:
ORA-14511: cannot perform operation on a partitioned object
這個時候可以使用如下的sql語句生成動態sql來做partition級別的move操作。
比如對下面3個大表,如下的sql就可以生成成百上千條語句來完成partition級別的move操作。
select 'alter table '||table_name||' move partition '||partition_name||' tablespace large_data;' from user_tab_partitions where table_name in ('CHARGE','MEMO','CHARGE_REL')
如果表中含有lob欄位,可能會碰到如下的問題
alter table memo move partition xxxx tablespace large_data;
*
ERROR at line 1:
ORA-01658: unable to create INITIAL extent for segment in tablespace DATAS01
碰到這種問題,一般有以下的幾種原因,一種需要檢視quota的情況,是否在對應的表空間中含有足夠的quota
一種就是檢視錶空間的儲存情況,是否有足夠的空間。
如果空間有限,而且有的分割槽沒有資料,可以開啟延遲載入的方式。啟用deferred_segment
expdp/impdp
使用資料泵是一種很好的選擇,可以很方便的進行資料結構的dump到處,然後在匯入的時候直接做remap_tablespace,這個功能是exp/imp所無法企及的。
推薦使用impdp的remap功能。
perl/shell
當然了,可以利用exp+imp+shell/perl的方式來解析dump檔案
可以參考如下的博文。
http://blog.itpub.net/23718752/viewspace-1160404/
裡面詳細討論瞭解析dump檔案的一些細節。
dbms_metadata.get_ddl
如果源shema可以隨時訪問到,在條件允許的時候可以直接透過dbms_metadata來生成對應的建立語句,可以在此基礎上進行表空間的重新手工mapping。
這個過程看似簡單,其實還要考慮很多的細節。分割槽的分割槽太多,很容易就超過最大字元長度了,需要自己把握控制。
exchange partition
這種方式可能風險有些大,不過在某些情況下也是一種方案,可以透過exchange partition的形式來完成表空間的重新對映。
使用普通表來和分割槽做一個交換。
不過以上的方法都不太適合高可用的情況,不過downtime的時間也是需要考慮的,需要最大程度的減少操作時間,畢竟使用分割槽表的環境中,資料都是很大的,這個也需要大家斟酌。表空間的變更是目的,但是資料的重組就牽扯了資料的匯出,匯入之類的工作,大道至簡,但是細節太多,還是需要多加註意。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8494287/viewspace-1347031/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於分割槽表的操作
- oracle 分割槽表move和包含分割槽表的lob moveOracle
- 關於分割槽表的概念及操作
- 【實驗】【PARTITION】RANGE分割槽表移動表分割槽(Move Partition)
- oracle關於分割槽相關操作Oracle
- 關於修改分割槽表的準備和操作細則
- 關於SQL Server的分割槽表SQLServer
- INTERVAL分割槽表鎖分割槽操作
- SqlServer關於分割槽表的總結SQLServer
- 分割槽表的常用操作
- 關於分割槽表和分割槽索引(About Partitioned Tables and Indexes)索引Index
- mysql~關於mysql分割槽表的測試MySql
- 範圍分割槽表和INTERVAL分割槽表對於SPLIT分割槽的區別
- Spark操作Hive分割槽表SparkHive
- 分割槽表attach detach操作
- 關於修改分割槽表的問題總結
- ORACLE分割槽表的概念及操作Oracle
- ORACLE分割槽表的操作應用Oracle
- 全面學習分割槽表及分割槽索引(17)--其它索引分割槽管理操作索引
- Sql Server系列:分割槽表操作SQLServer
- 關於oracle的表空間,分割槽表,以及索引的總結Oracle索引
- 關於分割槽表中的全partition掃描問題
- oracle 分割槽表進行shrink操作Oracle
- SQL Server表分割槽操作詳解SQLServer
- oracle 分割槽表 概念以及常用操作Oracle
- 表分割槽操作大全_table partitioning
- 關於oracle的表空間,分割槽表,以及索引的總結(轉)Oracle索引
- 關於oracle的表空間,分割槽表,以及索引的總結 -- 轉Oracle索引
- 如何查詢分割槽表的分割槽及子分割槽
- move表操作流程
- 分割槽表UNUSED列後的EXCHANGE PARTITION操作
- oracle分割槽表和分割槽表exchangeOracle
- rebuild分割槽表分割槽索引的方法Rebuild索引
- MySql資料分割槽操作之新增分割槽操作MySql
- 關於分割槽表Local索引Rebuild的一些總結索引Rebuild
- 分割槽表的不同操作對索引的影響索引
- (轉)關於NAND flash的MTD分割槽與uboot中分割槽的理解NaNboot
- PLSQL根據分割槽表的分割槽名批次truncate分割槽SQL