ORA-10635: Invalid segment or tablespace type

上周星期天在迁移数据时,碰到了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 - 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;

结果报如下错误:

ORA-10635: Invalid segment or tablespace type

检查这些表的表空间的EXTENT_MANAGEMETN的值,发现它是本地管理

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

------------------------------------------------------------------------
xxxxxxx        LOCAL

从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
时间: 2024-11-05 12:18:56

ORA-10635: Invalid segment or tablespace type的相关文章

ORACLE 博客文章目录(2015-05-27更新)

从接触ORACLE到深入学习,已有好几年了,虽然写的博客不多,质量也参差不齐,但是,它却是成长的历程的点点滴滴的一个见证,见证了我在这条路上的寻寻觅觅,朝圣的心路历程,现在将ORACLE方面的博客整理.归纳分类,方便自己和大家查看.翻阅.  ORACLE数据类型 ORACLE基本数据类型总结 ORACLE VARCHAR2最大长度问题 ORACLE数据库汉字占几个字节问题 ORACLE NUMBER类型Scale为0引发的问题   PL/SQL语法学习   PLSQL 调试触发器 PL/SQL重

测试2——表空间管理 段空间管理 段收缩测试

表空间的管理  --简要语法:     CREATE [BIGFILE | SMALLFILE] [TEMPORARY] TABLESPACE tablespace name     DATAFILE datafile spec | TEMPFILE tempfile spec     [MINIMUM EXTENT minimum extent size]     [BLOCKSIZE blocksize]     [[COMPRESS|NOCOMPRESS] DEFAULT STORAGE

ORA-01652: unable to extend temp segment by 8192...

      最近在rebuild index时提示unable to extend temp segment by 8192 in tablespace..的错误提示.这个是个比较常见的错误.索引在创建的时候需要使用到该用户缺省的临时表空间进行排序,以及在索引表空间生成临时段.如果当前的索引表空间限制了自动扩展或者已经达到了数据文件的最大值,此错误提示便会出现.下面是具体的分析及其解决过程.   1.错误提示信息 alter index err ORA-01652: unable to exte

oracle学习笔记(转)

命令行操作:打开服务: services.msc启动Oracle: net start OracleOraHome92TNSListener     net start OracleService实例名停止Oracle: net stop OracleOraHome92TNSListener            net stop OracleService实例名打开Enterprise Manager Console: oemapp.bat console即会出现enterprise mana

ORACLE错误一览表 方便查询_oracle

ORACLE错误一览表,方便大家查询! ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程:无法转换会话 ORA-00022: 无效的会话 ID:访问被拒绝 ORA-00023: 会话引用进程私用内存:无法分离会话 ORA-00024: 单一进程模式下不允许从多个进程注册 ORA-000

ORACLE event和说明

转自http://blog.myspace.cn/e/401923344.htm event Event Reference 10013 - Monitor Transaction Recovery 10270 - Debug Shared Cursors 10015 - Dump Undo Segment Headers 10357 - Debug Direct Path 10032 - Dump Sort Statistics 10390 - Dump Parallel Execution

某人的oracle9i学习笔记,与大家分享

oracle|笔记 ######### 创建数据库----look $ORACLE_HOME/rdbms/admin/buildall.sql ############# create database db01 maxlogfiles 10 maxdatafiles 1024 maxinstances 2 logfile GROUP 1 ('/u01/oradata/db01/log_01_db01.rdo') SIZE 15M, GROUP 2 ('/u01/oradata/db01/log

ORA-01658 错误

 最近重新装个了Oracle 11g,在对分区表导入导出时碰到了ORA-01658错误的问题,因为刚刚才装的新系统,一导出就碰到了下面的问题, 自己可是纳闷了半天,后来才发现是因为磁盘空间不够引发的.本人的这个Oracle 11g安装在rhel 5.5之上,当时的分区时总共分了16G,8G用 来安装操作系统,8G用来安装Oracle 数据库.具体错误请看下文.   1.导出数据时产生ORA-01658 错误       [oracle@ora11g ~]$ expdp scott/tiger d

ORACLE 回滚段详解

ORACLE 回滚段   回滚段概述  回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值).回滚段的头部包含正在使用的该回滚段事务的信息.一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息.  回滚段的作用  事务回滚:当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,当用户回滚事务(ROLLBACK)时,ORACLE将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值.  事务恢复:当事务正在处理的时候,例程失败,回滚段的信