国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何快速生成表MOVE相關操作

IT那活兒 / 1432人閱讀
如何快速生成表MOVE相關操作
點擊上方藍字關注我們


事情來由


前段時間某數據庫存儲空間不足,領導讓我把舊表空間刪掉,用以回收存儲空間給當前在用的表空間使用,所以有了寫一個腳本快速生成move表相關操作并且move方式對生產的影響能做到盡可能小的想法。時間緊迫,這里用了較為熟悉的shell方式。


表空間情況描述


舊表空間數據文件有一個多T,但實際使用空間只有300多G,很多表已經清空了,表結構還在。查詢了表的類型和索引類型,可以說是各種類型都有,部分表還帶LOB字段,總之就是表很多,種類很雜,簡單的SQL語句拼接肯定是不行了。


思路梳理及腳本


總結可能會碰到的情況,實際上有以下幾種:

  1. 表為普通表,有普通索引和分區索引

  2. 表為普通表,僅有普通索引

  3. 表為普通表,僅有分區索引

  4. 表為普通表,無索引

  5. 表為分區表,有全局索引和本地索引

  6. 表為分區表,僅有全局索引

  7. 表為分區表,僅有本地索引

  8. 表為分區表,無索引


*表含有LOB字段的情況,可以后續多帶帶處理,因為情況相對較少,僅普通LOB字段和分區LOB字段


我的處理思路是:

1、編輯好參數文件,包含屬主、表名、move并行度、表move目標表空間、索引move目標表空間。讀取一行后,將表的情況輸出至表臨時文件,將索引的情況輸出至索引臨時文件,內容如下圖:

2.將得出的表和索引臨時文件根據是否分區的標志位“YES”“NO”做處理。如下圖所示:

3.根據相應的文件是否存在,從而根據不同的情況輸出不同情況下的SQL操作語句。

如果是普通表,則直接先move表,若表既有普通索引又有分區索引,則先rebuild普通索引,再將分區索引按分區rebuild(無法整個rebuild);若只有一種索引,則在move表后rebuild即可。如下圖所示:

4.如果是分區表,則要復雜一些。如果分區表既有全局索引又有分區索引,那么先rebuild全局索引,然后逐個move分區(加updateglobalindexes參數防止全局索引失效),當move一個分區后,隨即rebuild這個分區上的所有分區索引的對應分區,再循環操作下一個表分區。如果分區表僅有一種索引,則也是根據索引類型,輸出對應的SQL操作語句即可。


后續操作


執行腳本后,就將所有的move相關操作都輸出到了統一的SQL文件中,并將處理過的表按普通和分區表分區做了跟蹤列表。只需找個空閑的窗口后臺調用此SQL文件即可。如下圖所示:



問題處理及總結


當然,腳本只是個工具,是輔助我們提高工作效率的,在move過程中,應當做好監控,防止有異常產生,并寫好應對異常的預案,比如失效索引批量重建啥的。而對于LOB字段,更應當根據實際情況來處理,需要考慮數據庫本身配置、性能以及LOB字段大小等。在真正刪除表空間及數據文件前,也應當最后確認一下是否還有對象,并做自包含檢查。在刪除表空間之后,為防止特殊情況,可以再建一個同名的表空間,給一個很小的數據文件即可。


END




文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/130005.html

相關文章

  • DBASK問答集萃(2)

    摘要:新晉技術專家下面是墨天輪部分新晉的技術專家。大家可以點擊往期閱讀墨天輪技術專家邀請函了解詳情,申請成為我們的技術專家,加入專家團隊,與我們一起創建一個開放互助的數據庫技術社區。新關聯公眾號墨天輪是一個開放互助的數據庫技術社區。 引言 近期我們在DBASK小程序增加了數據庫 MongoDB、Redis、 Elasticsearch、DB2、Weblogic 等新的的專題欄目和一些新的技術...

    liuchengxu 評論0 收藏0
  • 用 JavaScript 實現鏈操作 - 10 Move Node In-place

    摘要:需求實現一個函數,把源鏈表的頭結點移到目標鏈表的開頭。要求是不能修改兩個鏈表的引用。跟前一個不同的是,這個是在不改變引用的情況下修改兩個鏈表自身。最優的方案這個算法考的是對鏈表節點的插入和刪除。大致思路為對做刪除一個節點的操作。 TL;DR 用 in-place 的方式把一個鏈表的首節點移到另一個鏈表(不改變鏈表的引用),系列目錄見 前言和目錄 。 需求 實現一個 moveNode()...

    CNZPH 評論0 收藏0
  • Move Mirror:使用 TensorFlow.js 在瀏覽器中預測姿勢之 AI 實驗

    摘要:文和,創意實驗室創意技術專家在機器學習和計算機視覺領域,姿勢預測或根據圖像數據探測人體及其姿勢的能力,堪稱最令人興奮而又最棘手的一個話題。使用,用戶可以直接在瀏覽器中運行機器學習模型,無需服務器。 文 / ?Jane Friedhoff 和 Irene Alvarado,Google 創意實驗室創意技術專家在機器學習和計算機視覺領域,姿勢預測或根據圖像數據探測人體及其姿勢的能力,堪稱最令人興...

    MiracleWong 評論0 收藏0
  • 用 JavaScript 實現鏈操作 - 09 Move Node

    摘要:需求實現一個函數,把源鏈表的頭節點移到目標鏈表。當源鏈表為空時函數應拋出異常。為了簡化起見,我們會用一個對象來存儲改變后的源鏈表和目標鏈表的引用。它也是函數的返回值。解法配合,這個非常簡單,注意這個函數沒有改變兩個鏈表本身。 TL;DR 把一個鏈表的首節點移到另一個鏈表。系列目錄見 前言和目錄 。 需求 實現一個 moveNode() 函數,把源鏈表的頭節點移到目標鏈表。當源鏈表為空時...

    suosuopuo 評論0 收藏0

發表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<