gpt4 book ai didi

其他用户表的 Oracle 连接字符串

转载 作者:行者123 更新时间:2023-12-02 01:20:51 24 4
gpt4 key购买 nike

我们有 2 台具有相同数据库架构的服务器,但是由于我们的基础架构在一台服务器上的设置方式,我们必须为所有表名称添加用户名前缀

例如:

select * from engmon.cmts

但是在其他服务器上,查询需要如下所示

select * from cmts

这是因为一台服务器连接到不同架构/用户名中的表。是否可以更改 jdbc url 中的某些内容以使两个查询看起来像#2?这样我们就不需要根据我们连接到的服务器(dev 或 prod)动态更改 sql。

有什么想法吗?

最佳答案

我不相信您可以对 JDBC URL 执行任何操作。但是,您可以发出 SQL 语句

ALTER SESSION SET current_schema = ENGMON

连接后立即(您也可以将其放入 Oracle 中的登录触发器中)。这将具有指示 Oracle 使用 ENGMON 模式而不是当前用户的模式来解析不合格的对象名称的效果。这对权限没有影响 - 您的 session 仍然只具有分配给当前用户的权限,而不是分配给 ENGMON 用户的权限。

或者,您可以为需要访问的各种表创建同义词。本地同义词(仅对您可见)或公共(public)同义词(对所有用户可见)。所以

CREATE [PUBLIC] SYNONYM cmts
FOR engmon.cmts

同义词只需创建一次,并且适用于所有 session ,无论它们来自哪个应用程序。每次都需要设置 CURRENT_SCHEMA。

关于其他用户表的 Oracle 连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4763932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com