在Debian上迁移SQL*Plus数据库(Oracle)可通过以下步骤操作,主要使用expdp/impdp工具(数据泵)或exp/imp工具(传统导出导入):
一、准备工作
-
安装Oracle客户端工具
- 下载并安装Oracle Instant Client(含SQL*Plus和数据泵工具):
sudo apt update sudo apt install libaio1 libaio-dev wget https://download.oracle.com/otn_software/linux/instantclient/215000/instantclient-basiclite-linux.x64-21.5.0.0.0dbru.zip wget https://download.oracle.com/otn_software/linux/instantclient/215000/instantclient-sqlplus-linux.x64-21.5.0.0.0dbru.zip sudo unzip instantclient-basiclite-linux.x64-21.5.0.0.0dbru.zip -d /opt/oracle sudo unzip instantclient-sqlplus-linux.x64-21.5.0.0.0dbru.zip -d /opt/oracle sudo echo "export ORACLE_HOME=/opt/oracle/instantclient_21_5" >> ~/.bashrc sudo echo "export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH" >> ~/.bashrc source ~/.bashrc验证安装:
sqlplus -v。
- 下载并安装Oracle Instant Client(含SQL*Plus和数据泵工具):
-
配置网络连接
确保能通过tnsnames.ora访问目标数据库(需在/etc或用户目录下配置)。
二、使用数据泵工具迁移(推荐)
1. 导出源数据库数据
在源数据库服务器执行:
sqlplus / as sysdba
CREATE DIRECTORY backup_dir AS '/tmp/backup'; # 创建临时目录(需提前在系统中创建)
EXIT;
然后执行导出命令(全库或按用户/表):
expdp system/密码@源数据库服务名 DIRECTORY=backup_dir DUMPFILE=export.dmp LOGFILE=export.log FULL=y
# 或按用户导出:OWNER=(用户名)
# 或按表导出:TABLES=(表名)
2. 导入到目标数据库
在目标数据库服务器执行:
sqlplus / as sysdba
CREATE DIRECTORY restore_dir AS '/tmp/restore'; # 创建临时目录
EXIT;
然后执行导入命令:
impdp system/密码@目标数据库服务名 DIRECTORY=restore_dir DUMPFILE=export.dmp LOGFILE=import.log FULL=y
# 可选参数:REMAP_SCHEMA(跨用户迁移)、REMAP_TABLESPACE(跨表空间迁移)
三、使用传统工具迁移(备选)
1. 导出数据
sqlplus system/密码@源数据库服务名
EXP file=/tmp/export.dmp full=y
EXIT;
2. 导入数据
sqlplus system/密码@目标数据库服务名
IMP file=/tmp/export.dmp full=y ignore=y # ignore=y 忽略已存在对象
EXIT;
四、注意事项
- 权限要求
- 需使用具有
SYSDBA或EXP_FULL_DATABASE/IMP_FULL_DATABASE权限的用户操作。
- 需使用具有
- 目录权限
- 确保
/tmp/backup和/tmp/restore目录存在且可写。
- 确保
- 跨平台迁移
- 若源/目标平台不同(如Linux→Windows),需确保
COMPATIBLE参数一致,且使用RMAN工具转换数据文件格式。
- 若源/目标平台不同(如Linux→Windows),需确保
- 数据一致性
- 迁移前建议对源数据库进行备份,迁移过程中避免写入新数据。
参考资料: