在使用Oracle 11g的EXP工具导出表数据时,经常会遇到EXP-00011错误,提示指定的表不存在,导致导出任务中断。下面我们先来看错误出现的典型场景,再逐一分析解决思路。

EXP-00011错误常见触发原因
该错误的核心提示是目标表不存在,但实际排查中往往不是表真的不存在,而是以下场景导致工具无法识别到表:
- 表名未加双引号,或者大小写书写与数据库实际存储不一致,Oracle默认表名是大写,小写表名需要特殊处理
- 当前登录用户没有目标表的查询权限,或者表属于其他schema用户,导出时未指定所属用户
- 使用低版本EXP工具导出高版本数据库创建的表,存在版本兼容性问题
- 表被删除或者重命名,导出时仍使用旧表名
具体排查与解决步骤
第一步:确认表的实际存在情况
先登录数据库,查询当前用户下或者目标schema下的表是否存在,执行以下SQL语句:
-- 查询当前用户下的表,注意表名默认大写 SELECT table_name FROM user_tables WHERE table_name = '目标表名大写'; -- 如果表属于其他用户,查询所有用户的表 SELECT owner, table_name FROM all_tables WHERE table_name = '目标表名大写';
如果查询不到结果,说明表确实不存在,需要确认表名是否正确,或者表是否已被删除。
第二步:检查表名大小写与特殊字符
如果创建表时使用了双引号包裹小写表名,那么表名会按指定大小写存储,此时导出必须同样加上双引号,示例如下:
-- 导出小写表名的正确写法,表名用双引号包裹 exp 用户名/密码@实例名 file=导出文件.dmp tables="小写表名"
如果表名包含特殊字符,也需要用双引号包裹,避免EXP工具解析错误。
第三步:确认权限与schema归属
如果表属于其他schema用户,导出时需要指定所属用户,并且当前登录用户需要有该表的SELECT权限,或者具备DBA权限,导出命令示例如下:
-- 导出其他schema下的表,需要指定owner参数 exp 用户名/密码@实例名 file=导出文件.dmp tables=目标表名 owner=表所属用户名
如果权限不足,可以让表的所有者授予当前用户查询权限:
-- 授予查询权限 GRANT SELECT ON 表所属用户名.目标表名 TO 当前用户名;
第四步:处理版本兼容性问题
如果EXP工具版本低于数据库版本,可能会出现无法识别表的情况,此时可以换用数据泵EXPDP工具导出,兼容性更好,示例如下:
-- 先创建目录对象,指向服务器上的实际路径 sqlplus 用户名/密码@实例名 << EOF CREATE OR REPLACE DIRECTORY dump_dir AS '/data/dump'; GRANT READ, WRITE ON DIRECTORY dump_dir TO 导出用户; EOF -- 使用EXPDP导出表 expdp 用户名/密码@实例名 directory=dump_dir dumpfile=导出文件.dmp tables=目标表名
操作注意事项
日常导出表时,建议先通过SQL查询确认表的存在性和所属信息,再执行导出命令,避免不必要的错误。如果使用EXP工具频繁出现问题,可以优先切换到EXPDP数据泵工具,不仅兼容性更好,导出效率也更高。另外执行导出操作前,最好确认当前用户的权限范围,避免因权限不足导致导出失败。
Oracle_11gEXP-00011表导出数据泵权限配置修改时间:2026-05-25 23:53:53