Oracle GoldenGate 快速安裝配置實用指南

GoldenGate做爲Oracle公司大力發展的核心戰略產品,在高可用、容災、 數據抽取轉換方面扮演着愈來愈重要的做用。goldengate能夠作什麼,提及來真的太多了, 高可用、容災、Real-Time數據同步,若是你作過BI,必定知道ETL的工具(datastage、infomatica等), goldengate也能夠作,並且,還有兩個很關鍵的因素: 第一,goldengate支持異構的數據庫,幾乎囊括了全部的主流數據庫,到底哪些呢? 去這裏看看吧: http://edu.51cto.com/course/courseList/id-15.html 主流的DB二、mysql、sql server、sysbase都支持。 第二,是oracle大力發展的核心戰略產品。 goldengate同步在源端捕獲日誌,extract日誌信息發送到目標端,由目標端的replicat日誌應用進程 應用事務,達到數據同步。同時,源端的extract抽取進程也能夠選擇性配置抽取的trail磁盤文件, 目標端的replicat應用進程也能夠選擇性配置抽取到的日誌的trail文件,防止日誌丟失。 本文精確的介紹了在64位linux環境下oracle對oracle的goldengate安裝配置(不區分10g、11g), 本文同時配置了batch模式下的數據初始化過程和online模式的實時數據同步過程,按照本文安裝配置 能讓你快速的構建goldengate環境,不會有任何問題。 一、環境介紹及準備: 兩臺裝有oracle 10g軟件的centos(本文安裝配置一樣適用於oracle 11g). 源端: IP:192.168.1.201 ORACLE_SID=ggsource 目標端: IP:192.168.1.202 ORACLE_SID=ggtarget 1.配置環境變量: source: ORACLE_SID=ggsource ORACLE_BASE=/u01 ORACLE_HOME=$ORACLE_BASE/oracle PATH=$ORACLE_HOME/bin:$ORACLE_BASE/gg:$PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_BASE/gg11:$LD_LIBRARY_PATH export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH target: ORACLE_SID=ggtarget ORACLE_BASE=/u01 ORACLE_HOME=$ORACLE_BASE/oracle PATH=$ORACLE_HOME/bin:$ORACLE_BASE/gg:$PATH LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_BASE/gg11:$LD_LIBRARY_PATH export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH 其餘的沒什麼,搜索路勁加入了goldengate的安裝目錄$ORACLE_BASE/gg和LD_LIBRARY_PATH, (後面在安裝goldengate時,個人goldengate產品解壓安裝在$ORACLE_BASE/gg目錄下) LD_LIBRARY_PATH必定要配置,不然在create subdirs會報以下錯誤: [oracle@mycentos02 ~]$ ggsci ggsci: error while loading shared libraries: libnnz10.so: cannot open shared object file: No such file or directoryhtml

2.goldengate下載及安裝(須要同時在source機器和target機器安裝): 怎麼安裝?goldengate的安裝簡單到嚇人,解壓就是安裝。將下載到的64位gg for oracle 10g,解壓到/u01/gg目錄下, /u01/gg及爲個人goldengate安裝目錄。解壓以後,cd到/u01/gg目錄下,運行ggsci,在ggsci下面ggsci>create subdirs, 建立goldengate對應的目錄,就算安裝完成。 GGSCI (mycentos) 1> create subdirs Creating subdirectories under current directory /u01/gg Parameter files /u01/gg/dirprm: already exists Report files /u01/gg/dirrpt: created Checkpoint files /u01/gg/dirchk: created Process status files /u01/gg/dirpcs: created SQL script files /u01/gg/dirsql: created Database definitions files /u01/gg/dirdef: created Extract data files /u01/gg/dirdat: created Temporary files /u01/gg/dirtmp: created Stdout files /u01/gg/dirout: createdmysql

GGSCI (mycentos) 2> 咱們看到,在gg的安裝目錄下面創建了一些目錄,這些目錄是goldengate運行過程當中保存相關信息的目錄。譬如, /u01/gg/dirrpt是report也就是goldengate的報表目錄, /u01/gg/dirprm是parameter目錄,也就是goldengate 進程的參數配置目錄等等,其餘的再也不一一論述。 至此,goldengate安裝完成。 3.在source端增長supplemental log支持: SQL> alter database add supplemental log data; Database altered. SQL> alter system switch logfile; System altered. SQL> select supplemental_log_data_min from v$database; SUPPLEME

