資料轉送遷移資料庫前,請確保所有資料來源已建立一個資料庫使用者作為遷移使用者或同步處理的使用者。該使用者需要具備源端和目標端資料來源對應的許可權。
OceanBase 資料庫 MySQL 租戶作為源端的許可權說明
OceanBase 資料庫 MySQL 租戶作為源端時,遷移/同步處理的使用者需要如下許可權:
目標端為 Kafka、DataHub 和 RocketMQ 等訊息佇列類型時,需要對源端待同步資料庫具備
SELECT
許可權。目標端為 MySQL 資料庫、OceanBase 資料庫 MySQL 租戶等資料庫類型時,需要對源端待遷移資料庫及
oceanbase
資料庫具備SELECT
許可權。重要僅 OceanBase 資料庫 V4.0.0 及之後版本需要添加
oceanbase
資料庫的SELECT
許可權。對於 VPC 內 OceanBase 資料庫,如果是增量資料同步的情境,您需要在 OceanBase 資料庫的
sys
租戶下建立一個使用者,並賦予其SELECT ON *.*
許可權。
OceanBase 資料庫 MySQL 租戶作為目標端的許可權說明
OceanBase 資料庫 MySQL 租戶作為目標端時,遷移使用者需要以下許可權:
對目標端資料庫具備
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>';
OceanBase 資料庫 Oracle 租戶作為源端的許可權說明
OceanBase 資料庫 Oracle 租戶作為源端時,遷移/同步處理的使用者需要以下許可權:
對於 OceanBase 資料庫 V2.2.70 之前的版本,源端使用者需要的許可權為
GRANT SELECT ON *.* TO <user_name>;
。對於 OceanBase 資料庫 V2.2.70 及之後的版本,源端使用者需要的許可權為
GRANT DBA TO <user_name>;
。
OceanBase 資料庫 Oracle 租戶作為目標端的使用者權限賦予說明
遷移 Oracle 資料庫的資料至 OceanBase 資料庫 Oracle 租戶時,目標端的版本不同,許可權使用也不同。
目標端版本 | 許可權說明 |
V2.2.5 或 V2.2.3 | 您可以通過以下兩種方式賦予遷移使用者權限:
|
V2.2.7 及之後版本 | 您可以通過以下兩種方式賦予遷移使用者權限:
|
Oracle 資料庫作為源端的許可權說明
建立使用者後,不同版本的 Oracle 資料庫及使用者角色所需要賦予的許可權說明如下。
對於 ADG 備庫,有時可能出現授權後許可權未生效的問題。此時,您需要在備庫執行命令
ALTER SYSTEM FLUSH SHARED_POOL;
來重新整理 Shared Pool。本文提供的是非最小化許可權說明,需要賦予遷移使用者
SELECT ANY TRANSACTION
、SELECT ANY TABLE
和SELECT ANY DICTIONARY
許可權。以 Oracle 資料庫作為源端時,您可以對 ANY 進行細化,賦予遷移使用者最小化許可權以提高安全性。詳情請參見 源端 Oracle 資料庫的最小化許可權。
12C 之前版本 DBA 使用者權限賦予說明
如果使用者的環境允許為遷移使用者賦予資料庫管理員(DBA)角色,且 Oracle 資料庫的版本為 12C 之前的版本,則只需要執行下述語句,為遷移使用者賦予 DBA 許可權即可。
GRANT DBA TO <user_name>;
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>;
如果遷移的 Schema 名稱和
user_name
一致,執行下述語句。GRANT CREATE SEQUENCE,CREATE VIEW TO <user_name>;
如果遷移的 Schema 名稱和
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 <庫名>.<表名> TO <user_name>;
12C 及之後版本 DBA 使用者權限賦予說明
如果使用者的環境允許為遷移使用者賦予資料庫管理員(DBA)角色,且 Oracle 資料庫的版本為 12C 及之後的版本,則需要區分是否使用 12C/18C/19C 的可插拔資料庫 Pluggable DataBase(PDB)。
非 PDB
執行下述授權語句,為遷移使用者賦予 DBA 許可權。
GRANT DBA TO <user_name>;
執行下述語句,賦予遷移使用者對
SYS.USER$
表的讀許可權。GRANT SELECT ON SYS.USER$ TO <user_name>;
PDB
如果 Oracle 資料庫遷移至 OceanBase Oracle 資料庫的源端為 12C/18C/19C 的可插拔資料庫 Pluggable DataBase(PDB)時,拉取 PDB 的帳號需要是 Common 使用者。
執行下述語句,切換至 CDB$ROOT。
ALTER SESSION SET CONTAINER=CDB$ROOT;
每個 Common 使用者都可以串連到 Root 容器(被命名為
CDB$ROOT
)、任何有串連許可權的 PDB,並執行相關操作。執行下述語句,賦予遷移使用者 DBA 許可權。
GRANT DBA TO C##XXX CONTAINER=ALL;
執行下述語句,賦予遷移使用者對
SYS.USER$
表的讀許可權。GRANT SELECT ON SYS.USER$ TO C##XXX CONTAINER=ALL;
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>;
如果遷移的 Schema 名稱和
user_name
一致,執行下述語句。GRANT CREATE SEQUENCE,CREATE VIEW TO <user_name>;
如果遷移的 Schema 名稱與
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 資料庫遷移至 OceanBase Oracle 資料庫的源端為 12C/18C/19C 的可插拔資料庫 Pluggable DataBase(PDB)時,拉取 PDB 的帳號需要是 Common 使用者。
授予 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;
如果遷移的 Schema 名稱和
C##XXX
一致,執行下述語句。GRANT CREATE SEQUENCE,CREATE VIEW TO <C##XXX> CONTAINER=ALL;
如果遷移的 Schema 名稱和
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 資料庫 V8.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
為選擇性參數。
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>';
ADB 資料庫作為目標端的許可權說明
AnalyticDB for MySQL(簡稱 ADB)支援針對不同的許可權粒度授予不同的許可權,以達到許可權控制的目的。詳情請參見 許可權模型。
ADB 支援以下四個粒度的許可權控制:
GLOBAL:叢集層級
DB:資料庫層級
TABLE:表層級
COLUMN:列(欄位)層級
Kafka 作為目標端的許可權說明
如果 Kafka 存在鑒權,請參見 建立 Kafka 資料來源。
Kafka 使用者需要具備進行以下操作的許可權:
建立和查看 Topic
查看 Topic Partition 資訊
寫入 Record
讀取 Record
DataHub 作為目標端的許可權說明
DataHub 根據 endpoint/ak/sk 進行鑒權。
DataHub 使用者需要具備 GetProject
、CreateTopic
、ListTopic
、GetTopic
、ListShard
、PutRecords
、GetRecords
和 GetCursor
許可權。
RocketMQ 作為目標端的許可權說明
RocketMQ 作為目標端時,同步處理的使用者需要具備進行以下操作的許可權:
建立和查看 Topic
查看 Topic MessageQueue 資訊
寫入 Record
讀取 Record