Oracle数据泵工具 expdp与impdp常用命令详解

需积分: 16 0 下载量 160 浏览量 更新于2024-09-05 收藏 13KB TXT 举报
Oracle数据泵是Oracle数据库中两个关键的工具,expdp (Export Database Data Pump) 和 impdp (Import Database Data Pump),用于在不同Oracle数据库之间迁移数据和对象。这两个工具只能在数据库服务器端使用,因为它们涉及到对数据库的直接操作,而非客户端操作。 首先,让我们了解directory的概念。在使用expdp和impdp时,我们需要配置一个目录(directory)来指定数据传输的目标路径。DBA可以直接查询目录信息,如: ```sql SELECT * FROM dba_directories; ``` 通过`createdirectory`命令创建一个新的目录,并指定路径,例如: ```sql CREATE DIRECTORY my_dir AS '/home/oracle/tmp'; GRANT read, write ON directory my_dir TO scott; ``` 这样,用户scott就有了对指定目录的读写权限。 expdp命令的具体用法包括以下几个关键点: 1. 导出单个表或对象:例如,导出scott表emp的数据到名为expdp.dmp的文件,同时记录日志到expdp.log文件: ```shell expdp system/oracle directory=my_dir dumpfile=expdp.dmp logfile=expdp.log tables=scott.emp ``` 2. 导出多个表:可以使用通配符括号`\( ... \)`来指定一组表名: ```shell expdp system/oracle directory=my_dir dumpfile=expdp.dmp logfile=expdp.log tables=\(scott.emp,scott.dept\) ``` 3. 导出用户:导出指定用户的全部对象,如scott用户: ```shell expdp system/oracle directory=my_dir dumpfile=expdp.dmp logfile=expdp.log schemas=scott ``` 4. 导出多个用户:类似地,可以一次导出多个用户: ```shell expdp system/oracle directory=my_dir dumpfile=expdp.dmp logfile=expdp.log schemas=\(scott,hr\) ``` 5. 导出整个数据库:除了用户数据,还可以导出整个数据库的数据,但默认不包括sys、ordsys和mdsys等特殊用户的数据,若要包含,需添加`full=yes`参数: ```shell expdp system/oracle directory=my_dir dumpfile=expdp.dmp logfile=expdp.log full=yes ``` 6. 并行导出:对于大型数据集,可以通过设置并行度提高数据传输速度: ```shell expdp system/oracle directory=my_dir dumpfile=expdp.dmp logfile=expdp.log parallel=4 ``` 值得注意的是,执行expdp命令的用户需要具有对所指定目录对象的读写权限,且操作系统中目录指向的路径必须存在。此外,系统用户导出用户数据时,还会包含创建用户和授予系统权限的元数据,而普通用户仅能导出其自己的对象。 Oracle数据泵是高效管理和迁移数据库数据的重要工具,熟悉其命令和参数的使用可以帮助数据库管理员实现数据的快速、安全传输。在实际操作中,务必仔细检查权限设置和路径配置,确保命令执行顺利。