23、ORA-00439:DEFERRED_SEGMENT_CREATION 问题解决
23.1、说明:
1、
众所周知,在清空表内所有数据时,truncate比delete要快很多,原因是,delete语句每次删除一行,都在事务日志中为所删除的每行记录一项。
truncate通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。但是如果表存在外键的话,是不能使用truncate的。
在使用的过程中,我发现某个存在外键的表,使用truncate提示成功了。一开始,我在怀疑是不是oracle存在bug,在某个特定条件下,触发了
这个bug,造成truncate成功了。后来,等这张表插入过数据之后,我再使用truncate时,提示失败了。我这才恍然大悟,这个问题跟exp空表
无法导出是一个原因。oralce11g为了节省存储空间,新建表的时候默认是不分配segment的。既然segment都没有,就不用谈exp和truncate了。
但是oracle还是预留了系统参数 DEFERRED_SEGMENT_CREATION(延迟创建segment)。这个参数,默认是true。我们可以将他改成false。这
样的话,再创建表的时候就会立即分配segment了。但是修改参数之前创建的表还是不会立即分配segment的。如果想分配segment,可以在表中
插入一条数据,再删除。也可以使用 alter table XXX allocate extent,这样就会创建segment了,再使用exp就会导出空表,而且存在外键的表
使用truncate清空数据时,也不会提示成功了。如果单表插入数据后被truncate,则会保留segment。
2、DEFERRED_SEGMENT_CREATION 设置为true的优缺点:
(1)优点:
在创建一系列表的时候,若事先已知许多表并没有数据,可以指定这个参数为true,这样可以节省空间,也可以增加建表速度。
(2)缺点:
使用exp导出的时候,不会导出没有segment分配的表。使用expdp可以导出空表。
3、查看该参数当前设置:
show parameter deferred_segment_creation;
4、修改该参数当前设置:
这个参数可以动态修改,使用 alter system/session set deferred_segment_creation=true/false;
更改后,之前延迟分配segment的表并不会受到影响,仍然为空表。
5、查询某schema中所有未分配segment的表可以使用以下语句:
select * from user_tables where segment_created = 'NO';
6、若想为这些未分配segment的表分配空间,可以使用语句:
select 'alter table' || table_name || 'allocate extent;' from user_tables where segment_created = 'NO';
为所有空表分配segment,之后就可以进行exp导出了。
23.2、示例:
1、说明:
用impdp命令将从linux(版本:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0-64bit Production,A库)上面导出的数据库
导入到本地windows系统的数据库(Oracle Database 11g Standard Edition Release 11.2.0.1.0 - 64bit Production,B库)上时,报了以
下错误:
错误描述:
ORA-00439 未启用的功能:DEFERRED_SEGMENT_CREATION
或者叫做
ORA-00439 feature not enabled deferred segment creation
2、解决思路:
(1)查看 DEFERRED_SEGMENT_CREATION 参数设置是否一样:
在A库查询参数被设置为TRUE,在B库查询参数被设置为FALSE,修改B库设置,改成 TRUE,重新导入,还是报一样的错误。
(2)查看数据库版本:
A库是企业版,B库是标准版。
DEFERRED_SEGMENT_CREATION 在标准版中不支持该功能。
(3)解决办法:
在做expdp时,带上参数 version = 10.2.0,同样,在做impdp时,也带上参数 version = 10.2.0。
特别注意:version=11.2.0 是不行的。
23、ORA-00439:DEFERRED_SEGMENT_CREATION 问题解决的更多相关文章
- Python中读取txt文本出现:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape问题解决
windows中的路径是反斜杠\,然而反斜杠\在python中有着转义字符的意义,所以在py文件中写windows文件路径的时候,要特别注意反斜杠\的使用. 下面有三种解决方式: 方式一:转义的方式 ...
- celery问题记录
1. 问题:WARNING/MainProcess] /home/jihonghe/.virtualenvs/py3_dj217_env/lib/python3.6/site-packages/bil ...
- Oracle 错误总结及问题解决 ORA
参考地址 ORA-00001: 违反唯一约束条件 (.)错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常.ORA-00017: 请求会话以设置跟踪事件ORA-00018: 超出最大会话数O ...
- oracle安装完成后目录中不论有没有tnsnames.ora和listener.ora文件 PLSQL都能连上的问题解决方法
今天遇到这个问题了,发现listener.ora文件和tnsnames.ora文件在Net Work文件夹下没有,正常情况下安装完oracle或者是oracle Client是会有的,但是在Net M ...
- oracle服务起不来以及无法监听问题解决
改问题是在搭建起一个很早之前的数据库的时候碰见的,虽然这个问题网上已经有很多相关的帖子,但因最近碰见多次这样的问题,特此简单记录: 1.最开始碰见的问题是:The listener supports ...
- 【原创】ORACLE常见使用问题解决
ORACLE常见使用问题解决 一.安装了oracle客户端后,发现plsql客户端找不到之前已经配置过的TNS连接信息 或许大家再使用ORACLE软件的过程中,经常会遇到这样的问题: 问题现象描述: ...
- ARCGIS Server 发布服务时出现的问题解决
target='CFH.ConfigurationFactoryHost' machine='IBM3850X5' thread='24072' elapsed='0.31200'>Ser ...
- tnsnames.ora 监听配置文件详解
今天是重要的一天.将XML数据导入ORACLE遇到很多问题,学了好多,其中很长时间花在网络配置上,刚开始学,具体原因不知道,先把搜集到的好文章存下来,以后慢慢研究. 监听配置文件 ...
- Selenium2学习-038-firefox、webdriver版本不对称问题解决:org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055
今天有个朋友在群里问,为何脚本运行不通过,其脚本操作步骤简单描述如下: 1.启动火狐浏览器 2.打开百度 3.查询框输入关键字 4.点击按钮[百度一下] 脚本挺简单的,其给出的应用报错信息如下所示: ...
随机推荐
- iozone测试方法-20191008
iozone 一.简介 磁盘设备之上是文件系统,测试磁盘的工具往往就是调用驱动块设备驱动的接口进行读写测试.而文件系统的测试软件就是,针对文件系统层提供的功能进行测试,包括文件的打开关闭速度以及顺 ...
- 云计算OpenStack核心组件---horizon Web管理界面(9)
一.horizon介绍 Horizon 为 Openstack 提供一个 WEB 前端的管理界面 (UI 服务 )通过 Horizone 所提供的 DashBoard 服务 , 管理员可以使用通过 W ...
- 如何查看自己的电脑 CPU 是否支持硬件虚拟化
引言 在你安装各种虚拟机之前,应该先测试一下自己的电脑 CPU 是否支持硬件虚拟化. 如果你的电脑比较老旧,可能不支持硬件虚拟化,那么将无法安装虚拟机软件. 如何查看自己 CPU 是否支持硬件虚拟化 ...
- LT4020替代方案
国产 替代LT4020的方案 南芯 展讯的方案 https://item.taobao.com/item.htm?spm=a230r.1.14.21.6f27bf96rrAtci&id=56 ...
- unity inputfield 过滤emoji输入
unity版本:unity2017.1.5f1 复现步骤:InputField在安卓手机InputField连续输入两个emoji会报错 报错内容: 2020-01-08 19:56:38.366 2 ...
- [leetcode] 45. 跳跃游戏 II(Java)(动态规划)
45. 跳跃游戏 II 动态规划 此题可以倒着想. 看示例: [2,3,1,1,4] 我们从后往前推,对于第4个数1,跳一次 对于第3个数1,显然只能跳到第4个数上,那么从第3个数开始跳到最后需要两次 ...
- Python+Selenium学习笔记7 - os模块
os模块是关于文件/目录方面的 导入语法 import os 相关方法 path.abspath() 用来获取当前路径下的文件 os.path.abspath('checkbox.html') ...
- MegEngine基本概念
MegEngine基本概念 基本概念 MegEngine 是基于计算图的深度神经网络学习框架. 本文内容会简要介绍计算图及其相关基本概念,以及在 MegEngine 中的实现. 计算图 结合一个简单的 ...
- PyTorch中的MIT ADE20K数据集的语义分割
PyTorch中的MIT ADE20K数据集的语义分割 代码地址:https://github.com/CSAILVision/semantic-segmentation-pytorch Semant ...
- algorithm头文件下的常用函数
algorithm头文件常用高效函数 max() max(a, b)返回a和b中的最大值,参数必须是两个(可以是浮点型). 1 #include <iostream> 2 #include ...