問題描述:
今天周六, 沒想到還接到開發人員的電話說是需要給分區表增加一個索引欄位(這是個大分區表共1T多資料1億多行,1天做1個分區共190個分區),可能因為是菜鳥吧,對ORACLE瞭解得不夠深,因此會遇到各種問題,還有很多東西需要學習的。我想,對整個表刪除重建索引,定會需要很長時間,因此想著能不能給單個分區增加欄位索引,在網上查了些資料沒有找到相關資料,然後又打電話給開發人員,他們的建議是利用PL/SQL工具添加欄位時(PL/SQL在進行大資料量增加欄位索引時慎用,容易造成temp檔案異常過大),於是我照做了,開始是反應特別慢,過了些時間再PL/.SQL報錯,提示發生至命錯誤。於是檢查ORACLE 發現登入不進去了,再檢查磁碟,空間滿了,du -sh /u01/* 列了一下 temp01.dbf 40多G。
環境說明:
RHEL6.2+ORACLE11_R2
分區:/ 200G,/u01 50G, /archvielog 500G , /app 3.0T
分區還得從規劃磁碟空間使用說起,在規劃之前其實就覺得/u01 空間太小,本以為50G就足夠了,可後來證明是錯誤的,主要是TEMP,UNDO檔案佔用太大空間(有些方法可以必免產生undo,如:1, insert /*+ append */ into table_name, 2, 把表設定為不寫日誌,TEMP檔案的必免產生的方法還沒需要研究)
解決方案:
1,如果建立的是lvm,可以擴大分區的大小(具體操作找Google或度娘)
2, 建立一個暫存資料表空間並將它設定為使用者預設的暫存資料表空間。
3,將/u01 下面的oracle 目錄拷貝到一個空間比較大的分區上面(這裡是使用移動目錄做軟連結實現)。
1), cp -r -p /u01/oracle /u01_bak/ #-r 拷目錄 -p 保留許可權 注意:用root使用者拷貝
watch -n 1 du -sh /u01_bak # 這個命令可以查看拷貝情況
2), rm -rf /u01/oracle #確定拷貝完,或者把它移動到其它地方
3), ln -s /u01_bak/oracle /u01/oracle #這是重要的一步建立軟連結
注意:rm -rf 刪除軟連結名加 "/"和不加"/"的區別, 加 '/'為刪除軟連結及軟連結目錄下面的所有檔案,這裡千萬要注意。
=============================================================================================================
著作權,文章允許轉載,但必須以連結方式註明源地址,否則追究法律責任! 謝謝合作。
QQ: 164798858@qq.com
Sina: weibo.com/kaijunfeng
Yahoo: fffygapl@yahoo.com.cn