Linux下Oracle GoldenGate(OGG)的配置

首先解壓下載的OGG軟件,並受權:sql

 圖片

圖片

 以後,設置必要變量
注意修改ORACLE_SID,ORACLE_HOME,LD_LIBRARY_PATH變量值
[oracle@upgg ~]$ cat ~/.bash_profile 
# .bash_profile


# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi


# User specific environment and startup programs
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=/u01/oracle/11g
export GG_HOME=/u01/goldengate/112101
PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$GG_HOME:$LD_LIBRARY_PATH
export ORACLE_SID=updb
export PATH
而後source ~/.bash_profile使之生效


初始化GG數據庫

 圖片

 

這樣就OK了呀,而後就是數據庫的一些配置了:
1. 歸檔
GoldenGate 的原理是基於對日誌變化的捕獲(CDC )。因此 Oracle 的 redo 對於GoldenGate 相當重要。爲了保證 GoldenGate 能讀取到完整的事務日誌,必須打開歸檔。
在數據庫負載較大的狀況下,redo 會頻繁切換日誌組,咱們知道,Redo 日誌組在 Oracle 中有限且會被重複利用的。若是打開歸檔,被切換過的 redo log 就會被歸檔爲 archive log,這樣即便一個事務過長,等到提交的時候,部分可能已經歸檔,這時 GoldenGate 就會到 archive log 中查找對應的記錄,從而保證了信息的完整性。bash

Oracle 10g /11g 版本的 Oracle 打開歸檔較簡單:首先,在使用 sysdba 用戶登陸在SQLPLUS 下執行如下命令,確認歸檔是否已經開啓:oracle

圖片

 
如上結果表述已經運行在歸檔模式下,不須要任何處理。

圖片
 
看到如上結果的,表述運行非歸檔模式下,則執行以下命令:
 ide

 圖片

圖片

下面的步驟是可選的,不配置GG在使用中將出現以下警告信息:
WARNING OGG-01423  No valid default archive log destination directory found for thread 1.性能

個人習慣不想看到這個警告,因此作以下操做:spa

圖片

 2. 附加日誌
當數據庫啓用了Supplemental Logging以後,對於修改操做,Oracle就會同時附加一些可以惟一標識修改記錄的列到redo log中,若是這個表是有主鍵或惟一鍵的表,只須要附加主鍵或惟一鍵的信息便可,這樣生成的redo日誌量是最少的,若是某些表可能沒法建立主鍵或者惟一鍵,抑或數據表原本不存在主鍵/惟一鍵,這種狀況下Oracle會將全部列都作爲附加信息記錄到redo中,那麼redo就可能增加很快,同時對性能產生較大的負面影響。因此Oracle 建議全部須要複製的表都存在主鍵或者惟一鍵。Supplemental Logging能夠在數據庫級設置,也能夠精確到表級設置,對於數據庫級有兩種類型:minimal logging和identification key logging,其主要區別就在於寫入redolog中的數據詳盡程度不一樣。
從上述分析能夠得出:GoldenGate要準確的知道源端的數據修改了哪些列,就須要更爲詳細的日誌信息,因此須要數據庫開啓supplemental log。能夠按照下列方式打開數據庫級別的supplemental log。日誌

 

圖片

確認附加日誌是否打開對象

 

圖片

返回YES或IMPLICIT表示附加日誌被打開。
3. 回收站
在gg 11以前版本須要關閉回收站才能完成DDL同步
在gg 11 版本開始能夠開啓回收站也能完成DDL同步


SQL> select value from v$parameter where name='recyclebin';


VALUE
--------------------------------------------------------------------------------
on


on 表示開啓回收站
off 表示關閉回收站
關閉回收站
SQL> alter system set recyclebin=off scope=spfile;
System altered.
若是你不配置DDL同步的本步驟能夠不作
Recyclebin 在 10.1 中是隱含參數,關掉 recyclebin 的命令爲:
SQL>ALTER SYSTEM SET 「_ recyclebin」 = false;
4. GG軟件用戶設置
gg用戶有2種:


管理用戶
管理用戶是管理,維護GG軟件的用戶,此用戶必須在後臺數據庫創建起來,並分配必要的權限。管理用戶須要在原數據端創建,也須要在目標數據端創建。而原數據端與目標數據端須要的權限最小化也不相同。爲了方即可以授予dba權限,甚至不創建管理用戶,直接使用system用戶。


數據用戶  
數據用戶是gg運行中數據加載,數據同步的用戶。好比須要將scott用戶數據加載與同步到s1用戶下。scott爲原數據端用戶,s1爲目標數據端用戶。數據用戶存在就能夠了,但管理用戶必須有相應操做數據用戶的權限。 好比原數據端管理用戶至少有查詢,修改,閃回數據用戶對象的權限,目標數據端管理用戶至少須要dml操做數據用戶的權限.
在源端和目標端建立 GoldenGate 管理用戶,並授予下列權限。
SQL>create tablespace ggdata datafile '$ORACLE_BASE/oradata/$ORACLE_SID/ggdata01.dbf' size 200m;
SQL>create userggs identified by ggm default tablespace ggdata;
SQL>grant connect,resource,unlimited tablespace to ggm ; SQL>grant execute on utl_file to ggm;
在源端還須要授予 ggm 用戶如下權限:
SQL>grant connect,resource to ggm ;
SQL>grant select any dictionary,select any table to ggm;
SQL>grant alter any table to ggm;
SQL>grant flashback any table to ggm;
SQL>grant execute on DBMS_FLAHBACK TO ggm;
在目標端須要授予 ggm 用戶如下權限:
grant insert any table to ggm; 
grant delete any table to ggm; 
grant update any table to ggm;


上面的 insert、delete、update 沒有指定模式,表示在全部模式都能進行 insert、 delete、update 操做。


原數據端用戶設置   略
目標數據端用戶設置 略
5. 添加表級的transdata
這裏的表級的 trandata 就是指表級的 supplemental log。
表級supplemental log 須要在數據庫級別最小supplemental log 打開的狀況下才起做用。若是數據庫沒有開啓 minimal supplemental log,即便指定了表級supplemental log,實際在redo log 輸出描述的記錄仍只記錄rowid和相關列值,因此咱們還須要同時開啓表級的transadata。添加表級的 transdat 能夠理解爲你須要將源端的哪些schema下的哪些表傳輸到目標庫中,那麼就須要你手動添加這些transdata。按照上一小節的內容建立GoldenGate管理用戶並授予必要的權限以後,就可使用dblogin 登陸數據庫,而後添加特定表的trandata。


操做步驟以下:


在 scott 用戶下建立一張表 demo,用來做爲須要同步的表:

圖片

對這個表添加 trandata:

圖片


提示:在對錶添加 trandata 的時候,表名可使用通配符。例如若是我要添加 scott 用戶下全部的表,則語句能夠這樣寫:


GGSCI(source 4) add trandata scott.*;
查看錶有沒有附加日誌:
GGSCI(source 5) info trandata scott.*;
enabled 表示開啓附加日誌
disabled 表示沒開啓附加日誌
固然也能夠在oracle中執行sql命令增長附加日誌blog

SQL> alter table  t1 add supplemental log data(all) columns;

 

更多精彩Oracle內容 請關注我:

相關文章
相關標籤/搜索