If you want the equivalent of SqlCacheDependency for your oracle databases, look at the OracleDependency class:
static void ListenerStart(System.Object p)
{
Oracle.DataAccess.Client.OracleConnection conn = null;
Oracle.DataAccess.Client.OracleDependency dep = null;
try
{
conn = new Oracle.DataAccess.Client.OracleConnection(connectionString);
conn.Open();
Oracle.DataAccess.Client.OracleCommand comm = conn.CreateCommand();
comm.CommandText = "select * from teset_e";
dep = new Oracle.DataAccess.Client.OracleDependency(comm, false, 50000, false);
dep.OnChange += new Oracle.DataAccess.Client.OnChangeEventHandler(dep_OnChange);
comm.ExecuteNonQuery();
// to prevent the objects from being collected (which I bet they will - I don't
// know for sure), we'll just spin in an idle loop forever.
for (; ; System.Threading.Thread.Sleep(1000)){}
}
catch (System.Threading.ThreadAbortException e)
{
// close the databases
if (conn != null)
conn.Close();
}
return;
}
static void dep_OnChange(object sender, Oracle.DataAccess.Client.OracleNotificationEventArgs eventArgs)
{
changeNoticed = true;
Console.WriteLine("Change noticed at " + System.DateTime.Now.ToString());
return;
}
Recommended reading:


