Chinaunix首页 | 论坛 | 博客
  • 博客访问: 670506
  • 博文数量: 168
  • 博客积分: 2928
  • 博客等级: 中校
  • 技术积分: 1904
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-04 09:56
文章分类

全部博文(168)

文章存档

2010年(168)

我的朋友

分类: Oracle

2010-06-10 16:12:43

一个物化视图创建的小bug,在NEXT语句后面不能使用“”开始的注释。否则报错ORA-23319

 

 

模拟错误:

SQL> SELECT * FROM V$VERSION;

BANNER
X1q$pc'`P7z0----------------------------------------------------------------ITPUB个人空间]i)q#nYM)c
Oracle9iEnterpriseEdition Release9.2.0.4.0 -
ProductionITPUB个人空间0?_2I`u vBno
PL
/SQL Release 9.2.0.4.0 - ProductionITPUB个人空间.JJ3X,t2ve*i v
CORE    9.2.0.3.0       ProductionITPUB个人空间?+x\nNyj
TNS for Linux: Version 9.2.0.4.0 - ProductionITPUB个人空间 UV'QQ4^
NLSRTL Version 9.2.0.4.0 - Production

SQL> CREATE TABLE TITPUB个人空间sSPS#u @z
  2  (ID NUMBER,ITPUB个人空间1@hC\]\uGa
  3  NAME VARCHAR2(30));

表已创建。

SQL> ALTER TABLE T ADD PRIMARY KEY (ID);

表已更改。

SQL> CREATE MATERIALIZED VIEW LOG ON T;

实体化视图日志已创建。

SQL> CREATE MATERIALIZED VIEW MV_T
#Q%zu7x!Ek0  2  REFRESH FAST
U'F{(lKx3wMBz0  3  START WITH SYSDATEITPUB个人空间Y"@ GPI
  4  NEXT TRUNC(SYSDATE + 1) --TESTITPUB个人空间'l @%K(@{$c!u,z uf1y
  5  AS SELECT *
^1BQ%`if0  6  FROM T;
+i.C Z1M8?3k%N4E R{+F9s0FROM TITPUB个人空间1ZcS7E U)[]F1w:M
     *
0yi%G(v/}IX0ERROR
位于第6:
0YB[K9l6aVe0ORA-23319:
参数值"TRUNC(SYSDATE + 1) --TEST "不正确
ITPUB个人空间]^WK.l$aFB
ORA-06512:
"SYS.DBMS_JOB", line 57
_&YJ$B0M8Vi5a0ORA-06512:
"SYS.DBMS_JOB", line 134
[-No[!Y0ORA-06512:
"SYS.DBMS_IREFRESH", line 186
9Qy*V|{k!m#i0ORA-06512:
"SYS.DBMS_IREFRESH", line 369
:x}[p0pXB4?0ORA-06512:
"SYS.DBMS_REFRESH", line 88ITPUB个人空间nD4W~9sg9eQ
ORA-06512:
"SYS.DBMS_REFRESH", line 62ITPUB个人空间f*{j%]A
ORA-06512:
"SYS.DBMS_ISNAPSHOT", line 76ITPUB个人空间H1N(b Mw|4c
ORA-06512:
line 1


0V@s1A qMbKS*z0SQL> CREATE MATERIALIZED VIEW MV_T
M:Y+j5r4Y|:?0  2  REFRESH FAST
(CffH;O6]0  3  START WITH SYSDATE
O4I0T[LX9X Ba0  4  NEXT TRUNC(SYSDATE + 1) /*TEST*/ITPUB个人空间\/Sv:Zi!K!b
  5  AS SELECT *
}#Jh+_'P p+Bg0  6  FROM T;

实体化视图已创建。

从错误信息可以判断,Oracle错误的将—TEST这个注释也作为NEXT语句的一部分了。去掉注释或者使用/**/方式的注释都不会报错。

而且错误只是发生在NEXT语句处,其他语句后面如果添加注释并不会导致这个错误。

metalink中并没有发现这个错误的描述,估计Oracle还没有发现这个bug,显然也就不会对这个bug进行修正。

11.2中,这个错误仍然存在:

SQL> SELECT * FROM V$VERSION;

BANNERITPUB个人空间gc%S+kSh*n
--------------------------------------------------------------------------------
8@5Z-t@2ww:J3],l0Oracle DatabaseEnterprise Edition Release11.2.0.1.0 - 64bit ProductionITPUB个人空间2J)HAc;fUY'e
PL/SQL Release 11.2.0.1.0 - ProductionITPUB个人空间)JA `(H,KH n%E
CORE    11.2.0.1.0      ProductionITPUB个人空间)],H0oL\(}q}m
TNS for Linux: Version 11.2.0.1.0 - ProductionITPUB个人空间 znsw)A-\3Y
NLSRTL Version 11.2.0.1.0 - Production

SQL> CREATE TABLE T
-o \f?D5s'i0  2  (ID NUMBER,ITPUB个人空间;LE_G&Y k%J
  3  NAME VARCHAR2(30));

表已创建。

SQL> ALTER TABLE T ADD PRIMARY KEY (ID);

表已更改。

SQL> CREATE MATERIALIZED VIEW LOG ON T;

实体化视图日志已创建。

SQL> CREATE MATERIALIZED VIEW MV_TITPUB个人空间2U*Q la pY;|D+{I
  2  REFRESH FAST
.M*b ^r)ST0  3  START WITH SYSDATEITPUB个人空间/S cK:wk mr:_n
  4  NEXT TRUNC(SYSDATE + 1) --TEST
trXzj+} PPB"@0  5  AS SELECT *ITPUB个人空间)|/v.x6Y&R
  6  FROM T;ITPUB个人空间&w*sli;t-[,k
FROM TITPUB个人空间'\xc7LP {,so1y6u;K
     *
1x myWV(A5x$J_0
6行出现错误:ITPUB个人空间;`8egZu_ v/| J4?
ORA-23319:
参数值"TRUNC(SYSDATE + 1) --TEST "不正确
ITPUB个人空间YS6C?#Z5D4W ve7g
ORA-06512:
"SYS.DBMS_JOB", line 60ITPUB个人空间&Pg'W,NZ Od#Y
ORA-06512:
"SYS.DBMS_JOB", line 139
4T^|0i \0ORA-06512:
"SYS.DBMS_IREFRESH", line 188ITPUB个人空间*Sv9fRV0n8e
ORA-06512:
"SYS.DBMS_IREFRESH", line 371
:hI1p7D/q Z0ORA-06512:
"SYS.DBMS_REFRESH", line 88ITPUB个人空间P4K-h,^6QC
ORA-06512:
"SYS.DBMS_REFRESH", line 62ITPUB个人空间 uww wwH y
ORA-06512:
"SYS.DBMS_ISNAPSHOT", line 76
o0p.TU6i0D^\0ORA-06512:
line 1

阅读(2132) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~