YES SQL> 4.在source端和target端同時建立gguser及其對應的表空間: SQL> create user gguser identified by oracle default tablespace users quota unlimited on users; User created. SQL> grant dba to gguser; Grant succeeded. SQL> 5.在source端和target端數據庫的gguser用戶下建立測試表,並在source端插入初始數據: source端: SQL> create table ggtable(id number,name varchar2(50)); Table created. SQL> SQL> insert into ggtable values(1,'hunter01'); 1 row created. SQL> insert into ggtable values(2,'hunter02'); 1 row created. SQL> insert into ggtable values(3,'hunter03'); 1 row created. SQL> commit; Commit complete. SQL> target端: SQL> create table ggtable(id number,name varchar2(50)); Table created. SQL> 6.在source和target端配置mgr進程,並啓動: manager是goldengate的管理進程,在goldengate運行時必須啓動,因此source和target兩端都要配置。 GGSCI (mycentos) 2> edit params mgrlinux

GGSCI (mycentos) 3> start mgr Manager started.sql

GGSCI (mycentos) 4> info mgr Manager is running (IP port mycentos.7809).數據庫

GGSCI (mycentos) 5> 7.配置goldengate要同步的表: GGSCI (mycentos) 1> dblogin userid gguser,password oracle Successfully logged into database. GGSCI (mycentos) 2> add trandata gguser.ggtable 2014-07-20 15:37:47 WARNING OGG-00869 No unique key is defined for table 'GGTABLE'. All viable columns will be used to represent the key, but may not guarantee uniqueness. KEYCOLS may be used to define the key. Logging of supplemental redo data enabled for table GGUSER.GGTABLE.centos

GGSCI (mycentos) 3> info trandata gguser.* Logging of supplemental redo log data is enabled for table GGUSER.GGTABLE. Columns supplementally logged for table GGUSER.GGTABLE: ID, NAME. GGSCI (mycentos) 4> 這裏有一個表沒有unique key的warning,咱們忽略,你也能夠給表創建unique key. 8.完成initial load: goldengate有batch和online兩種運行模式,在online模式同步source端的數據以前,須要 初始化target端的數據,固然,若是在goldengate啓動運行同步以前你的源和 目標端的數據一致,此步驟能夠省略。另外,就算你要在goldengate運行以前初始化兩端的數據, 也能夠用其餘任何的數據複製和同步手段,例如exp/expdp等等。這裏,是介紹goldengate的initial load過程,而且我這裏用的是direct load模式,其餘模式我不詳細列舉,有興趣查閱goldengate的相關 文檔: source端: 配置extract進程並配置該進程參數: GGSCI (mycentos) 2> add extract einikk,sourceistable EXTRACT added.session

GGSCI (mycentos) 3>oracle

GGSCI (mycentos) 3> edit params einikk 參數文件: EXTRACT EINIKK USERID gguser, PASSWORD "oracle" RMTHOST 192.168.1.202, MGRPORT 7809 RMTTASK REPLICAT, GROUP RINIKK TABLE gguser.ggtable; 其中einikk爲抽取的組名稱,sourceistable表示是一個initial load的task. 目標端: 配置replicat進程rinikk,並編輯該進程的參數: add replicat rinikk,specialrun edit params rinikk 參數文件: REPLICAT RINIKK ASSUMETARGETDEFS USERID gguser, PASSWORD oracle DISCARDFILE ./dirrpt/RINIKK.dsc, PURGE MAP gguser., TARGET gguser.; 開始initial load: 啓動抽取進程einikk,及進行了initial load的過程: GGSCI (mycentos) 5> start extract einikk Sending START request to MANAGER ... EXTRACT EINIKK starting 咱們view report einikk查看einikk的報告,能夠看到已經完成了源端數據的初始化, 也就是在目標端插入了初始的三條數據: Processing table GGUSER.GGTABLEide


  • ** Run Time Statistics **                         *

Report at 2014-07-20 17:01:13 (activity since 2014-07-20 17:01:03) Output to RINIKK: From Table GGUSER.GGTABLE: # inserts: 3 # updates: 0 # deletes: 0 # discards: 0 至此,initial load過程完成。 9.配置online模式的數據同步: 此過程也就是配置源端的extract進程和目標端的replicat進程. 在源端配置抽取進程eorakk,並配置該進程參數: GGSCI (mycentos) 7> add extract eorakk,tranlog,begin now,threads 1 EXTRACT added.工具

GGSCI (mycentos) 8> info extract * EXTRACT EORAKK Initialized 2014-07-20 17:09 Status STOPPED Checkpoint Lag 00:00:00 (updated 00:00:13 ago) Log Read Checkpoint Oracle Redo Logs 2014-07-20 17:09:47 Thread 1, Seqno 0, RBA 0 SCN 0.0 (0)

