---
title: "用户权限说明 | OceanBase 文档中心"
description: 用户权限说明 OceanBase 迁移服务（OceanBase Migration Service，OMS）迁移数据库前，请确保所有数据源已创建一个数据库用户作为迁移用户。该用户需要具备不同数据源对应的权限。 权限列表 下表为各类数据库的迁移/同步用户需要具备的详细权限列表。创建数据源前，请确认已为指定用户赋予相关权…
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*L03BS6f-o40AAAAAAAAAAAAADiGDAQ/original) 迁移服务 OMSV 3.2.1 企业版

# 用户权限说明

更新时间：2023-06-25 10:19:25

OceanBase 迁移服务（OceanBase Migration Service，OMS）迁移数据库前，请确保所有数据源已创建一个数据库用户作为迁移用户。该用户需要具备不同数据源对应的权限。

## 权限列表

下表为各类数据库的迁移/同步用户需要具备的详细权限列表。创建数据源前，请确认已为指定用户赋予相关权限。

| **数据库类型** | 迁移端 | **必备的用户权限** |
| --- | --- | --- |
| MySQL | 源端 | - 数据库用户需要对待迁移的数据库具备读权限。     `GRANT SELECT ON <迁移库>.*;` - MySQL 增量同步时，数据库用户需要具备的权限。      `GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO <user_name> WITH GRANT OPTION;`      如果您在添加 MySQL 数据源时，勾选了 **增量同步时，允许 OMS 向该实例自动写入增量心跳数据**，OMS 会向对应的 MySQL 数据库创建并更新 `drc.heartbeat` 表。此时，MySQL 数据库用户需要具备创建表、写表的权限。添加数据源详情请参见 [添加 MySQL 数据源](https://www.oceanbase.com/docs/enterprise-oms-doc-cn-10000000000373607)。      - 赋予数据库用户创建表的权限          `GRANT CREATE ON drc.heartbeat TO '<user_name>';`     - 赋予数据库用户写表的权限         `GRANT INSERT, UPDATE, DELETE ON drc.heartbeat TO '<user_name>';` - 同步增量日志拉取用户需要具备 `SELECT *.*` 权限。     `GRANT SELECT ON *.*;` |
| Oracle | 源端 | Oracle 数据库的数据迁移至 OceanBase Oracle 数据库，以及Oracle 数据同步至 DataHub 时，迁移用户的权限请参见下文的 Oracle 源端数据源权限说明。 |
| OceanBase 数据库 MySQL 租户 | 源端 | OceanBase 数据库 MySQL 租户同步至 Kafka、RocketMQ 和 DataHub 时，源端迁移用户需要的权限：   - 对源端数据库具备 SELECT 权限。 - 对源端租户的 OceanBase 数据库和 MySQL 数据库的 SELECT 权限。 - 如果是增量数据同步的场景，您需要在 OceanBase 数据库的 sys 租户下创建一个用户，并赋予其 `select on *.*` 权限。 用户名、密码需要和部署文件 `config.yaml` 文件中的配置一致。   OceanBase MySQL 逻辑表到 OceanBase 数据库 MySQL 租户物理表汇聚同步时，源端不使用数据源账号，默认使用 `config.yaml` 文件中的 drc_user 和 drc_password 账号：   - 当选择需要增量同步，需要在 sys 租户下创建该账号并具备 `SELECT` 权限，同时需要在同步的源端租户下创建该账号并具备 `SELECT` 权限。 - 当选择需要全量同步，需要在同步的源端租户下创建该账号，且具备 `SELECT` 权限。 |
| OceanBase 数据库 MySQL 租户 | 目标端 | MySQL 迁移至 OceanBase 数据库 MySQL 租户时，目标端迁移用户的权限如下：   - 对源端数据库具备 `SELECT`、`INSERT`、`UPDATE` 和 `DELETE` 权限。 - 对 OceanBase 数据库具备 `SELECT` 权限。 |
| OceanBase 数据库 Oracle 租户 | 源端 | OceanBase 数据库 Oracle 租户同步至 kafka、RocketMQ 和 DataHub 时：   - 对于 OceanBase 数据库 V2.2.70 之前的版本，源端迁移用户需要的权限为 `GRANT SELECT ON *.* TO {USER};`。 - 对于 OceanBase 数据库 V2.2.70 及以上的版本，源端迁移用户需要的权限为 `GRANT DBA TO {USER};`。 |
| OceanBase 数据库 Oracle 租户 | 目标端 | Oracle 数据库的数据迁移至 OceanBase Oracle 数据库时，迁移用户的权限请参见下文的 OceanBase 数据库 Oracle 租户目标端权限说明。 |

## Oracle 源端数据源权限说明

您在创建 Oracle 数据库至 OceanBase 数据库 Oracle 租户的数据迁移项目前，请先在 Oracle 数据库上准备一个迁移账号，并赋予所需权限。

以创建用户 OMS_TEST 为例，创建语句如下。

```sql
CREATE USER <OMS_TEST> IDENTIFIED BY 123456;

```

执行如下语句，确认 Oracle 数据库的版本。

```sql
SELECT VERSION FROM V$INSTANCE;

```

OceanBase 源端数据源可以通过以下两种方式赋予迁移用户权限。如果用户的环境允许为迁移用户赋予数据库管理员（DBA）角色，请使用方式一。如果不允许，请使用方式二。

- 方式一

     1. 执行下述授权语句，为迁移用户赋予 DBA 权限。

       ```sql
       GRANT DBA TO <OMS_TEST>;

       ```
     2. 如果 Oracle 数据库的版本为 12C 之前的版本，无需进行该步操作。如果是 12C 及以上版本，您需要执行下述语句，赋予迁移用户对 `SYS.USER$` 表的读权限。

       ```sql
       GRANT SELECT ON SYS.USER$ TO <OMS_TEST>;

       ```
 - 方式二

     1. 授予 CONNECT 权限。

       ```sql
       GRANT CONNECT TO <OMS_TEST>;

       ```
     2. 如果 Oracle 数据库为 12C 及以上的版本，请赋予对 `SYS.USER$` 表的读权限。

       ```
     3. 赋予迁移用户 `CREATE SESSION`、`ALTER SESSION`、`SELECT ANY TRANSACTION`、`SELECT ANY TABLE` 和 `SELECT ANY DICTIONARY` 权限。

       ```sql
       GRANT CREATE SESSION, ALTER SESSION,
       SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <OMS_TEST>;

       ```
     4. 赋予迁移用户 `LOGMINER` 相关权限。

            - Oracle 数据库为 12C 以下的版本，执行下述语句。

             ```sql
             GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <OMS_TEST>;

             ```
            - Oracle 数据库为 12C 及以上的版本，执行下述语句。

             ```sql
             GRANT LOGMINING TO <OMS_TEST>;

             ```
     5. 赋予迁移用户 `CREATE TABLE` 和 `UNLIMITED TABLESPACE` 权限。

       ```sql
       GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <OMS_TEST>;

       ```
     6. 赋予迁移用户对迁移源端表的 `DELETE`、`INSERT` 和 `UPDATE` 权限。如果迁移的 Schema 名称和 OMS_TEST 一致，则可以跳过该步骤。

       ```sql
       GRANT DELETE, INSERT, UPDATE ON <库名.表名> TO <OMS_TEST>;

       ```

       您也可以赋予迁移用户对所有表的 `DELETE`、`INSERT` 和 `UPDATE` 权限。

       ```sql
       GRANT INSERT ANY TABLE,DELETE ANY TABLE,UPDATE ANY TABLE to <OMS_TEST>;

       ```

当 Oracle 数据库迁移至 OceanBase Oracle 数据库的源端为 12C/18C/19C 的可插拔数据库 Pluggable DataBase（PDB）时，拉取 PDB 的账号需要是 Common 用户。

1. 执行下述语句，切换至目标容器（以 Root 容器为例）。

   ```sql
   ALTER SESSION SET CONTAINER=CDB$root;

   ```

   每个 Common 用户都可以连接到 Root 容器（被命名为 `CDB$root`）、任何有连接权限的 PDB，并执行相关操作。
 2. 执行下述语句，赋予迁移用户 DBA 权限。

   ```sql
   GRANT DBA TO C##XXX CONTAINER=ALL;

   ```
 3. 执行下述语句，赋予迁移用户对 `SYS.USER$` 表的读权限。

   ```sql
   GRANT SELECT ON SYS.USER$ TO C##XXX CONTAINER=ALL;

   ```

## OceanBase Oracle 目标端权限说明

首先您需要创建迁移用户，以 OMS_TEST 为例，创建语句如下。

```

OceanBase Oracle 目标端的版本不同时，权限使用也不同：

- 对于 OceanBase Oracle V2.2.70 之前的版本，您可以通过以下两种方式赋予迁移用户权限：

     - 方式一

      执行下述语句，授予迁移用户所有权限。该方式较为简单，但赋予的权限较大。

      ```sql
      GRANT ALL PRIVILEGES ON *.* TO <OMS_TEST>;

      ```
     - 方式二

           1. 赋予迁移用户对 SYS 下系统视图的 `SELECT` 权限。

             ```sql
             GRANT SELECT ON SYS.* TO <OMS_TEST>;

             ```
           2. 赋予迁移用户对业务库表的各类权限。如果存在多个业务库，请分别进行授权。

             ```sql
             GRANT SELECT,UPDATE,DELETE ON OMS_TEST.* TO <OMS_TEST>;
             GRANT CREATE,INDEX,ALTER ON OMS_TEST.* TO <OMS_TEST>;

             ```
 - 对于 OceanBase Oracle V2.2.70 及以上的版本，您可以通过以下两种方式赋予迁移用户权限：

     - 方式一

      执行下述语句，操作较为简单，但赋予用户的权限较大。

      ```
     - 方式二

      赋予用户对业务库表的各类权限。如果存在多个业务库，请分别授权。

      ```sql
      GRANT CONNECT TO <OMS_TEST>;
      GRANT CREATE SESSION, ALTER SESSION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <OMS_TEST>;
      GRANT CREATE ANY TABLE,INSERT ANY TABLE,UPDATE ANY TABLE,DELETE ANY TABLE TO <OMS_TEST>;

      ```

**OceanBase 数据库增量用户权限使用说明：**

OceanBase 集群还需要在 SYS 租户下创建用户（以创建 OMS_DRC 账号为例），用于 OMS 向 OceanBase 集群消费 Clog 日志时进行鉴权。

请注意用户名和密码需要和 OMS 部署配置文件 `config.yaml` 中的 `drc_user`、`drc_password` 配置项保持一致。

```sql
CREATE USER OMS_DRC IDENTIFIED BY 'XXXXXX';
GRANT SELECT ON *.* TO OMS_DRC;

```

 上一篇 下一篇 ![有帮助](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) 咨询热线
