RAC中误将数据文件创建在本地盘时的修正方法是什么
本篇内容介绍了"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
"RAC中误将数据文件创建在本地盘时的修正方法是什么"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!