加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ORACLE隐藏列查询

(2016-07-15 13:18:32)
标签:

ora-14097

隐藏列

分类: 数据库类

 现象:

       在PLSQLDEV开发工具下按照如下三个步骤执行SQL,具体步骤如下:

 

  1.  drop table CLDATA2_TMP purge

  2.  create  table  CLDATA2_TMP compress for query high as select * from DRAWINGS partition (P20140) where data_load_type in(‘a’,’d’)

  3.   alter table DRAWINGS exchange partition P20140 with table CLDATA2_TMP without validation

 

报错现象为:

 http://s3/mw690/003d54oKgy70i72zRwS72&690

分析:

 

1.   错误报告显示列类型及大小不匹配,因此查看了系统表sys.all_tab_columns进行比对两表的列字段名及相关类型大小

http://s10/mw690/003d54oKgy70i74uOiB39&690

注:查看两表字段的个数是否一致

 

2.   根据系统表查出的表结构清单放置EXCEL进行比对

http://s11/mw690/003d54oKgy70i7d3WeSda&690

  注:将两表相同字段的数据大小通过IF函数放置在同一行

http://s14/mw690/003d54oKgy70i7jQcNf4d&690

   注:根据E2与D2通过函数IF进行比对是否相等,若D与E列都有值的情况下比对结果为1说明列类型大小相等

3.  通过EXCEL比对结果发现列名及大小都相等,这时不知道如何查找原因,感觉不应该报错

4.   经过请教发现原来系统中还有一张系统视图sys.all_tab_cols,于是通过此视图查找发现原来表DRAWINGS含有隐藏列字段,通过CREATE TABLE建表不会创建隐藏列。

 http://s12/mw690/003d54oKgy70i7pTXKzab&690

总结:若想查看表中列字段的详细信息最好使用系统视图SYS.ALL_TAB_COLS查看,经过分析发现SYS.ALL_TAB_COLUMNS中的所有信息都包含在内。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有