ORACLE10G非归档模式下异机迁库(文件迁移)

环境信息:

源库 目标库
操作系统 WIN7 WIN SVR 2012 R2
系统盘符 C,D,E,F C,D
IP x.x.x.216 x.x.x.112
数据库版本 10.2.0.4.0 - 64bi 10.2.0.4.0 - 64bi
存储方式 单实例 单实例
ORACLE_HOME D:\oracle\product\10.2.0\db_1 D:\oracle\product\10.2.0\db_1
ORACLE_SID ORCL ORCL

数据库迁移思路:

  • 目标系统创建新的数据库
  • 将源库中所有控制文件,数据文件复制到目标库中
  • 重建控制文件修改相应路径(如果文件路径有变更)
  • 介质恢复所有数据文件
  • 启动数据库

具体恢复步骤:

  1. 源库中查询控制文件、REDO 文件、数据文件位置并且记录下来,并且查询数据库 DBID 记录下来
select name from v$datafile; 
select name from v$controlfile; 
select * from v$logfile; 
select dbid from v$database;
  1. 进行切换日志组,触发检查点,确保数据由脏块进入数据文件中。
alter system switch logfile;
alter system checkpoint; 
shutdown immediate;//可选[取决于是否停机迁库]
  1. 关闭目标数据库 (以下皆在目标数据库进行操作)
shutdown immediate;
  1. 以 notmount 模式启动,并且设置数据库 DBID 后关闭数据库
startup nomount; 
set dbid=1526707455;//(源库DBID) 
shutdown immediate;
  1. 将所有控制文件、REDO 文件及数据库文件复制到新的系统环境中(因为 216 系统盘与 112 系统盘不一致,故移动到目标库 D 盘某一固定文件夹中)
    因为本次复制并无参数文件故控制文件(3 个)需放在 ORACLE10G 默认控制文件的路径下 D:\oracle\product\10.2.0\oradata\orcl
  2. 启动 mount 模式启动目标数据库
startup mount;
  1. 导出控制文件重建语句
alter database backup controlfile to trace as 'c:\REBUILDCTL.SQL';
  1. 编辑 REBUILDCTL.SQL 文件夹,将数据文件,REDO 文件,临时文件等替换为放置到目标系统后的相对文件路径。

    (需修改的路径不止途中圈出的,需修改所有路径为目标系统规划路径)
  2. 关闭数据库,并且运行 REBUILDCTL.SQL 文件

shutdown immediate; 
@c:\REBUILDCTL.SQL;
  1. 以 mount 模式进行启动,并且对所有数据文件进行介质恢复(因为重建控制文件会导致 scn 更新,导致与数据文件中不统一)
recover database;
  1. 清除重做日志打开数据库
alter database open resetlogs;
  1. 验证数据库(验证源数据库中的数据是否到目标数据库中)

PS

  1. 之前想通过 windows 命令创建虚拟盘符 E,F 来避免为了修改数据文件的路径而去对控制文件进行重建,然而发现 oracle 识别不到虚拟盘符的路径,所以还是得老老实实得去重建修改掉相对路径。
  2. 其他参考地址:
  3. https://jingyan.baidu.com/article/ca00d56c6d0d9de99eebcf82.html
  4. https://www.cnblogs.com/Snowfun/articles/4805048.html

猜你喜欢

转载自www.cnblogs.com/cjunn/p/12143436.html