Oracle exp-imp方式数据库导入导出以及命令参数详解

发布时间:2025-12-09 16:22:16 浏览次数:18

通过数据泵导远程入数据的时候需要我们把,导入的数据文件上传到远程服务器具有读写权限的路径的慕夏,然后在通过数据泵impdb 导入文件。这种方式需要我们能够登录到远程服务器,但是有时候我们没有这种登录权限,只能通过普通的方式 exp/imp 导入导入了。
exp/imp方式导入导出缺点:导入导出的效率低,时间长;

exp命令导出数据

exp 命令导出示例

将数据库orcl数据库,指定用户pt6 的表 导出到E:\xxx\oracledata目录下。

exp pt6/cape@127.0.0.1:1521/orcl file=E:\xxx\oracledata\xxxx.dmp log=E:\xxx\oracledata\xxxx.dmp.txt owner=pt6

将数据库中system用户与sys用户的表导出

exp system/manager@localhost/TEST file=d:\daochu.dmp owner=(system,sys)

3.导出指定的表
将数据库中的表table1 、table2导出

exp system/manager@localhost/TEST file=d:\daochu.dmp tables=(table1,table2)

2 将数据库中system用户与sys用户的表导出

exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)

3 将数据库中的表table1 、table2导出

exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)

4 将数据库中的表table1中的字段filed1以”00″打头的数据导出

exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\” where filed1like '00%'\”

上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。不过在上面命令后面 加上 compress=y 就可以了

exp命令参数详解

关键字说明默认
USERID用户名/口令
FULL导出整个文件(N)
BUFFER数据缓冲区的大小
OWNER导出指定的所有者用户名列表
FILE输出文件 (EXPDAT.DMP)
TABLES导出指定的表名列表
COMPRESS是否压缩导出的文件(Y)
RECORDLENGTHIO 记录的长度
GRANTS导出权限(Y)
INCTYPE增量导出类型
INDEXES导出索引(Y)
RECORD跟踪增量导出(Y)
ROWS导出数据行(Y)
PARFILE参数文件名
CONSTRAINTS导出限制(Y)
CONSISTENT交叉表一致性
LOG屏幕输出的日志文件
STATISTICS分析对象(ESTIMATE)
DIRECT直接路径(N)
TRIGGERS导出触发器(Y)
FEEDBACK显示每 x 行 (0) 的进度
FILESIZE各转储文件的最大尺寸
QUERY选定导出表子集的子句
TRANSPORT_TABLESPACE导出可传输的表空间元数据(N)
TABLESPACES导出指定的表空间列表

imp 导入命令

imp导入样例

导入代码需要使用数据库服务器oracle用户执行,不需要登录sqlplus如果报找不到指令则去$ORACLE_HOME/bin下执行./imp 账号/密码@实例名 file=/home/oracle/data_f/xxxnew.dmp full=y ignore=y log=/home/oracle/data_f/xxxnew_imp.log

1 将D:\daochu.dmp 中的数据导入 TEST数据库中。

imp system/manager@TEST ignore=y full=y file=d:\daochu.dmp log=d:\daoru.txt

示例2

imp pt6/cape@10.216.60.130:1521/orcl file=E:\xxx\xxxxx\oracledata\xxx.dmp TABLESPACES=pt6 log=E:\xx\xx\oracledata\xxx.txt FULL=Y ignore = y

