DM8数据库逻辑导出工具dexp/dimp中EXCLUDE参数详解
作者:Seal^_^
逻辑导出dexp和逻辑导入dimp是DM数据库的两个命令行工具,分别用来实现对DM数据库的逻辑备份和逻辑还原,这篇文章主要介绍了DM8数据库逻辑导出工具dexp/dimp中EXCLUDE参数的相关资料,需要的朋友可以参考下
一、EXCLUDE参数概述
在DM8数据库的逻辑导出(dexp)和导入(dimp)工具中,EXCLUDE参数是一个非常实用的功能,它允许我们在导出或导入过程中排除特定的数据库对象。这个参数特别适合以下场景:
- 需要排除临时表或测试表
- 不想导出索引或约束等对象
- 需要选择性迁移部分数据库对象
- 排除特定模式下的对象
二、EXCLUDE参数语法详解
EXCLUDE参数支持三种语法格式:
1. 基本排除语法
EXCLUDE=[(]<对象种类名>{,<对象种类名>}[)]
支持排除的对象类型:
- CONSTRAINTS(约束)
- INDEXES(索引)
- ROWS(数据行)
- TRIGGERS(触发器)
- GRANTS(权限)
- VIEWS(视图)
- PROCEDURE(存储过程)
- PACKAGE(包)
- SEQUENCE(序列)
- TABLES(表)
示例:
# 排除约束和索引 EXCLUDE=(CONSTRAINTS,INDEXES) # 排除触发器和权限 EXCLUDE=TRIGGERS,GRANTS
2. 类型指定语法
EXCLUDE=TYPE:name1,name2
示例:
# 排除table1和table2表 EXCLUDE=TABLES:table1,table2 # 排除sch1和sch2模式 EXCLUDE=SCHEMAS:sch1,sch2
3. 条件过滤语法
EXCLUDE=TYPE:cond{,TYPE:cond}
条件类型:
LIKE:模糊匹配IN:精确匹配
示例:
# 排除以TEMP开头的表和TEST1表
EXCLUDE="TABLES:\"LIKE 'TEMP%'\",TABLES:\"IN ('TEST1')\""
三、不同导出模式下的EXCLUDE使用
1. 全库导出(FULL)模式
在全库导出模式下,可以使用所有EXCLUDE语法格式。
示例:
./dexpdp USERID=SYSDBA/SYSDBA@192.168.234.10:5237 DIRECTORY=DM_BACKUP FILE=full.dmp LOG=full.log FULL=Y EXCLUDE="TABLES:\"LIKE 'TEMP%'\",SCHEMAS:\"LIKE 'SYS%'\""
- TABLES:“LIKE ‘TEMP%’”:排除所有表名以 TEMP 开头的表(如 TEMP_TABLE、TEMP_DATA 等)。
- SCHEMAS:“LIKE ‘SYS%’”:排除所有模式名以 SYS 开头的模式(如 SYSDBA、SYSTEM 等系统模式下的对象)。

2. 模式级(SCHEMAS)导出
在模式级导出时,EXCLUDE=SCHEMAS:<模式名>将无效。
示例:
./dexpdp USERID=SYSDBA/SYSDBA@192.168.234.10:5237 DIRECTORY=DM_BACKUP FILE=schema.dmp LOG=schema.log SCHEMAS=MYDMDB EXCLUDE="TABLES:\"IN ('EMPLOYEES','DEPARTMENTS')\""

3. 表级(TABLES)导出
在表级导出时,可以使用EXCLUDE排除特定的列、约束等。
示例:
./dexpdp USERID=SYSDBA/SYSDBA@192.168.234.10:5237 DIRECTORY=DM_BACKUP FILE=tables.dmp LOG=tables.log TABLES=MYDMDB.EMPLOYEES,MYDMDB.DEPARTMENTS EXCLUDE="(CONSTRAINTS,INDEXES)"
- 指定仅导出 MYDMDB 模式下的 EMPLOYEES 和 DEPARTMENTS 表。
- 排除导出表的约束(如主键、外键)和索引。

五、注意事项
转义字符:在Linux/Unix系统中,特殊字符如括号、引号需要正确转义
# 正确写法 EXCLUDE=\"TABLES:\\\"LIKE \'TEMP%\'\\\"\" # 或使用单引号 EXCLUDE='TABLES:"LIKE ''TEMP%''"'
模式前缀:在表级导出时,表名需要包含模式前缀;但在EXCLUDE中不需要
权限要求:执行导出的用户需要有足够的权限访问要导出的对象
性能影响:排除大量对象可能会影响导出性能
六、常见问题解答
Q1:为什么我的EXCLUDE参数没有生效?
A:可能原因:
- 在模式级导出中使用了EXCLUDE=SCHEMAS
- 表名拼写错误
- 特殊字符没有正确转义
Q2:如何同时排除多种类型的对象?
A:使用逗号分隔:
EXCLUDE="TABLES:\"LIKE 'TEMP%'\",CONSTRAINTS,INDEXES"
Q3:能否在dimp导入时也使用EXCLUDE?
A:可以,语法与dexp相同
七、总结
EXCLUDE参数是DM8逻辑导出工具中非常强大的功能,掌握它的使用方法可以让我们更灵活地控制导出过程。记住关键点:
- 根据导出模式选择合适的EXCLUDE语法
- 注意特殊字符的转义
- 在生产环境使用前,先在小规模测试环境验证
到此这篇关于DM8数据库逻辑导出工具dexp/dimp中EXCLUDE参数的文章就介绍到这了,更多相关DM8逻辑导出dexp/dimp内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

