---
title: "SET ROLE - OceanBase 数据库 V4.1.0 | OceanBase 文档中心"
description: "SET ROLE 描述 该语句来启用或禁用为当前会话授予的角色。 语法 SET ROLE { role_name [ IDENTIFIED BY password ][, role_name [ IDENTIFIED BY password ] ]... | ALL [ EXCEPT role_name [, rol…"
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.1.0

# SET ROLE

更新时间：2023-07-28 10:45:58

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.1.0/zh-CN/700.reference/400.development-reference/100.sql-syntax/300.common-tenant-of-oracle-mode/900.sql-statement-of-oracle-mode/300.dcl-of-oracle-mode/3400.set-role-of-oracle-mode.md)  

## 描述

该语句来启用或禁用为当前会话授予的角色。

## 语法

```sql
SET ROLE
{ role_name [ IDENTIFIED BY password ][, role_name [ IDENTIFIED BY password ] ]...
| ALL [ EXCEPT role_name [, role_name ]... ]
| NONE
} ;

```

## 参数解释

| 参数 | 描述 |
| --- | --- |
| role_name | 指定要为当前会话启用的角色名称。 |
| IDENTIFIED BY password | 指定角色的密码。如果角色有密码，则您必须指定密码才能启用该角色。 |
| ALL | 启用为当前会话授予的所有角色。 `EXCEPT` 子句表示列出的角色除外，为可选项。如果您已被直接授予任何具有密码的角色，则不能指定此子句，否则会引发报错。 |
| NONE | 禁用当前会话的所有角色。 |

## 示例

- 为当前会话启用由密码 `**1***` 标识的角色 `role1`。

  ```sql
  obclient> SET ROLE role1 IDENTIFIED BY **1***;
  Query OK, 0 rows affected

  ```
 - 启用授予当前会话的所有角色，当授予的角色中包含具有密码的角色时将报错。

  ```sql
  obclient> SET ROLE ALL;
  ORA-01979: missing or invalid password for role 'ROLE2'

  ```
 - 启用授予当前会话除了角色 `role2` 之外的所有角色。

  ```sql
  obclient> SET ROLE ALL EXCEPT role2;
  Query OK, 0 rows affected

  ```
 - 禁用为当前会话授予的所有角色。

  ```sql
  obclient> SET ROLE NONE;
  Query OK, 0 rows affected

  ```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
