提到刪除表的字段,我們最初想到的就是alter table xx drop column field1;
但是當我們要對生產環境中大資料量的表進行刪除字段,而且不是刪除乙個兩個,有可能刪除多個字段,此方法是否可取。網上有文章說到可以先對要刪除的字段進行unused的處理,然後在系統不忙的時候執行drop column,我個人認為此方法不是不可行,只不過我認為不是最快的。
我以我自己親身處理的乙個例子,介紹下我的方法,僅供參考。
文章開始前,先講一下背景。
客戶生產環境中資料量增量很大,每個月都要有五六十g的增量。尤其是幾個大表,資料量每月都是千萬級增量。由於歷史原因,有的表中的字段多達200多個,但實際用到的字段也就只有七八十個,也就是有一百二三個欄位要乾掉,進行優化。
千萬級的資料表,要乾掉一百二三十個字段,而且還要盡可能的不影響業務的執行。那就要求在業務最不繁忙的時候,以最快的速度處理完,怎麼辦。
下面介紹下我的方法。
舉個例子,然後上指令碼吧。
假如有個表a,a中的資料量是5000w以上,a中有200個字段,你要刪掉其中的120個字段。
指令碼如下:
------------------指令碼開始-----------------
-- 建立臨時表
create table a_temp
tablespace atemp
nologging
as select
field1,field2,,,,field80 -- 此處需要整理出a中要保留的字段
from a;
/-- 刪除原表
drop table a;
-- 重新命名表
alter table a_temp rename to a;
-- 使用nologging以及parallel快速重新新增索引
create index ind_afile on a(field2) tablespace atemp nologging parallel 6;
alter table a add constraint pk_field primary key (field1) using index tablespace atemp nologging;
------------------指令碼結束-----------------
我自己試驗的結果是5000w的資料表,三分鐘內可以搞完。
如何刪除oracle
軟體環境 1 windows 2000 oracle 8.1.7 2 oracle安裝路徑為 c oracle 實現方法 www.bianceng.cn 1 開始 設定 控制面板 管理工具 服務 停止所有oracle服務。2 開始 程式 oracle orahome81 oracle install...
多行刪除最快的方法
由於我的資料是資料庫提取的,rs.getstring id 所以我在checkbox裡面的value直接等於得到的字串,在處理頁面我們 先轉換字元編碼 然後獲取checkbox的name,直接就獲取到資料庫提取的值了,接著我們宣告乙個陣列ids 判斷他的長度,然後ids ids id i 解釋一下為...
如何徹底的刪除Oracle
oracle 的刪除是比較複雜的 如若刪除的不徹底的話 那麼再次安裝的時候就會出現這樣那樣的錯誤導致程式無法安裝 如何徹底的刪除oracle呢 1.關閉所有的與oracle有關的所有的服務 2.命令列輸入regedit 進入登錄檔 選擇hkye local machine 下的software 刪除...