问题描述
嗨,汤姆,
我有两个数据库wombat和foo. Womabt has two users craig和denver. I have created a private db_link with the same name in each users of wombat连接到foo如下:
所有者DB_LINK
------ --------------------
克雷格·阿尔布斯·foo.labs.com
丹佛albs.foo.labs.com
我在克雷格为表创建了一个公共同义词fooaudit。但是两个用户都获得了同名表格 “fooaudit”
所有者同义词表名DB_LINK
-
公共abs_synm fooaudit albs.foo.labs.com
Now if I query如下: select * from abs_synm;在任何用户/架构中,db_link同义词将使用craig's or denver's?
我有两个数据库wombat和foo. Womabt has two users craig和denver. I have created a private db_link with the same name in each users of wombat连接到foo如下:
所有者DB_LINK
------ --------------------
克雷格·阿尔布斯·foo.labs.com
丹佛albs.foo.labs.com
我在克雷格为表创建了一个公共同义词fooaudit。但是两个用户都获得了同名表格 “fooaudit”
所有者同义词表名DB_LINK
-
公共abs_synm fooaudit albs.foo.labs.com
Now if I query如下: select * from abs_synm;在任何用户/架构中,db_link同义词将使用craig's or denver's?
专家解答
公共同义词不必在目标对象中具有所有者资格。例如。
提示: 当我说 “例如” 时,它的意思是 “这是您应该提供的测试用例,无论如何它可能已经回答了您的问题 :-)
通过查看同义词定义,我们可以看到 * 为什么 *
TABLE_OWNER为null,我们将在最后一种情况下使用 “DENVER”。
如果你完全限定了同义词,你会得到预期的结果
提示: 当我说 “例如” 时,它的意思是 “这是您应该提供的测试用例,无论如何它可能已经回答了您的问题 :-)
-- -- source db -- SQL> grant create session, create database link, create public synonym to craig identified by craig; Grant succeeded. SQL> grant create session, create database link to denver identified by denver; Grant succeeded. -- -- target db -- SQL> grant create session to craig identified by craig; Grant succeeded. SQL> grant create session to denver identified by denver; Grant succeeded. -- -- source db -- SQL> conn craig/craig Connected. SQL> create database link foo using 'db122'; Database link created. SQL> select * from tab@foo; no rows selected SQL> create public synonym fooaudit for tab@foo; Synonym created. SQL> select * from fooaudit; no rows selected SQL> conn denver/denver Connected. SQL> create database link foo using 'db122'; Database link created. SQL> select * from tab@foo; no rows selected -- -- Now you might think that this would fail. -- After all, DENVER does not have access to CRAIG's objects -- -- but it works -- SQL> select * from fooaudit; no rows selected复制
通过查看同义词定义,我们可以看到 * 为什么 *
SQL> select * from dba_synonyms 2 where synonym_name like 'FOO%' 3 @pr ============================== OWNER : PUBLIC SYNONYM_NAME : FOOAUDIT TABLE_OWNER : TABLE_NAME : TAB DB_LINK : FOO ORIGIN_CON_ID : 0复制
TABLE_OWNER为null,我们将在最后一种情况下使用 “DENVER”。
如果你完全限定了同义词,你会得到预期的结果
SQL> drop public synonym fooaudit; Synonym dropped. SQL> create public synonym fooaudit for craig.my_table@foo; Synonym created. SQL> conn denver/denver Connected. SQL> select * from fooaudit; select * from fooaudit * ERROR at line 1: ORA-00942: table or view does not exist ORA-02063: preceding line from FOO SQL> conn craig/craig Connected. SQL> select * from fooaudit; no rows selected复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
605次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
597次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
499次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
482次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
465次阅读
2025-04-22 00:20:37
Oracle 19c RAC更换IP实战,运维必看!
szrsu
441次阅读
2025-04-08 23:57:08
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
438次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
430次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
372次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
362次阅读
2025-04-15 14:48:05