在 Linux 下导入 Oracle 数据库,常见方式有以下几种,最常用的是 imp / impdp(数据泵)。下面按场景给你说明。
确保:
.dmp 文件system)sqlplus / as sysdba
CREATE OR REPLACE DIRECTORY dump_dir AS '/u01/oracle/dump';
GRANT READ, WRITE ON DIRECTORY dump_dir TO scott;
EXIT;
把 .dmp 文件放到该目录:
cp xxx.dmp /u01/oracle/dump/
导入整个库
impdp system/password DIRECTORY=dump_dir DUMPFILE=xxx.dmp FULL=Y
导入指定用户
impdp system/password DIRECTORY=dump_dir DUMPFILE=xxx.dmp SCHEMAS=scott
导入到不同用户
impdp system/password DIRECTORY=dump_dir DUMPFILE=xxx.dmp \
REMAP_SCHEMA=old_user:new_user
导入到不同表空间
impdp system/password DIRECTORY=dump_dir DUMPFILE=xxx.dmp \
REMAP_TABLESPACE=old_ts:new_ts
imp scott/tiger FILE=xxx.dmp FULL=Y
或指定用户:
imp system/password FROMUSER=old_user TOUSER=new_user FILE=xxx.dmp
⚠️ imp 已逐渐被 impdp 取代
如果是 .sql 文件:
sqlplus user/password @file.sql
或
sqlplus user/password < file.sql
TABLE_EXISTS_ACTION=REPLACE
或
TABLE_EXISTS_ACTION=APPEND
先查看:
SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%';
确保用户有:
IMP_FULL_DATABASEimpdp system/oracle \
DIRECTORY=dump_dir \
DUMPFILE=test.dmp \
REMAP_SCHEMA=test:test2 \
REMAP_TABLESPACE=ts_test:ts_test2 \
TABLE_EXISTS_ACTION=REPLACE
如果你能告诉我:
.dmp 还是 .sql我可以给你精确命令。