【发布时间】:2014-03-31 12:25:23
【问题描述】:
我有一个大小超过 2.5 TB 的数据库,现在我需要在一段时间内删除数据并想移动到磁带上。它是一个财务数据,现在我只需要保留以前的财政年度数据。我没有空间来保存整个数据库。
我的要求是备份特定持续时间的数据并移动到磁带中。
提前感谢您。
【问题讨论】:
标签: oracle database-administration
我有一个大小超过 2.5 TB 的数据库,现在我需要在一段时间内删除数据并想移动到磁带上。它是一个财务数据,现在我只需要保留以前的财政年度数据。我没有空间来保存整个数据库。
我的要求是备份特定持续时间的数据并移动到磁带中。
提前感谢您。
【问题讨论】:
标签: oracle database-administration
您可以创建分区表。每个分区都有自己的存储子句,因此它可以存储在不同的表空间中——甚至在不同的介质上。 如果需要,您可以从分区表轻松导出单个分区并在之后删除它。
例子:
CREATE TABLE MY_TABLE(
COL_A NUMBER,
COL_DATE DATE)
TABLESPACE SMALL_DATA
PARTITION BY RANGE (COL_DATE)
(
PARTITION VALUES LESS THAN (TO_DATE(' 1900-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) TABLESPACE OLD_DATA,
PARTITION VALUES LESS THAN (TO_DATE(' 2013-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) TABLESPACE CURRENT_DATA
);
使用包DBMS_REDEFINITION,您可以将现有表重新定义为分区表。请注意,要重新定义,您需要两倍于表使用的空间。
【讨论】: