【问题标题】:How do i add ALTER SESSION privileges to a user in Oracle SQL如何在 Oracle SQL 中向用户添加 ALTER SESSION 权限
【发布时间】:2021-10-07 11:50:27
【问题描述】:

我使用 SQL 在 SQL 中创建了一个用户,

CREATE USER opt IDENTIFIED BY pass;

用户已创建。然后我尝试授予用户某些权限,

    SQL> grant unlimited tablespace ,create session to opt;

    Grant succeeded.
    SQL> grant alter session to opt;
 
    Grant succeeded.

我连接到 OPT 用户,然后是一个 alter session,但是我得到了权限不足的错误,

SQL> alter session set some_variable=0;
ERROR:
ORA-01031: insufficient privileges

我是新手,请告诉我哪里错了。 提前致谢。 :)

编辑:阅读罗伯托的回答后,我尝试添加

SQL> alter session set optimizer_mode=first_rows ;

Session altered.

这工作正常。 但是当我这样做时

SQL> alter session set sql_trace=true ;
ERROR:
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-20000: Missing database property for object store credentials

SQL> alter session set optimizer_dynamic_sampling=0;
ERROR:
ORA-01031: insufficient privileges

【问题讨论】:

  • 你是不是先退出DBA用户,再登录opt用户?
  • alter session set some_variable=0; 产生ORA-02248: invalid option for ALTER SESSION Cause: Obvious.
  • @MT0 是的,我在进行更改会话之前连接到 opt 用户,
  • 您已经在 CDBROOT 容器中创建了用户。我将编辑我的答案

标签: sql oracle sql-grant


【解决方案1】:

如果您的用户被授予create session 权限,大多数alter session 语句都是可能的,除了那些特别需要alter session 权限的语句。

演示

SQL> create user test6 identified by Oracle_1234 ;

User created.

SQL> grant create session to test6 ;

Grant succeeded.

SQL> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.6.0.0.0

我们现在与新用户建立联系

$ sqlplus test6/Oracle_1234

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Oct 7 14:03:57 2021
Version 19.6.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.6.0.0.0

SQL> alter session enable parallel dml ;

Session altered.

SQL> alter session enable parallel query ;

Session altered.

SQL> alter session set optimizer_mode=first_rows ;

Session altered.

SQL> alter session set sql_trace= true ;
ERROR:
ORA-01031: insufficient privileges

如文档所述,在以下情况下,您需要直接授予权限

  1. 要启用和禁用 SQL 跟踪工具,您必须拥有ALTER SESSION 系统权限。

  2. 要启用或禁用resumable 空间分配,您必须拥有 RESUMABLE 系统权限。

  3. 您不需要任何权限来执行其他操作 除非另有说明,否则此声明。

如果我们授予权限,则启用跟踪将起作用

SQL> grant alter session to test6 ;

Grant succeeded.

然后我们再次与用户连接

sqlplus test6/Oracle_1234

SQL*Plus: Release 19.0.0.0.0 - Production on Thu Oct 7 14:11:22 2021
Version 19.6.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Last Successful login time: Thu Oct 07 2021 14:11:03 +02:00

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.6.0.0.0

SQL> alter session set sql_trace=true ;

Session altered.

更新

如果您使用 MULTITENANT,则需要在正确的可插拔数据库中创建用户。

CONN / AS SYSDBA -- you connect to the container root
-- Switch container while connected to a common user.
ALTER SESSION SET CONTAINER = yourpdb;
-- Create the local user using the CONTAINER clause.
CREATE USER xxxx IDENTIFIED BY xxxxx CONTAINER=CURRENT;
GRANT CREATE SESSION TO xxxx CONTAINER=CURRENT;

可以直接连接pdb(可插拔数据库)

CONN system/password@pdb1

-- Create the local user using the default CONTAINER setting.

CREATE USER xxxxxxxx IDENTIFIED BY xxxxxxxxxx;
GRANT CREATE SESSION TO xxxxxx;

然后,将用户连接到可插拔数据库

conn xxxx/password@pdb1 

alter session set optimizer_dynamic_sampling=0 ;

【讨论】:

  • 感谢罗伯托的回复。我正在尝试编写一个 sql 文件。所以最初我以管理员身份登录,创建 OPT 用户并授予他创建会话和更改会话。然后,我连接到 OPT 并尝试更改会话。所以当我这样做时,当我尝试设置你提到的 optimizer_mode=first_rows 时,它工作正常。但是当我尝试设置 optimizer_dynamic_sampling=0 时,它会引发权限不足错误。我有点困惑为什么会发生这种情况,因为我也向 OPT 授予了 Alter 会话权限,再次感谢。
  • @fthomas,如果您以管理员身份登录,您使用的是多租户选项,对吗?请在问题中发布整个代码,您如何连接,谁在运行脚本来执行授权,以及您在与其他用户连接时遇到的错误。只要用户具有创建会话权限,优化器的任何更改会话都将起作用
  • 我正在从另一个文件调用SQL文件以及一些参数,请查找代码SQL的相关部分> connect &admusr/&admpwd@&pdb1 已连接。 SQL> --CREATE USER opt IDENTIFIED BY pass; SQL> 授予无限表空间,创建会话,顾问选择;格兰特成功了。 SQL> 授予更改会话以选择;格兰特成功了。 SQL> conn opt/pass@&pdb1;连接的。 SQL> 改变会话集优化器模式=第一行;会话已更改。 SQL> 改变会话集优化器_动态采样=0;错误:ORA-01031:权限不足
猜你喜欢
  • 1970-01-01
  • 2014-05-03
  • 2020-08-13
  • 2018-07-01
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 2016-01-18
相关资源
最近更新 更多