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

测试目的:验证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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

huangliang0703

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值