RE: OCI adapter slowdown on dictionary access

That /*+ RULE */ is a hint to the optimizer that tells Oracle to
actually bypass the optimizer.

Try this too… This statement will work:

          table_cols = %Q{
            select column_name, data_type, data_default,

nullable,
decode(data_type, ‘NUMBER’, data_precision,
‘VARCHAR2’, data_length,
null) as length,
decode(data_type, ‘NUMBER’, data_scale, null)
as scale
from (select table_name from #{scope}_catalog
where table_name = #{table}) cat,
(select * from #{scope}_synonyms where
synonym_name = #{table}) syn,
(select * from all_tab_columns) col
where cat.table_name = #{table}
and syn.synonym_name (+)= cat.table_name
and col.table_name = nvl(syn.table_name,
cat.table_name)
and col.owner = nvl(syn.table_owner, #{(scope ==
“all” ? “cat.owner” : “user”)}) }

Works for us here. I had an initial fix but it failed for synonyms.
Then I tried EXACTLY what you tried and it didn’t work for various
permissions.