rac+asm:移动数据文件

2017-01-01 21:43:08来源:CSDN作者:sinat_29742125人点击

第七城市

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

        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 ~]$ asmcmdASMCMD>  cp /home/oracle/test1.dbf +DATA/orcl/datafile/test1.dbfcopying /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 selectedSQL> insert into test1 values(123);          1 row created.SQL> select * from test1;	ID----------       123

测试完毕,一切正常此时数据文件已经从rac1本地正确移动到ASM共享存储。
本地文件仍然存在:
[oracle@rac1 ~]$ cd /home/oracle/[oracle@rac1 ~]$ lsDesktop  Documents  Downloads  Music  Pictures  Public  Templates  test1.dbf  Videos
你可以自行删除。

关于如何更改文件路径网上的另一种做法:http://www.lxway.com/4052064891.htm20: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 fromdba_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 ~]$ asmcmdASMCMD> ls -lState    Type    Rebal  NameMOUNTED  EXTERN  N      ARCH/MOUNTED  EXTERN  N      DG_GRID/MOUNTED  EXTERN  N      FBFJ_DATA/MOUNTED  EXTERN  N      KDEDI_DATA/切到对应的目录下:ASMCMD> cd +KDEDI_DATA/kdedi/datafileASMCMD> rm test1.dbf



李宁宁是傻×!!!





第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台