I haven’t found any real cons against using synonyms. As a matter of fact, I have had good experiences in reducing maintenance with changes in the DBMS.
About the only problem is when you change an underlying object. You may have to recompile the package. Easy to do with dynamic SQL and part of my daily cron job list.
As far as synonyms over dblinks. Make sure that the calling user has privileges on the underlying objects on both databases. Other than that, you shouldn’t be having problems using them across links if they are setup correctly.
I have not had any negative impact from using synonyms for packages or other objects. The developers and testers find the use of synonyms helpful.
Yes, I believe using synonyms improves the maintainability of pl/sql objects, and improves security as well. I do not think it improves performance at all.
It will be simpler to maintain and control though should it will improve the DBA’s performance
I haven’t encountered any performance or maintenance problems. Synonyms improves the maintainability of pl/sql objects and improves security of the underlying objects.
I have not used it in distributed database.
Synonyms are generally a good tool for code reuse. But I have to play the Devil’s advocate here – there ARE some disadvantages.
In general, you can’t perform all the same actions on synonyms as you can or the objects they point to. E.g. you can’t compile a synonym for a package.