From:Steve Adams
Date:05-Jan-2001 09:52
Subject:   Replacing public synonyms

OK, I believe you now! Those statistics are certainly consistent with the public synonym problem.

Private synonyms will give you some relief, so it is worth doing in the short term, while you work on moving to stored code or fully qualified names.

Thanks for the quick response! Below are the results of latch_sleeps.sql which has the row cache objects as the third greatest impact with library cache as the greatest. I don't think the ALTER SESSION SET CURRENT_SCHEMA will work for us since the userids also have objects that they own directly. I guess my question is still whether it's necessary to be completely rid of the public synonyms, or if I can just create private synonyms for the problem users?

NAME                                                             IMPACT     SLEEP_RATE HOLDING    LEVEL#
---------------------------------------------------------------- ---------- ---------- ---------- ----------
library cache                                                    19942099.4      0.60%     276308          5
shared pool                                                       3020581.4      1.19%    3084655          7
row cache objects                                                2734163.94      0.36%          0          4
cache buffers chains                                             67038.0544      0.00%          0          1
system commit number                                               62062.01      0.02%      22014          8
redo allocation                                                  18359.6103      0.03%     111073          7
redo copy                                                        11148.6202     72.29%          0          6
latch wait list                                                  9286.83187      0.02%      15205          9
session idle bit                                                 8358.30156      0.00%          0          1
cache buffers lru chain                                          5906.26098      0.05%       8295          3
session allocation                                               4844.63899      0.01%          0          5
enqueues                                                         4334.37612      0.01%      26161          5
enqueue hash chains                                              2777.67719      0.01%         11          4
undo global data                                                 2728.83893      0.01%          0          5
transaction allocation                                           1024.22636      0.01%          0          8
messages                                                          866.00464      0.00%          0          8
dml lock allocation                                              566.540275      0.00%          0          3
list of block allocation                                         354.011429      0.00%          0          3
sequence cache                                                        52.02      0.00%          0          8
cache buffer handles                                                     15      0.00%          0          3
process allocation                                               5.33333333      0.08%          0          0
user lock                                                               4.5      0.02%          0          3
modify parameter values                                                   1      0.02%          0          0

The best way to observe the difference is to use ALTER SESSION SET CURRENT_SCHEMA in the application startup code. However, you should check your diagnosis first. The best indicator that this is indeed your problem is that you would have contention for the row cache objects latch, as well as the library cache latches. If the row cache objects latch is OK, then your problem is not public synonyms.

I have been reading your Q&A regarding public synonyms and suspect they may be contributing to library cache problems in a system I support. In order to observe benefits of private synonyms or fully-qualified references, do I need to drop the public synonyms? Or, can I just create private synonyms for the "hot" userids that execute large numbers of SQL in a batch environment?