oracle EXP-00011 导出数据时,空表报错

本文介绍了在使用Oracle 10g客户端导出11g表数据时遇到表无Segment的问题及其解决办法。提供了三种解决方案:调整deferred_segment_creation参数、创建表时指定立即创建Segment及使用ALTER TABLE命令分配Extent。

在oracle exp 导出表、数据时,碰到该问题(用10g客户端到处11g表、数据时);

解决方法如下:
 
1.  设置deferred_segment_creation的值为false
 
此方法只对以后的表有效,之前的表没有Segment的还是没有。
 
2.  创建表的时候声明立即创建Segment
 
     create table XXX (XXX  XXX) SEGMENT CREATION IMMEDIATE;
 
3.对于已经创建但是还没有Segment的表来说,可以执行alter table XXX allocate extent来使其创建出     Segment,当然也可以插入一条数据,使其创建Segment
 
 

最终的解决方法:
 
 先查询一下哪些表是空的:
 
 select table_name from user_tables where NUM_ROWS=0;
 
 
 下面我们通过select 来生成修改语句:
 
 select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0

 然后复制生成的修改语句执行,问题解决

### Linux环境下Oracle `exp` 和 `expdp` 导出出现 `EXP-00028` 错误的原因分析 在Linux环境中执行 Oracle 数据导出操作,如果遇到 `EXP-00028: cannot open dump file "<file_path>" for write` 的错误[^2],通常明系统无法创建或写入指定的目标文件路径。以下是可能的原因及其解决方案: #### 1. 文件权限不足 目标目录的权限设置不正确可能导致当前用户无权在此位置创建或写入 `.dmp` 文件。即使切换到 `oracle` 用户运行命令,也需要确保该用户的权限覆盖整个路径。 **解决方法**: 确认目标路径 `/data/oracle/` 是否具有足够的读取、写入和执行权限。可以使用以下命令调整权限: ```bash chmod 755 /data/oracle/ chown -R oracle:oinstall /data/oracle/ ``` 上述命令将为目标目录分配适当的所有者和组,并赋予必要的访问权限。 --- #### 2. 路径不存在 如果指定的路径 `/data/oracle/` 并未实际存在,则尝试写入文件的操作会失败。 **解决方法**: 验证路径是否存在并根据需要创建它: ```bash mkdir -p /data/oracle/ ``` 这一步骤可确保后续导出过程中不会因路径缺失而中断。 --- #### 3. 使用 Data Pump (`expdp`) 需要额外配置 当采用更现代的数据泵工具 `expdp` 替代传统 `exp` 工具,需先定义一个有效的存储目录对象供其使用。如果没有预先完成这一准备工作,可能会引发类似的错误消息。 **解决方法**: 作为拥有管理员特权的用户登录数据库实例后,执行如下 SQL 命令来声明一个新的目录资源: ```sql CREATE DIRECTORY expdp_dir AS '/home/oracle11g/expdp_dir/'; GRANT READ, WRITE ON DIRECTORY expdp_dir TO your_user; ``` 此处替换掉 `your_user` 成具体用户名即可。之后,在调用 `expdp` 实际作业前记得引用刚刚建立好的目录名称[^4]。 --- #### 4. 特殊字符干扰连接字符串解析 某些情况下,密码中的特殊符号也可能间接影响到客户端如何解释所提供的 TNS 名称或其他参数设定,从而造成看似无关却实则关联紧密的技术难题[^1]。 **解决方法**: 对于复杂或者含有非标准 ASCII 字符集成分的身份认证凭据部分,请考虑将其封装于单独文本档案内并通过环境变量加载方式规避潜在风险;又或者是改用 Wallet 技术实现更加安全可靠的自动化处理流程。 --- 综上所述,针对不同场景下的具体情况采取相应措施能够有效应对此类挑战。 ```bash # 示例脚本:综合应用以上建议后的完整导出过程 su - oracle export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 export PATH=$ORACLE_HOME/bin:$PATH mkdir -p /backup/dumps && chmod 755 /backup/dumps && chown -R oracle:dba /backup/dumps expdp system/password@orcl directory=DATA_PUMP_DIR dumpfile=mydb_export.dmp logfile=mydb_exp.log schemas=schema_name ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值