利用oracle传输表空间来实现历史数据分离的方案

教程发布:风哥 教程分类:ITPUX技术网 更新日期:2022-02-12 浏览学习:803

ORACLE 传输表空间的方法来实现历史数据的分离

Oracle的传输表空间是指:
可以将一个数据库上的一个或多个表空间的全部数据文件拷贝到另一个数据库服务器上,通过导入的方式将表空间加载当目标数据库。

使用这种方法的最大好处是速度快,所需要的时间和拷贝数据文件差不多,比执行EXP/IMP的导入导出要快得多。

具体实现方法:以oa用户下T_DOC_PREFS为例,分离出2008年的数据

一.生产库操作

1.新建立个2008年的表空间,存放表T_DOC_PREFS分离出来的2008年数据
假设表空间名为TS_2008
CREATE TABLESPACE TS_2008 DATAFILE '/DEV/RFILE' SIZE 10000M;
--备注具体大小需要评估下一年数据量多大

2.用cats方法来创建一个新表存放T_DOC_PREFS分离出来的2008年数据
CREATE TABLE T_DOC_PREFS_2008 TABLESPACE TS_2008 AS SELECT * FROM T_DOC_PREFS WHERE DATE
BETWEEN TO_DATE('2008-01-01 00:00:00','YYYY-MM-DD') AND TO_DATE('2008-12-31 23:59:59','YYYY-MM-DD')
--备注具体sql查询出2008年的数据由软件开发商定。

3.设置Ts_2008表空间为只读
ALTER TABLESPACE TS_2008 READ ONLY;

4.用exp方法 导出表空间
EXP "SYS/ABCDEFG@OLD AS SYSDBA" FILE=/OPT/TS_2008.DMP TRANSPORT_TABLESPACE=Y TABLESPACES=TS_2008

5.拷贝 ts_2008.dmp 文件 以二进制方式到新主机数据库上

二.目标库操作

6.在新主机数据库上创建需要导入的用户如OA_2008
CREATE USER OA_2008 IDENTIFIED BY OA_2008;

7.导入2008年数据到OA_2008用户中
IMP "SYS/ABCDEFG@NEW AS SYSDBA" FROMUSER=OA TOUSER=OA_2008 FILE=/OPT/TS_2008.DMP TRANSPORT_TABLESPACE=Y TABLESPACES=TS_2008

8.然后在新机器上对ts_2008表空间设为可读写
ALTER TABLESPACE TS_2008 READ WRITE;

9.开发检查数据的一致性。

其他年份需要分离的数据采取方法同上,以上方法已经通过测试。

本文标签:
网站声明:本文由风哥整理发布,转载请保留此段声明,本站所有内容将不对其使用后果做任何承诺,请读者谨慎使用!
【上一篇】
【下一篇】