Как переместить файл отмены данных в работающей базе данных, не мешая транзакциям?

К сожалению, один файл данных UNDO был не в том месте, когда я добавлял место. Я хочу переместить этот файл в правильное местоположение. Поскольку это производственная база данных, я не хочу мешать текущим транзакциям. Могу ли я отключить этот конкретный файл данных отмены во время перемещения... Будет ли база данных работать нормально без потери данных?

Версия БД Oracle: 11.2.0.4.0

кто-нибудь может предложить?

2 ответа

Во время работы базы данных и в среде 24/7 вам необходимо создать новое табличное пространство отмены с новым расположением файла данных отмены. После создания этого более нового табличного пространства вы можете переключить старое на более новое табличное пространство отмены в режиме онлайн, не затрагивая текущие транзакции.

Следующий пример показывает, как достичь вашей цели. Используя этот трюк, вы можете избежать потери данных.

SQL>create undo tablespace undotbs2 datafile '/yournewlocation/undotbs02.dbf' size 1000m;

Now set new undo tablespace as default undo tablespace using following command as SYSDBA in SQLPLUS
SQL> alter system set undo_tablespace= undotbs2 ;

After finishing above task you can drop old undotbs tablespace from database using following command.
SQL> drop tablespace undotbs including contents;

Я хотел бы рассмотреть вопрос о создании табличного пространства отмены как файла данных BIGFILE:

CREATE BIGFILE UNDO TABLESPACE UNDOTBS02 
    DATAFILE '/yournewlocation/UNDOTBS02.dbf' 
    SIZE 100M AUTOEXTEND ON NEXT 100M 
    MAXSIZE 500G; --or whatever size you consider sufficient for your DB

Я бы также изменил систему с помощью ОБА, чтобы убедиться, что изменения сделаны как в памяти, так и в spfile:

ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS02 SCOPE=BOTH;

Затем, если все активные транзакции и период UNDO_RETENTION (если есть) выполнены, вы сможете удалить табличное пространство, как описано в doc123.

Другие вопросы по тегам