ubuntu

Ubuntu中Oracle数据库如何进行数据迁移

小樊
45
2025-10-12 09:35:57
栏目: 云计算

Ubuntu环境下Oracle数据库数据迁移的常见方法

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

Oracle Data Pump是Oracle官方提供的高效数据迁移工具,支持跨平台、跨版本迁移,且具备并行处理能力,适用于大多数场景。

1. 源服务器操作

(1)创建目录对象

登录Oracle数据库(sqlplus / as sysdba),创建用于存放导出文件的逻辑目录(需与Ubuntu本地目录对应):

CREATE OR REPLACE DIRECTORY data_pump_dir AS '/home/oracle/dump_files';

(2)授予权限

为用户授予目录读写权限(以scott用户为例):

GRANT READ, WRITE ON DIRECTORY data_pump_dir TO scott;

(3)导出数据

使用expdp命令导出数据(可根据需求调整参数,如schemas指定模式、tables指定表):

expdp scott/tiger@localhost:1521/ORCLCDB schemas=scott directory=data_pump_dir dumpfile=scott_export.dmp logfile=expdp_scott.log

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

使用scp命令将导出的.dmp文件复制到目标Ubuntu服务器(假设目标服务器IP为192.168.1.101,目标用户为oracle):

scp -P 22 /home/oracle/dump_files/scott_export.dmp oracle@192.168.1.101:/home/oracle/dump_files/

3. 目标服务器操作

(1)创建目录对象

登录目标数据库,创建与源服务器对应的逻辑目录:

CREATE OR REPLACE DIRECTORY data_pump_dir AS '/home/oracle/dump_files';

(2)授予权限

为目标用户授予目录权限:

GRANT READ, WRITE ON DIRECTORY data_pump_dir TO scott;

(3)导入数据

使用impdp命令导入数据(可根据需求调整参数,如remap_schema映射模式、remap_tablespace映射表空间):

impdp scott/tiger@localhost:1521/ORCLCDB schemas=scott directory=data_pump_dir dumpfile=scott_export.dmp logfile=impdp_scott.log

二、使用RMAN(Recovery Manager)迁移

RMAN适用于实例级迁移(如跨平台恢复整个数据库),需确保源与目标服务器的Oracle版本兼容且字节序一致(同为小端或大端)。

1. 源服务器操作

(1)将数据库置为只读模式

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE OPEN READ ONLY;

(2)转换数据文件(若跨字节序)

使用CONVERT DATABASE命令转换数据文件格式(以从Solaris迁移到Ubuntu Linux为例,均是小端,无需转换;若跨字节序需执行转换):

RMAN> CONVERT DATABASE TO PLATFORM 'Linux x86 64-bit' 
      FORMAT '/tmp/converted_files/%U';

(3)备份数据库

RMAN> BACKUP DATABASE TO DEVICE TYPE DISK 
      FORMAT '/tmp/full_backup_%U.bkp';

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

使用scp命令将备份文件复制到目标服务器:

scp -P 22 oracle@192.168.1.100:/tmp/full_backup_*.bkp /home/oracle/backup/

3. 目标服务器操作

(1)恢复控制文件

RMAN> RESTORE CONTROLFILE FROM '/home/oracle/backup/full_backup_01.bkp';

(2)挂载数据库

STARTUP NOMOUNT;

(3)恢复数据库

RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;

(4)打开数据库

ALTER DATABASE OPEN RESETLOGS;

三、直接拷贝数据库文件(仅适用于同环境)

若源与目标服务器的Oracle版本、操作系统版本及字节序完全一致,可直接拷贝数据库文件(数据文件、控制文件、重做日志文件),适用于快速迁移。

1. 源服务器操作

(1)关闭数据库

sudo systemctl stop oracle

(2)拷贝文件

使用rsync命令拷贝数据库文件(假设数据库文件存放在/u01/app/oracle/oradata/ORCLCDB):

rsync -avz /u01/app/oracle/oradata/ORCLCDB/ oracle@192.168.1.101:/u01/app/oracle/oradata/ORCLCDB/

2. 目标服务器操作

(1)启动数据库

sudo systemctl start oracle

(2)验证数据

登录数据库检查表、数据是否正常。

四、使用第三方工具迁移(如Navicat)

Navicat是一款图形化管理工具,支持Oracle数据库迁移,操作简便,适合非技术人员。

1. 准备工作

2. 迁移步骤

(1)创建迁移任务

打开Navicat,点击「工具」→「数据迁移」,选择「Oracle到Oracle」。

(2)配置源与目标数据库

填写源数据库和目标数据库的连接信息,测试连接是否成功。

(3)选择迁移对象

勾选需要迁移的表、视图、存储过程等对象(可全选或自定义)。

(4)执行迁移

点击「开始」按钮,Navicat会自动完成数据迁移,并生成迁移报告。

注意事项

  1. 备份数据:迁移前务必备份源数据库(可使用expdpRMAN或第三方工具),防止数据丢失;
  2. 版本兼容性:确保源与目标Oracle版本兼容(如11g可迁移到12c/19c,但需注意版本升级限制);
  3. 字符集一致性:源与目标数据库字符集需一致(如均为AL32UTF8),避免乱码;
  4. 测试环境验证:生产环境迁移前,需在测试环境验证迁移流程,确保无误;
  5. 停机时间:大数据量迁移需预留足够的停机时间,避免影响业务。

0
看了该问题的人还看了