发布时间:2025-12-09 16:22:16 浏览次数:18
通过数据泵导远程入数据的时候需要我们把,导入的数据文件上传到远程服务器具有读写权限的路径的慕夏,然后在通过数据泵impdb 导入文件。这种方式需要我们能够登录到远程服务器,但是有时候我们没有这种登录权限,只能通过普通的方式 exp/imp 导入导入了。
exp/imp方式导入导出缺点:导入导出的效率低,时间长;
将数据库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导出
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 就可以了
| USERID | 用户名/口令 | |
| FULL | 导出整个文件 | (N) |
| BUFFER | 数据缓冲区的大小 | |
| OWNER | 导出指定的所有者用户名列表 | |
| FILE | 输出文件 (EXPDAT.DMP) | |
| TABLES | 导出指定的表名列表 | |
| COMPRESS | 是否压缩导出的文件 | (Y) |
| RECORDLENGTH | IO 记录的长度 | |
| 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 | 导出指定的表空间列表 |
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 = yimp help=y1. 获取帮助
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 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
| USERID | 用户名/口令 | |
| FULL | 导入整个文件 | (N) |
| BUFFER | 数据缓冲区大小 | |
| FROMUSER | 所有人用户名列表 | |
| FILE | 输入文件 | (EXPDAT.DMP) |
| TOUSER | 用户名列表 | |
| SHOW | 只列出文件内容 | (N) |
| TABLES | 表名列表 | |
| IGNORE | 忽略创建错误 | (N) |
| RECORDLENGTH | IO记录的长度 | |
| 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_TIMEOUT | RESUMABLE 的等待时间 | |
| 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使用,两个库表空间不同时的解决办法,以及一些其他错误填坑
导入导出表空间不一致报错
报错样例
解决办法:在导出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;