当前位置:网站首页>Database exception resolution caused by large table delete data deletion

Database exception resolution caused by large table delete data deletion

2022-07-07 15:18:00 1024 questions

Catalog

One 、 Problem description

Two 、 Check the database

3、 ... and 、 Put forward a plan

Four 、 Execution process

One 、 Problem description

I was on my way to work this morning , Customers in the group say , There is a 24G The big table of ,delete Deleted 26 I haven't run for hours , At present, the process is still running. Let me help you deal with it , Stop the current process , And keep the data corresponding to the conditions , Delete the redundant data .

Two 、 Check the database

1. Not open for filing

2.UNDO The table space is full

3、 ... and 、 Put forward a plan

1. After communication , This table is the test data table , Not currently in use ;

So I plan to rename This table , adopt ctas The way to get the data you need , Rebuild indexes and related constraints .

2. There is a problem :delete The process has been executed 26 Hours , If kill process , Must lead to undo Roll back , Rolling back enables parallelism by default, resulting in high database and system load , So we need to deal with it in advance , Set parameters _fast_start_parallel_rollback_ Turn off the UNDO parallel .

-- View rollback parameter settings , Whether it is the default parallelism SQL> show parameter fast_start_parallel_rollbackNAME TYPE VALUE------------------------------------ ----------- ------------------------------fast_start_parallel_rollback string LOW--LOW representative Turn on CPU*2 parallel -- Set up spfile Cancel parallel SQL> alter system set fast_start_parallel_rollback=false;System altered. Four 、 Execution process

1. Backup retention Table creation statement .

2. Record current invalid object .

SELECT d.OWNER ,d.OBJECT_NAME ,d.OBJECT_TYPE ,d.statusFROM dba_objects dWHERE d.status = 'INVALID' AND d.owner = '**';

3. see delete process pid, The system level kill fall .

-- Inquire about 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 *****%';-- Database level kill process alter system kill session '2953,31083';

Report errors

ERROR at line 1:
ORA-00031: session marked for kill
-- The system level kill process
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. Observe undo Rollback condition

-- View the waiting Events 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;---------------------------------------------------1wait for a undo record611resmgr:cpu quantum291enq: RO - fast object reuse221enq: CR - block range reuse ckpt201free buffer waits17-- View the current data rollback 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';---------------------------------------------------83RECOVERING9026713455902625826-4 month -21

5. Look at the system load ,IO load , Memory usage

6. Wait for rollback to complete , For a long time .

7. After successful rollback ,rename The original table .

rename table to table_20210410;

8.CTAS Get the required data to a new table ( The original table name ) in .

create table USER.TABLEnologging parallel 8tablespace TBSas select /*+parallel(TABLE,'8')*/ * from USER.TABLE_20210410where *** like '******%';-- Cancel parallel alter table USER.TABLE noparallel;-- Turn on loggingalter table USER.TABLE logging;

9.rename Indexes , And rebuild the index .

alter index USER.INDEX1 rename to INDEX1_20210410;-- Rebuild index create index USER.INDEX1 on USER.TABLE (***) tablespace TBS parallel 8;-- Cancel parallel alter index USER.INDEX1 noparallel;

10. Create constraints , to grant authorization .

11. Match invalid object , Is the data consistent

12.drop fall rename Table of .

drop table USER.TABLE_20210410 cascade;

The above is the big watch delete Details of database exception resolution caused by deleting data , More about delete Please pay attention to other relevant articles of software development network for information about abnormal deletion of data database !


原网站

版权声明
本文为[1024 questions]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207071310404516.html