ogg實現oracle-oracle-windows 級聯複製

1.環境介紹

項目 環境1 環境2 環境2
操做系統 CentOS release 6.5 CentOS release 6.5 win7
IP地址 130.9.46.19 130.9.46.220 130.9.46.110
數據庫及版本 ORACLE 11.2.0.1.0 ORACLE 11.2.0.1.0 ORACLE 11.2.0.1.0
數據庫字符集 ZHS16GBK ZHS16GBK ZHS16GBK
ORACLE SID ora11 ora11 ora11
Goldengate用戶 ogg ogg ogg
Goldengate 版本 122020 122020 122020

備註html

  • 查看linux系統版本:cat /etc/redhat-releasejava

  • 查看數據庫字符集:``linux

  • oracle默認密碼sql

    system默認:managershell

    sys默認:change_on_install as sysdba數據庫

2.linux環境安裝

linux系統若是沒有圖形界面的話,咱們採用靜默安裝的方式windows

2.1 安裝

  • 在oracle官網下載123014_fbo_ggs_Linux_x64_shiphome.zip(注意,ogg版本和oracle版本強綁定,下載時請注意版本的一致性),將zip壓縮包拷貝到linux目錄中
  • 建立目錄
# 建立目錄
[root@VTSXN-SHKF java]# mkdir -p /u01/install/ogg/
# 上傳解壓介質
[root@VTSXN-SHKF java]# unzip 123014_fbo_ggs_Linux_x64_shiphome.zip /u01/install/ogg/
# 進入目錄
[root@VTSXN-SHKF java]# cd /u01/install/ogg/fbo_ggs_Linux_x64_shiphome/Disk1/
# 建立goldengate目錄
[root@VTSXN-SHKF Disk1]# mkdir -p /u01/ogg/12.3.0/oggcore_1/
# root受權
[root@VTSXN-SHKF Disk1]# chown oracle.oinstall -R /u01/ogg/
# 啓動OUI安裝程序
[root@VTSXN-SHKF Disk1]# ./runInstaller 
複製代碼

若是說出現monitor報錯緩存

[oracle@VTSXN-SHKF Disk1]$ ./runInstaller 
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 34100 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 8015 MB    Passed
Checking monitor: must be configured to display at least 256 colors
 >>> Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set. Failed <<<<

Some requirement checks failed. You must fulfill these requirements before

continuing with the installation,
複製代碼

解決方法bash

[oracle@VTSXN-SHKF Disk1]$ su
Password: 
[root@VTSXN-SHKF Disk1]# export DISPLAY=:0.0
[root@VTSXN-SHKF Disk1]# xhost +
access control disabled, clients can connect from any host
[root@VTSXN-SHKF Disk1]# su oracle
複製代碼
  • 採起靜默安裝
# 編輯響應文件
[root@VTSXN-SHKF Disk1]# vi /u01/install/ogg/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp

opyright(c) Oracle Corporation 2017. All rights reserved.     ##
## ##
## Specify values for the variables listed below to customize ##
## your installation. ##
## ##
## Each variable is associated with a comment. The comment ##
## can help to populate the variables with the appropriate ##
## values. ##
## ##
## IMPORTANT NOTE: This file should be secured to have read ##
## permission only by the oracle user or an administrator who ##
## own this installation to protect any sensitive input values. ##
## ##
####################################################################
 #-------------------------------------------------------------------------------
# Do not change the following system generated value.
#-------------------------------------------------------------------------------
oracle.install.responseFileVersion=/oracle/install/rspfmt_ogginstall_response_schema_v12_1_2
 ################################################################################
## ##
## Oracle GoldenGate installation option and details ##
## ##
################################################################################
 #-------------------------------------------------------------------------------
# Specify the installation option.
# Specify ORA12c for installing Oracle GoldenGate for Oracle Database 12c and
# ORA11g for installing Oracle GoldenGate for Oracle Database 11g
#-------------------------------------------------------------------------------
INSTALL_OPTION=ORA11g
 #-------------------------------------------------------------------------------
# Specify a location to install Oracle GoldenGate
#-------------------------------------------------------------------------------
SOFTWARE_LOCATION=/u01/ogg/12.3.0/oggcore_1/
 #-------------------------------------------------------------------------------