GGSCI (mycentos) 9> GGSCI (mycentos) 9> edit params eorakk

EXTRACT EORAKK USERID system, PASSWORD oracle RMTHOST 192.168.1.202, MGRPORT 7809 RMTTRAIL ./dirdat/kk TABLE gguser.ggtable;

在source端增長目標端的trail文件: add rmttrail ./dirdat/kk,extract eorakk GGSCI (mycentos) 10> add rmttrail ./dirdat/kk,extract eorakk RMTTRAIL added.

GGSCI (mycentos) 11> info rmttrail * Extract Trail: ./dirdat/kk Extract: EORAKK Seqno: 0 RBA: 0 File Size: 100M

GGSCI (mycentos) 12> 而後,啓動該抽取進程: GGSCI (mycentos) 12> start extract eorakk Sending START request to MANAGER ... EXTRACT EORAKK starting

GGSCI (mycentos) 13> info extract eorakk EXTRACT EORAKK Last Started 2014-07-20 17:18 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:09 ago) Log Read Checkpoint Oracle Redo Logs 2014-07-20 17:18:49 Thread 1, Seqno 4, RBA 2489344 SCN 0.578967 (578967)

GGSCI (mycentos) 14> 在目標端配置replicat進程,並啓動: 首先,配置checkpoint表: edit params ./GLOBALS GGSCI (mycentos02) 1> edit params ./GLoBALS

CHECKPOINTTABLE system.ggchkptable 建立ggchkptable: GGSCI (mycentos02) 1>dblogin userid system,password oracle add checkpointtable 這樣咱們就創建了checkpointtable:system.ggchkptable,咱們登錄到目標端的system用戶下能夠 看到該表: [oracle@mycentos02 ~]$ sqlplus system/oracle SQL*Plus: Release 10.2.0.1.0 - Production on Sun Jul 20 05:27:58 2014 Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production With the Partitioning, OLAP and Data Mining options SQL> desc ggchkptable Name Null? Type


GROUP_NAME NOT NULL VARCHAR2(8) GROUP_KEY NOT NULL NUMBER(19) SEQNO NUMBER(10) RBA NOT NULL NUMBER(19) AUDIT_TS VARCHAR2(29) CREATE_TS NOT NULL DATE LAST_UPDATE_TS NOT NULL DATE CURRENT_DIR NOT NULL VARCHAR2(255) LOG_CSN VARCHAR2(129) LOG_XID VARCHAR2(129) LOG_CMPLT_CSN VARCHAR2(129) LOG_CMPLT_XIDS VARCHAR2(2000) VERSION NUMBER(3) SQL> 配置replicat進程rorakk,並啓動: GGSCI (mycentos02) 1> add replicat rorakk,exttrail ./dirdat/kk REPLICAT added.

GGSCI (mycentos02) 2> 參數: edit params rorakk REPLICAT RORAKK ASSUMETARGETDEFS USERID gguser, PASSWORD oracle DISCARDFILE ./dirrpt/RINIKK.dsc, PURGE MAP gguser., TARGET gguser.;

啓動: start replicat rorakk 這樣咱們就在source端和target端完成了goldengate數據同步的進程,以後咱們在 源端的gguser.ggtable表中插入數據時,能夠在目標端的數據庫中看到能達到數據同步, 同步有多快呢,oracle公司說sub-second。 補充說明: goldengate的命令能夠在ggsci下面輸入help進程查看,進程有stop、running和ABENDED狀態, 正常運行時是running狀態,我在配置過程當中,給rorakk進程的參數文件中 USERID gguser, PASSWORD oracle剛開始寫錯了gguser的密碼,而且,start以後,進程在ABENDED,固然也就沒法同步數據, 經過查看該進程的report, view report rorakk: 2014-07-20 05:43:43 ERROR OGG-00664 OCI Error beginning session (status = 1017-ORA-01017: invalid username/password; logon denie d). 發現了該問題。 另外,在映射表這裏,MAP gguser., TARGET gguser.;我也忘記寫了TARGET,也能夠在該進程的report裏面檢查到了錯誤緣由: 2014-07-20 06:02:43 ERROR OGG-00212 Invalid option for MAP: gguser.ggtable. 改正了上述兩處錯誤以後,我再次start rorakk,數據當即同步過來了。 總之,遇到錯誤,要學會查看相關日誌和報告,全部的命令,均可以help來查看。 感謝網友hunterworld的內容分享,更多內容請查看: http://edu.51cto.com/lecturer/index/user_id-1850277.html

相關文章
相關標籤/搜索