【问题标题】:Daisy chaining DBLinks?菊花链 DBLinks?
【发布时间】:2016-07-01 09:03:20
【问题描述】:

如果您有三个服务器 [[1],[2],[3]],它们通过数据库链接 ([1] -> [2], [2] -> [3]) 依次链接,则是否可以“菊花链”查询,以便登录到 [1] 的用户可以读取(或更糟的是从)[3] 中的表?有点像...

SELECT * FROM DBA_TABLES@2@3;

?

我是数据库的用户,dba 已在这些数据库之间建立了公共链接,我正试图弄清楚这到底有多糟糕。我已经知道我在 2 上具有提升的权限,但我担心 [2] 到 [3] 上的链接可能会被进一步利用。

感谢您的意见。

【问题讨论】:

  • 你不能做像@2@3这样的事情。您可以在 2 上创建引用 3 上的对象的同义词/视图/等,然后通过数据库链接将这些对象操作到 2。在数据库链接上执行 DDL 有点痛苦但可能(假设 2 上的用户具有适当的特权)。
  • 是的,你可以做同义词。见stackoverflow.com/questions/2989926/…

标签: oracle plsql


【解决方案1】:

您可以从 db[1] 调用 db[2] 上的 DBMS_SQL 包,该包可以运行引用 db[3] 的动态 SQL 语句。

declare
 v_cursor  NUMBER;
 v_ind      number;
begin
 v_cursor := dbms_sql.open_cursor@db2;
 dbms_sql.parse@db2(v_cursor, 'delete from tbl@db3', dbms_sql.native);
 v_ind := dbms_sql.execute@db2( v_cursor );
end;
/

否则,您需要 db2 中的对象来屏蔽到 db3 的链接。

【讨论】:

  • 嗯,这几乎证实了我的噩梦。 :|谢谢!
猜你喜欢
  • 2020-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-28
  • 2014-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多