oracle11g 数据库导出报“ EXP-00003: 未找到段 (0,0) 的存储定义”错误的解决方案

导出oracle11.2.0.2的服务器的数据时,报“EXP-00003: 未找到段 (0,0) 的存储定义”错误。初步分析是由于数据表是空表导致该问题。

Oracle 11G在用EXPORT导出时,空表不能导出
  11GR2中有个新特性,当表无数据时,不分配segment,以节省空间
  解决方法:
一、 insert一行,再rollback就产生segment了。
  该方法是在在空表中插入数据,再删除,则产生segment。导出时则可导出空表。
二、 设置deferred_segment_creation 参数
该参数值默认是TRUE,当改为FALSE时,无论是空表还是非空表,都分配segment。修改SQL语句:
alter system setdeferred_segment_creation=false scope=both;
 
  需注意的是:该值设置后对以前导入的空表不产生作用,仍不能导出,只能对后面新增的表产生作用。如需导出之前的空表,只能用第一种方法。
三、 用以下这句查找空表
  select‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables wherenum_rows=0;
  把查询结果导出,执行导出的语句,强行修改segment值,然后再导出即可导出空表

可以通过以下方式生成数据库更新的sql语句:
在pl/sql的命令窗口中执行
set heading off;
   set echo off;
   set feedback off;
   set termout on;
   spool C:\alterTableSql.sql;
   Select ‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables where num_rows=0;
   spool off;
自动将空表更新sql生成到C盘根目录的alterTableSql.sql文件中。然后执行该sql文件更新数据库。

Select ‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables where num_rows=0;
也可以换成:
Select ‘alter table ‘||table_name||‘ allocate extent;‘ from user_tables where segment_created= ‘NO‘ ;

oracle11g 数据库导出报“ EXP-00003: 未找到段 (0,0) 的存储定义”错误的解决方案,布布扣,bubuko.com

时间: 2024-08-05 07:09:19

oracle11g 数据库导出报“ EXP-00003: 未找到段 (0,0) 的存储定义”错误的解决方案的相关文章

Oracle导出警告“EXP-00003: 未找到段 (0,0) 的存储定义”解决

环境:CentOS7.4   Oracle11.2.0.4(搭建rac集群) 问题描述:在使用exp命令执行导出的时候,部分表提示“EXP-00003: 未找到段 (0,0) 的存储定义”警告. 问题原因:该问题是因为导出的数据表为空表导致的.Oracle 11GR2当表无数据时,不分配segment,以节省空间,因此在用EXPORT导出时,空表不能导出. 解决方法: 1.使用以下语句查找空表,把查询结果导出执行,强行修改segment值,然后再导出即可导出空表. select 'alter t

解决oracle11g数据库中空表exp无法导出的问题

之前再做项目的时候下载了一个开源的程序,数据库在移植的时候通过exp/imp导入导出,结果程序在启动时报错,对比过后发现两个数据库表相差了十几个,再排查问题,发现少掉的十几个表全部是空表,查了一下oracle11g的特性,发现当数据条数是0时不分配segment,所以就不能被导出!我勒个擦!坑爹有木有! 但是总不能每个表插入一条数据再导出吧,作为一个程序猿总不能上手工课吧,于是继续查,找到了一个解决办法,特此记录,以儆效尤! 第一种解决办法: 在创建数据库之前,先将数据库segment属性进行修

Archlinux/Manjaro使用makepkg安装软件 报错:未找到strip分割所需的二进制文件 的解决方法

使用archlinux或manjaro安装aurman时遇到如下报错 错误:未找到strip分割所需的二进制文件 原因:未安装gcc编译器 解决: sudo pacman -S gcc 原文地址:https://www.cnblogs.com/renren-study-notes/p/10229774.html

oracle中触发器报错:未找到数据

select ts.tbcxsx into param_timeLimit from winf_sv_ex_hybs_tbcxsq ts  where ts.sblsh=:new.sblsh and ts.xh=:new.xh; 如果未找到任何记录,后面加一句 Exception when no_data_found then     param_timeLimit := 0;   即可:

Windows下Oracle11g数据库导出备份

参考来源:https://jingyan.baidu.com/article/9113f81b2040862b3314c757.html 第一步:1,用管理员权限打开dos窗口 2,登录命令:sqlplus sys/oracle as sysdba----------------------------sqlplus system/[email protected] 注意:如果提示命令无效,那就是你没有配置好oracle的环境变量(想当年我也被这个问题困扰着),配置oracle环境变量的方法如下

关于程序中数据库报错“父项未找到”

1.前端界面含有弹出框具有父子关系,在子类中未正确调用父类导致,请仔细查看程序 2.数据库对应表映射时,一个字段已经在表中映射成A表,但后期手动更改该字段映射成B表,更新映射启动后,运行报错"父项未找到". 由于这种操作在数据库中更改字段映射表时不会在该映射更新操作,而是在生成一个新的外键关系,此时需要在数据库中找到冲突的外键,手动删除 3 在程序运行过程中字段数据含有null,也会导致此报错 注意:如果字符串为拼接组成时,只要含有null,也会造成失败 -------以上为个人目前遇

oracle 11g未找到文件WFMLRSVCApp.ear文件

安装,参考:https://blog.csdn.net/pancheng1984/article/details/79823467 安装oracle 11.2.4时,报错: 未找到文件...WFMLRSVCApp.ear文件 解决方法如下: oracle 11.2.4有两个压缩包,将压缩包解压至同一目录再安装即可解决此类问题. 注意:再次运行的时候要将D:\app\Administrator\product\11.2.0\dbhome_1\.......红色区域文件删除,也就是删除dbhome_

高版本->低版本迁移,低版本客户端连接高版本数据库EXP导出报错EXP-00008,ORA-01455,EXP-00000

生产环境: 源数据库:RHEL + Oracle 11.2.0.3 目标数据库:HP-UX + Oracle 10.2.0.4 需求:迁移部分表  11.2.0.3-->10.2.0.4,若迁移范围内的有些表在目标库已经存在,则替换. 本次迁移数据量<1G. 初定方案:低版本的客户端连接到高版本数据库,用低版本导出,低版本导入. 1.采用初定方案,目标数据库所在服务器连接到源数据库,exp导出过程中报错. ZJCRNOPDB 36: sqlplus -version SQL*Plus: Rel

使用ADO连接oracle数据库“未找到提供程序。该程序可能未正确安装”解决方案

问题描述:VS2010开发的C++程序,在一台Win7旗舰版的已安装Oracle客户端的PC上连接不上Oracle,提示"未找到提供程序.该程序可能未正确安装",其他语言编写的程序比如C#是可以成功连接Oracle的: 解决办法:首先是找谷歌度娘帮忙,找了几篇文章,都说是没有Oracle的Oledb驱动,去安装目录XXXX\bin下还真没找到OraOLEDB*.dll,然后按照文章帮助将OraOLEDB10.dll文件拷贝至有问题的Win7上,在DOS下开始注册,这时却提示"