需求:需要从一台机器linux机器A迁移到linux机器B,同时迁移后的数据库文件路不同。
操作步骤如下:
1.从A服务用scp的方式把以下目录拷过来。/opt/u01/app/oracle/admin、/opt/u01/app/oracle/flash_recovery_area、/opt/u01/app/oracle/oradata、
/opt/u01/app/oracle/product/10.2.1/db_1/dbs基本这几个目录就可以。包括里面的子目录。
如果flash_recovery_area目录大小比较大,可以把归档的删除,再拷过来。使用rman登录数据库进行crosscheck
a.RMAN> crosscheck archivelog all;
b.delete expired archivelog all;
就可以用rm删除里面的归档文件了。
2.由于迁移后的目录路径不同,所以需要把原来的spfile文件转为pfile文件,因为spfile文件不容易修改。最后把改好的pfile再转为spfile就可以了。
命令如下:create pfile='/opt/u01/app/oracle/product/10.2.1/db_1/dbs/pfileorcl.ora' from spfile='/opt/u01/app/oracle/product/10.2.1/db_1/dbs/spfileorcl.ora'
create spfile='/opt/u01/app/oracle/product/10.2.1/db_1/dbs/spfileorcl.ora' from pfile='/opt/u01/app/oracle/product/10.2.1/db_1/dbs/pfileorcl.ora'
3.上面我们只改了参数文件,由于数据文件和redo日记文件是保存在控制文件里,所以需要启动数据库为mount状态做修改。
a.startup mount
b.修改文件路径:
alter database rename file '/data/app/oracle/oradata/orcl/system01.dbf' to '/opt/u01/app/oracle/oradata/orcl/system01.dbf'
alter database rename file '/data/app/oracle/oradata/orcl/undotbs01.dbf' to '/opt/u01/app/oracle/oradata/orcl/undotbs01.dbf'
alter database rename file '/data/app/oracle/oradata/orcl/sysaux01.dbf' to '/opt/u01/app/oracle/oradata/orcl/sysaux01.dbf'
alter database rename file '/data/app/oracle/oradata/orcl/redo01.log' to '/opt/u01/app/oracle/oradata/orcl/redo01.log'
alter database rename file '/data/app/oracle/oradata/orcl/redo02.log' to '/opt/u01/app/oracle/oradata/orcl/redo02.log'
alter database rename file '/data/app/oracle/oradata/orcl/redo03.log' to '/opt/u01/app/oracle/oradata/orcl/redo03.log'
自己根据路径做相应的修改就可以了。
4.alter database open 启动数据库OK.