Oracle里存储的结构化数据导出到Hadoop体系做离线计算是一种常见数据处置手段。近期有场景需要做Oracle到Hadoop体系的实时导入,这里以此案例做以介绍。
Oracle作为商业化的数据库解决方案,自发性的获取数据库事务日志等比较困难,故选择官方提供的同步工具OGG(Oracle GoldenGate)来解决。
安装与基本配置
环境说明
软件配置
角色数据存储服务及版本OGG版本IP源服务器 OracleRelease11.2.0.1 Oracle GoldenGate 11.2.1.0 for Oracle on Linux x86-64 10.0.0.25
目标服务器 CDH5.7 Oracle GoldenGate for Big Data 12.2.0.1 on Linux x86-64 10.0.0.2
以上源服务器上OGG安装在Oracle用户下,目标服务器上OGG安装在root用户下。
注意Oracle导出到异构的存储系统,如MySQL,DB2,PG等以及对应的不同平台,如AIX,Windows,Linux等官方都有提供对应的Oracle GoldenGate版本,可在这里或者在旧版本查询下载安装。
Oracle源端基础配置将下载到的对应OGG版本放在方便的位置并解压,本示例Oracle源端最终的解压目录为/u01/gg。
配置环境变量
这里的环境变量主要是对执行OGG的用户添加OGG相关的环境变量,本示例为Oracle用户添加的环境变量如下:(/home/oracle/.bash_profile文件)
Oracle打开归档模式
使用如下命令查看当前是否为归档模式(archive)
如非以上状态,手动调整即可
SQL> conn / as sysdba(以DBA身份连接数据库) SQL> shutdown immediate(立即关闭数据库) SQL> startup mount(启动实例并加载数据库,但不打开) SQL> alter database archivelog(更改数据库为归档模式) SQL> alter database open(打开数据库) SQL> alter system archive log start(启用自动归档)
Oracle打开日志相关
OGG基于辅助日志等进行实时传输,故需要打开相关日志确保可获取事务内容。通过一下命令查看当前状态:
如果以上查询结果非YES,可通过以下命令修改状态:
SQL> alter database force logging; SQL> alter database add supplemental log data;
Oracle创建复制用户
为了使Oracle里用户的复制权限更加单纯,故专门创建复制用户,并赋予dba权限
最终这个ggs帐号的权限如下所示:
SQL> select * from dba_sys_privs where GRANTEE='GGS'; GRANTEE PRIVILEGE ADM GGS DROP ANY DIRECTORY NO GGS ALTER ANY TABLE NO GGS ALTER SESSION NO GGS SELECT ANY DICTIONARY NO GGS CREATE ANY DIRECTORY NO GGS RESTRICTED SESSION NO GGS FLASHBACK ANY TABLE NO GGS UPDATE ANY TABLE NO GGS DELETE ANY TABLE NO GGS CREATE TABLE NO GGS INSERT ANY TABLE NO GRANTEE PRIVILEGE ADM GGS UNLIMITED TABLESPACE NO GGS CREATE SESSION NO GGS SELECT ANY TABLE NO
OGG初始化
进入OGG的主目录执行./ggsci,进入OGG命令行