### Oracle导入导出方法详解 #### 一、Oracle导入导出概述 Oracle提供了多种方法来导入和导出数据,这包括传统的`exp`和`imp`工具,以及更新的Oracle数据泵工具`expdp`和`impdp`。这两种方法各有特点,适用于不同的场景。 #### 二、使用exp和imp进行导入导出 `exp`和`imp`是Oracle提供的早期版本的导入导出工具,它们允许用户通过简单的命令行操作实现数据的备份和恢复。 ##### 1. 使用exp导出数据 - **完全导出**:`exp system/manager@orcl file=d:\orcl_bak.dmp full=y` - 这条命令将整个`orcl`数据库导出到`d:\orcl_bak.dmp`文件中。 - **特定用户导出**:`exp system/manager@orcl file=d:\system_bak.dmp owner=system` - 这条命令仅导出`system`用户的表。 - **特定表导出**:`exp system/manager@orcl file=d:\table_bak.dmp tables=(table1,table2)` - 这条命令仅导出`table1`和`table2`两张表。 - **条件导出**:`exp system/manager@orcl file=d:\mobile_bak.dmp tables=customer query="where mobile like '139%'"` - 这条命令导出`customer`表中`mobile`字段以`139`开头的所有记录。 ##### 2. 使用imp导入数据 - **导入完整备份**:`imp system/manager@orcl file=d:\bak.dmp` - 这条命令将`d:\bak.dmp`文件中的数据导入到`orcl`数据库中。 - **导入特定表**:`imp system/manager@orcl file=d:\bak.dmp tables=(table1)` - 这条命令仅导入`table1`表。 ##### 3. 解决Oracle11g的空表问题 在Oracle11g中,有一个名为`deferred_segment_creation`的新参数,其默认值为`true`,这意味着当创建新表但没有插入任何数据时,表不会立即分配存储空间。这可能会导致无法使用`exp`导出空表的问题。 - **解决方案一**:更改`deferred_segment_creation`参数 - 在`SQL*Plus`中执行以下命令: ```sql alter system set deferred_segment_creation=false; ``` - 查看参数设置: ```sql show parameter deferred_segment_creation; ``` - 注意,更改此参数后,它仅对后续创建的表生效,并且需要重启数据库使参数生效。 - **解决方案二**:使用`ALLOCATE EXTENT`为表分配空间 - 执行以下命令为每个空表分配空间: ```sql select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 ``` - 执行生成的SQL语句,为所有空表分配空间。 #### 三、使用expdp和impdp进行导入导出 `expdp`和`impdp`是Oracle10g之后引入的改进版数据泵工具,它们具有更高的性能和更多的功能。 ##### 1. 准备步骤 - **创建目录对象**:首先需要创建一个目录对象,用于指定数据泵文件的存储位置。 ```sql create or replace directory dumpdir as 'd:\'; ``` - **授予访问权限**:给执行导出的用户授予对该目录的读写权限。 ```sql grant read, write on directory dumpdir to test_expdp; ``` ##### 2. 使用expdp导出数据 - **基本导出命令**:`expdp test_expdp/test_expdp directory=dumpdir dumpfile=test_expdp.dmp` - 这条命令将使用`test_expdp`用户的数据导出到`d:\test_expdp.dmp`文件中。 ##### 3. 使用impdp导入数据 - **基本导入命令**:`impdp test_expdp/test_expdp directory=dumpdir dumpfile=test_expdp.dmp` - 这条命令将从`d:\test_expdp.dmp`文件中导入数据到`test_expdp`用户的数据库中。 #### 四、总结 通过本文,我们详细了解了Oracle中两种主要的导入导出方法:传统的`exp`和`imp`工具以及更先进的数据泵工具`expdp`和`impdp`。每种方法都有其适用场景和局限性,理解这些差异可以帮助我们在实际工作中选择最合适的工具来完成数据的备份和恢复工作。
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助