ORA-10635: Invalid segment or tablespace type

摘要:
符合ORA-10635:[oracle@xxxxxscripts]$more/etc/issueRedHatEnterpriseLinuxESrelease4(NahantUpdate6)数据库版本:版本10.2.0.4.0-ProductionNLSRTLVersion 10.2.0.4.0-Production在2011年将数据从一批表迁移到历史表进行存档时。

上周星期天在迁移数据时,碰到了ORA-10635: Invalid segment or tablespace type 错误,当时的操作环境如下:

操作系统版本:

[oracle@xxxxx scripts]$ more /etc/issue
Red Hat Enterprise Linux ES release 4 (Nahant Update 6)

数据库版本  :

SQL> select * from v$version;

 

BANNER
----------------------------------------------------------------
Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Linux: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production

把一批表2011年的数据迁移到历史表归档时,由于是DELETE操作,为了降低这批表的高水位线,执行下面操作。

ALTER TABLE TABLE_NAME ENABLE ROW MOVEMENT ;
ALTER TABLE TABLE_NAME SHRINK SPACE;

结果报如下错误:

image

ORA-10635: Invalid segment or tablespace type

检查这些表的表空间的SEGMENT_SPACE_MANAGEMENT的值,发现它是手动段空间管理,而不是自动段空间管理(ASSM)

SELECT TABLESPACE_NAME, SEGMENT_SPACE_MANAGEMENT FROM DBA_TABLESPACES WHERE TABLESPACE_NAME= 'TABLESPACE_NAME'

------------------------------------------------------------------------
xxxxxxx        MANUAL

从10g开始,ORACLE开始提供Shrink的命令,假如我们的表空间中支持自动段空间管理 (ASSM),就可以使用这个特性缩小段,即降低HWM。这里需要强调一点,10g的这个新特性,仅对ASSM表空间有效,否则会报 ORA-10635: Invalid segment or tablespace type。

其实会导致这个错误的原因还有其它一些:

1. You cannot specify this clause for a cluster, a clustered table, or any object with a LONG column.
2. Segment shrink is not supported for tables with function-based indexes or bitmap join indexes.
3. This clause does not shrink mapping tables of index-organized tables,even if you specify CASCADE.参见后面的测试
4. You cannot specify this clause for a compressed table.
5. You cannot shrink a table that is the master table of an ON COMMIT materialized view. Rowid materialized views must be rebuilt after the shrink operation.

1. 对cluster,cluster table,或具有Long类型列的对象不起作用。
2. 不支持具有function-based indexes 或 bitmap join indexes的表
3. 不支持mapping 表或index-organized表。
4. 不支持compressed 表

5: 不支持是ON COMMIT物化视图中的主表

Shrink operations can be performed only on segments in locally managed tablespaces with automatic segment space management (ASSM). Within an ASSM tablespace, all segment types are eligible for online segment shrink except these:

  • IOT mapping tables

  • Tables with rowid based materialized views

  • Tables with function-based indexes

免责声明:文章转载自《ORA-10635: Invalid segment or tablespace type》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python 网络爬虫(二)maven 解决jar包冲突及简单使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

docker 安装 oracle

docker 安装 oracle 部署链接:https://www.linuxidc.com/Linux/2017-03/141760.htm 本次使用docker安装oracle 1、搜索可使用的镜像 ~]# docker search oracle ... 这里选择12c版本 2、下载镜像 ~]# docker pull docker.io/sath...

JAVA连接SQLServer

昨天讲了JDBC,JDBC的作用本来就是用来连接数据库的,今天老师把这个知识点扩张了一下。 今天老师讲了怎么给数据库发收信息。 想要给数据库发送信息,你得有个数据库(我用的是SQLServer2008) 创建数据库: create database oa --创建数据库 create table tt1(--创建表 id int iden...

Mysql学习总结(36)——Mysql查询优化

从事前端开发的都知道,页面显示的数据一定要及时的呈现,否则会影响用户体现.那么导致页面加载数据慢或者显示滞后的原因又是什么呢? 拿自己之前做项目经历给大家讲讲吧,之前做后台,当时的项目实时性都非常高,前端页面实时显示要求非常高 ,慢1秒显示都会导致用户的投诉,最后没办法,通过本地(磁盘)缓存跟数据表分割来解决这一问题. 原因分析 主要原因1: 后台数据库中...

My Sql 获取数据库所有表及表内的字段信息

1、通常可以直接用show tables来获取所有表,但是这只能获取所有表的表名;如果要获取表的更多信息就可以这么来写 MySql 获取数据库所有表的信息(表名、注释):select *from information_schema.TABLES where table_schema='数据库名称'; 而这条语句可以查出更全面的信息;其中结果中用个Tabl...

GIS 相关知识扫盲

1、什么是GIS GIS:地理信息系统,它是一种特定的十分重要的空间信息系统。它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。2、什么是Web GIS通过互联网对地理空间数据进行发布和应用,以实现空间数据的共享和互操作,如GIS信息的在线查询和业务处理等。We...

mysql 修改大表字段,报错ERROR 1878 (HY000): Temporary file write failure. 用pt-online-schema-change

在线上一个表上执行了alter 增加字段操作,报异常:ERROR 1878 (HY000): Temporary file write failure. 初步怀疑表太大,临时空间不够。 1.查了下表的大小将近28G,索引18G,mysql配置的tmp缓存目录只有2G select data_length,index_length   from tables...