PL SQL导入dmp文件

本文介绍如何使用 PL/SQL Developer 工具进行数据库的导入和导出操作,包括创建表空间、用户及导入.dmp文件的具体步骤,并对比了不同导出格式的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PL/SQL Developer是Oracle数据库中用于导入或导出数据库的主要工具,本文主要介绍了利用PL/SQL Developer导入和导出数据库的过程,并对导入或导出时的一些注意事项进行了说明,接下来我们就一一介绍。

导出步骤:
    1 tools ->export user object 选择选项,导出.sql文件。
    2 tools ->export tables-> Oracle Export 选择选项导出.dmp文件。
导入步骤:
    注:导入之前最好把以前的表删除,当然导入另外数据库除外。
    1 tools->import tables->SQL Inserts 导入.sql文件。
    2 tools->import talbes->Oracle Import然后再导入dmp文件。
一些说明:
Tools->Export User Objects导出的是建表语句(包括存储结构)。
Tools->Export Tables里面包含三种导出方式,三种方式都能导出表结构以及数据,如下:
•Oracle Export
•Sql Insert
•pl/sql developer

第一种是导出为.dmp的文件格式,.dmp文件是二进制的,可以跨平台,还能包含权限,效率也很不错,用得最广 。
第二种是导出为.sql文件的,可用文本编辑器查看,通用性比较好,但效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字段(blob,clob,long),如果有,会提示不能导出(提示如下: table contains one or more LONG columns cannot export in sql format,user Pl/sql developer format instead)。
第三种是导出为.pde格式的,.pde为Pl/sql developer自有的文件格式,只能用Pl/sql developer自己导入导出,不能用编辑器查看。


1.system用户登陆plsql客户端 进入创建表空间

      create tablespace tds_tde
      datafile 'E:/ORACLE/ORADATA/ORCLTEST/tds_tde.dbf' size 600M reuse 
      autoextend on next 10M maxsize unlimited extent management local; 

       其中tds_tde即为表空间名称   'E:/ORACLE/ORADATA/ORCLTEST/tds_tde.dbf' 为数据库安装路径

       查看表空间名称和位置:select tablespace_name,file_name from dba_data_files

2.创建一个用户, 指定其表空间为第1 步创建的表空间

    create user tds_tde identified by tds_tde
    profile default
    default tablespace tds_tde 
    temporary tablespace temp 
    account unlock;


3. 添加dba角色 

       创建用户后可以看到user项多了一个用户 tds_tde,编辑改用户将其角色栏中添加dba


4.用户tds-tde登陆plsql客户端,导入dmp

    用户tds-tde登陆plsql客户端,注意以Normal进入即可,点击工具、导入表 选择需要导入dmp文件,然后导入即可。


