GoldenGate配置執行個體:RHEL 4.7下的Oracle 10g RAC到單一實例的單向同步(一)

來源:互聯網
上載者:User
環境

源端是一個RAC
rac1 rac2: RHEL 4u7 + ORACLE 10.2.0.4 + ASM
rac1 外網IP 192.168.47.241 虛擬IP 192.168.47.243
rac2 外網IP 192.168.47.242 虛擬IP 192.168.47.244

目標端是一個單機
ggdb: RHEL 4u7 + ORACLE 10.2.0.4 + ASM
IP: 192.168.47.211

兩台主機均已建立資料庫,sid分別為oradb 和 dyggdb

配置oradb 到 dyggdb的資料同步

goldengate版本11.1.1.0

時間同步

在RAC中,節點間的時間同步很重要,官方文檔裡面的解釋是,GoldenGate通過時間來做一些關鍵決策。這裡我們通過NTP來配置時間同步
將rac1配置為NTP伺服器

rac1:

修改設定檔。配置一個server指向自己

cat>/etc/ntp.conf<<EOF
restrict default nomodify notrap noquery
restrict 127.0.0.1

server 0.rhel.pool.ntp.org
server 1.rhel.pool.ntp.org
server 2.rhel.pool.ntp.org

server 192.168.47.241
server 127.127.1.0
fudge 127.127.1.0 stratum 10

driftfile /var/lib/ntp/drift
broadcastdelay 0.008
keys /etc/ntp/keys
EOF

啟動ntpd服務

service ntpd restart
chkconfig --level 345 ntpd on

rac2:

rac2上的操作與rac1類似,不同的是配置的server指向rac1

cat>/etc/ntp.conf<<EOF
restrict default nomodify notrap noquery
restrict 127.0.0.1

server 0.rhel.pool.ntp.org
server 1.rhel.pool.ntp.org
server 2.rhel.pool.ntp.org

server 192.168.47.241
fudge 192.168.47.241 stratum 10

driftfile /var/lib/ntp/ntp.drift
broadcastdelay 0.008
keys /etc/ntp/keys
EOF

service ntpd restart
chkconfig --level 345 ntpd on

需要注意的是,配置完ntp後大概需要5-10分鐘的時候,才會開始進行同步。可以通過ntpq -p 命令來查看

