更改会话设置 current_schema 权限
Alter session set current_schema privilege
基本上我有一个使用 oracle 作为数据源的 java 应用程序。现在我的应用程序与用户连接并使用连接用户的模式进行 table 创建等...
现在我有一个要求,我的应用程序也应该在另一个模式下工作。
所以我必须有其他选择。
1 - 将我的 table 名称更改为前缀
select * from other_schema.table
2 - 在 运行 任何查询之前更改会话
alter session set current_schema=other_schema
我很好奇 dba 是否有可能撤销更改会话权限。
Oracle 文档说
You do not need any privileges to perform the other operations of this statement unless otherwise indicated.
https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_2012.htm
请注意,我的应用用户将拥有 other_schema.
的所有权限
我的应用程序将 运行 许多环境。
所以使用第一种方法,它看起来更安全,但可能需要很长时间。
第二个速度更快,但似乎很棘手。
是的,他们有。有一个角色叫CONNECT
。这个角色通常(取决于版本)给你两个系统权限:
create session
alter session
当您的用户只有 create session
直接授予的权限时,您可以 not 使用 any alter session ...
语句.
Se Oracle 文档:
Addressing The CONNECT Role Change
Note that the ALTER SESSION privilege is required for setting events.
Very few database users should require the alter session privilege.
SQL> ALTER SESSION SET EVENTS ........
The alter session privilege is not required for other alter session
commands.
SQL> ALTER SESSION SET NLS_TERRITORY = FRANCE;
所以这真的取决于 Oracle 版本。
CONNECT 角色在 10gR2 中发生了变化。它曾经拥有RESOURCE的大部分权限,但是这些在10gR2中被撤销了。
我刚刚对一个只有 CREATE SESSION 的用户尝试了 ALTER SESSION,令我惊讶的是它起作用了,至少在 11.2.0.4 中是这样。
基本上我有一个使用 oracle 作为数据源的 java 应用程序。现在我的应用程序与用户连接并使用连接用户的模式进行 table 创建等...
现在我有一个要求,我的应用程序也应该在另一个模式下工作。
所以我必须有其他选择。
1 - 将我的 table 名称更改为前缀
select * from other_schema.table
2 - 在 运行 任何查询之前更改会话
alter session set current_schema=other_schema
我很好奇 dba 是否有可能撤销更改会话权限。
Oracle 文档说
You do not need any privileges to perform the other operations of this statement unless otherwise indicated.
https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_2012.htm
请注意,我的应用用户将拥有 other_schema.
的所有权限我的应用程序将 运行 许多环境。
所以使用第一种方法,它看起来更安全,但可能需要很长时间。
第二个速度更快,但似乎很棘手。
是的,他们有。有一个角色叫CONNECT
。这个角色通常(取决于版本)给你两个系统权限:
create session
alter session
当您的用户只有 create session
直接授予的权限时,您可以 not 使用 any alter session ...
语句.
Se Oracle 文档: Addressing The CONNECT Role Change
Note that the ALTER SESSION privilege is required for setting events. Very few database users should require the alter session privilege.
SQL> ALTER SESSION SET EVENTS ........
The alter session privilege is not required for other alter session commands.
SQL> ALTER SESSION SET NLS_TERRITORY = FRANCE;
所以这真的取决于 Oracle 版本。
CONNECT 角色在 10gR2 中发生了变化。它曾经拥有RESOURCE的大部分权限,但是这些在10gR2中被撤销了。
我刚刚对一个只有 CREATE SESSION 的用户尝试了 ALTER SESSION,令我惊讶的是它起作用了,至少在 11.2.0.4 中是这样。