Ubuntu环境下Oracle数据库迁移步骤解析
Oracle数据库迁移需根据场景(同平台/跨平台、版本差异、数据量大小)选择合适方法,以下是Ubuntu中常用的迁移步骤及注意事项:
环境检查
备份数据
expdp full=y
或RMAN全备),避免迁移失败导致数据丢失。Data Pump是Oracle提供的高效数据迁移工具,支持增量迁移、并行处理,适用于大多数场景。
源服务器操作:
(1)创建逻辑目录(用于指定导出文件路径):
sqlplus / as sysdba
SQL> CREATE OR REPLACE DIRECTORY dpump_dir AS '/u01/app/oracle/dpump';
SQL> GRANT READ, WRITE ON DIRECTORY dpump_dir TO username; -- 授权给迁移用户
(2)使用expdp导出数据(可指定schemas、tables或full数据库):
expdp username/password@localhost:1521/ORCL schemas=hr,oe directory=dpump_dir dumpfile=exp_hr_oe.dmp logfile=exp_hr_oe.log
(3)将导出的.dmp
文件复制到目标服务器(使用scp
或rsync
):
scp /u01/app/oracle/dpump/exp_hr_oe.dmp username@target_ubuntu_ip:/u01/app/oracle/dpump/
目标服务器操作:
(1)创建相同的逻辑目录:
sqlplus / as sysdba
SQL> CREATE OR REPLACE DIRECTORY dpump_dir AS '/u01/app/oracle/dpump';
SQL> GRANT READ, WRITE ON DIRECTORY dpump_dir TO username;
(2)使用impdp导入数据(可指定REMAP_TABLESPACE
调整表空间,PARALLEL
加速):
impdp username/password@localhost:1521/ORCL schemas=hr,oe directory=dpump_dir dumpfile=exp_hr_oe.dmp logfile=imp_hr_oe.log remap_tablespace=hr_ts:target_hr_ts,oe_ts:target_oe_ts parallel=4
注:
REMAP_TABLESPACE
用于解决源目标表空间名称不一致问题;PARALLEL
可提升大文件导入速度。
RMAN适用于需要完整恢复数据库的场景(如版本升级、硬件更换),支持跨平台迁移(需endian一致)。
源服务器操作:
(1)将数据库启动到mount状态并设为只读:
sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE OPEN READ ONLY;
(2)使用RMAN转换为可传输格式(生成备份集):
rman target /
RMAN> BACKUP DATABASE TO PLATFORM 'Linux x86 64-bit' FORMAT '/u01/app/oracle/backup/%U';
RMAN> EXIT;
(3)传输备份文件到目标服务器(scp
或rsync
):
scp /u01/app/oracle/backup/* username@target_ubuntu_ip:/u01/app/oracle/backup/
目标服务器操作:
(1)将数据库启动到nomount状态:
sqlplus / as sysdba
SQL> STARTUP NOMOUNT;
(2)使用RMAN恢复数据库:
rman target /
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
SQL> ALTER DATABASE OPEN;
注:若源目标平台endian不一致,需使用
CONVERT DATABASE
命令转换数据文件(仅支持同endian)。
若源目标服务器Oracle版本相同、操作系统一致,可直接拷贝数据文件(速度快,但灵活性低)。
源服务器操作:
(1)关闭数据库:
sudo systemctl stop oracle
(2)拷贝数据文件(控制文件、数据文件、redo logs、归档日志):
rsync -avz /u01/app/oracle/oradata/ORCL/ username@target_ubuntu_ip:/u01/app/oracle/oradata/ORCL/
目标服务器操作:
(1)启动数据库到mount状态:
sqlplus / as sysdba
SQL> STARTUP MOUNT;
(2)打开数据库:
SQL> ALTER DATABASE OPEN;
注:需确保目标服务器的
ORACLE_HOME
、ORACLE_SID
等环境变量与源服务器一致。
Navicat等工具提供可视化界面,简化迁移流程(适合新手或小规模数据迁移)。
.dmp
或直接到目标数据库);SELECT COUNT(*) FROM table_name
);AWR
或ASH
报告分析目标数据库性能(如查询响应时间、资源占用)。EXP_FULL_DATABASE
(expdp)或IMP_FULL_DATABASE
(impdp)权限;AL32UTF8
),避免乱码;REMAP_TABLESPACE
参数调整;.log
文件,解决错误(如缺失对象、权限不足)。