基本上我有一个使用oracle作为数据源的java应用程序。现在我的应用程序与用户连接,并使用连接的用户模式来创建表等...
现在我有一个要求,我的应用程序也应该在另一个模式下工作。
所以我必须选择。
1 - 使用类似
的前缀更改我的表名select * from other_schema.table
2 - 在运行任何查询之前更改会话,例如
alter session set current_schema=other_schema
我很好奇是否有任何可能会改变会话权限可以被dba撤销。
Oracle文档说
除非另有说明,否则您不需要任何权限来执行此语句的其他操作。
https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_2012.htm
请注意,我的应用用户将拥有 other_schema 的所有权限。
我的应用程序将运行许多环境。
所以第一次使用它看起来更安全,但可能需要很长时间。
第二个更快,但看起来很棘手。
答案 0 :(得分:1)
是的,他们这样做。有一个名为CONNECT
的角色。此角色通常(取决于版本)为您提供两个系统权限:
create session
alter session
如果您的用户只能直接授予create session
权限,那么您可以不使用任何 alter session ...
语句。
Se Oracle文档: Addressing The CONNECT Role Change
请注意,设置事件需要ALTER SESSION权限。 很少有数据库用户需要alter session权限。
SQL> ALTER SESSION SET EVENTS ........
其他alter session不需要alter session特权 命令。
SQL> ALTER SESSION SET NLS_TERRITORY = FRANCE;
所以它真的取决于Oracle版本。
答案 1 :(得分:0)
10gR2中的CONNECT角色已更改。它曾经拥有RESOURCE的大部分权限,但在10gR2中已将其撤消。
我只是与只有CREATE SESSION的用户一起尝试过ALTER SESSION,至少在11.2.0.4中,它使我感到惊讶。