oracle - 是否可以为 session 设置默认的 ORACLE dblink 并避免 @dblink_name 后缀

标签 oracle session dblink

我有一个 Oracle 数据库,其中有几个公共(public)数据库链接供各种客户使用。所有客户的所有链接数据库都是相同的。此外,我的主机上只有一个模式,我在其中存储了带有一些数据检索逻辑的数据库 View 。 目前,如果我想从不同的客户那里检索相同的数据,我必须为每个客户分别创建几乎相同的 View :

CREATE VIEW my_view_for_cliet1 AS 
SELECT *
FROM table1@dblink1;

CREATE VIEW my_view_for_cliet2 AS 
SELECT *
FROM table1@dblink2 

是否可以为 session (或类似的东西)设置默认的 dblink 并且只有一个没有显式 dblink 的数据库 View ,例如:

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;

附言我在链接的机器上只有 SELECT 权限,所以我不能创建任何 View 或其他对象。

最佳答案

不,那是不可能的。对 dblink 的每个引用都必须是显式的。

请注意,(到目前为止)提出的每个其他解决方案都可以提供您所要求的外观,但在所有实际 View 中仍然需要显式的 dblink 引用,因此需要相同的 DDL每个新链接和/或客户端用户的更改。没有办法避免在某种程度上创建这些单独的 View 或显式引用(我相信你问的是什么),即使你对用户隐藏了它们。

关于oracle - 是否可以为 session 设置默认的 ORACLE dblink 并避免 @dblink_name 后缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65807409/

相关文章:

sql - "variable = ."(变量 = 点)在 Oracle SQL/SAS 中意味着什么?

c# - 将应用程序缓存与 session 数据相结合时的信任边界违规

node.js - 将签名的 cookie 传递给 puppeteer

oracle - dblink 上的同义词或 View

sql - 日期如 yyyy/yy 到 yyyy(例如 :2016/17 to 2016)

sql - Oracle Merge - 违反唯一键的约束

node.js - nodejs + websocket session 混淆

PostgreSQL 9.5 : Hide password from dblink connection

oracle - PLS-00103 : Encountered the symbol “;” when expecting one of the following: