我已经为dblink创建了一个同义词.
create synonym dblink2 for dblink1
Run Code Online (Sandbox Code Playgroud)
但是当我使用同义词而不是dblink查询任何内容时,我正在获取远程数据库未找到错误的连接描述.
SELECT * FROM DUAL@DBLINK2
Run Code Online (Sandbox Code Playgroud)
如何使用同义词进行查询?
编辑:我知道如果我使用dblink创建表的视图它将工作.但我的要求是上述问题.
Ger*_*cso 11
不幸的是,不支持为dblinks创建同义词.如果您阅读有关同义词的文档,您会发现同义词的允许对象仅为:
使用CREATE SYNONYM语句创建同义词,它是表,视图,序列,过程,存储函数,包,物化视图,Java类架构对象,用户定义对象类型或其他同义词的替代名称.
您的第二个查询失败的原因是您创建的同义词无法正常运行.它在创建时未正确验证,您可以创建任何类型的错误同义词.要验证,只需测试以下语句:
create synonym dblink3 for no_object_with_this_name;
Run Code Online (Sandbox Code Playgroud)
您仍会得到这样的回复:
*Synonym DBLINK3 created.*
Run Code Online (Sandbox Code Playgroud)
但当然没有什么能通过这个同义词起作用.
我认为为 dblink 本身创建同义词没有意义。理想情况下,您可以使用dblink为远程表创建同义词。
CREATE DATABASE LINK my_db_link CONNECT TO user IDENTIFIED BY passwd USING 'alias';
CREATE SYNONYM my_table FOR remote_table@my_db_link;
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用同义词查询远程表:
SELECT * FROM my_table;
Run Code Online (Sandbox Code Playgroud)