我有一个 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/