すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for OceanBase:ユーザー権限

最終更新日:Jan 17, 2026

Data Transmission Service (DTS) を使用してデータを移行する前に、各データソースにデータベースユーザーを作成し、移行または同期ユーザーとして機能させる必要があります。このユーザーは、ソースとターゲットのデータソースで必要な権限を持っている必要があります。

MySQL 互換モードの OceanBase Database がソースの場合に必要な権限

MySQL 互換モードの OceanBase Database がソースの場合、移行または同期ユーザーは次の権限を持っている必要があります:

  • ターゲットが Kafka、DataHub、RocketMQ などのメッセージキューである場合、ユーザーはソースデータベースに対する SELECT 権限を持っている必要があります。

    ターゲットが MySQL データベースや MySQL 互換モードの OceanBase Database などのデータベースである場合、ユーザーはソースデータベースと oceanbase データベースに対する SELECT 権限を持っている必要があります。

    GRANT SELECT ON <database_name>.* TO '<user_name>';
    GRANT SELECT ON oceanbase.* TO '<user_name>';
    重要

    oceanbase データベースに対する SELECT 権限は、OceanBase Database V4.0.0 以降でのみ必要です。

  • MySQL 互換モードの OceanBase Database インスタンス間でデータを移行する際に、逆方向増分同期が有効になっている場合、移行ユーザーは test データベースに対する CREATESELECTINSERTUPDATEDELETE 権限も持っている必要があります。

    GRANT CREATE,SELECT,INSERT,UPDATE,DELETE ON test.* TO '<user_name>';
  • VPC 内の OceanBase Database インスタンスの増分データ同期では、増分ログデータとデータベースオブジェクト構造情報を読み取る必要があります。これを行うには、ソースインスタンスの sys テナントにユーザーを作成し、そのユーザーに SELECT ON *.* 権限を付与します。

    GRANT SELECT ON <database_name>.* TO <drc_user>;

MySQL 互換モードの OceanBase Database がターゲットの場合に必要な権限

MySQL 互換モードの OceanBase Database がターゲットの場合、移行ユーザーは次の権限を持っている必要があります:

  • ターゲットデータベースに対する CREATECREATE VIEWSELECTINSERTUPDATEALTERINDEXDELETE 権限。

    GRANT CREATE,CREATE VIEW,SELECT,INSERT,UPDATE,ALTER,INDEX,DELETE ON <database_name>.* TO '<user_name>';
  • テナント全体に対する SELECT 権限。

    GRANT SELECT ON *.* TO '<user_name>';

Oracle 互換モードの OceanBase Database がソースの場合に必要な権限

Oracle 互換モードの OceanBase Database がソースの場合、移行または同期ユーザーは次の権限を持っている必要があります:

  • V2.2.70 より前のバージョンの Oracle 互換モードの OceanBase Database の場合、ソースユーザーは GRANT SELECT ON *.* TO '<user_name>'; 権限を持っている必要があります。

  • Oracle 互換モードの OceanBase Database V2.2.70 以降の場合、ソースユーザーは GRANT DBA TO '<user_name>'; 権限を持っている必要があります。

    • Oracle 互換モードの OceanBase Database V4.0.0 以降の場合、ソースの移行ユーザーは DBA_OB_ARCHIVELOG に対する SELECT 権限も持っている必要があります。

      GRANT SELECT ON DBA_OB_ARCHIVELOG TO '<user_name>';
    • Oracle 互換モードの OceanBase Database V4.2.0 以降の場合、ソースの移行ユーザーは DBA_OB_TABLE_LOCATIONS に対する SELECT 権限も持っている必要があります。

      GRANT SELECT ON DBA_OB_TABLE_LOCATIONS TO '<user_name>';

Oracle 互換モードの OceanBase Database がターゲットの場合に必要な権限

Oracle データベースから Oracle 互換モードの OceanBase Database にデータを移行する場合、必要な権限はターゲットデータベースのバージョンによって異なります。

ターゲットバージョン

権限の説明

V2.2.5 または V2.2.3

