移动tesst.dbf 到ASM中
据库版本 11.2.0.4.8
环境 rac 两个节点
准备工作
1)创建测试文件 (假设创建在一个节点的本地文件,我这以rac2的/u02/test下为例)
SQL> create tablespace test datafile'/u02/test/test.dbf' size 20m;
Tablespace created.
2)查看数据文件存放位置
SQL> select file#,name from v$datafile;
FILE# NAME
---------- --------------------
1 +DATA/orcl/system01.
dbf
2 +DATA/orcl/sysaux01.
dbf
3 +DATA/orcl/undotbs01
.dbf
4 +DATA/orcl/users01.d
bf
5 +DATA/orcl/undotbs02
.dbf
6 /u02/test/test.dbf
6 rows selected.
开始--
1)查看文件是否offline
SQL> alter system switch logfile;
System altered.
2)查看文件在文件系统的位置和ASM中的格式
SQL> col file_name for a20
SQL> select file_id,file_name from dba_data_files;
FILE_ID FILE_NAME
---------- --------------------
4 +DATA/orcl/users01.d
bf
3 +DATA/orcl/undotbs01
.dbf
2 +DATA/orcl/sysaux01.
dbf
1 +DATA/orcl/system01.
dbf
5 +DATA/orcl/undotbs02
.dbf
6 /u02/test/test.dbf
6 rows selected.
3)让6号数据文件offline
SQL> alter database datafile 6 offline;
Database altered.
SQL> select file_name, file_id, online_status from dba_data_files where file_id=6;
FILE_NAME FILE_ID ONLINE_
-------------------- ---------- -------
/u02/test/test.dbf 6 RECOVER
4)使用ASMCMD 复制文件到ASM
[root@rac2 u02]# su - grid
[grid@rac2 ~]$ asmcmd
ASMCMD> cp /u02/test/test.dbf +DATA/orcl/test.dbf
copying /u02/test/test.dbf -> +DATA/orcl/test.dbf
ASMCMD> ls
CONTROLFILE/
DATAFILE/
ONLINELOG/
PARAMETERFILE/
TEMPFILE/
control01.ctl
control02.ctl
redo01.log
redo02.log
redo03.log
redo04.log
spfileorcl.ora
sysaux01.dbf
system01.dbf
temp01.dbf
test.dbf
undotbs01.dbf
undotbs02.dbf
users01.dbf
ASMCMD> cd ..
ASMCMD> pwd
+DATA
5)重新注册数据文件(rename datafile)
SQL> alter database rename file '/u02/test/test.dbf' to '+DATA/orcl/test.dbf';
Database altered.
SQL> select file_name, file_id, online_status from dba_data_files where file_id=6;
FILE_NAME FILE_ID ONLINE_
-------------------- ---------- -------
+DATA/orcl/test.dbf 6 RECOVER
6)恢复数据文件使其online
SQL> alter database recover datafile 6;
Database altered.
SQL> alter database datafile 6 online;
Database altered.
7)确认是否成功
SQL> select file_name, file_id, online_status from dba_data_files where file_id=6;
FILE_NAME FILE_ID ONLINE_
-------------------- ---------- -------
+DATA/orcl/test.dbf 6 ONLINE