[root@rac1 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
rac1 .INIT. 16 u - 64 0 0.000 0.000 4000.00
*LOCAL(0) LOCAL(0) 10 l 30 64 377 0.000 0.000 0.001

[root@rac2 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
rac1 LOCAL(0) 11 u 9 64 1 0.187 0.072 0.001

源端和目標端之間的時間同步則不是那麼重要。可以在目標端手動對時間進行一次同步(目標端的ntpd服務沒有啟動),並將同步後的系統時間寫入bios
[root@ggdb ~]# ntpdate 192.168.47.241
8 Dec 15:40:20 ntpdate[8311]: adjust time server 192.168.47.241 offset 0.003007 sec
[root@ggdb ~]# /sbin/hwclock -w

如果不能成功,可以在ntpdate命令中加上-d參數來排查具體原因

建立系統使用者

在源端(包括rac1和rac2)和目標端建立使用者,用於管理GoldenGate:

useradd -g oinstall -G dba goldengate
passwd goldengate

配置資源限制:
官方建議儘可能將資源限制放開,其實我們可以根據具體情況進行配置,但不能設得太小

cat >>/etc/security/limits.conf<<EOF
goldengate soft memlock 3145728
goldengate hard memlock 3145728
goldengate soft nproc 200
goldengate hard nproc 1024
goldengate soft stack -
goldengate hard stack -
goldengate soft fsize -
goldengate hard fsize -
EOF

準備GoldenGate安裝環境源端

RAC環境中,GoldenGate應該安裝在一個共用儲存中,這樣當運行GoldenGate相關進程的節點出現故障時,可以將該目錄掛載到另一個節點中繼續運行
以下的在rac1上做就可以了

這裡有一個分區/dev/sdg1,可以被rac1和rac2訪問。我們將其格式化ext3檔案系統,並掛載到rac1上(在正常情況下,我們在rac1上啟動extract進程):

[root@rac1 ~]# mkfs.ext3 /dev/sdg1
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
12500992 inodes, 24993115 blocks
1249655 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
763 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 24 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[root@rac1 ~]#

掛載到rac1的/opt/gg下:
[root@rac1 ~]# mkdir /opt/gg
[root@rac1 ~]# mount /dev/sdg1 /opt/gg

然後在rac1中配置開機自動掛載(這一步不要在rac2上做):
echo "mount /dev/sdg1 /opt/gg" >> /etc/rc.local

目標端

目標端是一個單機,安裝到/opt/gg下
mkdir /opt/gg

在源端和目標端上,賦予goldengate使用者/opt/gg目錄的使用許可權
chown -R goldengate:oinstall /opt/gg
chmod -R 775 /opt/gg

解壓goldengate安裝檔案到安裝目錄安裝GoldenGate軟體很簡單,解壓即可

源端(rac1)和目標端都做:
以goldengate使用者登入
[goldengate@rac1 goldengateMedia]$ mkdir /opt/gg/goldengate、
[goldengate@rac1 goldengateMedia]$ cp ggs_Linux_x64_ora10g_64bit_v11_1_1_0_0_078.tar /opt/gg/goldengate
[goldengate@rac1 goldengateMedia]$ cd /opt/gg/goldengate
[goldengate@rac1 goldengate]$ tar -xvf ggs_Linux_x64_ora10g_64bit_v11_1_1_0_0_078.tar

配置環境變數

源端(rac1和rac2)和目標端:
修改goldengate使用者的環境變數設定檔(ORACLE_SID按實際情況修改)
cat>>/home/goldengate/.bashrc<<EOF
ORACLE_HOME=/opt/app/oracle/product/10.2.0/db_1
export ORACLE_HOME
ORACLE_SID=oradb1
export ORACLE_SID
GG_HOME=/opt/gg/goldengate
export GG_HOME
PATH=\$ORACLE_HOME/bin:\$PATH
export PATH
GG_HOME=/opt/gg/goldengate
export GG_HOME
LD_LIBRARY_PATH=\$ORACLE_HOME/lib:\$GG_HOME:\$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
EOF

應用剛剛修改的環境變數,然後進入GoldenGate安裝目錄,執行ldd ggsci,確定需要的庫檔案都能夠找到。如果出現共用庫檔案無法找到,例如libnnz10.so => not found,檢查LD_LIBRARY_PATH環境變數的設定
[goldengate@ggdb goldengate]$ source ~/.bashrc
[goldengate@ggdb goldengate]$ cd $GG_HOME
[goldengate@ggdb goldengate]$ ldd ggsci
libdl.so.2 => /lib64/libdl.so.2 (0x00000037a3900000)
libicui18n.so.38 => /opt/gg/goldengate/libicui18n.so.38 (0x0000002a9558c000)
libicuuc.so.38 => /opt/gg/goldengate/libicuuc.so.38 (0x0000002a958ec000) libicudata.so.38 => /opt/gg/goldengate/libicudata.so.38 (0x0000002a95c25000)
libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x00000037a3d00000)
libxerces-c.so.28 => /opt/gg/goldengate/libxerces-c.so.28 (0x0000002a968fc000)
libnnz10.so => /opt/app/oracle/product/10.2.0/db_1/lib/libnnz10.so (0x0000002a96e13000)
libclntsh.so.10.1 => /opt/app/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1 (0x0000002a972b4000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000037a5d00000)
libm.so.6 => /lib64/tls/libm.so.6 (0x00000037a3700000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000037a5b00000)
libc.so.6 => /lib64/tls/libc.so.6 (0x00000037a3400000)
/lib64/ld-linux-x86-64.so.2 (0x00000037a3000000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00000037a9100000)

資料庫方面的準備在源端資料庫中開啟歸檔模式

SQL> archive log list

Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            +RECOVERY_DG
Oldest online log sequence     120
Next log sequence to archive   121
Current log sequence           121

若處於非歸檔模式,則改為歸檔模式:
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

SQL> alter database archivelog;

Database altered.

SQL> alter database open;

Database altered.

SQL>

在源端資料庫中開啟force logging

SQL> select force_logging from v$database;

FOR
---
NO

SQL> alter database force logging;

Database altered.

SQL> select force_logging from v$database;

FOR
---
YES

在源端資料庫中開啟supplemental log

SQL> select supplemental_log_data_min from v$database;

SUPPLEME
--------
NO

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

在源端資料庫中關閉資源回收筒

官方的說明是,由於一個已知的問題,資源回收筒會對DDL觸發器產生影響,因此需要關閉。由此可見,我們只需要在源庫中關閉資源回收筒即可。

SQL> show parameter recyclebin

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on

SQL> alter system set recyclebin=off;

System altered.

SQL> show parameter recyclebin

NAME TYPE
------------------------------------ --------------------------------
VALUE
------------------------------
recyclebin string
OFF

確保goldengate能夠串連到資料庫的ASM執行個體

RAC中所有節點都要配置

在源端TNSNAMES.ORA中配置ASM執行個體資訊
vi $ORACLE_HOME/network/admin/tnsnames.ora

ORADB_ASM =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac1-vip)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac2-vip)(PORT = 1521))
    (LOAD_BALANCE = yes)
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = +ASM)
    )
  )

