oracle数据库更改通知分区表

时间:2018-02-15 10:20:49

标签: java oracle oracle11g oracle-rac

我有2个节点Oracle Real Application Clusters(RAC),我连接到具有虚拟IP的节点。

我遇到有关Database Change Notification问题的问题,当我在AUTHENTICATION表上更新数据时,某些行不会调用侦听器。 我想我必须在每个分区表上注册一个监听器吗?

我试图刷新oracle缓冲区缓存,但它仍无效。

我的分区表

AUTHENTICATION

  • AUTHENTICATION_P1
  • AUTHENTICATION_P2

我的java代码

    try{
            dcr.addListener(new DatabaseChangeListener() {

                public void onDatabaseChangeNotification(DatabaseChangeEvent dce) {
                    System.out.println("Changed row id : "+dce.getTableChangeDescription()[0].getRowChangeDescription()[0].getRowid().stringValue());
                }
            });

            Statement stmt = conn.createStatement();
            ((OracleStatement) stmt).setDatabaseChangeRegistration(dcr);
            ResultSet rs = stmt.executeQuery("select * from AUTHENTICATION where rownum=1");
            while (rs.next()) {
            }
            rs.close();
            stmt.close();
        }catch(SQLException ex){
            if (conn != null)
            {
                conn.unregisterDatabaseChangeNotification(dcr);
                conn.close();
            }
            throw ex;
        }

更新 @Jean de Lavarene提到

是的,我无法为特定分区注册监听器。

0 个答案:

没有答案