rac+asm:移动数据文件


        移动数据文件分几种情况: 

        1.本地到本地

        2.本地到ASM 与 ASM到本地

        3.AMS到ASM



       本文通过实验:《rac环境将误建立在本地目录的文件转移到ASM存储中》,

来实现数据文件的位置移动。

 

      

   OS:RHEL 6.5
   DB:Oracle Rac 11.2.0.4
   存储:ASM共享存储

      step1:rac1故意将数据文件建立到本地OS目录。

 

 create tablespace test1 datafile '/home/oracle/test1.dbf' size 10m;
  查看表空间:

set linesize 300;
col FILE_NAME for a50;
select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;



因为表空间TEST1建立简历在rac1的本地目录,所以如果在rac1可以在TEST1建立Table,而rac2无法建立Table。

所以才需要移动数据文件到ASM共享存储

下面进行测试:


create table test1 (id int) tablespace test1;

可以看出rac1创建table成功。

下面在rac2进行测试:

select * from test1;



create table test2 (id int) tablespace test1;


rac2报错:无法找到 datafile6并给出了datafile6的信息。

rac2无法读取test1表,并且无法创建表。


----------------------------------------------华丽分割线------------------------------------------------------------------------------------------华丽分割线--------------------------------------------

以下是解决方法:


step2:在rac1使测试表空间处于offline状态:
alter tablespace test1 offline;
Tablespace altered.


Step3:将本地数据文件用asmcmd复制到ASM卷组中去

[root@rac1 ~]# su - grid 
[grid@rac1 ~]$ asmcmd
ASMCMD>  cp /home/oracle/test1.dbf +DATA/orcl/datafile/test1.dbf
copying /home/oracle/test1.dbf -> +DATA/orcl/datafile/test1.dbf


Step4:重命名数据库中的数据文件为新的名字(更改存储路径)
SQL> alter database rename file '/home/oracle/test1.dbf' to '+DATA/orcl/datafile/test1.dbf';
Database altered.
查看一下状态查询:1.表空间是否Offline 2.对应数据文件名称是否更换为:'+DATA/orcl/datafile/test1.dbf'
 SQL> select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;//图太大,不贴结果了。

Step5: 换rac2:
SQL> alter tablespace test1 online;  //更改表空间的状态

Tablespace altered.
在rac2查询表空间以及对应的数据文件:
SQL> select file_name,file_id,ONLINE_STATUS,tablespace_name from dba_data_files;//发现可以识别到。 备注:不贴结果了,图片太大。
在rac2查询test1表空间:
SQL> select * from test1;
no rows selected
SQL> insert into test1 values(123);          
1 row created.
SQL> select * from test1;
	ID
----------
       123

测试完毕,一切正常
此时数据文件已经从rac1本地正确移动到ASM共享存储。

本地文件仍然存在:
[oracle@rac1 ~]$ cd /home/oracle/
[oracle@rac1 ~]$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  test1.dbf  Videos
你可以自行删除。


关于如何更改文件路径网上的另一种做法: http://www.lxway.com/4052064891.htm
20:56:25 sys@XXX> alter tablespace test1 offline;Tablespace altered. 20:56:59 sys@XXX>exec dbms_file_transfer.copy_file('TEST1','test1.dbf','TEST2','test1.dbf');PL/SQL procedure successfully completed.20:57:09 sys@XXX> alter database rename file '/home/oracle/test1.dbf' to '+XXX_DATA/XXX/datafile/test1.dbf';Database altered.20:57:39 sys@XXX> alter tablespace test1 online;Tablespace altered.

备注:
以上迁移数据文件时是采用 dbms_file_transfer.copy_file迁移数据文件的方法,也可以使用RMAN来做:
SQL>select tablespace_name,file_name,status,online_status from
dba_data_files;
需要对表空间进行OFFLINE
登录RMAN,
 RMAN> sql "alter tablespace test1 offline";
  RMAN> copy datafile '/home/oracle/test1.dbf' to
'+DG/rac10g/datafile/test1.dbf';
SQL> alter database rename file '/home/oracle/test1.dbf' to
'+DG/rac10g/datafile/test1.dbf';
SQL> alter tablespace test1 online;

附:删除数据文件的别名:

[grid@qs-oradb1 ~]$ asmcmd
ASMCMD> ls -l
State    Type    Rebal  Name
MOUNTED  EXTERN  N      ARCH/
MOUNTED  EXTERN  N      DG_GRID/
MOUNTED  EXTERN  N      FBFJ_DATA/
MOUNTED  EXTERN  N      KDEDI_DATA/

切到对应的目录下:
ASMCMD> cd +KDEDI_DATA/kdedi/datafile
ASMCMD> rm test1.dbf



李宁宁是傻×!!!





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值