历史版本4 :Oracle环境准备(LogMiner) 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

通过数据管道实时同步 Oracle 的数据时,来源数据源为 Oracle,去向数据源为 MySQL 或者 SQL Server,执行同步任务前,需要参考本文在数据源中进行一些配置,为后续的数据同步做好准备。

2. 操作步骤编辑

同步来源数据源的数据至去向数据源之前,需要确保 Oracle 数据源中不存在数据管道不支持的数据库版本。

2.1 确认当前使用的数据库版本

确认是否为数据管道同步任务所支持的版本。

数据管道支持的 Oracle 数据库读取类型(来源数据库)及版本如下表所示:

数据库类型支持数据库版本
OracleOracle 10g、11g、12c
进入 Oracle 数据库

命令提示符中输入:sqlplus / as sysdba

可以通过如下任意语句查看数据库的版本。

select @@version

2.2 开启 Archive Log 

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

2)使用命令查看数据库的 logging mode :

select log_mode from v$database;

如果返回的结果是 ARCHIVELOG , 可以直接操作 2.4 节进行操作。

如果返回的结果是 NOARCHIVELOG , 继续按照以下步骤操作:

  • 关闭数据库: 使用命令:shutdown immediate;

  • 启动并挂载数据库: startup mount;

  • 开启存档并打开数据库:

alter database archivelog;alter database open;

2.3 开启 Supplemental Log

2.3.1 Oracle 10g、11g版本

使用如下命令:

alter database add supplemental log data;alter system switch logfile;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

2.3.2 Oracle 12c 版本的特殊配置方法

使用以下命令,确认 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(全补充日志)已同时开启,不需要在进行其他操作。

如果返回的前两列是 Yes 或者 Implicit ,则表示只开启了 identification key logging(标识键日志)。如果这个能满足您的需求,则也不需要其他操作。

2.3.3 Oracle 12c 的 PDB 

当使用 12c 的 PDB 时,最佳做法是为容器的表开启日志,而不是对整个数据库开启日志。可以先使用以下命令将更改应用于容器:

ALTER SESSION SET CONTAINER=<pdb>;

为单个表开启identification key(标识键日志):

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;    
ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;

对所有表开启identification key(标识键日志):

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;

2.4 开启 full supplemental logging(全补充日志)

单表开启full supplemental logging(全补充日志),使用如下命令:

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER TABLE <schema name>.<table name> ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

所有表开启full supplemental logging(全补充日志),使用如下命令:

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

提交更改的配置:

ALTER SYSTEM SWITCH LOGFILE;

2.5 确认数据库账号权限

需要规划一个可访问数据源的账号,用于后续数据管道过程中访问数据源并进行数据提取、写入的同步操作。

创建账号操作详情请参见: 创建 Oracle 账号

2.5.1 Oracle 10g、11g版本

使用如下命令创建用户帐户并分配权限:

CREATE USER <user name> IDENTIFIED BY <password>;
GRANT create session, alter session, execute_catalog_role, select any dictionary, select any transaction, select any table, unlimited tablespace to <user name>;

2.5.2 Oracle 12c multitenant databases 版本

在 Oracle 12c 的多租户环境下必须在 cdb 中创建用户,并且命名格式约定为:c##<name>

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

2)使用如下命令创建普通用户:

ALTER SESSION SET CONTAINER=cdb$root;
CREATE USER <user name> IDENTIFIED BY <password> CONTAINER=all;
GRANT create session, alter session, set container, select any dictionary, select any transaction, select any table, logmining, execute_catalog_role TO <username> CONTAINER=all;
ALTER SESSION SET CONTAINER=<pdb>;

根据您对表的权限需求,重复执行最后一个命令来赋予 select 权限。

当配置的是源库连接时,请使用此用户来通过 JDBC 的身份验证。 注意必须使用整个用户名(包括c ##)作为JDBC连接的用户名。

2.5.3 Oracle 12c standard databases 版本

在Oracle 12c 标准模式下,创建一个用户所必须的权限。

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

2)创建普通用户:

CREATE USER <user name> IDENTIFIED BY <password>;
GRANT create session, alter session, select any dictionary, select any transaction,select any table,logmining, execute_catalog_role TO <username>;

根据对表的权限需求,重复执行最后一个命令来赋予 select 权限。

3. 后续步骤编辑

在配置好数据库后,即可完成数据源配置。

需要在使用数据管道进行实时同步任务配置前,在 FineDataLink 中配置好需要同步的源端和目标端数据库数据连接,以便在同步任务配置过程中,通过选择数据源名称来控制同步任务,详情参见:配置数据连接

然后设置数据管道任务即可,详情参见:配置数据管道任务