★Oracle imp/impdp 导入dmp文件到数据库 您所在的位置:网站首页 impdp导入报错ora04021 ★Oracle imp/impdp 导入dmp文件到数据库

★Oracle imp/impdp 导入dmp文件到数据库

2024-01-20 03:03| 来源: 网络整理| 查看: 265

使用EXPDP和IMPDP时应该注意的事项:

       EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。        EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。

       IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。

注意:EXP不会导出空表(可能会对存储过程有影响)

1.exp/imp导出/导入数据 --exp导出数据 exp CCENSE/CCENSE@OracleDB file=D:\DBBackUp\oracleExp.dmp log=D:\DBBackUp\oracleExp20161103.log --imp导入数据 imp CCENSE/CCENSE@OracleDB file=D:\DBBackUp\oracleExp.dmp log=D:\DBBackUp\oracleImp20161103.log FULL=y; /* 说明:CCENSE/CCENSE@OracleDB --->用户名/密码@数据库实例 file="本地路径+需要导入/导出的dmp文件全称" log="日志文件" FULL=y; */ --给当前用户追加connect,resource,dba [非必须] grant connect,resource,dba to CCENSE; 数据导出: 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中 exp system/manager@TEST file=d:\daochu.dmp full=y 将数据库中system用户与sys用户的表导出 exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys) 将数据库中的表table1 、table2导出 exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2) 将数据库中的表table1中的字段filed1以"00"打头的数据导出 exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\" 上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。 不过在上面命令后面 加上 compress=y 就可以了 数据的导入 将D:\daochu.dmp 中的数据导入 TEST数据库中。 imp system/manager@TEST file=d:\daochu.dmp 上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。 在后面加上 ignore=y 就可以了。 将d:\daochu.dmp中的表table1 导入 imp system/manager@TEST file=d:\daochu.dmp tables=(table1) 2.expdp/impdp导出/导入数据

       使用impdp命令,需要在oracle数据库服务器操作:

       使用sqlplus或者Oracle客户端(PL/SQL) 链接到相应的Oracle数据库实例(进行下面第一,第二两步骤的操作)

       一、创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建。

create directory dpdata1 as 'd:\test\dump'; (查看服务器上若没有存在d:\test\dump目录,则手动新建,把dmp备份文件放到d:\test\dump目录下面)

       二、查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)

select * from dba_directories;

这里写图片描述

3.导入数据库 --expdp导出数据 expdp CCENSE/CCENSE@OracleDB directory = "dpdata1" dumpfile ="oracleExpdp.dmp" logfile = oracleExpdp20161103.log --impdp导入数据 impdp CCENSE/CCENSE@OracleDB directory="dpdata1" dumpfile="oracleExpdp.dmp" logfile = oracleImpdp20161103.log FULL=y; /* 说明:CCENSE/CCENSE@OracleDB --->用户名/密码@数据库实例 directory="在步骤一中创建的逻辑目录" dumpfile="需要导入/导出的dmp文件全称" logfile="日志文件" FULL=y; */ --其他SQL --表空间[10G]和临时表空间[1G] /*表空间*/ SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces t, dba_data_files d WHERE t.tablespace_name = d.tablespace_name GROUP BY t.tablespace_name; /*临时表空间*/ select tablespace_name,file_name,bytes/1024/1024 file_size,autoextensible from dba_temp_files; -- 查看端口是否被占用 netstat -aon|findstr "1522" -- 查看监听状态,启动监听,关闭监听 lsnrctl status LISTENER2 lsnrctl start LISTENER2 lsnrctl stop LISTENER2 --访问地址 linux sqlplus ccense/ccense@//localhost:1521/OracleDB; win sqlplus ccense/ccense@IP:1521/OracleDB;

       imp 只导入数据,不导入表结构,在命令里加上ignore=y就可以了

       ignore=y相当于,如果没有的表,创建并倒入数据,如果已经有的表,忽略创建的,但不忽略倒入。

       在使用IMP导入并使用ignore=y参数时,Oracle根本不检查要导入的数据结构和现存在数据库中表的结构是否相同

       exp 命令导出表结构,不导出表数据。只需在命令行里加一个参数rows=n即可。表示不导出表数据



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有