ORA-12889,ORA-23319 when creating materialized view

创建mv时,mv的定义会保存到sys.snap$中。
mv的next参数保存在sys.snap$的auto_fun列,此列最大长度为200.
如果next参数后面有注释,那么注释也会一并保存到auto_fun列。
所以,对于next参数的注释:

1:next参数的长度(不含next关键词)+注释的长度(注释符号’/**/’也算在内,长度为4)不能超过200,否则创建mv报错ORA-12889。
2:如果注释内含中文字符,那么1个中文字符的长度是2。1个’回车’按照1个字符计算。
3:注释只能用/**/这样的格式,不能用’--’,因为’--’会被误认为next参数的一部分而参与参数计算,此时oracle发现--’不是合法的operator,就会抛出ORA-23319,创建mv失败。

posted @ 2011-11-04 16:16  hello_olduncle  阅读(1572)  评论(0编辑  收藏  举报