1. 程式人生 > >10.Oracle Golden Date(ogg)的搭建和管理

10.Oracle Golden Date(ogg)的搭建和管理

bash starting 分享 10g ready bullet car color 操作

一. GoldenGate 概述

  GoldenGate現在是業內成熟的數據容災與復制產品;GoldenGate是一種基於日誌的結構化數據復制方式,它通過解析源數據庫在線日誌或歸檔日誌獲得數據的增刪改變化(數據量只有日誌的四分之一左右),再將這些變化應用到目標數據庫,實現源數據庫與目標數據庫同步、雙活。

二. GoldenGate 搭建

  目標在linux系統下安裝Oracle;利用GoldenGate 實現數據同步;可復制DML和DDL操作

環境如下:本環境目標端是源端的克隆;步驟請參考第8篇

源端 目標端
操作系統 linux6.5 linux6.5
IP 192.168.1.235 192.168.1.221
數據庫版本 11.2.0.4.0 11.2.0.4.0
GoldenGate版本 11.2.1.0.1 11.2.1.0.1

2.1 創建 GoldenGate 操作系統用戶

  兩臺服務器都需要創建 ogg 操作系統用戶(此步驟非必須,也可以使用ORACLE用戶安裝)。

useradd -u 1003 -g oinstall -G dba ogg
passwd ogg

2.2 修改 GoldenGate 系統用戶環境變量

source /home/oracle/.bash_profile
# or
export ORACLE_BASE
=/u01/app export ORACLE_HOME=$ORACLE_BASE/oracle export ORACLE_SID=ora221 export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin/data/ogg export NLS_LANG=AMERICAN_AMERICA.UTF8 export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH alias sqlplus=rlwrap sqlplus alias ggsci=rlwrap ggsci

2.3 創建 GoldenGate 安裝目錄

  兩臺服務器都需要做同樣的操作。

mkdir -p /data/ogg
chown -R ogg:oinstall /data/ogg

2.4 安裝 GoldenGate

  兩臺服務器都需要操作。

unzip fbo_ggs_Linux_x64_ora11g_64bit.tar.zip
tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar -C /data/ogg
  登錄 GoldenGate執行ggsci命令即可。

2.5 建立 GoldenGate表空間

  兩臺服務器都需要操作: 建議使用單獨的表空間存放 GoldenGate 數據

create tablespace tsp_ogg datafile /data/oracle/data/ogg01.dbf size 100M autoextend on;

2.6 創建 GoldenGate 用戶並賦權

  兩臺服務器都需要操作

create user ogg identified by ogg default tablespace tsp_ogg;
grant dba to ogg;
GRANT CREATE TABLE,CREATE SEQUENCE TO OGG;

2.7 配置數據庫

  由於 GoldenGate 的原理是根據 Oracle 的日誌進行抽取復制。為了保證日誌的完整性;需要打開 Oracle 數據庫歸檔;

alter system set log_archive_dest_1 = LOCATION=/data/arch scope = spfile;
shutdown immediate;
startup mount
alter database archivelog;
alter database open;

  還需要開啟 force log 和 supplemental log

alter database force logging;
alter database add SUPPLEMENTAL log data;

  最後查詢結果如下:

SQL> select NAME,OPEN_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;

NAME   OPEN_MODE        FOR SUPPLEME
--------- -------------------- --- --------
ORA235   READ WRITE        YES YES

2.8 運行 GoldenGate 支持 DDL 腳本

  如果要讓 GoldenGate 支持DDL操作,還需要額外運行幾個腳本,這些腳本是OGG帶的而不是 Oracle 帶的,在 GoldenGate 的安裝目錄都可以找到,源端與目標端都需要運行,如下:

@marker_setup.sql
@ddl_setup.sql
@role_setup.sql
@ddl_enable.sql

  在11.2.0.4.0版本;需要設置

ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE SCOPE=BOTH;

三. GoldenGate單向復制流程配置

  現在就可以正式配置OGG了,在配置OGG之前,先看下OGG的復制流程,OGG和其他傳統復制軟件一樣,也是通過源端捕獲/挖掘ORACLE的日誌信息, 目標端根據源端傳送過來的日誌信息進行重塑,實現源端-目標端數據同步,可以參考下圖。

技術分享圖片

  只有commit之後的日誌信息才會被Capture進程捕獲,未提交的事務OGG不會捕獲。