imp help=y1. 获取帮助

  • 导入一个完整数据库
  • imp system/manager file=bible_db log=dible_db full=y ignore=y
  • 导入一个或一组指定用户所属的全部表、索引和其他对象
  • imp system/manager file=seapark log=seapark fromuser=seapark

    imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)

  • 将一个用户所属的数据导入另一个用户
  • imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy

    imp system/manager file=tank log=tank fromuser=(seapark,amy) touser=(seapark1, amy1)

  • 导入一个表
  • imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)
  • 从多个文件导入
  • imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) log=paycheck,filesize=1G full=y
  • 使用参数文件
  • imp system/manager parfile=bible_tables.par

    bible_tables.par参数文件:

    #Import the sample tables used for the Oracle8i Database Administrator’s

    #Bible.

    fromuser=seapark touser=seapark_copy file=seapark log=seapark_import

  • 增量导入(9i中已经取消)
  • imp system./manager inctype= RECTORE FULL=Y FILE=A

    imp 命令参数详解

    关键字说明默认
    USERID用户名/口令
    FULL导入整个文件(N)
    BUFFER数据缓冲区大小
    FROMUSER所有人用户名列表
    FILE输入文件(EXPDAT.DMP)
    TOUSER用户名列表
    SHOW只列出文件内容(N)
    TABLES表名列表
    IGNORE忽略创建错误(N)
    RECORDLENGTHIO记录的长度
    GRANTS导入权限 (Y)
    INCTYPE增量导入类型
    INDEXES导入索引(Y)
    COMMIT提交数组插入(N)
    ROWS导入数据行(Y)
    PARFILE参数文件名
    LOG屏幕输出的日志文件
    CONSTRAINTS导入限制(Y)
    DESTROY覆盖表空间数据文件(N)
    INDEXFILE将表/索引信息写入指定的文件
    SKIP_UNUSABLE_INDEXES跳过不可用索引的维护(N)
    FEEDBACK每 x 行显示进度
    TOID_NOVALIDATE跳过指定类型 ID 的验证
    FILESIZE每个转储文件的最大大小
    STATISTICS始终导入预计算的统计信息
    RESUMABLE在遇到有关空间的错误时挂起
    RESUMABLE_NAME用来标识可恢复语句的文本字符串
    RESUMABLE_TIMEOUTRESUMABLE 的等待时间
    COMPILE编译过程, 程序包和函数(Y)
    STREAMS_CONFIGURATION导入 Streams 的一般元数据
    STREAMS_INSTANITATION导入 Streams 的实例化元数
    TRANSPORT_TABLESPACE导入可传输的表空间元数据
    TABLESPACES将要传输到数据库的表空间
    DATAFILES将要传输到数据库的数据文件
    TTS_OWNERS拥有可传输表空间集中数据的用户

    创建远程数据库表空间

    如果需要导入到远程数据库中,在创建表空间过程中需要创建远程数据库的表空间,需要通过sqlplus 登录远程数据库;格式为 用户名/密码@//数据库服务器IP:端口/数据库名称

    如果是dba用户不要忘记加上 as sysdba

    system/cape@//10.216.60.130:1521/orcl

    然后再执行创建表空间、临时表空间、用户、权限之类的操作;

    数据库数据导入

    imp pt6/cape@10.216.60.130:1521/orcl file=E:\AVICIT\changfei\oracledata\CF642DEV2_20230508V4.dmp TABLESPACES=pt6 log=E:\AVICIT\changfei\oracledata\CF642DEV2_20230508V4_daoru.txt FULL=Y ignore = y

    ORACLE导入imp/exp导入表空间名不同的办法,以及一些其他错误填坑

    @ORACLE IMP/EXP使用,两个库表空间不同时的解决办法

    ORACLE IMP/EXP使用,两个库表空间不同时的解决办法,以及一些其他错误填坑
    导入导出表空间不一致报错
    报错样例

    Export file created by EXPORT:V19.00.00 via conventional pathWarning: the objects were exported by HBS_DCORE_BASE2, not by youimport done in US7ASCII character set and AL16UTF16 NCHAR character setimport server uses AL32UTF8 character set (possible charset conversion)export client uses ZHS16GBK character set (possible charset conversion). . importing table "AI_GLM" 15 rows imported. . importing table "AUTH_CONF_INFO" 749 rows imported. . importing table "AUTH_INTERFACE_INFO" 0 rows imported. . importing table "BP_BANK" 4 rows imported. . importing table "BP_CA_CAL" 86 rows imported. . importing table "BP_CA_HCK" 0 rows imported. . importing table "BP_CA_HOL_DETAIL" 3 rows imported. . importing table "BP_CA_USH" 0 rows imported. . importing table "BP_CA_WND" 0 rows imported. . importing table "BP_CR_CRY" 10 rows imported. . importing table "BP_CT_CIT" 344 rows imported. . importing table "BP_CT_CNT" 253 rows imported. . importing table "BP_DATE" 1 rows imported. . importing table "BP_EXCEL_UPLOAD_HIST" 0 rows imported. . importing table "BP_FEE" 0 rows imported. . importing table "BP_FEE_BAS" 10 rows imported. . importing table "BP_FEE_STD" 227 rows imported. . importing table "BP_ORG" 4 rows importedIMP-00017: following statement failed with ORACLE error 959:"CREATE TABLE "BP_PARM" ("PARM_TYP" NVARCHAR2(10) NOT NULL ENABLE, "PARM_CD""" NVARCHAR2(40) NOT NULL ENABLE, "EFF_DATE" DATE NOT NULL ENABLE, "EXP_DATE""" DATE NOT NULL ENABLE, "EDESC" NVARCHAR2(60) NOT NULL ENABLE, "CDESC" NVARC""HAR2(60) NOT NULL ENABLE, "VAL" NCLOB, "CREATE_TIME" DATE, "MODIFY_TIME" DA""TE, "UPD_BR" NUMBER(20, 0), "UPD_TLR" NVARCHAR2(20), "TS" DATE) PCTFREE 10"" PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 131072 NEXT 1048576 MIN""EXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "HB""S_DCORE_BASE2_DATA" LOGGING NOCOMPRESS LOB ("VAL") STORE AS SECUREFILE (TA""BLESPACE "HBS_DCORE_BASE2_DATA" ENABLE STORAGE IN ROW CHUNK 8192 RETENTION ""AUTO NOCACHE LOGGING NOCOMPRESS KEEP_DUPLICATES STORAGE(INITIAL 106496 NEX""T 1048576 MINEXTENTS 1 BUFFER_POOL DEFAULT))"IMP-00003: ORACLE error 959 encounteredORA-00959: tablespace 'HBS_DCORE_BASE2_DATA' does not exist. . importing table "BP_PRCD" 594 rows imported. . importing table "BP_PRTY" 0 rows imported. . importing table "BP_PR_GRP" 8 rows imported. . importing table "BP_PR_GRP_LA" 23 rows imported. . importing table "BP_PR_TTR_OL" 2 rows imported. . importing table "BP_UNIT" 2 rows imported. . importing table "BP_USER" 27 rows imported. . importing table "KONT_APP_SYS_INFO" 4 rows importedIMP-00017: following statement failed with ORACLE error 959:"CREATE TABLE "KONT_CHANNEL" ("CHANNEL_ID" NVARCHAR2(32) NOT NULL ENABLE, "C""HANNEL_NAME" NVARCHAR2(200), "APP_KEY" NVARCHAR2(16) NOT NULL ENABLE, "APP_""SECRET" NVARCHAR2(32), "TLR" NVARCHAR2(20), "ACCESS_TOKEN" NVARCHAR2(32), """ENABLE" NVARCHAR2(1), "ENCRYPTION_SWITCH" NVARCHAR2(1), "TOKEN_TIMEOUT_SWIT""CH" NVARCHAR2(1), "AUTHORITY_SWITCH" NVARCHAR2(100), "SYSTEM_PUBLICKEY" NVA""RCHAR2(500), "SYSTEM_PRIVATEKEY" NCLOB, "CHANNEL_PUBLICKEY" NVARCHAR2(500),"" "CHANNEL_PRIVATEKEY" NCLOB, "MARK" NCLOB, "CREATE_TIME" DATE, "MODIFY_TIME""" DATE, "TS" DATE) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(I""NITIAL 131072 NEXT 1048576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFE""R_POOL DEFAULT) TABLESPACE "HBS_DCORE_BASE2_DATA" LOGGING NOCOMPRESS LOB ("""CHANNEL_PRIVATEKEY") STORE AS SECUREFILE (TABLESPACE "HBS_DCORE_BASE2_DATA""" ENABLE STORAGE IN ROW CHUNK 8192 RETENTION AUTO NOCACHE LOGGING NOCOMPRE""SS KEEP_DUPLICATES STORAGE(INITIAL 106496 NEXT 1048576 MINEXTENTS 1 BUFFER_""POOL DEFAULT)) LOB ("MARK") STORE AS SECUREFILE (TABLESPACE "HBS_DCORE_

    解决办法:在导出exp时先重命名导出数据的表空间,之后再重新导出dmp文件

    **重命名表空间和还原表空间需要再dba权限下执行**需要使用数据库服务器oracle用户,在$ORACLE_HOME/bin下执行,则进入dba权限用户./sqlplus / as sysdba重命名表空间alter tablespace HBS_DCORE_XXX_DATA rename to HBS_DATA;导出数据(注意:该代码不需要使用sqlplus,直接登录数据库服务器oracle用户执行即可)exp HBS_DCORE_XXX/HBS_DCORE_XXX#2021@core001 file=xxxnew.dmp log=xxx_exp.log statistics=none还原表空间名字alter tablespace HBS_DATA rename to HBS_DCORE_XXX_DATA ;之后使用导出的dmp导入新库即可

    当导入导出表空间一致时的其他报错
    若imp导入出现下面报错则表明用户没有操作当前表空间的权限,需要进行授权

    报错样例1

    IMP-00003: ORACLE error 1031 encounteredORA-01031: insufficient privilegesIMP-00017: following statement failed with ORACLE error 1031:""CREATE TRIGGER "HBS_DCORE_AML".T_AML_TEL_CODE_TRI"" BEFORE INSERT ON T_AML_TEL_CODE"" FOR EACH ROW"" BEGIN"" SELECT SEQ_T_AML_TEL_CODE.nextval INTO :NEW.ID FROM DUAL;" END;"IMP-00003: ORACLE error 1031 encounteredORA-01031: insufficient privilegesIMP-00017: following statement failed with ORACLE error 1031:""CREATE TRIGGER "HBS_DCORE_AML".NBC_BLACKLIST_TRI"" BEFORE INSERT ON NBC_BLACKLIST"" FOR EACH ROW"" BEGIN"" SELECT SEQ_NBC_BLACKLIST.nextval INTO :NEW.ID FROM DUAL;" END;"IMP-00003: ORACLE error 1031 encounteredORA-01031: insufficient privilegesIMP-00017: following statement failed with ORACLE error 1031:""CREATE TRIGGER "HBS_DCORE_AML".T_XXX_SMS_COLLECTION_TRI"" BEFORE INSERT ON T_XXX_SMS_COLLECTION "" FOR EACH ROW"" BEGIN"" SELECT SEQ_T_AML_SMS_COLLECTION.nextval INTO :NEW.ID FROM DUAL;" END;"IMP-00003: ORACLE error 1031 encounteredORA-01031: insufficient privileges

    报错样例2

    IMP-00017: 由于 ORACLE 错误 1950, 以下语句失败:"CREATE TABLE "SALGRADE" ("GRADE" NUMBER, "LOSAL" NUMBER, "HISAL" NUMBER) P""CTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 65536 FREELIST""S 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) LOGGING NOCOM""PRESS"IMP-00003: 遇到 ORACLE 错误 1950ORA-01950: 对表空间 'EXAMPLE' 无权限

    授权代码

    授权需要再dba权限下执行需要使用数据库服务器oracle用户,在$ORACLE_HOME/bin下执行,则进入dba权限用户./sqlplus / as sysdba登录后grant connect ,resource to XXX_DCORE_XXX; alter user XXX_DCORE_XXX quota unlimited on XXX_DATA;
    需要做网站?需要网络推广?欢迎咨询客户经理 13272073477