在源端LISTENER.ORA中配置ASM執行個體的相關資訊
vi $ORACLE_HOME/network/admin/listener.ora

SID_LIST_LISTENER_RAC1 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = oradb)
      (ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1)
      (SID_NAME = oradb1)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = +ASM)
      (ORACLE_HOME = /opt/app/oracle/product/10.2.0/db_1)
      (SID_NAME = +ASM1)
    )
  )

上面是rac1中的配置,rac2中的SID_LIST_LISTENER_xxx 和SID_NAME要相應修改

重啟監聽
lsnrctl reload


通過sqlplus sys/xxx@oradb_asm as sysdba來串連asm執行個體,能連上則說明配置成功

字元集

1. 目標資料庫的字元集必須是來源資料庫字元集的超集
2. 資料庫字元集必須為用戶端應用程式字元集的超集

SQL> SHOW PARAMETER NLS_LANGUAGE

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
nls_language string SIMPLIFIED CHINESE

SQL> SHOW PARAMETER NLS_TERRITORY

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
nls_territory string CHINA

SQL> SELECT name, value$ from SYS.PROPS$ WHERE name = 'NLS_CHARACTERSET';

NAME
------------------------------
VALUE$
--------------------------------------------------------------------------------
NLS_CHARACTERSET
ZHS16GBK

SQL> SHOW PARAMETER NLS_LENGTH_SEMANTICS

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
nls_length_semantics string BYTE

SQL>

設定終端的字元集:
root使用者登入,源(rac1和rac2)和目標端都做
cat >>/etc/bashrc<<EOF
NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
export NLS_LANG
EOF

建立goldengate資料庫使用者

源和目標端都需要

[oracle@gg1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Mon Aug 1 22:31:42 2011

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> create tablespace goldengate;

Tablespace created.

SQL> create user goldengate identified by goldengate default tablespace goldengate;

User created.

SQL> grant connect,resource to goldengate;

Grant succeeded.

SQL> grant execute on utl_file to goldengate;

Grant succeeded.

SQL>

抽取進程使用的資料庫使用者需要額外的許可權,我們將這些許可權也授予資料庫使用者goldengate(在源端資料庫中執行)

SQL> exec dbms_streams_auth.grant_admin_privilege('GOLDENGATE');

PL/SQL procedure successfully completed.

SQL> grant insert on system.logmnr_restart_ckpt$ to goldengate;

Grant succeeded.

SQL> grant update on sys.streams$_capture_process to goldengate;

Grant succeeded.

SQL> grant become user to goldengate;

Grant succeeded.

SQL>

為了確保GoldenGate正常運行,特別是在目標端,賦予goldengate使用者DBA許可權:
SQL> grant dba to goldengate;

UNDO的設定

goldengate使用flashback query從來源資料庫中讀取undo資料表空間中的資料,以重建基於scn或時間點的讀一致性。

建議設定如下:
UNDO_MANAGEMENT=AUTO
UNDO_RETENTION=86400
undo資料表空間的大小按如下公式估計設定
<undo space> = <UNDO_RETENTION> * <UPS> + <overhead>
❍ <undo space> is the number of undo blocks.
❍ <UNDO_RETENTION> is the value of the UNDO_RETENTION parameter (in seconds).
❍ <UPS> is the number of undo blocks for each second.
❍ <overhead> is the minimal overhead for metadata (transaction tables, etc.).
Use the system view V$UNDOSTAT to estimate <UPS> and <overhead>.

該步驟在源端資料庫執行即可

SQL> show parameter undo

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS1

SQL> alter system set undo_retention=86400;

System altered.

將flashback any table 許可權賦給extract使用者

SQL> grant flashback any table to goldengate;

Grant succeeded.

SQL>

GoldenGate配置執行個體:RHEL 4.7下的Oracle 10g RAC到單一實例的單向同步(一)

http://blog.csdn.net/wildwave/article/details/7053768

GoldenGate配置執行個體:RHEL 4.7下的Oracle 10g RAC到單一實例的單向同步(二)

http://blog.csdn.net/wildwave/article/details/7056362

GoldenGate配置執行個體:RHEL 4.7下的Oracle 10g RAC到單一實例的單向同步(三)

http://blog.csdn.net/wildwave/article/details/7056451

GoldenGate配置執行個體:RHEL 4.7下的Oracle 10g RAC到單一實例的單向同步(四)
http://blog.csdn.net/wildwave/article/details/7056500

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.