Как переместить файл отмены данных в работающей базе данных, не мешая транзакциям?
К сожалению, один файл данных 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.