RAC中误将数据文件创建在本地盘时的修正

来源:这里教程网 时间:2026-03-03 13:56:40 作者:

测试目的:验证RAC中误将数据文件创建在本地盘时的修复办法 环境说明: 两节点RAC,数据库名为kdedi 版本11.2.0.4  使用了ASM作为共享存储解决方案。 一 环境准备 1)节点一上创建表空间test1,数据文件不放到ASM,而是放到本地盘,能查看到表空间,能在上面创建表: 19:26:00 sys@XXX>create tablespace test1 datafile '/home/oracle/test1.dbf' size 10m; Tablespace created. 19:28:25 sys@XXX> select name,status from v$datafile; NAME --------------------------------------------------------------------------------------------------------------------------------------- STATUS ………… /home/oracle/test1.dbf ONLINE 30 rows selected. 19:28:32 sys@XXX> create table test1 (id int) tablespace test1; Table created. 19:29:01 sys@XXX> create table test2 tablespace test1 as select * from dba_tables; Table created. 19:29:09 sys@XXX> 2) 节点二上 能查到表空间test1,但创建表报错: 19:24:33 sys@XXX>select name ,status from v$datafile; NAME --------------------------------------------------------------------------------------------------------------------------------------- STATUS ------- /home/oracle/test1.dbf ONLINE 30 rows selected. 19:29:24 sys@XXX> create table test1 (id int) tablespace test1;  create table test1 (id int) tablespace test1 * ERROR at line 1: ORA-01157: cannot identify/lock data file 30 - see DBWR trace file ORA-01110: data file 30: '/home/oracle/test1.dbf' 3)但是数据库还是照样能够重启 [grid@qs-oradb1 ~]$ srvctl stop database -d kdedi [grid@qs-oradb1 ~]$ srvctl start database -d kdedi [grid@qs-oradb1 ~]$  2 处理过程 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. 3、备注 以上迁移数据文件时是采用 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 --------------------- 原文:https://blog.csdn.net/huangliang0703/article/details/48197007  版权声明:本文为博主原创文章,转载请附上博文链接!

相关推荐