3.1 創建 GoldenGate 的工作目錄

  源端和目標端都需要創建,登錄GoldenGate,只需要執行create subdirs命令就可以了。

[ogg@oracle235 ogg]$ ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.



GGSCI (oracle235) 1> create subdirs

Creating subdirectories under current directory /data/ogg

Parameter files                /data/ogg/dirprm: already exists
Report files                   /data/ogg/dirrpt: created
Checkpoint files               /data/ogg/dirchk: created
Process status files           /data/ogg/dirpcs: created
SQL script files               /data/ogg/dirsql: created
Database definitions files     /data/ogg/dirdef: created
Extract data files             /data/ogg/dirdat: created
Temporary files                /data/ogg/dirtmp: created
Stdout files                   /data/ogg/dirout: created

3.2 添加 CheckPoint 表

  為了保證源和目標端在傳數據的時候不會重復或者少傳,在目標端添加checkpoin表。

操作如下:

GGSCI (oracle235) 2> EDIT PARAMS ./GLOBALS
CHECKPOINTTABLE ogg.ggschkpt

GGSCI (oracle235) 3> exit
[ogg@oracle235 ogg]$ ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.

GGSCI (oracle235) 1> DBLOGIN USERID ogg, PASSWORD ogg
Successfully logged into database.

GGSCI (oracle235) 2> ADD CHECKPOINTTABLE

No checkpoint table specified, using GLOBALS specification (ogg.ggschkpt)...

Successfully created checkpoint table ogg.ggschkpt.

3.3 配置 MGR 進程組

  在源端和目標端都必須運行一個MGR進程組;負責啟動GoldenGate進程,以及啟動動態進程,管理trail文件,錯誤信息。

  運行ggsci程序;輸入 “EDIT PARAMS MGR” 編輯參數文件:

[ogg@oracle235 ogg]$ ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14

Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.

GGSCI (oracle235) 1> EDIT PARAMS MGR

  輸入內容如下:

PORT 7809 
DYNAMICPORTLIST 7800-8000
AUTORESTART EXTRACT *, WAITMINUTES 2, RESETMINUTES 5
PURGEOLDEXTRACTS /data/ogg/dirdat, USECHECKPOINTS, MINKEEPDAYS 3
  • PORT:指定服務監聽端口;默認端口為7809
  • DYNAMICPORTLIST:動態端口:可以制定最大256個可用端口的動態列表,當指定的端口不可用時,管理進程將會從列表中選擇一個可用的端口,源端和目標段的Collector、Replicat、GGSCI進程通信也會使用這些端口
  • AUTORESTART:自動重啟參數設置:本處設置表示每2分鐘嘗試重新啟動所有EXTRACT進程;以後5分鐘清零。
  • PURGEOLDEXTRACTS:定期清理trail文件設置:本處設置表示對於超過3天的trail文件進行刪除

   啟動MGR進程

GGSCI (oracle235) 2> start mgr

Manager started.

GGSCI (oracle235) 3> info mgr

Manager is running (IP port oracle235.7809).

3.4 源端配置 Extract 進程

  負責抓取需要傳輸數據;下面在源端配置抽取進程

GGSCI (oracle235) 1> EDIT PARAMS EORA_1

EXTRACT EORA_1
SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)
USERID ogg, PASSWORD ogg 
EXTTRAIL /data/ogg/dirdat/aa 
TABLE lottu.*;

  在源端用 add extract 命令創建 extract 組;用add exttrail 命令創建本地 trail 文件

GGSCI (oracle235) 2> ADD EXTRACT EORA_1, TRANLOG, BEGIN NOW
EXTRACT added.

GGSCI (oracle235) 3> ADD EXTTRAIL /data/ogg/dirdat/aa, EXTRACT EORA_1, MEGABYTES 5
EXTTRAIL added.

  啟動 extract 進程;在 ggsci 中:可以使用 add, alter, cleanup, delete, info, kill命令管理extract進程

GGSCI (oracle235) 4> start extract eora_1

Sending START request to MANAGER ...
EXTRACT EORA_1 starting

GGSCI (oracle235) 5> info eora_1

EXTRACT    EORA_1    Last Started 2018-08-23 00:52   Status RUNNING
Checkpoint Lag       00:06:20 (updated 00:00:04 ago)
Log Read Checkpoint  Oracle Redo Logs
                     2018-08-23 00:46:36  Seqno 12, RBA 34652672
                     SCN 0.0 (0)

