有关Oracle 9i压缩表无法添加字段问题
http://tech.ddvip.com 2008年08月09日 社区交流
内容摘要:Oracle在9i增加了表压缩的功能,但是9i中表压缩之后无法添加新的字段。可见,对于9i新增的压缩功能,在10g以前仍然存在比较多问题。
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以前仍然存在比较多问题。
作者:杨廷琨 责编:豆豆技术应用
- Oracle 10g 教程
- Oracle 故障处理
- Oracle 存储过程
- Oracle 备份恢复
- Oracle 性能调优
- Oracle 9i 教程
- Oracle 11g 教程
- Oracle 启动
- Oracle 命令
- Oracle 数据库管理
- Oracle 时间
- Oracle 密码
- Oracle 用户
- Oracle 常见错误
- Oracle 建数据表
- Oracle 索引
- Oracle 数据库连接
- Oracle 锁
- Oracle RAC 专题
- Oracle exp/imp 命令
- Oracle 表空间
- Oracle 查询
- Oracle 函数
- Oracle PL/SQL 专题
- 更多Oracle 专题>>>