How to use synonym of a DBlink in Oracle?

Nitish picture Nitish · Dec 1, 2015 · Viewed 23.4k times · Source

I have created a synonym for a dblink.

create synonym dblink2 for dblink1

But when I query anything using the synonym instead of the dblink, I'm getting connection description for remote database not found error.

SELECT * FROM DUAL@DBLINK2

How do I query using the synonym?

Edit: I know that it'll work if I create a view of the table using dblink. But my requirement is the above question.

Answer

Gergely Bacso picture Gergely Bacso · Dec 3, 2015

Unfortunately creation of synonyms for dblinks is not supported. If you read the documentation on synonyms, you will find that the permitted objects for synonyms are only:

Use the CREATE SYNONYM statement to create a synonym, which is an alternative name for a table, view, sequence, procedure, stored function, package, materialized view, Java class schema object, user-defined object type, or another synonym.

The reason why your second query fails is that the synomym you have created is not functioning correctly. It is not being validated properly at creation time, and you can create any sort of incorrect synonyms like that. To verify, just test the following statement:

create synonym dblink3 for no_object_with_this_name;

You will still get a response like this:

*Synonym DBLINK3 created.*

But of course nothing will work via this synonym.