我有2个节点Oracle Real Application Clusters(RAC),我连接到具有虚拟IP的节点。
我遇到有关Database Change Notification问题的问题,当我在AUTHENTICATION表上更新数据时,某些行不会调用侦听器。 我想我必须在每个分区表上注册一个监听器吗?
我试图刷新oracle缓冲区缓存,但它仍无效。
我的分区表
AUTHENTICATION
我的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提到
是的,我无法为特定分区注册监听器。