温馨提示×

Ubuntu Oracle数据库迁移步骤解析

小樊
44
2025-10-02 00:53:29
栏目: 云计算

Ubuntu环境下Oracle数据库迁移步骤解析

Oracle数据库迁移需根据源端与目标端的环境差异(如操作系统、版本、字节序)选择合适方法。以下是Ubuntu场景下常用的四种迁移方式及详细步骤,涵盖传统工具、高效工具及底层文件操作:

一、使用Data Pump工具迁移(推荐,适用于跨版本/跨平台)

Data Pump是Oracle提供的高效数据迁移工具,支持跨版本、跨平台,且可通过并行操作提升速度。

1. 源服务器操作

  • 创建逻辑目录:在源数据库中创建逻辑目录,关联服务器物理路径(需有读写权限)。
    sqlplus / as sysdba
    SQL> CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS '/u01/app/oracle/dumpfiles';
    
  • 导出数据:使用expdp命令导出指定对象(如schema、表),生成.dmp文件及日志。
    expdp system/password@源数据库IP:1521/ORCL schemas=HR directory=DATA_PUMP_DIR dumpfile=hr_export.dmp logfile=hr_export.log
    

2. 文件传输

将生成的.dmp文件从源服务器复制到目标Ubuntu服务器(使用scprsync):

scp hr_export.dmp ubuntu@目标服务器IP:/home/ubuntu/dumpfiles/

3. 目标服务器操作

  • 创建逻辑目录:在目标数据库中创建同名逻辑目录,指向本地物理路径。
    sqlplus / as sysdba
    SQL> CREATE OR REPLACE DIRECTORY DATA_PUMP_DIR AS '/home/ubuntu/dumpfiles';
    
  • 导入数据:使用impdp命令导入数据,可通过REMAP_TABLESPACE调整表空间映射(若目标端表空间名称不同)。
    impdp system/password@目标数据库IP:1521/ORCL schemas=HR directory=DATA_PUMP_DIR dumpfile=hr_export.dmp logfile=hr_import.log remap_tablespace=SOURCE_TS:TARGET_TS
    

二、使用RMAN工具迁移(适用于实例级迁移)

RMAN(Recovery Manager)适用于需要迁移整个数据库实例的场景,支持跨平台但需注意字节序兼容性(同字节序可直接转换,不同则需用Data Pump替代)。

1. 源服务器准备

  • 置数据库为只读:防止数据变更导致不一致。
    sqlplus / as sysdba
    SQL> STARTUP MOUNT;
    SQL> ALTER DATABASE OPEN READ ONLY;
    
  • 检查平台兼容性:确认源端与目标端平台是否支持跨平台转换(如字节序是否一致)。
    SQL> SELECT * FROM V$TRANSPORTABLE_PLATFORM WHERE PLATFORM_NAME = '目标平台名称';
    

2. 转换数据库格式

  • 生成转换脚本:使用RMAN生成目标平台的数据库创建脚本(crdb.sql)。
    rman target /
    RMAN> CONVERT DATABASE TRANSPORT SCRIPT 'crdb.sql' NEW DATABASE 'newdb' TO PLATFORM 'Ubuntu Linux IA (64-bit)' FORMAT '/tmp/%U';
    
  • 传输文件:将源数据库数据文件、控制文件、SPFILE及转换脚本复制到目标服务器。

3. 目标服务器恢复

  • 执行转换脚本:在目标服务器上运行生成的crdb.sql,创建目标数据库结构。
    sqlplus / as sysdba
    SQL> @/home/ubuntu/crdb.sql
    
  • 恢复数据文件:使用RMAN恢复转换后的数据文件。
    rman target /
    RMAN> RESTORE DATABASE;
    RMAN> RECOVER DATABASE;
    
  • 启动数据库:完成恢复后启动数据库。
    SQL> ALTER DATABASE OPEN;
    

三、直接拷贝数据库文件(仅适用于同版本/同字节序)

若源端与目标端Oracle版本一致、操作系统字节序相同(如均为Linux 64位),可直接拷贝数据库文件,快速完成迁移。

1. 源服务器操作

  • 停止数据库:关闭源数据库服务。
    sudo systemctl stop oracle
    
  • 拷贝文件:使用rsync拷贝数据文件、控制文件、重做日志文件及SPFILE到目标服务器(保留目录结构)。
    rsync -avz /u01/app/oracle/oradata/ORCL/ ubuntu@目标服务器IP:/u01/app/oracle/oradata/ORCL/
    

2. 目标服务器操作

  • 修改权限:确保Oracle用户对拷贝的文件有所有权。
    sudo chown -R oracle:oinstall /u01/app/oracle/oradata/ORCL/
    
  • 启动数据库:启动目标数据库服务。
    sudo systemctl start oracle
    

四、使用传统EXP/IMP工具迁移(适用于低版本或简单场景)

EXP/IMP是Oracle早期提供的迁移工具,功能较Data Pump简单,适用于小数据量或低版本迁移。

1. 源服务器操作

  • 导出数据:使用exp命令导出指定对象(如用户、表),生成.dmp文件。
    exp system/password@源数据库IP:1521/ORCL file=hr_export.dmp owner=HR log=hr_export.log
    

2. 文件传输

.dmp文件复制到目标服务器(同Data Pump步骤)。

3. 目标服务器操作

  • 导入数据:使用imp命令导入数据,可通过IGNORE=Y忽略创建错误(如对象已存在)。
    imp system/password@目标数据库IP:1521/ORCL file=hr_export.dmp fromuser=HR touser=HR ignore=y log=hr_import.log
    

迁移注意事项

  1. 备份数据:迁移前务必备份源数据库(全量备份+增量备份),防止数据丢失。
  2. 版本兼容性:确保源端与目标端Oracle版本兼容(如11g→12c需满足版本升级要求)。
  3. 字节序检查:跨平台迁移前,使用V$TRANSPORTABLE_PLATFORM视图检查字节序是否一致(不同字节序需用Data Pump替代RMAN转换)。
  4. 测试环境验证:先在非生产环境测试迁移流程,确认数据完整性(如对比源端与目标端表记录数)。
  5. 权限设置:确保目标服务器Oracle用户对逻辑目录、物理路径有读写权限。
  6. 停机时间规划:根据数据量大小规划停机时间(如实例级迁移需停机,Data Pump可并行缩短时间)。

0