Oracle
安装 Agent 后,您需要在 Tapdata Cloud 平台为 Agent 和 Oracle 数据库建立连接,完成操作后即可在数据复制/开发任务中使用该数据源。本文介绍建立连接前的准备工作(如授权账号等)。
支持版本
Oracle 9i、10g、11g、12c、19c
注意事项
如设置了 connect_time(自动断开超时会话),可能导致实时同步异常,可通过下述命令检查该参数的设置。
select resource_name, limit from dba_profiles where profile=( select profile from dba_users where username = '<username>');
您需要为归档日志预留足够的存储空间,避免存储占满影响数据库运行。
作为源库
以具有 DBA 权限的用户身份登录 Oracle 数据库。
开启数据库归档模式(ARCHIVELOG)。
提示您也可以执行
select log_mode from v$database;
命令来查看是否已开启该功能,返回结果为 ARCHIVELOG 表示已开启,可跳过本步骤。执行下述命令,关闭数据库,请务必在业务低峰期操作,以免影响业务运行。
shutdown immediate;
执行下述命令,启动并挂载数据库。
startup mount;
执行下述命令,开启存档并打开数据。
alter database archivelog;
alter database open;
开启补充日志(Supplemental Logging)。
- Oracle 9i
- Oracle 10g、11g
- Oracle 12c
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER system switch logfile;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
/* 执行下述命令,确认 supplemental logging 是否开启 */
SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_all FROM v$database;
如果返回的前两列是 Yes 或 Implicit ,则表示只开启了 identification key logging(标识键日志),还需要开启 full supplemental logging(全补充日志)。
开启标识键日志(identification key)。
提示当使用 12c 的 PDB 时,推荐为容器的表开启日志,您可以执行先执行命令
ALTER SESSION SET CONTAINER=<pdb>;
,将更改应用于容器。为单个表开启
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;为所有表开启
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
开启全补充日志(full supplemental logging)。
为单个表开启
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;为所有表开启
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
提交更改。
ALTER SYSTEM SWITCH LOGFILE;
创建用于数据同步/开发任务的账号。
- Oracle 10g、11g
- Oracle 12c(多租户模式)
- Oracle 12c(标准模式)
CREATE USER username IDENTIFIED BY password;
GRANT create session, alter session, execute_catalog_role, select any dictionary, select any transaction, select any table, create any table, create any index, unlimited tablespace to user name;
/* 在 Oracle 12c 的多租户环境下创建用户,必须在 cdb 中创建,并且命名格式约定为 c##name */
ALTER SESSION SET CONTAINER=cdb$root;
CREATE USER username IDENTIFIED BY password CONTAINER=all;
GRANT create session, alter session, set container, select any dictionary, select any transaction, logmining, execute_catalog_role, create any table, create any index, unlimited tablespace TO username CONTAINER=all;
ALTER SESSION SET CONTAINER=pdb;
根据您对表的权限需求,重复执行最后一个命令来赋予 select 权限。当您配置的是源库连接时,请使用此用户来通过 JDBC 的身份验证。 注意必须使用整个用户名(包含 c ##)作为JDBC连接的用户名。
/* 执行下述命令,确认 supplemental logging 是否开启 */
CREATE USER username IDENTIFIED BY password;
GRANT create session, alter session, select any dictionary, select any transaction, logmining, execute_catalog_role, create any table, create any index, unlimited tablespace TO username;
根据您对表的权限需求,重复执行最后一个命令来赋予 select 权限。
作为目标库
以具有 DBA 权限的用户身份登录 Oracle 数据库。
创建用于数据同步/开发任务的账号,该账号拥有 schema 的 owner权限。
具体操作,见 CREATE USER 和 GRANT。