0

不幸的是,当我添加空间时,一个 UNDO 数据文件放错了位置。我想将该文件移动到正确的位置。由于它是生产数据库,我不想打扰正在进行的交易。我可以在移动时使该特定撤消数据文件脱机...数据库是否可以正常工作且数据丢失为零?

Oracle 数据库版本:11.2.0.4.0

有人可以建议吗?

4

2 回答 2

2

在数据库运行期间和 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;
于 2015-01-18T17:16:36.673 回答
1

我会考虑将撤消表空间创建为 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 的描述删除表空间。

于 2016-04-18T19:12:29.720 回答