Oracle数据库全量导出神器:expdp操作指南揭秘

目录对象
Oracle的expdp工具提供了强大的数据导出功能,其核心概念之一是Directory对象。Directory对象用于指定导出文件存放的位置。
创建目录
:在服务器上创建真实的目录,并使用以下命令在SQL中创建逻辑目录。
CREATE DIRECTORY dumpdir AS ‘/path/to/directory’;
查看目录
:使用以下命令查看已创建的目录。
SELECT * FROM dbadirectories;
授权目录
:确保目录授权给需要访问的用户。
GRANT READ, WRITE ON DIRECTORY dumpdir TO user;
导出/导入数据
expdp支持多种导出方式,包括全库导出、按用户导出、按表空间导出、按表导出和按查询条件导出。
2.1 全量导出/导入全库
导出全库
:
expdp system/your_password@your_db directory=dumpdir dumpfile=full_export.dmp logfile=full_export.log fully;
导入全库
:
impdp system/your_password@your_db directory=dumpdir dumpfile=full_export.dmp logfile=full_import.log;
2.2 按用户导出/导入
导出特定用户
:
expdp user/your_password@your_db directory=dumpdir dumpfile=user_export.dmp logfile=user_export.log schemas=user;
导入特定用户
:
impdp user/your_password@your_db directory=dumpdir dumpfile=user_export.dmp logfile=user_import.log schemas=user;
2.3 按表空间导出/导入
导出特定表空间
:
expdp sys/your_password@your_db directory=dumpdir dumpfile=tablespace_export.dmp logfile=tablespace_export.log tablespaces=(tablespace_name);
导入特定表空间
:
impdp sys/your_password@your_db directory=dumpdir dumpfile=tablespace_export.dmp logfile=tablespace_import.log tablespaces=(tablespace_name);
2.4 按表导出/导入
导出特定表
:
expdp user/your_password@your_db directory=dumpdir dumpfile=table_export.dmp logfile=table_export.log tables=(table_name);
导入特定表
:
impdp user/your_password@your_db directory=dumpdir dumpfile=table_export.dmp logfile=table_import.log tables=(table_name);
2.5 按查询条件导出
导出满足特定条件的表
:
expdp user/your_password@your_db directory=dumpdir dumpfile=condition_export.dmp logfile=condition_export.log tables=(table_name) query=’WHERE condition’;
操作模式
expdp提供了多种操作模式,包括:
全量导出/导入
:如前所述,导出或导入整个数据库或特定用户、表空间、表。
增量导出/导入
:仅导出或导入自上次备份以来更改的数据。
逻辑导出/导入
:导出或导入表的逻辑结构,而不是数据。
过滤对象
expdp允许您通过指定过滤条件来限制导出数据。这些过滤条件可以是:
表名
:指定要导出的表名。
列名
:指定要导出的列名。
行过滤
:指定要导出的行条件。
高级过滤
expdp的高级过滤功能允许您执行更复杂的过滤操作,例如:
分区过滤
:仅导出或导入特定分区的数据。
数据类型过滤
:仅导出或导入特定数据类型的列。
使用技巧
不生成文件直接导入目标数据库
:使用
direct_path
参数,expdp可以直接将数据导入目标数据库,而不生成任何文件。
expdp user/your_password@your_db directory=dumpdir dumpfile=direct_import.dmp logfile=direct_import.log direct_path=TRUE;
通过shell脚本自动导入
:使用shell脚本自动化expdp导入过程。
#!/bin/bash
impdp user/your_password@your_db directory=dumpdir dumpfile=auto_import.dmp logfile=auto_import.log
如何导出数百张表
:使用SQL脚本动态生成expdp命令。
DECLARE
l_sql VARCHAR2(4000);
BEGIN
FOR i IN (SELECT table_name FROM user_tables) LOOP
l_sql := ‘expdp user/your_password@your_db directory=dumpdir dumpfile=’ || i.table_name || ‘_export.dmp logfile=’ || i.table_name || ‘_export.log tables=’ || i.table_name;
DBMS_OUTPUT.PUT_LINE(l_sql);
END LOOP;
END;
通过以上操作指南,您应该能够熟练使用expdp工具进行Oracle数据库的全量导出操作。