• alter database方法可以移动任何表空间的数据文件,但其要求数据库必须处于mount状态,故此种方法更适合做整体数据库的迁移。
  • alter tablespace方法需要数据库处于open状态,表空间在offline的状态下才可更改。但其不能移动system表空间,undo表空间和temp表空间的数据文件,故此种方法更适合于做用户数据文件的迁移。

两者操作皆在登陆上sql命令行里操作的

alter tablespace按表空间来

1、关闭相应的表空间

  1. alter tablespace dsj offline;

2、复制表dbf文件到指定路径

3、更改数据库种表文件存放路径

  1. alter tablespace dsj rename datafile 'D:\APP\ORADATA\DSJ\DSJ.DBF' TO 'D:\APP\ORADATA\DSJ.DBF';

4、挂载表

  1. alter tablespace dsj online;

alter database按数据文件来

1、sqlplus登录oracle,

  1. sqlplus system/password@orcl as sysdba
  2. sqlplus /nolog
  3. conn / as sysdba

2、关闭数据库,关闭之前不知道dbf路径的记得先查询

  1. SQL> shutdown immediate;

3、找到需要移植的dbf文件路径,然后移动dbf文件

  1. //例如:C:\app\XD\oradata\orcl\cmis\CMIS_TS_WF.DBF
  2. select tablespace_name, file_id,file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;
  3. select file#,ts#,status,name from v$datafile;

4、以mount形式加载数据库

  1. SQL> startup mount;

5、rename修改路径

  1. alter database rename file 'C:\app\DZWL.DBF' to 'D:\app\oradata\dzwl\DZWL.DBF';

注:此处路径根据实际情况进行更改,并且需要提前将C:\app\XD\oradata\orcl\cmis\CMIS_TS_WF.DBF文件复制到G:\app\XD\oradata\orcl\cmis

6、改变并打开数据库

  1. SQL> alter database open;

6.1. 报错ORA-01113和ORA-01110解决办法

image.png

  1. //重新关闭数据库-mount挂载-recover介质恢复-打开数据库-继续 如果当前在mount挂载下直接recover恢复就行了
  2. shutdown immediate;
  3. startup mount;
  4. recover datafile 'C:\app\DZWL.DBF';
  5. alter database open;

7、重启数据库验证

  1. SQL> shutdown immediate;
  2. SQL> startup;