It used to show stats when I switched on SQL_TRACE,
but it doesn't any more after an upgrade.

If so, then it's a change in default behaviour. In earlier
versions of 9, when you enabled sql_trace, you implicitly
enabled "_rowsource_execution_statistics". The most
recent versions don't do this. If you want them, then

alter session set "_rowsource_execution_statistics"=true;

The cost is significant in some classes of query - nested
loops seem to be the worst. I have an example where
the CPU time goes up by a factor of three when stats
are on.

The information contained in this message and any attachment may be
proprietary, confidential, and privileged or subject to the work
product doctrine and thus protected from disclosure. If the reader
of this message is not the intended recipient, or an employee or
agent responsible for delivering this message to the intended
recipient, you are hereby notified that any dissemination,
distribution or copying of this communication is strictly prohibited.
If you have received this communication in error, please notify me
immediately by replying to this message and deleting it and all
copies and backups thereof. Thank you.