3.5 配置 Pump 進程

  extract進程負責將抓取的數據寫入本地trail文件;而需要Pump進程把trail文件傳輸到目標端。使用 EDIT PARAMS PORA_1 添加配置文件

GGSCI (oracle235) 6> EDIT PARAMS PORA_1

EXTRACT PORA_1
SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)
PASSTHRU
RMTHOST 192.168.1.221, MGRPORT 7809
RMTTRAIL /data/ogg/dirdat/pa
TABLE lottu.*;

  用 add extract 指定本地 trail 文件

GGSCI (oracle235) 7> ADD EXTRACT PORA_1, EXTTRAILSOURCE /data/ogg/dirdat/aa
EXTRACT added.

  用 add rmttrail 指定遠程 trail 文件

GGSCI (oracle235) 8> ADD RMTTRAIL /data/ogg/dirdat/pa, EXTRACT PORA_1, MEGABYTES 5
RMTTRAIL added.

  啟動 pump 進程

GGSCI (oracle235) 9> START EXTRACT PORA_1

Sending START request to MANAGER ...
EXTRACT PORA_1 starting

GGSCI (oracle235) 11> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     EORA_1      00:00:00      00:00:07    
EXTRACT     RUNNING     PORA_1      00:00:00      00:00:02 

3.6 配置目標端的 Replicat 進程

  Replicat 進程運行於目標端;負責將源端傳過來的 trail 文件;在目標端數據庫應用。實現源端和目標端數據同步。

GGSCI (oracle221) 2> EDIT PARAMS RORA_1

REPLICAT RORA_1 
SETENV (NLS_LANG=AMERICAN_AMERICA.UTF8)
USERID ogg, PASSWORD ogg 
HANDLECOLLISIONS 
ASSUMETARGETDEFS 
DISCARDFILE /data/ogg/dirrpt/RORA_aa.rpt, append 
MAP lottu.*, TARGET lottu.*;

  在目標端使用 add replicat 添加 Replicat 進程

GGSCI (oracle221) 8> add replicat RORA_1, exttrail /data/ogg/dirdat/pa 
REPLICAT added.

   使用 start replicat 啟動 Replicat 進程

GGSCI (oracle221) 11> start REPLICAT RORA_1

Sending START request to MANAGER ...
REPLICAT RORA_1 starting

GGSCI (oracle221) 12> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
REPLICAT    RUNNING     RORA_1      00:00:00      00:00:00  

四. 配置 DDL 同步

  在前面我們已經配置 GoldenGate 支持DDL腳本;其中有創建 Trigger;DDL跟DML 復制機制不同;DML復制是基於redo log。其DDL復制原理是基於Trigger;它撲捉DDL操作記錄在中間表;Extract讀取中間表DDL操作;Pump投遞到目標端;目標端在應用DDL語句。

4.1 運行 GoldenGate 支持 DDL 腳本

  前面已級操作 ;略。

4.2 關閉 Oracle 的 recyclebin

  在執行上一步操作有一個溫馨提示:‘NOTE: For an Oracle 10g source, the system recycle bin must be disabled. For Oracle 11g and later, it can be enabled.’ GoldenGate10G DDL不支持Oracle回收站功能;本文提供的GoldenGate版本是11G;該操作也略;

  關閉Oracle回收站功能

alter system set recyclebin=off scope=both;

4.3 源端配置

  指定DDL復制的用戶

GGSCI (oracle235) 19> view params ./GLOBALS

GGSCHEMA OGG

  停MGR,Extract進程;
  配置Extract配置文件;在配置文件添加一下內容:

DDL INCLUDE ALL
DDLOPTIONS ADDTRANDATA,REPORT

4.4 目標端配置

  停MGR,Replicat進程;
  配置Replicat配置文件;在配置文件添加一下內容:

DDL INCLUDE MAPPED
DDLOPTIONS REPORT

  配置完成;在重啟各進程進行驗證

五. 總結

  本文只涉及到 GoldenGate 的單向復制的配置和安裝;其實GoldenGate還有很多架構:例如1對多同步,級聯同步;雙向同步等等。根據場景不同應用不同架構;還有GoldenGate日常維護,錯誤分析,監控,以及性能優化調整。大家可以閱讀《企業級IT運維寶典之GoldenGate實戰》或者查看官方文檔

10.Oracle Golden Date(ogg)的搭建和管理