Oracle数据库如何在Ubuntu上迁移
导读:Ubuntu 上 Oracle 数据库迁移实操指南 一、迁移方案总览与选择 Data Pump 逻辑迁移(expdp/impdp):适合跨小版本/跨平台、只迁移部分Schema/表或做版本升级;停机时间短,操作灵活。 RMAN 跨平台传输...
Ubuntu 上 Oracle 数据库迁移实操指南
一、迁移方案总览与选择
- Data Pump 逻辑迁移(expdp/impdp):适合跨小版本/跨平台、只迁移部分Schema/表或做版本升级;停机时间短,操作灵活。
- RMAN 跨平台传输(CONVERT DATABASE):适合整库迁移到不同平台(如 Linux x86-64 → Linux x86-64),保持DBID一致,切换过程可控。
- 传统导出导入(exp/imp):兼容老版本,功能有限,适合小数据量或兼容性要求不高的场景。
- 图形化工具(如 Navicat):便于少量对象/数据迁移或做预迁移评估,不建议承载整库。
以上方法在 Ubuntu 上均可实施,选择取决于停机窗口、数据量、平台差异与版本兼容性。
二、Data Pump 逻辑迁移步骤(推荐)
- 源库准备
- 切换到 oracle 用户并登录:
su - oracle
sqlplus / as sysdba - 创建目录对象(指向服务器本地可写目录):
create or replace directory tmpDir as ‘/opt/oracle/dump’;
grant read, write on directory tmpDir to system; - 导出(示例按 Schema):
expdp system/YourPass@//source_ip:1521/XE schemas=SCOTT directory=tmpDir dumpfile=scott.dmp logfile=expdp_scott.log parallel=2
- 切换到 oracle 用户并登录:
- 传输文件
scp -P 22 /opt/oracle/dump/scott.dmp ubuntu@target_ip:/opt/oracle/dump/ - 目标库准备
- 安装并启动 Oracle(Ubuntu 可用 XE 21c 等),创建同名 Schema/用户 与默认表空间(若需)。
- 创建目录对象并授权:
create or replace directory tmpDir as ‘/opt/oracle/dump’;
grant read, write on directory tmpDir to system; - 导入(示例):
impdp system/YourPass@//target_ip:1521/XE schemas=SCOTT directory=tmpDir dumpfile=scott.dmp logfile=impdp_scott.log parallel=2 table_exists_action=replace
- 常用参数
- 按表导出:tables=EMP,DEPT
- 重映射:remap_schema=SCOTT:SCOTT_NEW remap_tablespace=USERS:USERS_NEW
- 网络链路直传(无需落地文件):network_link=src_db_link
三、RMAN 跨平台整库迁移步骤
- 源库准备
- 只读打开数据库:
startup mount;
alter database open read only; - 使用 RMAN 转换数据库到目标平台格式(Linux x86-64 示例):
rman target /
RMAN> CONVERT DATABASE NEW_DATABASE TO PLATFORM ‘Linux x86 64-bit’
FORMAT ‘/tmp/rman_conv/%U’; - 传输生成的文件至目标主机(含数据文件、控制文件脚本等)。
- 只读打开数据库:
- 目标库启动与建库
- 在目标主机以 nomount 启动:
sqlplus / as sysdba
startup nomount; - 执行生成的建库脚本(通常名为 crdb.sql 或类似),完成控制文件创建与数据文件恢复。
- 打开数据库并检查平台/字符集:
alter database open;
select platform_name, open_mode from v$database;
- 在目标主机以 nomount 启动:
- 适用说明
- 适合整库迁移;转换过程会处理字节序/平台差异。
- 若仅迁移部分业务,优先使用 Data Pump。
四、迁移前后关键检查与常见问题
- 兼容性核对
- 字符集:select * from nls_database_parameters where parameter=‘NLS_CHARACTERSET’; (尽量保持一致)
- 版本与补丁:源/目标库版本差异尽量小,导入前在测试环境验证。
- 对象与权限
- 统计信息:导入后执行 exec dbms_stats.gather_schema_stats(ownname=> ‘SCOTT’, estimate_percent=> DBMS_STATS.AUTO_SAMPLE_SIZE);
- 作业/链接/同义词:检查 dbms_scheduler_jobs、dblink、public synonym 等依赖。
- 目录与权限
- 确保 Oracle 目录对象指向的操作系统目录存在且 oracle:oinstall 可写。
- 资源与性能
- 大表导入建议设置 parallel、合理 tablespace 与 undo/redo 参数,分批提交减少回滚压力。
- 回退预案
- 保留源库全备与导出文件;导入异常可快速回切业务。
五、在 Ubuntu 上部署 Oracle 以便承接迁移
- 环境建议
- Ubuntu 20.04 LTS 64 位、内存≥8GB、磁盘≥50GB(生产更高规格)。
- 安装要点(以 XE 21c 为例)
- 安装依赖:sudo apt update & & sudo apt install -y alien libaio1 unixodbc vim unzip build-essential
- 下载 Oracle XE RPM,转换为 DEB:
sudo alien -d oracle-database-xe-21c-.rpm
sudo dpkg -i oracle-database-xe-21c_.deb
sudo apt --fix-broken install(如有依赖错误) - 初始化数据库:sudo /etc/init.d/oracle-xe-21c configure(设置 1521/5500 端口与 SYS/SYSTEM 密码)
- 配置环境变量:
echo ‘export ORACLE_HOME=/opt/oracle/product/21c/dbhomeXE’ > > ~/.bashrc
echo ‘export ORACLE_SID=XE’ > > ~/.bashrc
echo ‘export PATH=$PATH:$ORACLE_HOME/bin’ > > ~/.bashrc
echo ‘export LD_LIBRARY_PATH=$ORACLE_HOME/lib’ > > ~/.bashrc
source ~/.bashrc - 登录验证:sqlplus system/YourPass@XE
- 注意
- Ubuntu 非官方主推平台,生产环境建议使用 Oracle Linux/Red Hat;XE 有资源上限(如 2 CPU/2GB 内存/12GB 用户数据)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Oracle数据库如何在Ubuntu上迁移
本文地址: https://pptw.com/jishu/757775.html