# Specify true to start the manager after installation.
#-------------------------------------------------------------------------------
START_MANAGER=
 #-------------------------------------------------------------------------------
# Specify a free port within the valid range for the manager process.
# Required only if START_MANAGER is true.
#-------------------------------------------------------------------------------
MANAGER_PORT=
 #-------------------------------------------------------------------------------
# Specify the location of the Oracle Database.
# Required only if START_MANAGER is true.
#-------------------------------------------------------------------------------
DATABASE_LOCATION=/home/app/oracle/product/11.2.0/dbhome_1
 ################################################################################
## ##
## Specify details to Create inventory for Oracle installs ##
## Required only for the first Oracle product install on a system. ##
## ##
################################################################################
 #-------------------------------------------------------------------------------
# Specify the location which holds the install inventory files.
# This is an optional parameter if installing on
# Windows based Operating System.
#-------------------------------------------------------------------------------
INVENTORY_LOCATION=/u01/app/oraInventory
 #-------------------------------------------------------------------------------
# Unix group to be set for the inventory directory.
# This parameter is not applicable if installing on
# Windows based Operating System.
#-------------------------------------------------------------------------------
UNIX_GROUP_NAME=dba
複製代碼

請注意:UNIX_GROUP_NAME的內容經過id oracle就行查看服務器

[root@VTSXN-SHKF Disk1]# id oracle uid=501(oracle) gid=5001(dba) groups=5001(dba)

進行安裝

[oracle@VTSXN-SHKF Disk1]$  ./runInstaller -silent -responseFile /u01/install/ogg/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp 
Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 32717 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 8015 MB    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2019-06-06_01-53-09PM. Please wait ...
複製代碼

環境變量配置

[root@VTSXN-SHKF ~]# cat /etc/profile
# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

# It's NOT a good idea to change this file unless you know what you
# are doing. It's much better to create a custom.sh shell script in
# /etc/profile.d/ to make custom changes to your environment, as this
# will prevent the need for merging in future updates.

pathmunge () {
    case ":${PATH}:" in
        *:"$1":*)
            ;;
        *)
            if [ "$2" = "after" ] ; then
                PATH=$PATH:$1
            else
                PATH=$1:$PATH
            fi
    esac
}


if [ -x /usr/bin/id ]; then
    if [ -z "$EUID" ]; then
        # ksh workaround
        EUID=`id -u`
        UID=`id -ru`
    fi
    USER="`id -un`"
    LOGNAME=$USER
    MAIL="/var/spool/mail/$USER"
fi

# Path manipulation
if [ "$EUID" = "0" ]; then
    pathmunge /sbin
    pathmunge /usr/sbin
    pathmunge /usr/local/sbin
else
    pathmunge /usr/local/sbin after
    pathmunge /usr/sbin after
    pathmunge /sbin after
fi

HOSTNAME=`/bin/hostname 2>/dev/null`
HISTSIZE=1000
if [ "$HISTCONTROL" = "ignorespace" ] ; then
    export HISTCONTROL=ignoreboth
else
    export HISTCONTROL=ignoredups
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then
    umask 002
else
    umask 022
fi

for i in /etc/profile.d/*.sh ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null 2>&1
        fi
    fi
done

unset i
unset -f pathmunge

JAVA_HOME=/usr/java/jdk1.8
ORACLE_HOME=/home/app/oracle/product/11.2.0/dbhome_1
ORACLE_SID=ora11
LD_LIBRARY_PATH=$ORACLE_HOME/lib
PATH=$JAVA_HOME/bin:$ORACLE_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH
複製代碼

2.2 測試

建立ogg用戶,賦予權限

create user ogg identified by ogg;
grant all privileges to ogg; 
複製代碼

登陸

[oracle@VTSXN-SHKF oggcore_1]$ ./ggsci 

Oracle GoldenGate Command Interpreter for Oracle
Version 12.3.0.1.4 OGGCORE_12.3.0.1.0_PLATFORMS_180415.0359_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 15 2018 21:16:09
Operating system character set identified as UTF-8.

Copyright (C) 1995, 2018, Oracle and/or its affiliates. All rights reserved.
複製代碼

若是使用ogg登陸出現如下問題:

GGSCI (VTSXN-SHKF) 2> dblogin userid ogg,password ogg

2019-06-06 10:39:44  WARNING OGG-25108  Failed to set the Oracle session tag: ORA-04060: insufficient privileges to execute DBMS_STREAMS.SET_TAG
ORA-06512: at "SYS.DBMS_STREAMS", line 16
ORA-06512: at line 1.
ERROR: Unable to connect to database using user ogg. Ensure that the necessary privileges are granted to the user.
OCI Error ORA (status = 942-ORA-00942: table or view does not exist

複製代碼

採起作法

grant dba to ogg;
grant all privileges to ogg;

複製代碼

ogg安裝可能出現的問題

WARNING OGG-01988 Could not find schematrandata function in source database: failed to find function.

輸入archive log list出現:ORA-01507: ??????

SQL> connect sys/admin as sysdba
Connected.
SQL> archive log list; 
ORA-01507: ??????
SQL> shutdown immediate;
ORA-01507: ??????


ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area 1620115456 bytes
Fixed Size                  2213816 bytes
Variable Size            1291847752 bytes
Database Buffers          318767104 bytes
Redo Buffers                7286784 bytes
Database mounted.
SQL> alter database open;

Database altered.
 SQL> shutdown;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 1620115456 bytes
Fixed Size                  2213816 bytes
Variable Size            1291847752 bytes
Database Buffers          318767104 bytes
Redo Buffers                7286784 bytes
Database mounted.
Database opened.
SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     1973
Current log sequence           1975

複製代碼

若是要讓OGG支持DDL操做,還須要額外運行幾個腳本,這些腳本是OGG帶的而不是ORACLE帶的,在OGG的安裝目錄均可以找到,若是在OGG的安裝目錄登陸數據庫,能夠直接@加腳本的名字,源端與目標端都須要運行,以下:

*** Could not open error log ggserr.log (error 13,Permission denied) ***

修改ggserr.log文件的組

chown oracle:dba ggserr.log

[oggcore_1]# ./ggsci ./ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file: No such file or directory

export LD_LIBRARY_PATH=/home/app/oracle/product/11.2.0/dbhome_1/lib

oracle默認sys密碼

connect sys/change_on_install as sysdba

查看數據庫字符集

SELECT * from nls_database_parameters

歸檔日誌爆了

[oracle@VTSXN-SHKF dbhome_1]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Sat Aug 10 15:34:25 2019

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> connect /as sysdba
Connected to an idle instance.
SQL> create pfile from spfile
  2  ;

File created.

SQL> startup mount;
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area 1620115456 bytes
Fixed Size                  2213816 bytes
Variable Size            1342179400 bytes
Database Buffers          268435456 bytes
Redo Buffers                7286784 bytes
Database mounted.
SQL> show parameter db_recovery_file_dest_size;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest_size           big integer 3882M
SQL> select * from v$flash_recovery_area_usage f where f.file_type='ARCHIVE_LOG';

no rows selected

SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;

FILE_TYPE            PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE
-------------------- ------------------ -------------------------
NUMBER_OF_FILES
---------------
CONTROL FILE                          0                         0
              0

REDO LOG                              0                         0
              0

ARCHIVED LOG                      99.01                         0
             96


FILE_TYPE            PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE
-------------------- ------------------ -------------------------
NUMBER_OF_FILES
---------------
BACKUP PIECE                          0                         0
              0

IMAGE COPY                            0                         0
              0

FLASHBACK LOG                         0                         0
              0


FILE_TYPE            PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE
-------------------- ------------------ -------------------------
NUMBER_OF_FILES
---------------
FOREIGN ARCHIVED LOG                  0                         0
              0


7 rows selected.

SQL> select * from v$flash_recovery_area_usage f where f.file_type='ARCHIVED_LOG'
  2  ;

no rows selected

SQL> select * from v$flash_recovery_area_usage f where f.file_type='ARCHIVED LOG';

FILE_TYPE            PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE
-------------------- ------------------ -------------------------
NUMBER_OF_FILES
---------------
ARCHIVED LOG                      99.01                         0
             96




複製代碼

3.windows環境安裝

傻瓜式的安裝,一步步進行操做便可

4.進程配置

ogg相關進程簡單介紹

Oracle GoldenGate主要由以下組件組成

● Extract

● Data pump

● Trails

● Collector

● Replicat

● Manager

Oracle GoldenGate 數據複製過程以下:

利用抽取進程(Extract Process)在源端數據庫中讀取Online Redo Log或者Archive Log,而後進行解析,只提取其中數據的變化信息,好比DML操做——增、刪、改操做,將抽取的信息轉換爲GoldenGate自定義的中間格式存放在隊列文件(trail file)中。再利用傳輸進程將隊列文件(trail file)經過TCP/IP傳送到目標系統。

目標端有一個進程叫Server Collector,這個進程接受了從源端傳輸過來的數據變化信息,把信息緩存到GoldenGate 隊列文件(trail file)當中,等待目標端的複製進程讀取數據。

GoldenGate 複製進程(replicat process)從隊列文件(trail file)中讀取數據變化信息,並建立對應的SQL語句,經過數據庫的本地接口執行,提交到目標端數據庫,提交成功後更新本身的檢查點,記錄已經完成複製的位置,數據的複製過程最終完成。

注意:

  • 編輯GLOBALS參數文件,切換到GoldenGate安裝目錄下,執行命令:

GGSCI>EDIT PARAMS ./GLOBALS

在文件中添加如下內容(可選):

  • 利用默認的密鑰,生成密文:

GGSCI>encrypt password ogg encryptkey default

Encrypted password: AACAAAAAAAAAAADAHBLDCCIIOIRFNEPB

​ 記錄這個密文,將在如下進程參數的配置中使用。

4.1 源端添加表級的TRANDATA

添加表級的trandata能夠理解爲須要將哪些用戶的哪些表和目標庫同步,其實也是添加表級的supplemental log,可是隻有上文打開的minimal supplemental log後,這個才生效。

使用OGG用戶從OGG登陸源端數據庫。

GGSCI (dbdream) 2> DBLOGIN USERID ogg, PASSWORD ogg

Successfully logged into database.
複製代碼

源端添加表級TRANDATA,本案例使用EMP_OGG和DEPT_OGG表。

GGSCI (dbdream) 3> add trandata scott.emp_ogg

Logging of supplemental redo data enabled for table SCOTT.EMP_OGG.

GGSCI (dbdream) 4> add trandata scott.dept_ogg

Logging of supplemental redo data enabled for table SCOTT.DEPT_OGG.
複製代碼

成功添加表級TRANDATA後,能夠經過INFO命令查看哪些表被添加了TRANDATA.

GGSCI (dbdream) 5> INFO TRANDATA scott.*

Logging of supplemental redo log data is disabled for table SCOTT.BONUS.

Logging of supplemental redo log data is disabled for table SCOTT.DEPT.

Logging of supplemental redo log data is enabled for table SCOTT.DEPT_OGG.

Columns supplementally logged for table SCOTT.DEPT_OGG: DEPTNO.

Logging of supplemental redo log data is disabled for table SCOTT.EMP.

Logging of supplemental redo log data is enabled for table SCOTT.EMP_OGG.

Columns supplementally logged for table SCOTT.EMP_OGG: SAL, HIREDATE, MGR, COMM, DEPTNO, ENAME, EMPNO, JOB.

Logging of supplemental redo log data is disabled for table SCOTT.SALGRADE.
複製代碼

4.2 配置MGR管理進程

源端:

GGSCI (dbdream) 8> EDIT PARAMS MGR
 # 加三行內容
PORT 7809
PURGEOLDEXTRACTS /ogg/dirdat, USECHECKPOINTS
userid ogg, password AACAAAAAAAAAAADAHBLDCCIIOIRFNEPB, ENCRYPTKY default
複製代碼

目標端:

GGSCI (stream) 2> EDIT PARAMS MGR
 # 加入如下三行內容
PORT 7809
PURGEOLDEXTRACTS /ogg/dirdat, USECHECKPOINTS
userid ogg, password AACAAAAAAAAAAADAHBLDCCIIOIRFNEPB, ENCRYPTKY default
複製代碼

參數說明:

PORT 7809:OGG管理進程監控端口。

PURGEOLDEXTRACTS:清除不須要的trail文件。

/ogg/dirdat:trail文件存放位置。

USECHECKPOINTS:使用檢查點隊列。

password:以前加密過的密碼

本實驗只用到上述參數,MGR其餘參數詳見下表,摘自OGG官方文檔。

Manager parameters: General

名字 用途
CHARSET Specifies a multibyte character set for the process to usinstead of the operating system default when reading theparameter file.
COMMENT Allows insertion of comments in a parameter file.
SOURCEDB Specifies a data source name as part of the login
USERID Provides login information for Manager when it needs toaccess the database.
SYSLOG Filters the types of Oracle GoldenGate messages that arewritten to the system logs.

Manager parameters: Port management

名字 用途
DYNAMICPORTLIST Specifies the ports that Collector can dynamically allocate.
PORT Establishes the TCP/IP port number on which Manager listensfor requests.

Manager parameters: Process management

名字 用途
AUTORESTART Specifies processes to be restarted by Manager after a
AUTOSTART Specifies processes to be started when Manager starts.
BOOTDELAYMINUTES Determines how long after system boot time Manager delaysuntil performing main processing activities. This parametersupports Windows.
UPREPORT Determines how often process heartbeat messages are reported.

Manager parameters: Event management

名字 用途
DOWNCRITICAL Reports processes that stopped gracefully or abnormally.
DOWNREPORT Controls the frequency for reporting stopped processes.
LAGCRITICAL Specifies a lag threshold that is considered critical andgenerates a warning to the error log.
LAGINFO Specifies a lag threshold at which an informational messageis reported to the error log.
LAGREPORT Sets an interval for reporting lag time to the error log.

Manager parameters: Maintenance

名字 用途
CHECKMINUTES Determines how often Manager cycles through maintenance
PURGEDDLHISTORY Purges rows from the Oracle DDL history table when they areno longer needed.
PURGEDDLHISTORYALT Purges rows from the alternate Oracle DDL history table thatkeeps track of partition IDs that are associated with atable ID.
PURGEMARKERHISTORY Purges Oracle marker table rows that are no longer needed.
PURGEOLDEXTRACTS Purges trail data that is no longer needed.
PURGEOLDTASKS Purges Extract and Replicat tasks after a specified periodof time.
STARTUPVALIDATIONDELAY[CSECS] Sets a delay time after which Manager checks that processesare still running after startup.

配置完MGR管理進程後,就能夠啓動MGR管理進程(源端和目標端都須要啓動)。

GGSCI (dbdream) 9> start mgr
Manager started.
複製代碼

GGSCI (dbdream) 9> start mgr

Manager started.

能夠經過INFO命令查看進程的狀態(最好每次啓動時在兩端都查看下)。

GGSCI (dbdream) 10> info mgr

Manager is running (IP port dbdream.7809).

4.3 配置初始化進程

4.3.1 源端extract進程配置

源端的測試表有數據,而目標端的測試表只有結構,沒有數據,因此須要初始化目標端的數據,所謂初始化,就是讓目標端的數據和源端的數據在這個時間點是如出一轍的,因此初始化工做並不須要必定使用OGG,也可使用EXP、EXPDP、SQLLOAD等其餘工具,本文主要介紹如何使用OGG進行數據初始化,下面在源端配置捕獲進程EINI_1。

GGSCI (dbdream) 11> ADD EXTRACT EINI_1, SOURCEISTABLE

EXTRACT added.
複製代碼

查看EINI_1進程狀態。

GGSCI (dbdream) 12> INFO EXTRACT *, TASKS

EXTRACT    EINI_1    Initialized   2012-11-13 22:45   Status STOPPED

Checkpoint Lag       Not Available

Log Read Checkpoint  Not Available

First Record         Record 0

Task                 SOURCEISTABLE
複製代碼

因爲只是添加了捕獲進程EINI_1,尚未進行配置和啓動這個進程,因此如今的狀態是STOPPED狀態。

源端編輯捕獲進程EINI_1。

GGSCI (dbdream) 13> EDIT PARAMS EINI_1
複製代碼

–加入如下內容

EXTRACT EINI_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

USERID ogg, PASSWORD ogg

RMTHOST 192.168.249.99, MGRPORT 7809

RMTTASK REPLICAT, GROUP RINI_1

TABLE scott.EMP_OGG;

TABLE scott.DEPT_OGG;
複製代碼

參數介紹:

EXTRACT EINI_1:說明這是EXTRACT進程,名字是EINI_1

SETENV:環境變量,必定要設置和數據庫字符集同樣,不然可能會亂碼

USERID:數據庫OGG用戶

PASSWORD:數據庫用戶OGG的密碼

RMTHOST:目標端地址,若是在/etc/hosts文件裏已經設置解析,能夠寫主機名

MGRPORT:目標端MGR管理進程監聽的端口

RMTTASK REPLICAT:目標端REPLICAT應用進程的組和名字

TABLE:源端要初始化數據的表的名字

編輯好捕獲進程EINI_1後,還須要在目標端配置REPLICAT應用進程,名字要和源端的捕獲進程EINI_1裏面RMTTASK REPLICAT參數配置的同樣,也就是還須要在目標端配置RMTTASK REPLICAT RINI_1。

4.3.2 目標端replicat配置

目標端:

GGSCI (stream) 7> EDIT PARAMS RINI_1

–加入如下內容

REPLICAT RINI_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

ASSUMETARGETDEFS

USERID ogg, PASSWORD ogg

DISCARDFILE /ogg/dirrpt/RINIaa.dsc, PURGE

MAP scott., TARGET scott.;

參數介紹:

REPLICAT RINI_1:說明這是REPLICAT應用進程,名字叫RINI_1

SETENV:語言變量,同捕獲進程EINI_1

ASSUMETARGETDEFS:告訴OGG目標端和源端須要同步的表的結構徹底一致,不須要OGG去檢查表的結構,包括表名、字段名、字段類型、字段長度等,若是目標端和源端同步的表的結構不同,須要使用SOURCEDEFS參數,詳見OGG官方文檔。

USERID、PASSWORD:同捕獲進程EINI_1參數介紹

DISCARDFILE:錯誤信息存放位置及命名規則

MAP:源端捕獲的表的名字

TARGET:目標端同步的表的名字,能夠不在同一SCHEMA。

4.3.3 初始化數據

配置好目標端的應用進程RINI_1後,就能夠啓動源端的捕獲進程進行捕獲數據了,而目標端的應用進程RINI_1不須要手動去啓動,也就是說目標端RINI_1進程不須要管。

GGSCI (dbdream) 14> START EXTRACT EINI_1

Sending START request to MANAGER …

EXTRACT EINI_1 starting

啓動源端的捕獲進程EINI_1後,正常狀況下(若是配置沒問題),源端的數據已經傳送到目標端了,能夠經過VIEW命令查看源端捕獲進程EINI_1的工做狀態。

GGSCI (dbdream) 11> VIEW REPORT EINI_1

–在最後部分會看到

Output to RINI_1:

From Table SCOTT.EMP_OGG:

# inserts: 14

# updates: 0

# deletes: 0

# discards: 0

From Table SCOTT.DEPT_OGG:

# inserts: 4

# updates: 0

# deletes: 0

# discards: 0

REDO Log Statistics

Bytes parsed 0

Bytes output 3056

若是配置正確,會看到上面的日誌,日誌會告訴你在目標端SCOTT.EMP_OGG表INSERT了14條記錄,SCOTT.DEPT_OGG表INSERT了4條記錄。若是在上面日誌的最後部分出現ERROR,就須要去檢查OGG的安裝目錄下的ggserr.log日誌,這個日誌至關於數據庫的告警日誌。

4.3.4 驗證初始化數據

登陸目標端數據庫,查看初始化是否成功。

初始化以後,上文提到的初始化進程(EINI_一、RINI_1)自動中止,由於一般狀況下初始化數據工做只會作一次。能夠經過INFO命令查看進程的狀態。

源端:

GGSCI (dbdream) 9> INFO EXTRACT EINI_1

EXTRACT EINI_1 Last Started 2012-11-14 02:03 Status STOPPED

Checkpoint Lag Not Available

Log Read Checkpoint Table SCOTT.DEPT_OGG

2012-11-14 02:03:22 Record 4

Task SOURCEISTABLE

目標端:

GGSCI (stream) 1> INFO REPLICAT RINI_1

REPLICAT RINI_1 Initialized 2012-11-14 20:30 Status STOPPED

Checkpoint Lag 00:00:00 (updated 03:16:37 ago)

Log Read Checkpoint Not Available

Task SPECIALRUN

4.4 配置檢查點

目的:爲了讓ogg在網絡中斷、服務器宕機、斷電的狀況下可以正確斷電續傳

源端和目標端都需配置。

GGSCI (stream) 2> EDIT PARAMS ./GLOBALS

–加入如下信息

CHECKPOINTTABLE ogg.ggschkpt

這就告訴OGG檢查點存放到OGG用戶下的GGSCHKPT表中,可是還須要使用OGG用戶登陸數據庫,建立檢查點表,此時須要退出OGG,從新登陸,不然可能會遇到下面的錯誤。

GGSCI (stream) 4> ADD CHECKPOINTTABLE

ERROR: Missing checkpoint table specification.

退出OGG,從新登陸,並使用OGG用戶登陸數據庫,源端和目標端都須要執行。

GGSCI (stream) 5> exit

[ogg@stream 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 (stream) 1> dblogin userid ogg,password ogg

Successfully logged into database.

只須要執行ADD CHECKPOINTTABLE命令,OGG會自動在ORACLE的OGG用戶下建立檢查點,源端和目標端都須要執行。

GGSCI (stream) 2> ADD CHECKPOINTTABLE

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

Successfully created checkpoint table ogg.ggschkpt.

此時用OGG登陸數據庫,就能夠看到OGG建立的檢查點表。

4.5 源端extract進程

下面在源端配置捕獲進程。

GGSCI (dbdream) 10> EDIT PARAMS EORA_1

–加入如下內容

EXTRACT EORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

USERID ogg, PASSWORD ogg

EXTTRAIL /ogg/dirdat/aa

TABLE scott.EMP_OGG;

參數介紹:

以上參數基本都在上文提過,這裏不在重複,說下EXTTRAIL參數,EXTTRAIL參數是TRAIL隊列文件存放的路徑和命名格式,TRAIL文件能夠理解爲存放捕獲進程捕獲的日誌文件。此時還須要將捕獲進程EORA_1添加到OGG。

GGSCI (dbdream) 11> ADD EXTRACT EORA_1, TRANLOG, BEGIN NOW

EXTRACT added.

GGSCI (dbdream) 12> ADD EXTTRAIL /ogg/dirdat/aa, EXTRACT EORA_1, MEGABYTES 5

EXTTRAIL added.

上面的兩個命名告訴OGG,捕獲進程從啓動起開始捕獲,捕獲數據保存到TRAIL文件,及TRAIL文件的路徑、命名格式,單個TRAIL文件最大大小。

如今就能夠啓動源端捕獲進程EORA_1了。

GGSCI (dbdream) 13> START EXTRACT EORA_1

Sending START request to MANAGER …

EXTRACT EORA_1 starting

使用INFO命令查看EORA_1進程是不是RUNNING狀態。

GGSCI (dbdream) 14> INFO EXTRACT EORA_1

EXTRACT EORA_1 Last Started 2012-11-14 02:06 Status RUNNING

Checkpoint Lag 00:00:58 (updated 00:00:08 ago)

Log Read Checkpoint Oracle Redo Logs

2012-11-14 02:05:58 Seqno 19, RBA 38097424

SCN 0.0 (0)

4.6 源端pump進程

不配置傳輸進程,OGG會經過EXTRACT進程傳輸TRAIL隊列文件,可是和檢查點隊列同樣,爲了保證斷點續傳ORACLE建議配置PUMP傳輸進程。

GGSCI (dbdream) 15> EDIT PARAMS PORA_1

–加入如下內容

EXTRACT PORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

PASSTHRU

RMTHOST 192.168.249.99, MGRPORT 7809

RMTTRAIL /ogg/dirdat/pa

TABLE scott.EMP_OGG;

TABLE scott.DEPT_OGG;

添加PUMP進程PORA_1到OGG,並指定本地的TRAIL文件。

GGSCI (dbdream) 16> ADD EXTRACT PORA_1, EXTTRAILSOURCE /ogg/dirdat/aa

EXTRACT added.

此時用INFO命令能夠看到PUMP進程PORA_1的狀態。

GGSCI (dbdream) 17> INFO EXTRACT PORA_1

EXTRACT PORA_1 Initialized 2012-11-14 02:10 Status STOPPED

Checkpoint Lag 00:00:00 (updated 00:00:10 ago)

Log Read Checkpoint File /ogg/dirdat/aa000000

First Record RBA 0

爲PUMP進程PORA_1指定將本地TRAIL文件傳輸到目標端後保存成目標端TRAIL文件的名字。

GGSCI (dbdream) 18> ADD RMTTRAIL /ogg/dirdat/pa, EXTRACT PORA_1, MEGABYTES 5

RMTTRAIL added.

下面就能夠啓動PUMP進程PORA_1了,啓動後看下PORA_1的狀態。

GGSCI (dbdream) 19> START EXTRACT PORA_1

Sending START request to MANAGER …

EXTRACT PORA_1 starting

–查看狀態

GGSCI (dbdream) 20> INFO EXTRACT PORA_1

EXTRACT PORA_1 Last Started 2012-11-14 02:11 Status RUNNING

Checkpoint Lag 00:00:00 (updated 00:00:03 ago)

Log Read Checkpoint File /ogg/dirdat/aa000000

First Record RBA 0

此時在目標端/ogg/dirdat/目錄下,就會看到由源端PUMP進程PORA_1傳輸過來的TRAIL文件。

[ogg@stream dirdat]$ pwd

/ogg/dirdat

[ogg@stream dirdat]$ ls

pa000000

[ogg@stream dirdat]$

4.7 目標端同步進程REPLICAT

GGSCI (stream) 5> ADD REPLICAT RORA_1, SPECIALRUN

REPLICAT added.

目標端編輯RORA_1進程。

GGSCI (stream) 7> EDIT PARAMS RORA_1

–加入如下內容

REPLICAT RORA_1

SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)

USERID ogg, PASSWORD ogg

HANDLECOLLISIONS

ASSUMETARGETDEFS

DISCARDFILE /ogg/dirrpt/RORA_aa.DSC, PURGE

MAP scott.emp_ogg, TARGET scott.emp_ogg;

目標端編輯同步進程RORA_1後,就能夠啓動RORA_1進程。

GGSCI (stream) 5> START REPLICAT RORA_1

Sending START request to MANAGER …

REPLICAT RORA_1 starting

啓動RORA_1進程後,查看進程狀態。

GGSCI (stream) 6> INFO REPLICAT RORA_1=

REPLICAT RORA_1 Last Started 2012-11-15 00:08 Status RUNNING

Checkpoint Lag 00:00:00 (updated 00:00:05 ago)

Log Read Checkpoint File /ogg/dirdat/pa000000

First Record RBA 0

5.總結

ogg的安裝過程至關麻煩,可能會遇到各類各樣的問題,出現這些問題時,多去網上搜索官方文檔,查看官網介紹,可以更快解決本身的問題。

國內各個博客存在說明不清晰,操做遺漏等各類問題,不可輕信

6.參考文檔

  1. ogg oracle官網下載
  2. ogg oracle官網文檔
  3. 『OGG 01』Win7 配置 Oracle GoldenGate 踩坑指南
  4. OGG基礎知識整理-雲棲社區-阿里雲
  5. Oracle Golden Date(ogg)的搭建和管理
  6. 利用OGG實現Oracle數據庫到MySQL數據庫的單向同步

以爲不錯,請點個贊吧

zan
相關文章
相關標籤/搜索