跳到主要内容
版本:2.x

Oracle

Oracle Database(简称 Oracle)是甲骨文公司的一款关系数据库管理系统。在创建 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>');
  • 您需要为归档日志预留足够的存储空间,避免存储占满影响数据库运行。

功能限制

  • Oracle 作为源库时:
    • 日志解析速度约为 10,000 QPS,如增量事件高于该速率,可能导致数据处理的延迟上升。
    • 裸日志功能目前不支持在 RAC-ASM 的部署架构上使用,且不支持从 DG 架构的非主节点获取裸日志。
  • Oracle 作为目标库时:
    • Db2 的非空字段可以用""赋值,但相关字段向Oracle写入的时候,Oracle会认为该字段是NULL,从而导致非空字段写入失败。

作为源库

  1. 以具有 DBA 权限的用户身份登录 Oracle 数据库。

  2. 依次执行下述格式的命令,创建用于数据复制/转换任务的用户。

CREATE USER username IDENTIFIED BY password;
  • username:用户名,当 Oracle 处于多租户模式下时,用户名需增加 C## 前缀。
  • password:密码。
  1. 为刚创建的账号授予权限,您也可以基于业务需求自定义权限控制。
-- 替换下述命令中的 username 为真实的用户名
-- 授予 V_$DATABASE 视图权限
GRANT
SELECT ON V_$DATABASE
TO username;

-- 用户自身 Schema 下
GRANT
CREATE SESSION
TO username;

-- 其它 Schema 下(推荐)
GRANT
CREATE SESSION,
SELECT ANY TABLE,
TO username;
-- 如为多租户模式,命令结尾需要需要指定容器,例如 CONTAINER=all
  1. 如果您需要获取源库的数据变更以实现增量同步,您还需要以 DBA 身份登录数据库完成下述数据库设置。

    1. 开启数据库归档模式(ARCHIVELOG),由于涉及重启数据库,请在业务低峰期操作。

      提示

      您也可以执行 SELECT log_mode FROM v$database; 命令来查看是否已开启该功能,返回结果为 ARCHIVELOG 表示已开启,可跳过本步骤。

      -- 关闭数据库
      SHUTDOWN IMMEDIATE;

      -- 启动并挂载数据库
      STARTUP MOUNT;

      -- 开启归档并打开数据库
      ALTER DATABASE archivelog;
      ALTER DATABASE OPEN;
    2. 开启补充日志(Supplemental Logging)。

      -- 为库级开启主键补充日志,如需关闭,将 ADD 替换为 DROP
      ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;


      -- 为单个表开启主键补充日志,需替换命令中 Schema 名称和 表名称
      ALTER TABLE Schema名称.表名称 ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
      提示

      如日志磁盘存储空间相对充裕,可执行 ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; 命令开启库级的全补充日志,简化操作流程。

    3. 如存在无主键表,您还需要选择执行下述命令,为单个表或所有表开启全补充日志(full supplemental logging)。

      -- 为单个表开启,需替换命令中 Schema名称和表名称
      ALTER TABLE Schema名称.表名称 ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

      -- 为所有表开启
      ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
      提示

      如果 Oracle 处于多租户模式,推荐为指定的容器开启,即在执行上述命令前先执行 ALTER SESSION SET CONTAINER=PDB名称; 格式的命令,将更改应用于容器。

    4. 提交更改。

      ALTER SYSTEM SWITCH LOGFILE;
    5. 如果 Oracle 处于多租户模式,您还需要执行下述命令打开可插拔数据库。

      ALTER PLUGGABLE DATABASE ALL OPEN;

作为目标库

  1. 以具有 DBA 权限的用户身份登录 Oracle 数据库。

  2. 依次执行下述格式的命令,创建用于数据复制/转换任务的用户。

CREATE USER username IDENTIFIED BY password;
  • username:用户名,当 Oracle 处于多租户模式下时,用户名需增加 C## 前缀。
  • password:密码。
  1. 为刚创建的账号授予权限,您也可以基于业务需求自定义权限控制。
-- 替换下述命令中的 username 为真实的用户名
-- 用户自身 Schema 下
GRANT
CREATE SESSION,
CREATE ANY TABLE,
UNLIMITED TABLESPACE
TO username;

-- 其它 Schema 下
GRANT
CREATE SESSION,
CREATE ANY TABLE,
DELETE ANY TABLE,
DROP ANY TABLE,
INSERT ANY TABLE,
SELECT ANY TABLE,
UPDATE ANY TABLE,
ALTER ANY INDEX,
CREATE ANY INDEX,
DROP ANY INDEX,
UNLIMITED TABLESPACE
TO username;

下一步

连接 Oracle 数据库