oracle - 是否可以为会话设置默认 ORACLE dblink 并避免使用@dblink_name 后缀
问题描述
我有一个 Oracle 数据库,其中有几个公共 dblink 供各种客户使用。所有客户的所有链接数据库都是相同的。此外,我的主机上只有一个模式,我在其中存储了带有一些数据检索逻辑的数据库视图。目前,如果我想从不同的客户那里检索相同的数据,我必须为每个客户创建单独的几乎相同的视图:
CREATE VIEW my_view_for_cliet1 AS
SELECT *
FROM table1@dblink1;
CREATE VIEW my_view_for_cliet2 AS
SELECT *
FROM table1@dblink2
是否可以为会话(或类似的东西)设置默认 dblink,并且只有一个没有显式 dblink 的数据库视图,例如:
CREATE VIEW my_view AS
SELECT *
FROM table1;
-- below I want to retrieve data from 3rd client
ALTER SESSION SET DEFAULT DBLINK dblink3;
SELECT * FROM my_view;
PS 我在链接的机器上只有 SELECT 权限,所以我不能创建任何视图或其他对象。
解决方案
不,那是不可能的。每个对 dblink 的引用都必须是显式的。
请注意,(到目前为止)提出的每个其他解决方案都可以给出您所要求的外观,但仍然需要在所有实际视图中明确引用 dblink ,因此每个新链接和/或客户端用户的相同 DDL 更改. 没有办法避免在某个级别创建这些单独的视图或显式引用(我相信这是您所要求的),即使您在某种程度上对用户隐藏它们。
推荐阅读
- sql - 如何在 Oracle 中将外部连接选择查询转换为 MERGE
- css - 未应用 React-filepond 外部 CSS。我怀疑这是一个 webpack 问题
- excel - 将列表中的条目复制到 Excel VBA 中的表中
- laravel - 如何通过模型检索数据?
- c - 将结构数组传递给C中的函数
- css - 显示选中的单选按钮 - Ninja Forms
- go - golang中的X937文件解码?
- android - Android App 高 CPU 使用率和电池消耗
- scala - 在 Play Framework 中运行时构建读取转换器和案例类
- html - 重写 URL 以删除 `.html` 扩展名