Delete all data in schema on Oracle Database

Удаляем полностью данные по всем таблицам в одной schema.

  • При подключении в базе, ещё раз смотрим, что подключились правильно

set pagesize 1000
set linesize 1000
select host_name from v$instance;
SELECT INSTANCE_NAME, STATUS, DATABASE_STATUS FROM V$INSTANCE;

  • Отключаем ограничения целостности

set serveroutput on;
begin
for cur in (select fk.owner, fk.constraint_name , fk.table_name
from all_constraints fk, all_constraints pk
where fk.CONSTRAINT_TYPE = 'R' and
pk.owner = 'MY_SCHEMA' and
fk.r_owner = pk.owner and
fk.R_CONSTRAINT_NAME = pk.CONSTRAINT_NAME ) loop
execute immediate 'ALTER TABLE "'||cur.owner||'"."'||cur.table_name||'" MODIFY CONSTRAINT "'||cur.constraint_name||'" DISABLE';
end loop;
end;
/

  • Удаляем все данные из таблиц

BEGIN
for t1 in (select table_name from dba_tables WHERE owner LIKE 'MY_SCHEMA') loop
begin
dbms_output.put_line('truncate table '||t1.table_name || ';');
execute immediate ('truncate table '||t1.table_name);
end;
end loop;
END;
/

  • Включаем ограничения целостности

begin
for cur in (select fk.owner, fk.constraint_name , fk.table_name
from all_constraints fk, all_constraints pk
where fk.CONSTRAINT_TYPE = 'R' and
pk.owner = 'MY_SCHEMA' and
fk.r_owner = pk.owner and
fk.R_CONSTRAINT_NAME = pk.CONSTRAINT_NAME ) loop
execute immediate 'ALTER TABLE "'||cur.owner||'"."'||cur.table_name||'" ENABLE CONSTRAINT "'||cur.constraint_name||'"';
end loop;
end;
/

Оставьте комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *