ORACLE RAC+OGG配置

實驗環境
主機名   IP地址
rac01     192.168.56.10
rac02     192.168.56.20
rac-scan 192.168.56.30sql

目標庫:
ora-ogg  192.168.56.40

實驗是從rac環境到單實例的ogg同步shell

1. 查看rac節點是否有ASM的監聽註冊(雙節點)數據庫

[oracle@rac01 ~]$ lsnrctl services

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 22-MAY-2017 16:07:08

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Services Summary...
Service "+ASM" has 1 instance(s).
  Instance "+ASM1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:1 refused:0 state:ready
         LOCAL SERVER
Service "orcl" has 1 instance(s).
  Instance "orcl1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0 state:ready
         LOCAL SERVER
Service "orclXDB" has 1 instance(s).
  Instance "orcl1", status READY, has 1 handler(s) for this service...
    Handler(s):
      "D000" established:0 refused:0 current:0 max:1022 state:ready
         DISPATCHER <machine: rac01, pid: 4164>
         (ADDRESS=(PROTOCOL=tcp)(HOST=rac01)(PORT=44556))
The command completed successfully

若是沒有,須要用grid用戶在$ORACLE_HOME/network/admin/listener.ora文件中添加靜態註冊,而後reload listener(雙節點):bash

[grid@rac01 admin]$ vi listener.ora
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER))))            # line added by Agent
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1))))                # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON                # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON              # line added by Agent

SID_LIST_LISTENER =
  (SID_LIST =
   (SID_DESC =
     (GLOBAL_DBNAME = +ASM)
     (ORACLE_HOME=/u01/app/11.2.0/grid)
     (SID_NAME = +ASM1)
   )
  )

2. 用oracle用戶編輯$ORACLE_HOME/network/admin/tnsnames.ora文件,使其用別名可鏈接ASM實例和數據庫oracle

[oracle@rac01 admin]$ cat tnsnames.ora 
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

rac =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

ASM = 
(DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.10)(PORT = 1521)) 
    (CONNECT_DATA = 
      (SERVER = DEDICATED) 
      (SERVICE_NAME = +ASM) 
      (SID_NAME = +ASM1) 
    ) 

  ) 

3. 查看endpoints_listener.ora文件配置是否合理app

[grid@rac01 admin]$ cat endpoints_listener.ora 
LISTENER_RAC01=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=rac01-vip)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.56.10)(PORT=1521)(IP=FIRST))))   # line added by Agent

4.測試鏈接:tcp

[oracle@rac01 ~]$ sqlplus sys/oracle@ASM as sysasm

SQL*Plus: Release 11.2.0.4.0 Production on Mon May 22 16:16:11 2017

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
+ASM1

[oracle@rac01 ~]$ sqlplus sys/oracle@rac as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Mon May 22 16:16:49 2017

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


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
orcl1

5. 安裝acfs(ASM Cluster File System)ide

[grid@rac01 ~]$ acfsload -s
ACFS-9228: usage: acfsload {start|stop} [-s]
[grid@rac01 ~]$ acfsload start
ACFS-9130: Root access required
[grid@rac01 ~]$ exit
logout
[root@rac01 ogg]# cd /u01/app/11.2.0/grid/bin/
[root@rac01 bin]# ./acfsload start
ACFS-9391: Checking for existing ADVM/ACFS installation.
ACFS-9392: Validating ADVM/ACFS installation files for operating system.
ACFS-9393: Verifying ASM Administrator setup.
ACFS-9308: Loading installed ADVM/ACFS drivers.
ACFS-9327: Verifying ADVM/ACFS devices.
ACFS-9156: Detecting control device '/dev/asm/.asm_ctl_spec'.
ACFS-9156: Detecting control device '/dev/ofsctl'.
ACFS-9322: completed

6. 這裏能夠使用掛在上來的磁盤或者現有的ASM磁盤作ogg的軟件目錄
我採用在現有ASM磁盤上建立一個ASM卷並掛載測試

[grid@rac01 ~]$ sqlplus / as sysasm

SQL*Plus: Release 11.2.0.4.0 Production on Fri May 19 15:43:24 2017

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

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL> alter diskgroup DATA add volume acfsload size 1G;

Diskgroup altered.
 
SQL> quit

[grid@rac01 ~]$ ll /dev/asm*
brw-rw---- 1 grid oinstall 8, 32 May 19 15:44 /dev/asm-disk1
brw-rw---- 1 grid oinstall 8, 16 May 19 15:44 /dev/asm-disk2
brw-rw---- 1 grid oinstall 8, 48 May 19 10:33 /dev/asm-disk3

/dev/asm:
total 0
brwxrwx--- 1 root dba 252, 107521 May 19 15:44 acfsload-210

7. 建立acfs掛載目錄,在兩個節點都要建立相同目錄ui

[root@rac01 deinstall]# mkdir -p /u01/app/acfsmounts/acfsload-210
[root@rac02 deinstall]# mkdir -p /u01/app/acfsmounts/acfsload-210

8. 用mkfs建立文件系統

