1、确定要迁移的表空间 & 数据文件
col file_name format a80
select file_id, tablespace_name, file_name from dba_data_files order by 1;

备注:数据库需要开启归档
2、使用rman copy方式进行数据文件复制
select 'backup as copy datafile ' || file_id || ' format ' || '''+SSDDG2'';'
from dba_data_files where tablespace_name IN('SYSTEM','SYSAUX')
order by tablespace_name, file_name;
backup as copy datafile 1 format '+SSDDG2';

select 'list copy of datafile ' || file_id || ';'
from dba_data_files where tablespace_name IN('SYSTEM','SYSAUX')
order by tablespace_name, file_name;
list copy of datafile 1;

3、移动的数据文件offline
select 'sql ''alter database datafile ' || file_id || ' offline'';'
from dba_data_files where tablespace_name IN('SYSTEM')
order by tablespace_name, file_name;
sql 'alter database datafile 1 offline;'



4、switch datafile,使控制文件指向移动后的数据文件
select 'switch datafile ' || file_id || ' to copy;'
from dba_data_files where tablespace_name IN('SYSTEM')
order by tablespace_name, file_name;
switch datafile 1 to copy;

5、使用recover datafile方式进行恢复
select file_id, tablespace_name, status, file_name from dba_data_files order by 1;

col name format a80
select name, status from v$datafile;

select 'recover datafile ' || file_id || ';'
from dba_data_files where tablespace_name IN('SYSTEM')
order by tablespace_name, file_name;
recover datafile 1;

注:应该是应用归档的,记录不见了。。。
6、将数据文件online
select 'sql ''alter database datafile ' || file_id || ' online'';'
from dba_data_files where tablespace_name IN('SYSTEM')
order by tablespace_name, file_name;
sql 'alter database datafile 1 online';

7、delet数据文件

select 'delete copy of datafile ' || file_id || ';'
from dba_data_files where tablespace_name IN('SYSTEM')
order by tablespace_name, file_name;
delete copy of datafile 1;


8、启动数据库

567

被折叠的 条评论
为什么被折叠?



