更改会话设置current_schema权限

时间:2016-05-04 10:18:51

标签: oracle session privileges alter

基本上我有一个使用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 的所有权限。

我的应用程序将运行许多环境。

所以第一次使用它看起来更安全,但可能需要很长时间。

第二个更快,但看起来很棘手。

2 个答案:

答案 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中,它使我感到惊讶。