oracle的表如何跨表空間存儲

oracle的一個表所在表空間,空間已經佔滿,其他表空間有剩餘空間.實現表存在另外的表空間.

方案一:利用原表重建分區表

1:原表temp,存在字段id,time;

2:temp存在紀錄;

3:根據原表temp創建新的分區表temp_new

CREATE TABLE temp_new (ID, TIME) PARTITION BY RANGE (TIME)

  PARTITION P1 VALUES LESS THAN (TO_DATE('2004-7-1', 'YYYY-MM-DD')) TABLESPACE space01,

  PARTITION P2 VALUES LESS THAN (TO_DATE('2005-1-1', 'YYYY-MM-DD')) TABLESPACE space02,

  PARTITION P3 VALUES LESS THAN (TO_DATE('2005-7-1', 'YYYY-MM-DD')) TABLESPACE space03,

  PARTITION P4 VALUES LESS THAN (MAXVALUE) TABLESPACE space04

)

AS SELECT ID, TIME FROM temp;

4:重命名錶名

RENAME temp TO temp_old;

RENAME temp_new TO temp;

5:查詢分區紀錄存儲情況

SELECT COUNT(1) FROM temp PARTITION (space01);

SELECT COUNT(1) FROM temp PARTITION (space02);

SELECT COUNT(1) FROM temp PARTITION (space03);

SELECT COUNT(1) FROM temp PARTITION (space04);

 


SELECT COUNT(1) FROM temp_old;

--分區存儲紀錄數之和與原紀錄數相同,跨表空間分區存儲成功.

有點:方法簡單易用,採用DDL語句,不會產生UNDO,而只會產生少量REDO,效率相對較高,而且建表完成後數據已經分佈到各個分區中.

缺點:對於數據庫的一致性方面需要額外考慮.無法通過手工鎖表的方式保證一致性.

適用於修改不頻繁的表,在空閒時進行操作,表的數據量不宜太大.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章