WEB开发网
开发学院数据库Oracle 有关Oracle 9i压缩表无法添加字段问题 阅读

有关Oracle 9i压缩表无法添加字段问题

 2008-08-09 12:42:40 来源:WEB开发网   
核心提示:Oracle在9i增加了表压缩的功能,但是9i中表压缩之后无法添加新的字段,有关Oracle 9i压缩表无法添加字段问题,看一个简单的例子:SQL>CREATETABLET_COMPRESS(IDNUMBER,NAMEVARCHAR2(30))COMPRESS;表已创建,SQL>ALTERTABLET_CO

Oracle在9i增加了表压缩的功能,但是9i中表压缩之后无法添加新的字段。

看一个简单的例子:

SQL>CREATETABLET_COMPRESS(IDNUMBER,NAMEVARCHAR2(30))COMPRESS;

表已创建。

SQL>ALTERTABLET_COMPRESSADDAGENUMBER;
ALTERTABLET_COMPRESSADDAGENUMBER

*第 1 行出现错误:

ORA-22856: 无法在对象表中添加列

SQL>SELECT*FROMV$VERSION;
  BANNER
  ----------------------------------------------------------------
  Oracle9iEnterpriseEditionRelease9.2.0.4.0-ProductionPL/SQLRelease9.2.0.4.0-Production
  CORE9.2.0.3.0Production
  TNSfor32-bitWindows:Version9.2.0.4.0-Production
  NLSRTLVersion9.2.0.4.0-Production

而同样的问题在10g中已经被解决: 

SQL>CONNYANGTK/YANGTK@YTK102已连接。
SQL>CREATETABLET_COMPRESS(IDNUMBER,NAMEVARCHAR2(30))COMPRESS;

表已创建。

SQL>ALTERTABLET_COMPRESSADDAGENUMBER;

表已更改。 

SQL>SELECT*FROMV$VERSION;
  BANNER
  ----------------------------------------------------------------
  OracleDatabase10gEnterpriseEditionRelease10.2.0.1.0-Prod
  PL/SQLRelease10.2.0.1.0-Production
  CORE10.2.0.1.0Production
  TNSfor32-bitWindows:Version10.2.0.1.0-Production
  NLSRTLVersion10.2.0.1.0-Production

ORACLE在metalink文档Doc ID: Note:281472.1中对这个bug进行了描述,对于9205及以下版本的Oracle不但没有办法添加列,就是删除列也会报错

SQL>CONNYANGTK/YANGTK@YTK92已连接。
SQL>ALTERTABLET_COMPRESSDROPCOLUMNNAME;
ALTERTABLET_COMPRESSDROPCOLUMNNAME

*第 1 行出现错误:

ORA-12996: 无法删除系统生成的虚拟列

解决方法是通过MOVE,将存储参数设置为NOCOMPRESS,然后就可以执行添加、删除列的操作了。 

SQL>ALTERTABLET_COMPRESSMOVENOCOMPRESS;

表已更改。 

SQL>ALTERTABLET_COMPRESSADDAGENUMBER;

表已更改。  

SQL>ALTERTABLET_COMPRESSDROPCOLUMNNAME;

表已更改。

可见,对于9i新增的压缩功能,在10g以前仍然存在比较多问题。

Tags:有关 Oracle 压缩

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接