OGG的Oracle与Hadoop集群准实时同步详解

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文件)

export OGG_HOME=/u01/gg/ export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$OGG_HOME:/lib:/usr/lib export CLASSPATH=$ORACLE_HOME/jdk/jre:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

Oracle打开归档模式
使用如下命令查看当前是否为归档模式(archive)

SQL> archive log list Database log mode Archive Mode Automatic archival Enabled Archive destination /u01/arch_log Oldest online log sequence 6 Next log sequence to archive 8 Current log sequence 8

如非以上状态,手动调整即可

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基于辅助日志等进行实时传输,故需要打开相关日志确保可获取事务内容。通过一下命令查看当前状态:

SQL> select force_logging, supplemental_log_data_min from v$database; FOR SUPPLEME--- -------- YES YES

如果以上查询结果非YES,可通过以下命令修改状态:

SQL> alter database force logging; SQL> alter database add supplemental log data;

Oracle创建复制用户
为了使Oracle里用户的复制权限更加单纯,故专门创建复制用户,并赋予dba权限

SQL> create tablespaceoggtbsdatafile '/u01/app/oracle/oradata/orcl/oggtbs01.dbf' size 1000M autoextend on; SQL> create user ggs identified by ggs default tablespaceoggtbs; User created. SQL> grant dba to ggs; Grant succeeded.

最终这个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命令行

[oracle@VM_0_25_CentOS gg]$ ./ggsci Oracle GoldenGate Command Interpreter for Oracle Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO Linux, x64, 64bit (optimized), Oracle 11g on Aug 23 2012 20:20:21 Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved. GGSCI (VM_0_25_centos) 1> 执行create subdirs进行目录创建 GGSCI (VM_0_25_centos) 4> create subdirs Creating subdirectories under current directory /u01/gg Parameter files /u01/gg/dirprm: already exists Report files /u01/gg/dirrpt: already exists Checkpoint files /u01/gg/dirchk: already exists Process status files /u01/gg/dirpcs: already exists SQL script files /u01/gg/dirsql: already exists Database definitions files /u01/gg/dirdef: already exists Extract data files /u01/gg/dirdat: already exists Temporary files /u01/gg/dirtmp: already exists Stdout files /u01/gg/dirout: already exists

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/bc98451e7b8445713e4c0f3fb135cf3e.html