0

我有 2 个节点 Oracle Real Application Clusters (RAC),并且我使用虚拟 IP 连接到节点。

我遇到了关于数据库更改通知的问题,问题是当我更新 AUTHENTICATION 表上的数据时,某些行没有调用侦听器。我想我必须在每个分区表上注册一个监听器,对吧?

我试图刷新 oracle 缓冲区缓存,但它仍然无法正常工作。

我的分区表

验证

  • 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 的提及

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

4

0 回答 0