ITPub博客

首页 > 数据库 > Oracle > RAC中误将数据文件创建在本地盘时的修正

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

Oracle 作者:记录每一次错误 时间:2019-06-21 19:54:00 0 删除 编辑

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

版权声明:本文为博主原创文章,转载请附上博文链接!


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

请登录后发表评论 登录
全部评论
性格开朗,有较强的学习能力,对oracle数据库的体系结构,搭建RAC,timesten,goldengate,分布式数据库,dataguard,系统调优有较深入的了解, 尤其是oracle优化,深入学习的主机命令,对数据库的优化,SQL语句的优化有深入的认识,目前正在shell脚本,mysql,以后会有计划学习大数据和python。

注册时间:2018-07-23

  • 博文量
    168
  • 访问量
    138098