暂无图片
拥有DBA权限的用户创建其他用户的视图(语句带private db_link)时,提示:ora-02019
我来答
分享
厚厚
2021-06-22
拥有DBA权限的用户创建其他用户的视图(语句带private db_link)时,提示:ora-02019
暂无图片 5M

1、数据库A,有用户 X 和用户 Y(DBA权限)

2、数据库B,有用户 Z

3、在数据库A上,用户X创建了一个DB_LINK链接到了数据库B(通过用户Z)
测试后,用户X可以正常查询用户Z上的表
create database link conn_b_z
connect to z identified by password
using ‘tnsname_b’;

4、使用用户Y(拥有DBA权限)登录数据库A,执行如下语句:

语句1:
create or replace view x.v_t1
as
select tt1.object_id
from t1@conn_b_z tt1;
执行成功:

语句2:
create or replace view x.v_t2
as
select tt1.object_id
from t1@conn_b_z tt1
left join t2@conn_b_z tt2
on tt1.object_id=tt2.object_id;
执行成功:

语句3:
create or replace view x.v_t3
as
select tt1.object_id
from t1@conn_b_z tt1
left join t2@conn_b_z tt2
on tt1.object_id=tt2.object_id
left join t3@conn_b_z tt3
on tt1.object_id=tt3.object_id;
执行失败:提示:ora-02019

5、使用用户X登录数据库A,执行以上语句,均执行成功。

6、当将 db_link 创建为 public db_link时,
用户X 和 用户Y 执行以上语句均成功。

疑问:
请问一下,为什么在创建有2个left join 及以上的语句视图时,会报 ora-02019 错误????
有什么文档可以参考吗?
谢谢!

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
流星

应该是bug吧,ora-2019 “connection description for remote database not found”,说没有找到远程数据库的连接描述,报出这样的错显然不合理,你的是什么版本的数据库

暂无图片 评论
暂无图片 有用 0
厚厚

不知道是不是BUG,但前面2个语句,只有1个 或没有 left join 时,就没有问题(不知道还有没有其他情况,至少2个left join及以上报错是目前碰到的)。查了 MOS 没查到类似的信息。 数据库版本是 12.1 的,操作系统 AIX 7.1

暂无图片 评论
暂无图片 有用 0
lscomeon

这是期望的行为不是BUG。
只有public database link 才能被其他用户查询。

暂无图片 评论
暂无图片 有用 0
厚厚

@lscomeon 这个应该也不是预期行为,如果说 private database link 不能被其他用户查询,那测试中的 语句1 和 语句2 又如果解释呢???

或者 语句3,这是特殊情况下的预期行为。

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