温馨提示×

Ubuntu下Oracle数据库迁移步骤是什么

小樊
42
2025-10-25 05:37:39
栏目: 云计算

Ubuntu下Oracle数据库迁移常见步骤

一、准备工作

  1. 备份数据:迁移前使用expdp/impdp或RMAN对源数据库进行全量备份,确保数据安全。
  2. 环境检查:确认源与目标Ubuntu系统的Oracle版本兼容(如11g→19c需满足升级脚本要求),字符集一致(通过SELECT parameter, value FROM nls_database_parameters WHERE parameter IN ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');查询)。
  3. 安装必要工具:目标Ubuntu上安装Oracle客户端(含expdp/impdp)、RMAN工具,确保网络互通(开放1521端口)。

二、使用Data Pump工具迁移(推荐)

1. 源服务器操作

  • 创建逻辑目录:以sysdba身份登录,创建用于存放导出文件的逻辑目录(需对应Ubuntu实际路径):
    sqlplus / as sysdba
    SQL> CREATE OR REPLACE DIRECTORY tmpDir AS '/home/oracle/expdp_dir';
    
  • 授予权限:允许用户访问目录:
    SQL> GRANT READ, WRITE ON DIRECTORY tmpDir TO your_user;
    
  • 导出数据:使用expdp导出指定对象(如dbTest schema),生成.dmp文件和日志:
    expdp your_user/your_password@localhost:1521/ORCL schemas=dbTest directory=tmpDir dumpfile=export_20251025.dmp logfile=expdp_export.log
    

2. 传输文件到目标服务器

使用scp.dmp文件从源Ubuntu复制到目标Ubuntu(假设目标IP为192.168.1.101):

scp -P 22 /home/oracle/expdp_dir/export_20251025.dmp oracle@192.168.1.101:/home/oracle/expdp_dir/

3. 目标服务器操作

  • 创建逻辑目录:与源服务器一致,指向目标路径:
    sqlplus / as sysdba
    SQL> CREATE OR REPLACE DIRECTORY tmpDir AS '/home/oracle/expdp_dir';
    SQL> GRANT READ, WRITE ON DIRECTORY tmpDir TO your_user;
    
  • 导入数据:使用impdp导入.dmp文件,可通过PARALLEL参数加速(如PARALLEL=4):
    impdp your_user/your_password@localhost:1521/ORCL schemas=dbTest directory=tmpDir dumpfile=export_20251025.dmp logfile=impdp_import.log
    

三、使用RMAN工具迁移(实例级)

1. 源服务器准备

  • 备份数据文件:使用RMAN备份所有数据文件、控制文件、归档日志:
    rman target /
    RMAN> BACKUP DATABASE PLUS ARCHIVELOG TO DEVICE TYPE DISK FORMAT '/home/oracle/rman_bkp/%U';
    

2. 传输文件到目标服务器

将备份文件复制到目标Ubuntu的指定目录(如/home/oracle/rman_bkp/):

scp -P 22 oracle@source_ip:/home/oracle/rman_bkp/* oracle@target_ip:/home/oracle/rman_bkp/

3. 目标服务器恢复

  • 还原控制文件:若控制文件未备份,需手动创建;否则使用备份文件还原。
  • 恢复数据库:启动数据库至NOMOUNT状态,执行恢复:
    sqlplus / as sysdba
    SQL> STARTUP NOMOUNT;
    RMAN> RESTORE DATABASE;
    RMAN> RECOVER DATABASE;
    SQL> ALTER DATABASE OPEN;
    

四、直接拷贝数据库文件(同版本/同平台)

  1. 停止源数据库
    sudo systemctl stop oracle
    
  2. 拷贝文件:使用rsync复制数据文件($ORACLE_BASE/oradata)、控制文件($ORACLE_BASE/fast_recovery_area)、重做日志文件到目标Ubuntu对应目录:
    rsync -avz /home/oracle/oradata/ oracle@target_ip:/home/oracle/oradata/
    
  3. 启动目标数据库
    sudo systemctl start oracle
    

五、使用Navicat等图形化工具迁移

  1. 安装配置Navicat:在Ubuntu上安装Navicat for Oracle,配置SSH反向隧道(避免防火墙限制)。
  2. 连接数据库:分别连接源Oracle数据库(源Ubuntu)和目标Oracle数据库(目标Ubuntu)。
  3. 迁移数据:右键源数据库→选择“数据同步”→配置源与目标表→执行迁移(支持增量同步)。

0