1. 首页
  2. IT资讯

利用offline datafile文件方式迁移数据

我们可能经常遇到这样的情况:1. 因为存储需要调整,所以需要暂时把部分数据文件从一个存储迁移到另一个存储上2. 随时时间的转移,原来的热点数据变成历史数据,需要这部分数据从好的设备转移到归档设备上我们的选择有多种:1. move table 这种方法的优点是对业务影响较小,几乎可以联机做。但如果对象很多,会比较麻烦,而且还需要重建索引。 2. 直接把数据文件转移 如果数据库可以停机,则是最简单的,但用户一般难以承受完全的停机操作。所以需要找一个折中的办法。 如果这部分数据比较独立、或者不太重要,用户愿意承受操作期间的部分业务的不可用,则可以考虑用offline datafile然后移动的方法去操作。 [@more@]—————————- 此种方法的具体步骤是:1) 数据文件offlineSQL> alter database datafile ‘E:ORACLEPRODUCT10.2.0ORADATAORA10GSUK.DBF’ offline;数据库已更改。2) 拷贝数据文件到新路径 可以cp/dd/rman都可以,步骤不再赘述3) 重命名数据文件 SQL> alter database rename file ‘E:ORACLEPRODUCT10.2.0ORADATAORA10GSUK.DBF’ to ‘E:ORACLEPRODUCT10.2.0ORADATASUK.DBF’;数据库已更改。–数据文件必须是offline的状态才可以在数据库打开状态下rename名称4) 恢复数据文件SQL> recover datafile ‘E:ORACLEPRODUCT10.2.0ORADATASUK.DBF’;完成介质恢复。5) 重新online数据文件SQL> alter database datafile ‘E:ORACLEPRODUCT10.2.0ORADATASUK.DBF’ online;数据库已更改。此时,所有步骤完成!—————————-用这种方法有两个疑虑:1. 如果有会话一直在数据文件上的对象进行查询,是否可以offline? 可以。证明步骤如下: create table T(a int);insert into T values(1);commit;DECLARE I INTEGER;BEGIN WHILE 1 = 1 LOOP SELECT A INTO I FROM T; END LOOP;END;/上面的语句可以模拟一直有活动查询,我来试试是否可以offline:SQL> alter database datafile ‘E:ORACLEPRODUCT10.2.0ORADATASUK.DBF’ offline;数据库已更改。数据库offline后,上面的查询会报错:ORA-00376: 此时无法读取文件 7ORA-01110: 数据文件 7: ‘E:ORACLEPRODUCT10.2.0ORADATASUK.DBF’可以看到,在这种情况下,数据文件可以被offline。2. 如果一直有活动事物,是否可以offline? 可以。证明步骤如下:SQL> delete from T;1 row deleted数据删除后一直不提交,则表示一直有活动事物。尝试offline成功!SQL> alter database datafile ‘E:ORACLEPRODUCT10.2.0ORADATASUK.DBF’ offline;数据库已更改。SQL> recover datafile ‘E:ORACLEPRODUCT10.2.0ORADATASUK.DBF’;完成介质恢复。SQL> alter database datafile ‘E:ORACLEPRODUCT10.2.0ORADATASUK.DBF’ online;数据库已更改。此时因为事物没有提交,所以数据文件online后表中的数据仍然存在。需要注意的是:1. datafile offline会触发dbwn把buffer中相关的数据刷新到数据文件中,刷新完成后,数据文件才能被offline2. 数据文件被offline后,数据库内任何对这些文件的读写操作都会失败3. 一个事务可以在offline前执行,在offline后再提交,前提是操作都发生在同一个会话中。4. 被offline的数据文件被online前,必须做recover操作,如果对应的归档不存在导致recover失败,则无法online这个数据文件。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/231499/viewspace-1036170/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:布吉卡,转转请注明出处:http://www.cxybcw.com/195663.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code