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

我们可能经常遇到这样的情况:
1. 因为存储需要调整,所以需要暂时把部分数据文件从一个存储迁移到另一个存储上
2. 随时时间的转移,原来的热点数据变成历史数据,需要这部分数据从好的设备转移到归档设备上

我们的选择有多种:
1. move table
这种方法的优点是对业务影响较小,几乎可以联机做。但如果对象很多,会比较麻烦,而且还需要重建索引。


2. 直接把数据文件转移
如果数据库可以停机,则是最简单的,但用户一般难以承受完全的停机操作。所以需要找一个折中的办法。
如果这部分数据比较独立、或者不太重要,用户愿意承受操作期间的部分业务的不可用,则可以考虑用offline datafile然后移动的方法去操作。
[@more@] ----------------------------
此种方法的具体步骤是:
1) 数据文件offline

SQL> 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: 此时无法读取文件 7
ORA-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中相关的数据刷新到数据文件中,刷新完成后,数据文件才能被offline
2. 数据文件被offline后,数据库内任何对这些文件的读写操作都会失败
3. 一个事务可以在offline前执行,在offline后再提交,前提是操作都发生在同一个会话中。
4. 被offline的数据文件被online前,必须做recover操作,如果对应的归档不存在导致recover失败,则无法online这个数据文件。

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

转载于:http://blog.itpub.net/231499/viewspace-1036170/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值