как уменьшить размер файлов данных оракула DB?

мы используем дб оракула (11 г release2), и табличная область отмены существует двух файлов данных и требует 48 ГБ. Но нам просто нужен этот размер для начальной загрузки и импорта. В настоящее время мы просто используем 10% от файлов данных...

Действительно ли возможно минимизировать файлы данных онлайн к необходимому размеру??

2
07.01.2014, 15:46
1 ответ

- создайте новую табличную область ОТМЕНЫ под названием UNDOTBS2

CREATE UNDO TABLESPACE undotbs2
DATAFILE '/01/oradata/dbname/undotbs201.dbf'
SIZE 50M AUTOEXTEND ON NEXT 5M;

Tablespace created.

- Переключите базу данных на новую табличную область ОТМЕНЫ.

ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS2 SCOPE=BOTH;

- Отбросьте старый

DROP TABLESPACE undotbs1 INCLUDING CONTENTS AND DATAFILES;

- Если Отмена все еще используется

*
ERROR at line 1:
ORA-30013: undo tablespace 'UNDOTBS1' is currently in use

Я испытал бы это сначала на тестовой базе данных:

(Следующий из битой ссылки) из исходного ответа:

SELECT a.name,b.status 
FROM   v$rollname a,v$rollstat b
WHERE  a.usn = b.usn
AND    a.name IN ( 
          SELECT segment_name
          FROM dba_segments 
          WHERE tablespace_name = 'UNDOTBS1'
         );

Вышеупомянутый запрос показывает название сегмента UNDO в табличной области UNDOTBS1 и ее состоянии. Посмотрите, какие пользователи/сессии выполняют эту отложенную транзакцию:

SELECT a.name,b.status , d.username , d.sid , d.serial#
FROM   v$rollname a,v$rollstat b, v$transaction c , v$session d
WHERE  a.usn = b.usn
AND    a.usn = c.xidusn
AND    c.ses_addr = d.saddr
AND    a.name IN ( 
          SELECT segment_name
          FROM dba_segments 
          WHERE tablespace_name = 'UNDOTBS1'
         );

Можно затем уничтожить сессию; следующее принимает SID 147 и SERIAL# 4:

alter system kill session '147,4' immediate;
4
22.02.2020, 23:08

Теги

Похожие вопросы