移行ユーザーに権限を付与するには、次の 2 つの方法のいずれかを使用できます:

  • 方法 1

    • 次の文を実行して、移行ユーザーにすべての権限を付与します。この方法は簡単ですが、高レベルの権限が付与されます。

      GRANT ALL PRIVILEGES ON *.* TO '<user_name>';
  • 方法 2

    1. OceanBase Database インスタンスが VPC 内にある場合、移行ユーザーに sys テナントのシステムビューに対する SELECT 権限を付与します。

      GRANT SELECT ON SYS.* TO '<user_name>';
    2. 移行ユーザーにビジネス テーブルに対するさまざまな権限を付与します。複数のビジネス データベースが存在する場合は、権限を個別に付与します。

      GRANT SELECT, UPDATE, DELETE ON <db_name>.* TO '<user_name>';
      GRANT CREATE, INDEX, ALTER ON <db_name>.* TO '<user_name>';

V2.2.7 以降

移行ユーザーに権限を付与するには、次の 2 つの方法のいずれかを使用できます:

  • 方法 1

    次の文を実行します。この方法は簡単ですが、ユーザーに高レベルの権限が付与されます。

    GRANT DBA TO '<user_name>';
  • 方法 2

    ユーザーにビジネス テーブルに対するさまざまな権限を付与します。複数のビジネス データベースが存在する場合は、権限を個別に付与します。

    GRANT CONNECT TO '<user_name>';
    GRANT CREATE SESSION, ALTER SESSION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO '<user_name>';
    GRANT CREATE ANY TABLE, CREATE ANY INDEX, CREATE ANY VIEW, INSERT ANY TABLE, UPDATE ANY TABLE, ALTER ANY TABLE, DELETE ANY TABLE TO '<user_name>';

Oracle データベースがソースの場合に必要な権限

ユーザーを作成した後、必要な権限は Oracle データベースのバージョンとユーザーロールによって異なります。

説明
  • Active Data Guard (ADG) のセカンダリデータベースの場合、付与された権限がすぐに有効にならないことがあります。この場合、セカンダリデータベースで ALTER SYSTEM FLUSH SHARED_POOL; コマンドを実行して共有プールをリフレッシュできます。

  • このトピックで説明する権限には、SELECT ANY TRANSACTIONSELECT ANY TABLESELECT ANY DICTIONARY などの広範な権限が含まれています。これらは最小限必要な権限ではありません。Oracle データベースがソースの場合のセキュリティを向上させるために、`ANY` を使用する代わりに、より細かい粒度の権限を付与できます。詳細については、「ソース Oracle データベースの最小権限」をご参照ください。

Oracle 12c より前のバージョンの DBA ユーザー権限

ご利用の環境で移行ユーザーにデータベース管理者 (DBA) ロールを割り当てることができ、Oracle データベースのバージョンが 12c より前の場合、次の文を実行して移行ユーザーに DBA 権限を付与できます。

GRANT DBA TO <user_name>;

Oracle 12c より前のバージョンの非 DBA ユーザー権限

ご利用の環境で移行ユーザーに必要な権限のみを付与する必要があり、Oracle データベースのバージョンが 12c より前の場合、次の手順を実行します:

  1. CONNECT 権限を付与します。

    GRANT CONNECT TO <user_name>;
  2. 移行ユーザーに CREATE SESSIONALTER SESSIONSELECT ANY TRANSACTIONSELECT ANY TABLESELECT ANY DICTIONARY 権限を付与します。

    GRANT CREATE SESSION, ALTER SESSION, 
    SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <user_name>;
  3. 移行ユーザーに LOGMINER 関連の権限を付与します。

    GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <user_name>;
  4. 移行ユーザーに CREATE TABLEUNLIMITED TABLESPACE 権限を付与します。

    GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <user_name>;
  5. 移行したいスキーマの名前が user_name と同じ場合は、次の文を実行します。

    GRANT CREATE SEQUENCE,CREATE VIEW TO <user_name>;

    移行したいスキーマの名前が user_name と異なる場合は、次の文を実行します。

    GRANT CREATE ANY TABLE,CREATE ANY INDEX,DROP ANY TABLE,ALTER ANY TABLE,COMMENT ANY TABLE,
    DROP ANY INDEX,ALTER ANY INDEX,CREATE ANY SEQUENCE,ALTER ANY SEQUENCE,DROP ANY SEQUENCE,
    CREATE ANY VIEW,DROP ANY VIEW,INSERT ANY TABLE,DELETE ANY TABLE,UPDATE ANY TABLE TO <user_name>;

    または、次の文を実行することもできます。

    GRANT CREATE ANY TABLE,CREATE ANY INDEX,DROP ANY TABLE,ALTER ANY TABLE,COMMENT ANY TABLE,
    DROP ANY INDEX,ALTER ANY INDEX,CREATE ANY SEQUENCE,ALTER ANY SEQUENCE,DROP ANY SEQUENCE,
    CREATE ANY VIEW,DROP ANY VIEW TO <user_name>;
    # Oracle データベースに移行する特定のテーブルを追加します。
    GRANT DELETE, INSERT, UPDATE ON <database_name>.<table_name> TO <user_name>;

