Proc caching on read only db's/replicas
You're getting close, you're looking at the cached plans which says what has been executed. That doesn't tell you what's being executed right now, or yesterday, or in ten minutes. 

Try this to see what's running right now.

SELECT  s.loginame, db_name(s.dbid) name, s.hostname,  
 s.program_name,  
 s.sql_handle, s.stmt_start, s.stmt_end,  
 s.spid, CONVERT(smallint, s.waittype) waittype,  
 s.lastwaittype, s.ecid, s.waittime , s.blocked,  
 r.plan_handle,  r.statement_start_offset, r.statement_end_offset, r.query_plan_hash, r.start_time, 
 q.plan_generation_num 
FROM master..sysprocesses AS s WITH(NOLOCK)  
LEFT OUTER JOIN sys.dm_exec_requests AS r WITH(NOLOCK)  
   ON (s.spid = r.session_id) 
LEFT OUTER JOIN sys.dm_exec_query_stats q  
  ON q.plan_handle = r.plan_handle  
  AND q.statement_start_offset = r.statement_start_offset  
  AND q.statement_end_offset = r.statement_end_offset 
WHERE (s.cmd&lt;&gt;'AWAITING COMMAND'  
                AND s.cmd NOT LIKE '%BACKUP%'  
                AND s.cmd NOT LIKE '%RESTORE%'  
                AND s.cmd NOT LIKE 'FG MONITOR%' 
                AND s.hostprocess &gt; '' 
                AND s.spid&gt;50  
                AND s.spid&lt;&gt;@@SPID)   
AND lastwaittype NOT IN ('WAITFOR', 'SLEEP_TASK')  
ORDER BY s.spid, s.ecid ASC 


I would use SP_Whoisactive and log into a table for monitoring and seeing what's executing. Note, this is not the best way. This only captures what is running in real time when the query runs.

The next best way is to apply CDC / CDT / Trigger notifications on the databases / running SQL Profiler.