背景:由于之前数据库文件放在/oradata目录下,现在需要将其迁移到/home/oracle目录下。
SQL> show parameter spfile;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string /oracle/app/product/12.2.0/dbhome_1/dbs/spfileeastdb.ora
SQL> show parameter control
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string /oradata/eastdb/control01.ctl,/oracle/app/fast_recovery_area/eastdb/control02.ctl
control_management_pack_access string DIAGNOSTIC+TUNING
SQL> select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/oradata/eastdb/system01.dbf
/oradata/eastdb/sysaux01.dbf
/oradata/eastdb/undotbs01.dbf
/oradata/eastdb/users01.dbf
/oradata/eastdb/undotbs2.dbf
/oradata/eastdb/etl.dbf
/oradata/eastdb/etl2.dbf
/oradata/eastdb/east.dbf
SQL> select member from v$logfile;
MEMBER
--------------------------------------------------------------------------------
/oradata/eastdb/redo01.log
/oradata/eastdb/redo02.log
/oradata/eastdb/redo03.log
SQL> select name from v$tempfile;
NAME
--------------------------------------------------------------------------------
/oradata/eastdb/temp01.dbf
/oradata/eastdb/temp02.dbf
--在spfile中修改control file路径
alter system set control_files='/home/oracle/eastdb/control01.ctl','/home/oracle/eastdb/control02.ctl' scope=spfile;
--关闭数据库
shutdown immediate;
mv /oradata/eastdb /home/oracle
mv /oracle/app/fast_recovery_area/eastdb/control02.ctl /home/oracle/eastdb/
--修改数据文件
alter database rename file '/oradata/eastdb/system01.dbf' to '/home/oracle/eastdb/system01.dbf';
alter database rename file '/oradata/eastdb/sysaux01.dbf' to '/home/oracle/eastdb/sysaux01.dbf';
alter database rename file '/oradata/eastdb/undotbs01.dbf' to '/home/oracle/eastdb/undotbs01.dbf';
alter database rename file '/oradata/eastdb/users01.dbf' to '/home/oracle/eastdb/users01.dbf';
alter database rename file '/oradata/eastdb/etl.dbf' to '/home/oracle/eastdb/etl.dbf';
alter database rename file '/oradata/eastdb/etl2.dbf' to '/home/oracle/eastdb/etl2.dbf';
alter database rename file '/oradata/eastdb/east.dbf' to '/home/oracle/eastdb/east.dbf';
alter database rename file '/oradata/eastdb/undotbs2.dbf' to '/home/oracle/eastdb/undotbs2.dbf';
--修改redo文件
alter database rename file '/oradata/eastdb/redo01.log' to '/home/oracle/eastdb/redo01.log';
alter database rename file '/oradata/eastdb/redo02.log' to '/home/oracle/eastdb/redo02.log';
alter database rename file '/oradata/eastdb/redo03.log' to '/home/oracle/eastdb/redo03.log';
--修改temp文件
alter database rename file '/oradata/eastdb/temp01.dbf' to '/home/oracle/eastdb/temp01.dbf';
alter database rename file '/oradata/eastdb/temp02.dbf' to '/home/oracle/eastdb/temp02.dbf';
select open_mode from v$database;
alter system switch logfile;
alter system checkpoint;