Oracle 12c 以降の DBA ユーザー権限

ご利用の環境で移行ユーザーに DBA ロールを割り当てることができ、Oracle データベースのバージョンが 12c 以降の場合、Oracle 12c、18c、または 19c のプラガブル・データベース (PDB) を使用しているかどうかを確認します。

  • 非 PDB

    1. 次の文を実行して、移行ユーザーに DBA 権限を付与します。

      GRANT DBA TO <user_name>;
    2. 次の文を実行して、移行ユーザーに SYS.USER$ テーブルに対する読み取り権限を付与します。

      GRANT SELECT ON SYS.USER$ TO <user_name>;
  • PDB

    データ移行元が Oracle 12c、18c、または 19c の PDB である場合、PDB からデータをプルするために使用されるアカウントは共通ユーザーである必要があります。

    1. 次の文を実行して、CDB$ROOT に切り替えます。

      ALTER SESSION SET CONTAINER=CDB$ROOT;

      各共通ユーザーは、CDB$ROOT という名前のルートコンテナーと、ユーザーが接続権限を持つ任意の PDB に接続し、関連する操作を実行できます。

    2. 次の文を実行して、移行ユーザーに DBA 権限を付与します。

      GRANT DBA TO C##XXX CONTAINER=ALL;
    3. 次の文を実行して、移行ユーザーに SYS.USER$ テーブルに対する読み取り権限を付与します。

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

Oracle 12c 以降の非 DBA ユーザー権限

ご利用の環境で移行ユーザーに必要な権限のみを付与する必要があり、Oracle データベースのバージョンが 12c 以降の場合、次の手順を実行します:

  • 非 PDB

    1. CONNECT 権限を付与します。

      GRANT CONNECT TO <user_name>;
    2. 次の文を実行して、移行ユーザーに SYS.USER$ テーブルに対する読み取り権限を付与します。

      GRANT SELECT ON SYS.USER$ TO <user_name>;
    3. 移行ユーザーに CREATE SESSIONALTER SESSIONSELECT ANY TRANSACTIONSELECT ANY TABLESELECT ANY DICTIONARY 権限を付与します。

      GRANT CREATE SESSION, ALTER SESSION, SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <user_name>;
    4. 移行ユーザーに LOGMINER 関連の権限を付与します。

      GRANT LOGMINING TO <user_name>;
      GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <user_name>;
    5. 移行ユーザーに CREATE TABLEUNLIMITED TABLESPACE 権限を付与します。

      GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <user_name>;
    6. 移行したいスキーマの名前が user_name と同じ場合は、次の文を実行します。

      GRANT CREATE SEQUENCE,CREATE VIEW TO <user_name>;

      移行したいスキーマの名前が user_name と異なる場合は、次の文を実行します。

      GRANT CREATE ANY TABLE,CREATE ANY INDEX,DROP ANY TABLE,ALTER ANY TABLE,COMMENT ANY TABLE,
      DROP ANY INDEX,ALTER ANY INDEX,CREATE ANY SEQUENCE,ALTER ANY SEQUENCE,DROP ANY SEQUENCE,
      CREATE ANY VIEW,DROP ANY VIEW,INSERT ANY TABLE,DELETE ANY TABLE,UPDATE ANY TABLE TO <user_name>;
  • PDB

    データ移行元が Oracle 12c、18c、または 19c の PDB である場合、PDB からデータをプルするために使用されるアカウントは共通ユーザーである必要があります。

    1. CONNECT 権限を付与します。

      GRANT CONNECT TO <C##XXX> CONTAINER=ALL;
    2. 次の文を実行して、移行ユーザーに SYS.USER$ テーブルに対する読み取り権限を付与します。

      GRANT SELECT ON SYS.USER$ TO <C##XXX> CONTAINER=ALL;
    3. 移行ユーザーに CREATE SESSIONALTER SESSIONSELECT ANY TRANSACTIONSELECT ANY TABLESELECT ANY DICTIONARY 権限を付与します。

      GRANT CREATE SESSION, ALTER SESSION, 
      SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <C##XXX> CONTAINER=ALL;
    4. 移行ユーザーに LOGMINER 関連の権限を付与します。

      GRANT LOGMINING TO <C##XXX> CONTAINER=ALL;
      GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <C##XXX> CONTAINER=ALL;
    5. 移行ユーザーに CREATE TABLEUNLIMITED TABLESPACE 権限を付与します。

      GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <C##XXX> CONTAINER=ALL;
    6. 移行したいスキーマの名前が C##XXX と同じ場合は、次の文を実行します。

      GRANT CREATE SEQUENCE,CREATE VIEW TO <C##XXX> CONTAINER=ALL;

      移行したいスキーマの名前が C##XXX と異なる場合は、次の文を実行します。

      GRANT CREATE ANY TABLE,CREATE ANY INDEX,DROP ANY TABLE,ALTER ANY TABLE,COMMENT ANY TABLE,
      DROP ANY INDEX,ALTER ANY INDEX,CREATE ANY SEQUENCE,ALTER ANY SEQUENCE,DROP ANY SEQUENCE,
      CREATE ANY VIEW,DROP ANY VIEW,INSERT ANY TABLE,DELETE ANY TABLE,UPDATE ANY TABLE TO <C##XXX> CONTAINER=ALL;