[root@rac01 deinstall]# mkfs -t acfs -n acfs01 /dev/asm/acfsload-210 
shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
mkfs.acfs: version                   = 11.2.0.4.0
mkfs.acfs: on-disk version           = 39.0
mkfs.acfs: volume                    = /dev/asm/acfsload-210
mkfs.acfs: volume size               = 1073741824
mkfs.acfs: Format complete.

9. 用acfsuit命令註冊文件系統

[root@rac01 bin]# acfsutil registry -a -f /dev/asm/acfsload-210 /u01/app/acfsmounts/acfsload-210
acfsutil registry: mount point /u01/app/acfsmounts/acfsload-210 successfully added to Oracle Registry

10. 使用mount.acfs -o all命令掛載文件系統

[root@rac01 bin]# mount.acfs -o all
[root@rac01 bin]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_rac01-LogVol01
                       21G   13G  6.8G  65% /
tmpfs                 1.9G  134M  1.8G   7% /dev/shm
/dev/sda1             190M   42M  138M  24% /boot
/dev/asm/acfsload-210
                      1.0G   79M  946M   8% /u01/app/acfsmounts/acfsload-210

11. 改變文件系統的歸屬,改成Oracle:oinstall

[root@rac01 bin]# chown oracle:oinstall /u01/app/acfsmounts/acfsload-210
[root@rac01 bin]# ll -d /u01/app/acfsmounts/acfsload-210
drwxrwx--- 4 oracle oinstall 4096 May 19 15:53 /u01/app/acfsmounts/acfsload-210

12. 安裝ogg軟件
建立文件目錄:mkdir /tmp/orasoft
將安裝文件上傳到該目錄下面並解壓

[oracle@rac01 orasoft]$ ls
fbo_ggs_Linux_x64_shiphome  fbo_ggs_Linux_x64_shiphome.zip  OGG-12.2.0.1.1-ReleaseNotes.pdf  OGG-12.2.0.1-README.txt
使用圖形化安裝,指定ogg_home,oracle用戶的oracle_home,安裝11g的ogg
[oracle@rac01 ~]$ /tmp/orasoft/fbo_ggs_Linux_x64_shiphome/Disk1/runInstalle

13. 配置oracle環境變量,須要加入LD_LIBRARY_PATH及OGG_HOME等

[oracle@rac01 orasoft]$ cat ~/.bash_profile 
# .bash_profile

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

# User specific environment and startup programs
PATH=$PATH:$HOME/bin

export PATH
export ORACLE_SID=orcl1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_UNQNAME=orcl
#export PATH=$ORACLE_HOME/bin:$PATH
umask 022

export OGG_HOME=/u01/app/acfsmounts/acfsload-210/ogg
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/rdbms/lib
export PATH=$PATH:$ORACLE_HOME/bin:$OGG_HOME

14. 配置mgr進程

[oracle@rac01 ~]$ cd /u01/app/acfsmounts/acfsload-210/ogg/
[oracle@rac01 ogg]$ ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Dec 12 2015 00:54:38
Operating system character set identified as UTF-8.

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

GGSCI (rac01) 1> edit params mgr
GGSCI (rac01) 2> view params mgr

PORT 7808
autostart er * 
autorestart er *

GGSCI (rac01) 3> start mgr
GGSCI (rac01) 4> info mgr

Manager is running (IP port rac01.7808, Process ID 18924).

15. 目標庫安裝ogg,方法一樣,目標安裝在/ogg目錄下

16. 在rac庫上建立用戶,配置,受權等以及開啓ddl複製相關腳本

SQL> create user ogg identified by ogg;

User created.

SQL> grant connect,resource,unlimited tablespace to ogg;

User created.

SQL> create tablespace ogg datafile '+data' size 1g autoextend off;

Tablespace created.

SQL> alter user ogg default tablespace ogg;

User altered.

SQL> select username,default_tablespace from dba_users where username='OGG';

USERNAME                       DEFAULT_TABLESPACE
------------------------------ ------------------------------
OGG                            OGG
 
SQL> @sequence.sql

SQL> alter database add supplemental log data (primary key) columns;

Database altered.

SQL> alter database add supplemental log data (foreign key) columns;

Database altered.

SQL> alter database add supplemental log data (unique) columns;

Database altered.

SQL> alter system archive log current;

System altered.

SQL> grant execute on utl_file to ogg;

Grant succeeded.

SQL> @marker_setup.sql

SQL> @ddl_setup .sql

SQL> @role_setup.sql

SQL> grant ggs_ggsuser_role to ogg;

Grant succeeded.
 
SQL> @ddl_enable.sql

Trigger altered.
 
SQL> @ddl_pin ogg

PL/SQL procedure successfully completed.

PL/SQL procedure successfully completed.

PL/SQL procedure successfully completed.

SQL> alter database add supplemental log data;

Database altered.

SQL> alter system set enable_goldengate_replication=true scope=both;

System altered.

17. 建立同步的用戶test,同步test用戶下面的數據

SQL> create user test identified by test; 

User created.

SQL> grant connect,resource to test;

Grant succeeded.

18. 源端配置extract group抽取數據

[oracle@rac01 ogg]$ ggsci

GGSCI (rac01) 1> 
GGSCI (rac01) 2> dblogin userid ogg password ogg
Successfully logged into database.

GGSCI (rac01 as ogg@orcl1) 3> add extract testext,tranlog,begin now,threads 2
EXTRACT added.

GGSCI (rac01 as ogg@orcl1) 4> add exttrail ./dirdat/et,extract testext
EXTTRAIL added.

GGSCI (rac01 as ogg@orcl1) 5> edit params testext

EXTRACT testext
SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/db_1")
USERID ogg@rac, PASSWORD ogg
TRANLOGOPTIONS ASMUSER sys@ASM,ASMPASSWORD oracle
EXTTRAIL ./dirdat/et
DYNAMICRESOLUTION
DDL INCLUDE ALL
TABLE test.*;

19. 源端配置data pump傳送數據

[oracle@rac01 ogg]$ ggsci

GGSCI (rac01) 2> dblogin userid ogg password ogg
Successfully logged into database.

GGSCI (rac01 as ogg@orcl1) 3> add extract testpump,exttrailsource ./dirdat/et,begin now
EXTRACT added.

GGSCI (rac01 as ogg@orcl1) 4> add rmttrail ./dirdat/rt,extract testpump
RMTTRAIL added.

GGSCI (rac01 as ogg@orcl1) 5> edit params testpump

EXTRACT testpump
rmthost 192.168.56.40, mgrport 7808
rmttrail ./dirdat/rt
passthru
table test.*;

GGSCI (rac01 as ogg@orcl1) 6> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     STOPPED     EXTDATA     00:00:00      00:53:31    
EXTRACT     STOPPED     TESTPUMP    00:00:00      00:04:01 

20. 目標庫配置:

SQL> create user ogg identified by ogg;

User created.
 
SQL> grant connect,resource,dba to ogg;

Grant succeeded.

SQL> create user test identified by test;

User created.
 
SQL> grant connect ,resource to test;

Grant succeeded.

SQL> alter system set enable_goldengate_replication=true scope=both;

System altered.

SQL> exit

[oracle@ora-ogg ogg]$ ./ggsci
GGSCI (ora-ogg) 2> dblogin userid ogg password ogg
Successfully logged into database.

GGSCI (ora-ogg as ogg@orcl) 3> add replicat testrpt,exttrail ./dirdat/rt,nodbcheckpoint
REPLICAT added.

GGSCI (ora-ogg as ogg@orcl) 4> edit params testrpt
REPLICAT testrpt
setenv (ORACLE_SID=orcl)
SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/db_1")
USERID ogg@orcl,PASSWORD ogg
ASSUMETARGETDEFS
HANDLECOLLISIONS
REPERROR (DEFAULT, DISCARD)
DDLERROR DEFAULT DISCARD
DDLOPTIONS REPORT
DISCARDFILE ./repsz.dsc,append,megabytes 100
MAP test.*, TARGET test.*; 

GGSCI (ora-ogg as ogg@orcl) 6> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     STOPPED                                           
REPLICAT    STOPPED     TESTRPT     00:00:00      00:01:32    

21. 啓動各個進程:

啓動順序
source和target端的mgr -- > source端的extract --> target端的replicat --> source端的extract pump

source:

GGSCI (rac01 as ogg@orcl1) 11> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     TESTEXT     00:00:00      00:00:08    
EXTRACT     RUNNING     TESTPUMP    00:00:00      00:00:02 

target:

GGSCI (ora-ogg as ogg@orcl) 19> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
REPLICAT    RUNNING     TESTRPT     00:00:00      00:00:01

22. 開始同步

 

總結:遇到的坑:

1. ggsci沒法進入,報錯以下:
[oracle@rac01 ~]$ ggsci
Cannot load ICU resource bundle 'ggMessage', error code 2 - No such file or directory
Aborted (core dumped)

緣由1:ggsci必須在ogg的安裝目錄下輸入才能進入;
緣由2:未配置oracle用戶的環境變量。

2. 沒法啓動REPLICAT,
GGSCI (ora-ogg as ogg@orcl) 7> start testrpt

Sending START request to MANAGER ...

ERROR: Access denied.

2017-05-22 15:29:10  WARNING OGG-01742  Command sent to MGR MGR returned with an ERROR response.
告警中日誌錯誤
2017-05-22 15:29:10  WARNING OGG-00936  Oracle GoldenGate Manager for Oracle, mgr.prm:  Access denied (request from 192.168.56.40, rule #0).

解決辦法,在目標庫mgr配置文件中添加訪問主機IP:
GGSCI (ora-ogg as ogg@orcl) 8> edit params mgr
PORT 7808
ACCESSRULE, PROG *, IPADDR 192.168.*.*, ALLOW

3. 一些命令
開啓mgr: start mgr
開啓其餘進程: start * / start 進程名
關閉相反

查看參數:view params 進程名
查看日誌:view report 進程名
查看日誌:OGG_HOME/ggserr.log
相關文章
相關標籤/搜索