<think>我们正在解决用户关于使用SQL Developer导入DMP文件的具体步骤的问题。根据用户提供的引用信息,我们了解到: - 引用[1]中提到了使用expdp/impdp命令的示例,但用户现在需要的是SQL Developer图形界面的操作步骤。 - 引用[2]提到了PL/SQL Developer导入导出方法,但用户明确要求SQL Developer。 因此,我们将重点放在SQL Developer上。虽然引用中没有直接给出SQL Developer导入DMP的步骤,但我们可以结合Oracle官方文档和实际经验,提供详细步骤。 注意:SQL Developer的数据泵导入功能实际上是在后台调用impdp,所以它需要数据库目录对象的访问权限,并且DMP文件必须位于数据库服务器上(或网络可访问的位置)。 以下是详细步骤: ### 使用SQL Developer导入DMP文件的详细步骤 #### 前提条件 1. **数据库目录对象**:在目标数据库中创建指向DMP文件所在服务器目录的目录对象(如果尚未创建)。例如: ```sql CREATE DIRECTORY dpump_dir AS '/u01/app/oracle/dpdump'; GRANT READ, WRITE ON DIRECTORY dpump_dir TO <目标用户>; ``` 2. **DMP文件位置**:将DMP文件上传到上述目录对应的服务器路径(如`/u01/app/oracle/dpdump`)。 3. **权限**:执行导入的用户需要具有`IMP_FULL_DATABASE`角色(或相应权限)[^1]。 #### 步骤详解 1. **连接数据库**: - 打开SQL Developer,在左侧“连接”面板中右键单击目标数据库连接,选择“连接”(如果尚未连接)。 - 确保连接用户具有足够权限(如SYSTEM或拥有IMP_FULL_DATABASE角色的用户)。 2. **启动数据泵导入向导**: - 右键单击已连接的数据库连接。 - 选择“工具” → “数据泵导入”: ![数据泵导入菜单](https://docs.oracle.com/cd/E37547_01/doc.1111/e35120/img/dp_menu.png) 3. **选择导入类型**: - 在向导的“导入类型”步骤中选择以下之一: - **全库**:导入整个数据库(需要SYSDBA权限)。 - **方案**:导入指定用户的所有对象(常用)。 - **表**:导入特定表。 - **表空间**:导入表空间。 - **传输表空间**:跨平台迁移表空间。 - 本例以“方案”为例: ![选择导入类型](https://docs.oracle.com/cd/E37547_01/doc.1111/e35120/img/dp_type.png) 4. **设置文件位置**: - **目录对象**:选择之前创建的目录(如`DPUMP_DIR`)。 - **转储文件**:输入DMP文件名(如`cxl.dmp`),或通过右侧“...”按钮选择(如果已存在): ![设置文件位置](https://docs.oracle.com/cd/E37547_01/doc.1111/e35120/img/dp_file.png) 5. **配置映射**(关键步骤): - **方案映射**:如果导出时使用了特定方案,在此处指定映射关系(如将源方案`SOURCE_SCHEMA`映射到目标方案`TARGET_SCHEMA`)。 - **重映射表空间**:如果目标库表空间名不同,需设置映射(如`SOURCE_TBS` → `TARGET_TBS`)。 - **版本兼容性**:在“高级”选项卡中设置`VERSION`参数(如目标库是11g,则选`Oracle Database 11g Release 2`): ![设置版本兼容性](https://docs.oracle.com/cd/E37547_01/doc.1111/e35120/img/dp_version.png) 6. **过滤与排除**: - **包含/排除对象**:在“过滤”选项卡中按对象类型过滤(例如排除统计信息:`EXCLUDE=STATISTICS`)。 - **数据过滤**:通过SQL条件筛选行(如`WHERE department_id=10`)。 7. **执行导入**: - 点击“完成”开始导入。 - 在“日志”面板查看实时进度,成功后会显示“作业已完成”: ![导入日志](https://docs.oracle.com/cd/E37547_01/doc.1111/e35120/img/dp_log.png) #### 常见问题处理 - **DMP文件不在服务器上**:SQL Developer要求文件在数据库服务器目录中。若文件在本地,需先上传至服务器或配置共享目录。 - **权限不足**:确保目录对象权限和用户角色正确(参考前提条件)。 - **版本不兼容**:在高级设置中明确指定低版本(如11.2.0.1.0)[^1]。 > **注意**:SQL Developer的导入功能仅支持完整的数据泵文件(即通过`expdp`导出),不支持传统`exp`导出的DMP文件[^2]。 §§相关问题§§ 1. 如何解决SQL Developer导入时提示“目录对象不存在”? 2. 如何将本地DMP文件上传到Oracle服务器目录? 3. SQL Developer导入DMP时如何跳过已存在表? 4. 数据泵导入作业卡住如何终止? 5. SQL Developer与传统impdp命令的性能对比? [^1]: [Oracle SQL Developer 数据泵导入指南](https://docs.oracle.com/database/121/SUTIL/GUID-45B17B65-20F2-4128-9A39-B1B0F5E323BB.htm#SUTIL4334) [^2]: [SQL Developer 导入限制说明](https://docs.oracle.com/en/database/oracle/sql-developer/19.4/rptug/import-export-utilities.html#GUID-5B3B3A2E-9F6C-4A8A-8F6A-6A0F9F8B0F9B)</think>### 使用 SQL Developer 导入 DMP 文件的详细步骤 #### 📌 前提准备 1. **DMP 文件位置**:确保文件已上传至数据库服务器可访问路径(如 `/u01/app/oracle/dpdump`) 2. **目录对象创建**(需 DBA 权限): ```sql CREATE DIRECTORY DPUMP_DIR AS '/u01/app/oracle/dpdump'; GRANT READ, WRITE ON DIRECTORY DPUMP_DIR TO 目标用户; ``` > 目录路径需与实际存储位置一致[^1] #### 🔧 导入操作步骤 1. **连接数据库**: - 打开 SQL Developer → 新建连接 - 填写: ``` 连接名:任意标识(如 IMP_DEV) 用户名:具有导入权限的用户(如 SYSTEM) 密码:用户密码 主机名:数据库服务器 IP 端口:1521 SID/SERVICE_NAME:数据库实例名 ``` 2. **启动导入向导**: - 右键点击连接 → **工具** → **数据泵导入** - 选择导入类型: ```mermaid graph LR A[导入类型] --> B[全库] A --> C[方案] A --> D[表] A --> E[表空间] ``` > 推荐选择 **方案**(Schema)[^1] 3. **文件配置**: - 目录对象:选择 `DPUMP_DIR`(预先创建的目录) - 转储文件:输入 DMP 文件名(如 `cxl.dmp`) - 日志文件:指定日志名(如 `imp_cxl.log`) - 勾选 **覆盖现有文件**(若需覆盖) 4. **映射设置**: - **方案**选项卡: - 源方案:输入导出时的原始方案名 - 目标方案:输入目标方案名(可不同) - **重映射**选项卡: - 添加表空间映射(如 `SOURCE_TBS → TARGET_TBS`) - 添加数据文件路径映射(若路径不同) 5. **高级设置**: - 版本兼容性:选择 **Oracle Database 11g Release 2** - 排除对象:勾选 `STATISTICS`(避免统计信息冲突)[^1] - 转换选项: ```markdown [x] 禁用归档日志(减少REDO) [x] 跳过不可用对象 ``` 6. **执行导入**: - 点击 **完成** 开始导入 - 在 **日志** 面板查看实时进度: ``` 作业:SYS_IMPORT_SCHEMA_01 状态:EXECUTING 已处理:15.3GB/20.1GB ``` #### ⚠️ 关键注意事项 1. **权限问题**: - 执行用户需有 `IMP_FULL_DATABASE` 角色 - 检查目录对象权限:`SELECT * FROM DBA_DIRECTORIES` 2. **版本兼容处理**: - 若导出文件来自高版本,在 **高级 → 兼容性** 中选择目标数据库版本(如 11.2.0.1.0) 3. **大字段处理**: - 包含 BLOB/CLOB 字段时: - 确保表空间有足够空间 - 设置 `STREAMSIZE=50M`(提高大对象传输效率) 4. **中断恢复**: - 重新启动时选择 **重新启动作业** - 输入之前作业名(可从 `DBA_DATAPUMP_JOBS` 查询) #### ✅ 验证导入结果 1. 检查日志文件末尾: ```log 作业 "SYS"."SYS_IMPORT_SCHEMA_01" 成功完成 于 星期三 7月 10 15:30:22 CST 2024 elapsed 0 00:45:22 ``` 2. 验证对象数量: ```sql SELECT object_type, COUNT(*) FROM user_objects GROUP BY object_type; ``` > **提示**:对于超大型导入(>50GB),建议通过命令行 `impdp` 配合 `PARALLEL=4` 参数提高效率[^2]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值