如何将 JBOSS 数据源设置为 Oracle 数据库,使用与用于身份验证的模式不同的模式

How can I set a JBOSS data source to an Oracle database use a different schema to the one used for authentication

我有一个 Java webapp (WAR) 将在 JBOSS.运行.

该 webapp 将使用 username/password 为获得只读权限的用户创建与 Oracle 数据库的连接。

Web 应用程序查询属于不同架构的 table。我通过在我的 SQL 查询中限定每个 table 名称来做到这一点。

但是,我想在我的数据源中对此进行参数化,因为架构名称在不同的环境中可能不同。

有没有办法定义一个 JBOSS 数据源,该数据源以用户 A 的身份登录每个连接,但对所有查询使用模式 B?

一种方法是使用 new-connection-sqlcheck-valid-connection-sql datasource properties 执行 ALTER SESSION SET CURRENT_SCHEMA=yourschema,这将更改每个连接的默认架构。

推荐的方法是在 Oracle 中为您的用户 A 创建同义词以访问用户 B 拥有的模式中的表。这样您甚至可以将特定权限授予用户 A select、更新、插入表由另一个用户 B 拥有。