在9i环境下没有任何问题,但是在10g中 对于要监听的表 表名长度超过23,在运行到如下语句时就会出错:
--设置CDC窗口 Step #5 Set the Boundaries to See New Data
    dbms_cdc_subscribe.extend_window(subscription_handle => table_rec.handle);错误提示:
         oracle.jdbc.driver.OracleSQLException: ORA-00972: 标识符过长
         ORA-06512: 在 "SYS.DBMS_CDC_UTILITY", line 226
        ORA-06512: 在 line 1
at oracle.jdbc.driver.T2SConnection.check_error(T2SConnection.java:153)
at oracle.jdbc.driver.T2SCallableStatement.checkError(T2SCallableStatement.java:92)
at oracle.jdbc.driver.T2SCallableStatement.executeForRows(T2SCallableStatement.java:449)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1294)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3514)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3620)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:5261)
at oracle.CDC.SubscriptionWindow.qccsero(SubscriptionWindow.java:759)
at oracle.CDC.SubscriptionWindow.extendWindow(SubscriptionWindow.java:337)
at oracle.CDC.SubscribeApi.extendWindow(SubscribeApi.java:428)
对于要监听的表长度<23的时候没有问题,超过23就会出现此问题。但是在9i中 无论表的长度都没有问题,是不是10g中做了什么改动?希望各位大虾帮帮小弟, 谢谢!!

解决方案 »

  1.   

    用10G的JDBC驱动(ojdbc14.jar)替换9I的驱动
      

  2.   

    一楼的:是不是你说的是用9i的JDBC驱动(ojdbc14.jar)替换10g的啊?我试过了 不行 还是出现那个问题
    二楼的:这个CDC抽取程序在9i上运行完全没有问题,在10g上只是表名长度超过23才会出现这个问题,我不可能再去用stream重新写一遍啊,还望赐教,谢谢
      

  3.   

    估计是JDBC驱动的问题,用10G的驱动