我有 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 的提及
是的,我无法为特定分区注册监听器。