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データベースに対するCREATE、SELECT、INSERT、UPDATE、DELETE権限も持っている必要があります。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 がターゲットの場合、移行ユーザーは次の権限を持っている必要があります:
ターゲットデータベースに対する
CREATE、CREATE VIEW、SELECT、INSERT、UPDATE、ALTER、INDEX、DELETE権限。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 つの方法のいずれかを使用できます:
|
V2.2.7 以降 | 移行ユーザーに権限を付与するには、次の 2 つの方法のいずれかを使用できます:
|
Oracle データベースがソースの場合に必要な権限
ユーザーを作成した後、必要な権限は Oracle データベースのバージョンとユーザーロールによって異なります。
Active Data Guard (ADG) のセカンダリデータベースの場合、付与された権限がすぐに有効にならないことがあります。この場合、セカンダリデータベースで
ALTER SYSTEM FLUSH SHARED_POOL;コマンドを実行して共有プールをリフレッシュできます。このトピックで説明する権限には、
SELECT ANY TRANSACTION、SELECT ANY TABLE、SELECT ANY DICTIONARYなどの広範な権限が含まれています。これらは最小限必要な権限ではありません。Oracle データベースがソースの場合のセキュリティを向上させるために、`ANY` を使用する代わりに、より細かい粒度の権限を付与できます。詳細については、「ソース Oracle データベースの最小権限」をご参照ください。
Oracle 12c より前のバージョンの DBA ユーザー権限
ご利用の環境で移行ユーザーにデータベース管理者 (DBA) ロールを割り当てることができ、Oracle データベースのバージョンが 12c より前の場合、次の文を実行して移行ユーザーに DBA 権限を付与できます。
GRANT DBA TO <user_name>;Oracle 12c より前のバージョンの非 DBA ユーザー権限
ご利用の環境で移行ユーザーに必要な権限のみを付与する必要があり、Oracle データベースのバージョンが 12c より前の場合、次の手順を実行します:
CONNECT 権限を付与します。
GRANT CONNECT TO <user_name>;移行ユーザーに
CREATE SESSION、ALTER SESSION、SELECT ANY TRANSACTION、SELECT ANY TABLE、SELECT ANY DICTIONARY権限を付与します。GRANT CREATE SESSION, ALTER SESSION, SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <user_name>;移行ユーザーに
LOGMINER関連の権限を付与します。GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <user_name>;移行ユーザーに
CREATE TABLEとUNLIMITED TABLESPACE権限を付与します。GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <user_name>;移行したいスキーマの名前が
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
次の文を実行して、移行ユーザーに DBA 権限を付与します。
GRANT DBA TO <user_name>;次の文を実行して、移行ユーザーに
SYS.USER$テーブルに対する読み取り権限を付与します。GRANT SELECT ON SYS.USER$ TO <user_name>;
PDB
データ移行元が Oracle 12c、18c、または 19c の PDB である場合、PDB からデータをプルするために使用されるアカウントは共通ユーザーである必要があります。
次の文を実行して、CDB$ROOT に切り替えます。
ALTER SESSION SET CONTAINER=CDB$ROOT;各共通ユーザーは、
CDB$ROOTという名前のルートコンテナーと、ユーザーが接続権限を持つ任意の PDB に接続し、関連する操作を実行できます。次の文を実行して、移行ユーザーに DBA 権限を付与します。
GRANT DBA TO C##XXX CONTAINER=ALL;次の文を実行して、移行ユーザーに
SYS.USER$テーブルに対する読み取り権限を付与します。GRANT SELECT ON SYS.USER$ TO C##XXX CONTAINER=ALL;
Oracle 12c 以降の非 DBA ユーザー権限
ご利用の環境で移行ユーザーに必要な権限のみを付与する必要があり、Oracle データベースのバージョンが 12c 以降の場合、次の手順を実行します:
非 PDB
CONNECT 権限を付与します。
GRANT CONNECT TO <user_name>;次の文を実行して、移行ユーザーに
SYS.USER$テーブルに対する読み取り権限を付与します。GRANT SELECT ON SYS.USER$ TO <user_name>;移行ユーザーに
CREATE SESSION、ALTER SESSION、SELECT ANY TRANSACTION、SELECT ANY TABLE、SELECT ANY DICTIONARY権限を付与します。GRANT CREATE SESSION, ALTER SESSION, SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <user_name>;移行ユーザーに
LOGMINER関連の権限を付与します。GRANT LOGMINING TO <user_name>; GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <user_name>;移行ユーザーに
CREATE TABLEとUNLIMITED TABLESPACE権限を付与します。GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <user_name>;移行したいスキーマの名前が
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 からデータをプルするために使用されるアカウントは共通ユーザーである必要があります。
CONNECT 権限を付与します。
GRANT CONNECT TO <C##XXX> CONTAINER=ALL;次の文を実行して、移行ユーザーに
SYS.USER$テーブルに対する読み取り権限を付与します。GRANT SELECT ON SYS.USER$ TO <C##XXX> CONTAINER=ALL;移行ユーザーに
CREATE SESSION、ALTER SESSION、SELECT ANY TRANSACTION、SELECT ANY TABLE、SELECT ANY DICTIONARY権限を付与します。GRANT CREATE SESSION, ALTER SESSION, SELECT ANY TRANSACTION, SELECT ANY TABLE, SELECT ANY DICTIONARY TO <C##XXX> CONTAINER=ALL;移行ユーザーに
LOGMINER関連の権限を付与します。GRANT LOGMINING TO <C##XXX> CONTAINER=ALL; GRANT EXECUTE ON SYS.DBMS_LOGMNR TO <C##XXX> CONTAINER=ALL;移行ユーザーに
CREATE TABLEとUNLIMITED TABLESPACE権限を付与します。GRANT CREATE TABLE, UNLIMITED TABLESPACE TO <C##XXX> CONTAINER=ALL;移行したいスキーマの名前が
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 CLIENT、REPLICATION SLAVE、SELECT *.*権限を持っている必要があります。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データベースに対するCREATE、SELECT、INSERT、UPDATE、DELETE権限も持っている必要があります。GRANT CREATE,SELECT,INSERT,UPDATE,DELETE ON test.* TO '<user_name>';
TiDB データベースがソースの場合に必要な権限
データベースユーザーは、移行したいデータベースに対する読み取り権限を持っている必要があります。
GRANT SELECT ON <database_name>.* TO '<user_name>';TiDB データベースからの増分同期の場合、データベースユーザーは
REPLICATION CLIENT、REPLICATION SLAVE、SELECT *.*権限を持っている必要があります。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 ユーザーは、GetProject、CreateTopic、ListTopic、GetTopic、ListShard、PutRecords、GetRecords、GetCursor 権限を持っている必要があります。
RocketMQ インスタンスがターゲットの場合に必要な権限
RocketMQ インスタンスがターゲットの場合、同期ユーザーは次の操作を実行するための権限を持っている必要があります:
トピックの作成と表示。
トピックのメッセージキュー情報の表示。
レコードの書き込み。
レコードの読み取り。