在Debian上迁移SQL*Plus数据库(Oracle)可通过以下步骤操作,主要使用expdp
/impdp
工具(数据泵)或exp
/imp
工具(传统导出导入):
安装Oracle客户端工具
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
。配置网络连接
确保能通过tnsnames.ora
访问目标数据库(需在/etc
或用户目录下配置)。
在源数据库服务器执行:
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=(表名)
在目标数据库服务器执行:
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(跨表空间迁移)
sqlplus system/密码@源数据库服务名
EXP file=/tmp/export.dmp full=y
EXIT;
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
目录存在且可写。COMPATIBLE
参数一致,且使用RMAN
工具转换数据文件格式。参考资料: