Here’s a set of Instance Activity stats I’ve never seen before, and I’d rather never see again. From an active standby running 11.1.0.7 on AIX:
select
name, value
from v$sysstat
where
name in (
'consistent gets - examination',
'consistent gets',
'session logical reads'
)
or name like 'transaction tables%'
;
NAME VALUE
---------------------------------------------------------------- --------------------
session logical reads 102,731,023,313
consistent gets 102,716,499,376
consistent gets - examination 98,170,595,252
transaction tables consistent reads - undo records applied 96,590,314,116
transaction tables consistent read rollbacks 2,621,019
5 rows selected.
The instance has been up for about 60 hours – and 95% of the work it has done has been trying to find the commit times for transactions affecting blocks that are in need of cleanout. If you look at the two statistics about the transaction tables (those are the things in the undo segment header blocks) you can see that the average work done to find a commit time was a massive 48,000 visits to undo blocks.
The solution was fairly simple – kill all the reports which had been running for the last six hours, because they were the ones that were causing a problem, while simultaneously suffering most from the problem – at the time I killed the worst offender it was managing to read about 50 blocks per minute from the database, and doing about 100,000 buffer visits to undo blocks per second.
You probably won’t see this every again, but if you do, a quick check is:
select * from v$sess_io order by consistent_changes;
Repeat a couple of times and check if any sessions are doing a very large number (viz: tens of thousands) of consistent changes per second.
Recent comments
17 weeks 2 days ago
27 weeks 14 hours ago
28 weeks 5 days ago
31 weeks 6 days ago
34 weeks 1 day ago
43 weeks 5 days ago
45 weeks 2 days ago
46 weeks 2 days ago
46 weeks 3 days ago
49 weeks 1 day ago