達夢資料庫利用rowid批量插入備份大表

2021-10-01 06:33:03 字數 895 閱讀 3795

生產庫通常有這樣的需求,比如表t資料量很大,需要臨時做個備份,然後對該錶進行dml操作。

普通的備份表sql如下:

create

table t_bak as

select

*from t;

但是t表資料量很大的時候,這樣做會造成回滾段很大,並且很容易出現「使用者資料被purge」的錯誤導致失敗。

可以利用rowid,考慮批量提交,指令碼如下:

-----先建立空表

create

table t_bak as

select

*from t where1=

2;

-----批量插入資料

-----2600萬資料5分鐘完成

declare

v_max_rowid bigint

; v_count int

; v_batch_rows int:=

100000

;begin

select

max(rowid)

into v_max_rowid from t ;

v_count := v_max_rowid/v_batch_rows+1;

for i in

1..v_count loop

insert

into t_bak

select

*from t where rowid>

(i-1

)*v_batch_rows and rowid<=i*v_batch_rows;

commit

;end

loop

;end

;

達夢資料庫和mysql索引引擎 達夢資料庫 索引

1.索引的種類和功能 聚集索引 每乙個普通表有且只有乙個聚集索引 唯一索引 索引資料根據索引鍵唯一 函式索引 包含函式 表示式的預先計算的值 位圖索引 對低基數的列建立位圖索引 位圖連線索引 針對兩個或者多個表連線的點陣圖索引,主要用於資料倉儲中 全文索引 在表的文字列上而建的索引。2.何時使用索引...

達夢資料庫操作

1.安裝 dminstall.bin i接下來是一些設定,比如 語言 key檔案的位置 時區 安裝型別 安裝目錄 略過 2.初始化 進入你剛才設定的安裝目錄的bin目錄下執行 dminit這是我自己的設定 input system dir home dmdba dmdata input db nam...

達夢資料庫使用

1 修改最大連線數 先檢視當前的最大連線數 select sf get para value 2,max sessions 修改最大連線數 alter system set max sessions 1000 spfile 重啟資料庫 su dmdba cd dmdbms dmservicedmse...