資料轉送遷移資料庫前,請確保所有資料來源已建立一個資料庫使用者作為遷移使用者或同步處理的使用者。該使用者需要具備源端和目標端資料來源對應的許可權。
OceanBase 資料庫 MySQL 相容模式作為源端的許可權說明
OceanBase 資料庫 MySQL 相容模式作為源端時,遷移/同步處理的使用者需要如下許可權:
目標端為 Kafka、DataHub 和 RocketMQ 等訊息佇列類型時,需要對源端待同步資料庫具備
SELECT許可權。目標端為 MySQL 資料庫、OceanBase 資料庫 MySQL 相容模式等資料庫類型時,需要對源端待遷移資料庫及
oceanbase資料庫具備SELECT許可權。GRANT SELECT ON <database_name>.* TO '<user_name>'; GRANT SELECT ON oceanbase.* TO '<user_name>';重要僅 OceanBase 資料庫 V4.0.0 及之後版本需要添加
oceanbase資料庫的SELECT許可權。進行 OceanBase 資料庫 MySQL 相容模式之間的資料移轉時,如果存在反向增量,遷移使用者還需要對源端的
test資料庫具備CREATE、SELECT、INSERT、UPDATE和DELETE許可權。GRANT CREATE,SELECT,INSERT,UPDATE,DELETE ON test.* TO '<user_name>';對於 VPC 內 OceanBase 資料庫,如果是增量資料同步的情境,您需要讀取增量日誌資料和資料庫物件結構資訊,請在源端
sys租戶下建立使用者,並賦予其SELECT ON *.*許可權。GRANT SELECT ON <database_name>.* TO <drc_user>;
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 資料庫 Oracle 相容模式 V2.2.70 之前的版本,源端使用者需要的許可權為
GRANT SELECT ON *.* TO '<user_name>';。對於 OceanBase 資料庫 Oracle 相容模式 V2.2.70 及之後的版本,源端使用者需要的許可權為
GRANT DBA TO '<user_name>';。對於 OceanBase 資料庫 Oracle 相容模式 V4.0.0 及之後版本,源端遷移使用者還需要具備
DBA_OB_ARCHIVELOG的SELECT許可權。GRANT SELECT ON DBA_OB_ARCHIVELOG TO '<user_name>';對於 OceanBase 資料庫 Oracle 相容模式 V4.2.0 及之後版本,源端遷移使用者還需要具備
DBA_OB_TABLE_LOCATIONS的SELECT許可權。GRANT SELECT ON DBA_OB_TABLE_LOCATIONS 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為選擇性參數。
遷移 MySQL 資料庫的資料至 OceanBase 資料庫 MySQL 相容模式時,如果存在反向增量,遷移使用者還需要對源端的
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>';
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