不幸的是,当我添加空间时,一个 UNDO 数据文件放错了位置。我想将该文件移动到正确的位置。由于它是生产数据库,我不想打扰正在进行的交易。我可以在移动时使该特定撤消数据文件脱机...数据库是否可以正常工作且数据丢失为零?
Oracle 数据库版本:11.2.0.4.0
有人可以建议吗?
不幸的是,当我添加空间时,一个 UNDO 数据文件放错了位置。我想将该文件移动到正确的位置。由于它是生产数据库,我不想打扰正在进行的交易。我可以在移动时使该特定撤消数据文件脱机...数据库是否可以正常工作且数据丢失为零?
Oracle 数据库版本:11.2.0.4.0
有人可以建议吗?
在数据库运行期间和 24/7 环境中,您应该需要使用 undo 数据文件的新位置创建新的 undo 表空间。创建这个较新的表空间后,您可以在线将旧表空间切换到较新的撤消表空间,而不会影响任何正在进行的事务。
以下示例显示了如何实现您的目标。使用此技巧,您可以避免数据丢失。
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
我还将在 BOTH 范围内更改系统,以确保在内存和 spfile 中都进行了更改:
ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS02 SCOPE=BOTH;
然后,如果所有活动事务和 UNDO_RETENTION 期间(如果有)都已完成,您将能够按照 doc123 的描述删除表空间。