您好,登錄后才能下訂單哦!
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,效率相對較高,而且建表完成后數據已經分布到各個分區中.
缺點:對于數據庫的一致性方面需要額外考慮.無法通過手工鎖表的方式保證一致性.
適用于修改不頻繁的表,在空閑時進行操作,表的數據量不宜太大.
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。