Oracle Partitioned Table:exchange的利用
週末作了一天的Partitioned Table舊有資料的歸檔。
主要是用Partitioned Table的Exchange功能。
[@more@]基本步驟:
1. 構造能用來做exchange的table A。
2. 進行exchange
3. 將segments從物理上轉移到歸檔用的tablespace.
4. Drop 被exchange出的Partition
5. 被drop 的Partition的Tablespace—〉drop
6. Rebuild A中被mark unusable的Index.
Exchange是Partitioned Table 技術中一個非常有用的功能,尤其是當需要將舊資料進行歸檔的時侯。
Exchange的限制:
Range-Hashßà hash
Range-Listßà List
Range/HASH/LIST ßànon-partitioned table
.. .. ..
以上是9i administrator guides 歸類出來的,簡而言之,就是Partitioned Table中要用來做exchange的Partition的型別必須和所交換的Table(Partition)一致。
所以在第一步構造用來做exchange的Table的時侯,型別的一致很重要。
比如,如果是Range-Hash Partitioned table要把一個Range Partition exchange出來,那用來交換的Table必須和這個Range Partition 型別一致。
也就是說這個Table必須是Hash Partitioned Table.
進行Exchange的語法:
Illustrate:
alter table Part_table exchange partition Part_0710
with table Part_arch0710
including indexes without validation update global indexes;
幾個重點
1. Including indexes: 表明將Local indexes 一同exchange出來。此選項需要用來與之exchange的table 有建立一樣的Index.
2. Without validation: with validation是驗證是否rows被正確的Mapping. Without validation則是跳過此驗證,在這種情況下,exchange 只做data dictionary的更新(這也是exchange快的原因,因為它根本上只是在data dictionary裡將segments的歸屬作了變更)。這裡有一個例外,如果在exchange中的table有PK或者unique constraint,是會強制作with validation,不管有沒有指定without validation,這樣做是為了保證constraint的完整性。如果要避免這個問題,可以在exchange之前先disable相關的constraint,在完成後再enable。
3. Update global indexes:使用此選項可避免Partitioned table的global index在exchange後被mark unusable。用這種方式在功能上不會影響到正常業務,但其過程中產生的額外loading會對業務效能的表現產生影響。如果不使用此選項,則必須在exchange後對global index進行rebuild。不過這個選項只會update被exchange出Partition的table的global index。如上的例子,表A的global index是不會被update,所以如果接下來exchange出的Partition的資料還要用的話,依然需要rebuild,但這已經不影響正常業務。
4. Drop 被exchange出來的Partition所在的Tablespace之前,注意把segments從物理上移動到歸檔Table A所在的Tablespace。上文提到了exchange只是在data dictionary裡對segments的歸屬作了改變。
5. Exchange後,空的Partition可以直接DROP,無須帶update global index。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10856805/viewspace-1010724/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [Oracle] Partition table exchange Heap tableOracle
- Convert Range-Partitioned Table To Interval-Range-Partitioned Table
- How to partition a non-partitioned table
- Oracle Partitioned TablesOracle
- oracle管理之 partitioned table(server.102 b14231)OracleServer
- SQL Server 表分割槽(partitioned table/Data Partitioning)SQLServer
- 利用Microsoft Graph開發微軟的Exchange Calendar會議、TeamROS微軟
- oracle分割槽交換(exchange)技術Oracle
- Overview of Partitioned IndexesViewIndex
- Local Partitioned IndexesIndex
- oracle temporary tableOracle
- oracle shrink tableOracle
- Oracle Table LocksOracle
- Alter table for ORACLEOracle
- Oracle Table FunctionOracleFunction
- 利用Exchange漏洞入侵安插後門,小心資料洩露
- partitioned by timestamp datatype
- Global Range Partitioned IndexesIndex
- Global Hash Partitioned IndexesIndex
- Maintenance of Global Partitioned IndexesAINaNIndex
- Partitioned Tables (165)
- Bug 9937133-COPY_STATISTICS doesn's copy stats for partitioned table_9937133.8
- Oracle 普通table 轉換為partition tableOracle
- 利用mysql slave 修復master MyISAM tableMySqlAST
- oracle分割槽表和分割槽表exchangeOracle
- oracle cache table(轉)Oracle
- Oracle table selectOracle
- Oracle:TABLE MONITORINGOracle
- oracle之nalyze tableOracle
- Oracle ASM Allocation TableOracleASM
- oracle cache table(1)Oracle
- oracle cache table(3)Oracle
- oracle cache table(2)Oracle
- oracle cache table(5)Oracle
- oracle cache table(4)Oracle
- oracle cache table(6)Oracle
- Analyze table對Oracle效能的提升Oracle
- Oracle analyze table的使用總結Oracle