MySQL データベースがソースの場合に必要な権限

  • データベースユーザーは、移行したいデータベースに対する読み取り権限を持っている必要があります。MySQL 8.0 を使用する場合は、SHOW VIEW 権限も付与する必要があります。

    GRANT SELECT ON <database_name>.* TO '<user_name>';
  • MySQL データベースからの増分同期の場合、データベースユーザーは REPLICATION CLIENTREPLICATION SLAVESELECT *.* 権限を持っている必要があります。

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '<user_name>' [WITH GRANT OPTION];
    GRANT SELECT ON *.* TO '<user_name>';
    説明
    • 増分同期中に、ユーザーがソースデータベース内のすべてのテーブルに対する読み取り権限を持っていない場合、プロジェクトが中断される可能性があります。

    • WITH GRANT OPTION パラメーターはオプションです。

  • MySQL データベースから MySQL 互換モードの OceanBase Database にデータを移行する際に、逆方向増分同期が有効になっている場合、移行ユーザーは test データベースに対する CREATESELECTINSERTUPDATEDELETE 権限も持っている必要があります。

    GRANT CREATE,SELECT,INSERT,UPDATE,DELETE ON test.* TO '<user_name>';

TiDB データベースがソースの場合に必要な権限

  • データベースユーザーは、移行したいデータベースに対する読み取り権限を持っている必要があります。

    GRANT SELECT ON <database_name>.* TO '<user_name>';
  • TiDB データベースからの増分同期の場合、データベースユーザーは REPLICATION CLIENTREPLICATION SLAVESELECT *.* 権限を持っている必要があります。

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '<user_name>' [WITH GRANT OPTION];
    GRANT SELECT ON *.* TO '<user_name>';

AnalyticDB for MySQL がターゲットの場合に必要な権限

AnalyticDB for MySQL (ADB) では、さまざまな粒度レベルで異なる権限を付与してアクセスを制御できます。詳細については、「権限モデル」をご参照ください。

ADB は、次の 4 つの粒度レベルでのアクセス制御をサポートしています:

  • GLOBAL: クラスターレベル

  • DB: データベースレベル

  • TABLE: テーブルレベル

  • COLUMN: 列 (フィールド) レベル

Kafka インスタンスがターゲットの場合に必要な権限

Kafka インスタンスが認証を必要とする場合は、「Kafka データソースの作成」をご参照ください。

Kafka ユーザーは、次の操作を実行するための権限を持っている必要があります:

  • トピックの作成と表示。

  • トピックのパーティション情報の表示。

  • レコードの書き込み。

  • レコードの読み取り。

DataHub インスタンスがターゲットの場合に必要な権限

DataHub は、エンドポイント、AccessKey ID、AccessKey Secret に基づいてユーザーを認証します。

DataHub ユーザーは、GetProjectCreateTopicListTopicGetTopicListShardPutRecordsGetRecordsGetCursor 権限を持っている必要があります。

RocketMQ インスタンスがターゲットの場合に必要な権限

RocketMQ インスタンスがターゲットの場合、同期ユーザーは次の操作を実行するための権限を持っている必要があります:

  • トピックの作成と表示。

  • トピックのメッセージキュー情報の表示。

  • レコードの書き込み。

  • レコードの読み取り。