国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

大表delete刪數據導致數據庫異常解決

瀏覽:192日期:2023-03-12 15:25:24
目錄
  • 一、問題描述
  • 二、查看數據庫情況
  • 三、提出方案
  • 四、執行過程

一、問題描述

早上正在上班路上,群里客戶說,有一張24G的大表,delete刪了26小時還沒有跑完,目前進程還在跑讓幫忙處理下,停止當前進程,并保留對應條件的數據,多余數據刪掉。

二、查看數據庫情況

1.未開歸檔

2.UNDO表空間爆滿

三、提出方案

1.經過溝通,該表為測試數據表,目前沒有在使用;

于是打算rename該表,通過ctas的方式去將需要的數據撈出來,重建索引和相關約束。

2.存在一個問題:delete進程已經執行了26小時,如果kill進程,必然會導致undo回滾,回滾默認開啟并行會導致數據庫和系統負載很高,于是需要提前處理下,設置參數_fast_start_parallel_rollback_關掉UNDO并行。

--查看回滾參數設置,是否是默認并行
SQL> show parameter fast_start_parallel_rollback
NAME TYPEVALUE
------------------------------------ ----------- ------------------------------
fast_start_parallel_rollback string      LOW
--LOW 代表 開啟CPU*2并行
--設置spfile取消并行
SQL> alter system set fast_start_parallel_rollback=false;
System altered.

四、執行過程

1.備份保留 表創建語句。

2.記錄當前無效對象。

SELECT  d.OWNER
       ,d.OBJECT_NAME
       ,d.OBJECT_TYPE
       ,d.status
FROM dba_objects d
WHERE d.status = "INVALID" 
AND d.owner = "**";

3.查看delete進程pid,系統級kill掉。

--查詢SID, SERIAL#
select s.SQL_TEXT, se.SID, se.SERIAL#
  from v$session se, v$sql s
 where s.sql_id = se.SQL_ID
   and username = "**"
   and status = "ACTIVE"
   and s.SQL_TEXT like "%delete * from *****%";
--數據庫級kill進程
alter system kill session "2953,31083";

報錯

ERROR at line 1:
ORA-00031: session marked for kill
--系統級 kill進程
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=2953;
kill -9 105257

4.觀察undo回滾情況

--查看等待事件
select inst_id,event,count(*)
  from gv$session a
 where a.status="ACTIVE"
 and not (a.type = "BACKGROUND" and a.state="WAITING" and  a.wait_class="Idle")
 group by inst_id,event
 order by a.inst_id,count(*) desc;
---------------------------------------------------
1	wait for a undo record	61
1	resmgr:cpu quantum	29
1	enq: RO - fast object reuse	22
1	enq: CR - block range reuse ckpt	20
1	free buffer waits	17
--查看當前數據回滾情況
alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss";
select usn,
       state,
       undoblockstotal "Total",
       undoblocksdone "Done",
       undoblockstotal - undoblocksdone "ToDo",
       decode(cputime,
      0,
      "unknown",
      sysdate + (((undoblockstotal - undoblocksdone) /
      (undoblocksdone / cputime)) / 86400)) "Estimated time to complete"
  from v$fast_start_transactions
  where state = "RECOVERING";
---------------------------------------------------
83	RECOVERING	9026713	455	9026258	26-4月 -21

5.觀察系統負載,IO負載,內存使用情況

6.等待回滾完成,持續時間較久。

7.回滾成功后,rename 原表。

rename table to table_20210410;

8.CTAS將需要的數據撈到新表(原來的表名)中。

create table USER.TABLE
nologging 
parallel 8
tablespace TBS
as select /*+parallel(TABLE,"8")*/ * 
from USER.TABLE_20210410
where *** like "******%";
--取消并行
alter table USER.TABLE noparallel;
--開啟logging
alter table USER.TABLE logging;

9.rename索引,并重建索引。

alter index USER.INDEX1 rename to INDEX1_20210410;
--重建索引
create index USER.INDEX1 on USER.TABLE (***) tablespace TBS parallel 8;
--取消并行
alter index USER.INDEX1 noparallel;

10.創建約束,授權。

11.比對無效對象,數據是否一致

12.drop掉rename的表。

drop table USER.TABLE_20210410 cascade;

以上就是大表delete刪數據導致數據庫異常解決的詳細內容,更多關于delete刪數據數據庫異常的資料請關注其它相關文章!

標簽: Oracle
主站蜘蛛池模板: 日本高清专区一区二无线 | 国产欧美日韩不卡在线播放在线 | 男人扒开腿躁女人j | free性丰满白嫩白嫩的hd | 国产自产在线 | 亚洲六月丁香六月婷婷蜜芽 | 久久91亚洲精品久久91综合 | 国产成人在线小视频 | 老司机免费福利午夜入口ae58 | 日韩欧美中文字幕一区二区三区 | 黄a 大片a v 永久免费 | 久久久一本精品99久久精品66 | 国内真实愉拍系列情侣 | 一级欧美在线的视频 | 亚洲va老文色欧美黄大片人人 | 日韩三级影院 | 国产日产欧美a级毛片 | 性刺激久久久久久久久 | 国产一级做a爰片在线 | 一级毛片免费完整视频 | 成年人在线免费观看视频网站 | 久久er热在这里只有精品85 | 一级毛片美国aaj毛片 | 九九99久久精品国产 | 一级美女视频 | 99久在线| 美国一级毛片免费 | 国产91香蕉在线精品 | 国产精品欧美一区二区三区不卡 | 美女张开腿让男人桶的 视频 | 一 级 黄 色 片生活片 | 日韩 欧美 中文 亚洲 高清 在线 | 99这里只有精品66视频 | 成人午夜精品 | 精品特级一级毛片免费观看 | 亚洲国产午夜看片 | 精品国产一区二区三区国产馆 | 日韩三级影院 | 成年人在线观看视频网站 | 在线精品欧美日韩 | 免费一级肉体全黄毛片 |