假設情景:
現有system.test表,資料量過千萬,處於ts_test表空間中。
表中有列a,將a=6與a小於6的資料進行分割槽
確保不會有外部程式修改需要建表分割槽的表
1. 對需要重建表分割槽的表進行備份,匯出dmp,防止資料丟失
exp 使用者名稱/密碼@tns名 file=c:/test.dmp log=c:/test.log full=n rows=y buffer=10240000 tables=system.test
2. 建立臨時表,用來回導資料
create table system.test_bak
tablespace ts_test
asselect * from system.test;
3. 校驗資料行數
select count('x') c1 from system.test;
select count('x') c2 from system.test_bak;
如果行數不一致需查詢原因
4. 重建表
truncate table system.test;
drop table system.test;
create table system.test
tablespace ts_test
partition by range(a)
(partition p1 values less than ('6')
tablespace ts_test
,partition p2 values less than ('7')
tablespace ts_test,
partition p3 values less than (maxvalue)
tablespace ts_test)as
select
from system.test_bak;
第4步執行完之後,表裡的資料就分散到了p1和p2分割槽中
5. 重建索引,將原有表中的索引再建到system.test表中。
6. 檢查分割槽
select decode(a,'1','1','2','1','3','1','4','1','5','1',a),
count('x') n
from system.test
group by decode(a,'1','1','2','1','3','1','4','1','5','1',a)
order by decode(a,'1','1','2','1','3','1','4','1','5','1',a);
select count('x') n1 from system.test partition (p1);
select count('x') n2 from system.test partition (p2);
ORACLE將已有表分割槽
以table name內容建立分割槽表table name1並將資料寫入 create table table name1 partition by range createdate partition table name p1 values less than to date 2018 1 1 ...
Django 根據已有表生成ORM模型
在實際開發中,有些時候可能資料庫已經存在了。如果我們用django來開發乙個 讀職的是之前已經存在的資料庫中的資料。那麼該如何將模型與資料庫中的表對映呢?根據舊的資料庫生成對應的orm模型,需要以下幾個步驟 1 django 給我們提供了乙個inspectdb的命令,可以非常方便的將已經存在的表,自...
oracle給已有表新增主鍵
1,建立序列名 create sequence customer id seq increment by 1 每次加幾個 start with 1 從1開始計數 nomaxvalue 不設定最大值 nocycle 一直累加,不迴圈 cache 10 快取一旦定義了customer id seq序列,...