How to move a file of SYSTEM in filesystem to ASM
1)查看系统表空间的数据文件,这里有一个数据文件不在ASM里(当然是我创建的)
export ORACLE_SID=orcl2 (数据文件在节点2上,节点1上没有。模拟误将system表空间的文件加到本地去)
SQL> select file_name,file_id,tablespace_name from dba_data_files where tablespace_name='SYSTEM';
FILE_NAME FILE_ID TABLESPACE_NAME
-------------------- ---------- ------------------------------
+DATA/orcl/system01. 1 SYSTEM
dbf
/u02/test/sys02.dbf 6 SYSTEM
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
ASMCMD>cp /u02/test/sys02.dbf
+DATA/orcl/sys02.dbf
ASMCMD> ls
CONTROLFILE/
DATAFILE/
ONLINELOG/
PARAMETERFILE/
TEMPFILE/
control01.ctl
control02.ctl
redo01.log
redo02.log
redo03.log
redo04.log
spfileorcl.ora
sys02.dbf
sysaux01.dbf
system01.dbf
temp01.dbf
undotbs01.dbf
undotbs02.dbf
users01.dbf
SQL> startup mount;
ORACLE instance started.
SQL> alter database rename file '/u02/test/sys02.dbf' to '+DATA/orcl/sys02.dbf';
Database altered.
SQL> alter database open;
Database altered.
这里使用asmcmd 使用rman应该也可以,其实普通数据文件和system文件不一样的地方就是能不能直接offline。我们知道system 表空间不能offline
所以只能停库。另外,普通文件在offline之后要recover,而system文件不需要。为啥,普通文件offline 库还在运行,数据文件头还在增长,recover一下同步数据文件头和其他文件头一致。所以rman的我就不贴了