Oracle 重建表(rename)注意事項總結

來源:互聯網
上載者:User

Oracle 重建表(rename)注意事項總結

一、概述

前一段時間,有一個DBA朋友在完成重建表(rename)工作後,第二天早上業務無法正常運行,出現資料無法插入的限制和錯誤,後來分析才發現,錯誤的原因是使用rename方式重建表以後,其它引用這個表的外鍵約束指向沒有重新定義到這個重建的新表中,從而導致這些表在插入新資料時,違反資料完整性約束,導致資料無法正常插入。影響了業務大概有1個多小時,真是一次血淋淋的教訓啊。使用rename方式重建表是我們日常DBA維護工作中經常使用的一種方法,因為CTAS+rename這種配合方式,非常實用和高效。很多DBA朋友應該也都是用過rename方式重建表,而且重建完成以後也都一切正常,沒有引起過問題。但是,我想說的是,使用rename重建表後,具體需要完成哪些掃尾工作你真的清楚嗎??這篇文章主要就是歸納當我們使用rename方式重建表後,需要進行哪些掃尾工作,如果你還不是很清楚,一定要仔細閱讀這篇文章,同時在以後的重建表工作中矯正過來,否則,問題遲早有一天會降臨到你的身邊! 二、重建表的方式這裡先不談其它,僅僅說一下重建表的方法。如下1、為了確保所有表欄位、欄位類型、長度完全一樣,我一般不建議使用CTAS方式來重建表。2、一般我都是使用下面兩種方法中的一個,來抽取表的定義
  • select dbms_metadata.get_ddl('TABLE',upper('&i_table_name'),upper('&i_owner')) from dual;
  • 使用PL/SQL developer類似這樣的工具,來查看錶定義語句
3、重建立一張_old類型的表(根據上面的抽取的表定義),然後使用insert /*+ append */ xx select xxx 方式完成資料的轉換4、最後使用rename方式倒換這兩張表的名字  三、重建表注意事項索引重建:這裡最關鍵的是,重建後索引的名字是否必須和以前的一樣,如果需要一樣,則必須將當前使用的索引名字先rename,否則建立的時候會出現索引名字已經存在的錯誤,如下:select

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.