- 論壇徽章:
- 8
|
本帖最后由 我忒忙 于 2016-05-18 17:13 編輯
首先解壓下載的OGG軟件,并授權(quán):
圖片
圖片
之后,設(shè)置必要變量
注意修改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了呀,然后就是數(shù)據(jù)庫的一些配置了:
1. 歸檔
GoldenGate 的原理是基于對日志變化的捕獲(CDC )。所以 Oracle 的 redo 對于GoldenGate 至關(guān)重要。為了保證 GoldenGate 能讀取到完整的事務日志,必須打開歸檔。
在數(shù)據(jù)庫負載較大的情況下,redo 會頻繁切換日志組,我們知道,Redo 日志組在 Oracle 中有限且會被重復利用的。如果打開歸檔,被切換過的 redo log 就會被歸檔為 archive log,這樣即使一個事務過長,等到提交的時候,部分可能已經(jīng)歸檔,這時 GoldenGate 就會到 archive log 中查找對應的記錄,從而保證了信息的完整性。
Oracle 10g /11g 版本的 Oracle 打開歸檔較簡單:首先,在使用 sysdba 用戶登錄在SQLPLUS 下執(zhí)行以下命令,確認歸檔是否已經(jīng)開啟:
圖片
如上結(jié)果表述已經(jīng)運行在歸檔模式下,不需要任何處理。
圖片
看到如上結(jié)果的,表述運行非歸檔模式下,則執(zhí)行如下命令:
圖片
圖片
下面的步驟是可選的,不配置GG在使用中將出現(xiàn)如下警告信息:
WARNING OGG-01423 No valid default archive log destination directory found for thread 1.
我的習慣不想看到這個警告,所以做如下操作:
圖片
2. 附加日志
當數(shù)據(jù)庫啟用了Supplemental Logging之后,對于修改操作,Oracle就會同時附加一些能夠唯一標識修改記錄的列到redo log中,如果這個表是有主鍵或唯一鍵的表,只需要附加主鍵或唯一鍵的信息即可,這樣生成的redo日志量是最少的,如果某些表可能無法創(chuàng)建主鍵或者唯一鍵,抑或數(shù)據(jù)表本來不存在主鍵/唯一鍵,這種情況下Oracle會將所有列都做為附加信息記錄到redo中,那么redo就可能增長很快,同時對性能產(chǎn)生較大的負面影響。所以O(shè)racle 建議所有需要復制的表都存在主鍵或者唯一鍵。Supplemental Logging可以在數(shù)據(jù)庫級設(shè)置,也可以精確到表級設(shè)置,對于數(shù)據(jù)庫級有兩種類型:minimal logging和identification key logging,其主要區(qū)別就在于寫入redolog中的數(shù)據(jù)詳盡程度不同。
從上述分析可以得出:GoldenGate要準確的知道源端的數(shù)據(jù)修改了哪些列,就需要更為詳細的日志信息,所以需要數(shù)據(jù)庫開啟supplemental log?梢园凑障铝蟹绞酱蜷_數(shù)據(jù)庫級別的supplemental log。
圖片
確認附加日志是否打開
圖片
返回YES或IMPLICIT表示附加日志被打開。
3. 回收站
在gg 11之前版本需要關(guān)閉回收站才能完成DDL同步
在gg 11 版本開始可以開啟回收站也能完成DDL同步
SQL> select value from v$parameter where name='recyclebin';
VALUE
--------------------------------------------------------------------------------
on
on 表示開啟回收站
off 表示關(guān)閉回收站
關(guān)閉回收站
SQL> alter system set recyclebin=off scope=spfile;
System altered.
如果你不配置DDL同步的本步驟可以不做
Recyclebin 在 10.1 中是隱含參數(shù),關(guān)掉 recyclebin 的命令為:
SQL>ALTER SYSTEM SET “_ recyclebin” = false;
4. GG軟件用戶設(shè)置
gg用戶有2種:
管理用戶
管理用戶是管理,維護GG軟件的用戶,此用戶必須在后臺數(shù)據(jù)庫建立起來,并分配必要的權(quán)限。管理用戶需要在原數(shù)據(jù)端建立,也需要在目標數(shù)據(jù)端建立。而原數(shù)據(jù)端與目標數(shù)據(jù)端需要的權(quán)限最小化也不相同。為了方便可以授予dba權(quán)限,甚至不建立管理用戶,直接使用system用戶。
數(shù)據(jù)用戶
數(shù)據(jù)用戶是gg運行中數(shù)據(jù)加載,數(shù)據(jù)同步的用戶。比如需要將scott用戶數(shù)據(jù)加載與同步到s1用戶下。scott為原數(shù)據(jù)端用戶,s1為目標數(shù)據(jù)端用戶。數(shù)據(jù)用戶存在就可以了,但管理用戶必須有相應操作數(shù)據(jù)用戶的權(quán)限。 比如原數(shù)據(jù)端管理用戶至少有查詢,修改,閃回數(shù)據(jù)用戶對象的權(quán)限,目標數(shù)據(jù)端管理用戶至少需要dml操作數(shù)據(jù)用戶的權(quán)限.
在源端和目標端創(chuàng)建 GoldenGate 管理用戶,并授予下列權(quán)限。
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 用戶以下權(quán)限:
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 用戶以下權(quán)限:
grant insert any table to ggm;
grant delete any table to ggm;
grant update any table to ggm;
上面的 insert、delete、update 沒有指定模式,表示在所有模式都能進行 insert、 delete、update 操作。
原數(shù)據(jù)端用戶設(shè)置 略
目標數(shù)據(jù)端用戶設(shè)置 略
5. 添加表級的transdata
這里的表級的 trandata 就是指表級的 supplemental log。
表級supplemental log 需要在數(shù)據(jù)庫級別最小supplemental log 打開的情況下才起作用。如果數(shù)據(jù)庫沒有開啟 minimal supplemental log,即使指定了表級supplemental log,實際在redo log 輸出描述的記錄仍只記錄rowid和相關(guān)列值,所以我們還需要同時開啟表級的transadata。添加表級的 transdat 可以理解為你需要將源端的哪些schema下的哪些表傳輸?shù)侥繕藥熘,那么就需要你手動添加這些transdata。按照上一小節(jié)的內(nèi)容創(chuàng)建GoldenGate管理用戶并授予必要的權(quán)限之后,就可以使用dblogin 登錄數(shù)據(jù)庫,然后添加特定表的trandata。
操作步驟如下:
在 scott 用戶下創(chuàng)建一張表 demo,用來作為需要同步的表:
圖片
對這個表添加 trandata:
圖片
提示:在對表添加 trandata 的時候,表名可以使用通配符。例如如果我要添加 scott 用戶下所有的表,則語句可以這樣寫:
GGSCI(source 4) add trandata scott.*;
查看表有沒有附加日志:
GGSCI(source 5) info trandata scott.*;
enabled 表示開啟附加日志
disabled 表示沒開啟附加日志
當然也可以在oracle中執(zhí)行sql命令增加附加日志
SQL> alter table t1 add supplemental log data(all) columns;
更多精彩Oracle內(nèi)容 請關(guān)注我:
QQ截圖20160417100740.png (12.72 KB, 下載次數(shù): 55)
下載附件
2016-05-18 17:12 上傳
|
|