在ORACLE 12C RAC 的DG庫上搭建OGG

一.創建共享磁盤

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

su - oracle

lsnrctl services

如果沒有,需要用grid用戶在$ORACLE_HOME/network/admin/listener.ora文件中添加靜態註冊,然後reload listener(雙節點):

[grid@rac1 ~]$ 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/oracle/product/12.2.0.1/db_1)
     (SID_NAME = +ASM1)
   )
  )

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

su - oracle

cd $ORACLE_HOME\network\admin

vim tnsnames.ora 

[oracle@rac1 admin]$ cat tnsnames.ora 
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
tnsdg =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dg)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
ASM =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = +ASM)
      (SID_NAME = +ASM1)
    )
  )

3.測試連接:

sqlplus sys/woailyoo@ASM as sysasm

select instance_name from v$instance;

sqlplus sys/woailyoo@ORCL as sysdba

select instance_name from gv$instance;

4. 安裝acfs(ASM Cluster File System)

從Oracle11.2開始,ASM不僅是一個磁盤組,他還提供了了一個卷管理器,稱爲ADVM(asm dynamic volume manager)。ADVM向用戶提供卷管理服務,並提供標準的磁盤設備驅動程序。利用ADVM,可以在卷組中創建一個或多個卷,每個卷對應操作系統中的一個設備文件,這些卷是可以動態擴展的,就像操作系統中的卷或者利用第三方軟件創建的卷一樣,應用程序也可以對ADVM卷中的數據進行讀寫操作。
在ADVM卷中可以創建ACFS文件系統,ACFS是一種跨平臺的、可擴展的集羣文件系統,多個節點可以同時訪問asfs中的文件。ACFS不僅可以作爲oracle數據庫軟件的安裝路徑,還可以用來存儲數據庫中的警告文件和跟蹤文件,還可以存儲諸如視頻、聲音、圖像、文本等類型的文件。

su - root

cd  /u01/app/12.2.0.1/grid/bin

export ORACLE_HOME=/u01/app/12.2.0.1/grid/

./acfsload start -s

ACFS-9459: ADVM/ACFS is not supported on this OS version: 'centos-release-7-6.1810.2.el7.centos.x86_64'

cd /u01/app/12.2.0.1/grid/lib

cp -p osds_acfslib.pm osds_acfslib.pm.bak

vim osds_acfslib.pm

添加  ($release =~ /^centos-release/) ||        # CentOS hack 

cd /u01/app/12.2.0.1/grid/bin

./acfsload start -s

ACFS-9129: ADVM/ACFS not installed

./acfsroot install (雙節點都要安裝)

5.檢查

lsmod | grep oracle

6. 這裏可以使用掛在上來的磁盤或者現有的ASM磁盤做ogg的軟件目錄
我採用在現有ASM磁盤上創建一個ASM卷並掛載

su - grid

sqlplus / as sysasm

alter diskgroup DATA add volume acfsload size 5G; 

ll /dev/asm*

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

su - root

mkdir -p /acfsload-503

8. 用mkfs創建文件系統(格式化磁盤)

su - root

mkfs -t acfs -n acfs01 /dev/asm/acfsload-503

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

[root@rac2 bin]# acfsutil registry -a -f /dev/asm/acfsload-503 /acfsload-503
acfsutil registry: mount point /acfsload-503 successfully added to Oracle Registry


10. 使用mount.acfs -o all命令掛載文件系統(另一節點自動掛載)

[root@rac2 bin]# mount.acfs -o all
[root@rac2 bin]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G   32G   19G  64% /
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    6.0G  1.3G  4.8G  21% /dev/shm
tmpfs                    3.9G   13M  3.9G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1               1014M  166M  849M  17% /boot
/dev/mapper/centos-home   42G   46M   42G   1% /home
tmpfs                    797M  4.0K  797M   1% /run/user/42
tmpfs                    797M   28K  797M   1% /run/user/1001
/dev/asm/acfsload-503    5.0G  495M  4.6G  10% /acfsload-503
[root@rac2 bin]# 


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

[root@rac2 bin]# chown -R oracle:oinstall /acfsload-503

二.安裝 RAC OGG

su - oracle

三.安裝 DG OGG

跟RAC安裝類似,這裏略過

四.配置 RAC OGG

1.檢查歸檔、最小附加日誌、強制日誌是否開啓

select log_mode,supplemental_log_data_min,force_logging from v$database;

① 開啓最小附加日誌

alter database add supplemental log data;

② 開啓強制日誌

alter database force logging;

2. OGG 創建文件夾

su - oracle

cd $OGG_HOME

./ggsci

create subdirs

3.配置mgr進程

edit params mgr

PORT 7809
DYNAMICPORTLIST 7840-7939
--AUTOSTART ER *
--AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45

start mgr

4.創建用戶

CREATE USER goldengate   IDENTIFIED BY goldengate ;
GRANT CONNECT TO goldengate;
GRANT ALTER ANY  TABLE TO goldengate;
GRANT ALTER SESSION TO goldengate;
GRANT CREATE SESSION TO goldengate;
GRANT FLASHBACK ANY TABLE TO goldengate;
GRANT SELECT ANY DICTIONARY TO goldengate;
GRANT SELECT ANY TABLE TO goldengate;
GRANT RESOURCE TO goldengate;
GRANT drop ANY TABLE TO goldengate;
grant create any table to goldengate;
grant insert any table to goldengate;
grant update any table to goldengate;
grant delete any table to goldengate;
grant select any transaction to goldengate;

BEGIN
dbms_goldengate_auth.grant_admin_privilege(grantee => 'goldengate',
privilege_type => 'CAPTURE',grant_select_privileges => TRUE,do_grants => TRUE);
END;
/

5.啓用  enable_goldengate_replication

alter system set enable_goldengate_replication=true scope=both;

6.添加表級附加日誌

ggsci > dblogin userid goldengate password goldengate

ggsci> add trandata WOAILYOO.OGG_TEST

7.生成def文件

ggsci> eidt params defgen

userid goldengate,password goldengate

defsfile ./dirdef/sql.def

table   WOAILYOO.OGG_TEST;

 cd $OGG_HOME

./defgen  paramfile  dirprm/ defgen.prm

五.配置 DG OGG

1.檢查歸檔、最小附加日誌、強制日誌是否開啓

select log_mode,supplemental_log_data_min,force_logging from v$database;

2.檢查 enable_goldengate_replication 是否啓用

show parameter enable_goldengate_replication;

3.檢查 臨時文件 是否本地文件

select * from v$tempfile;

①開啓最小附加日誌

alter database add supplemental log data;

②開啓強制日誌

alter database force logging;

③啓用enable_goldengate_replication

alter system set enable_goldengate_replication=true scope=both;

④創建本地臨時文件

alter tablespace temp add tempfile '/u01/app/oracle/oradata/dg/ogg_temp01.dbf' size 100M reuse autoextend on next 50M maxsize 20G;

4.配置mgr參數

edit params mgr

PORT 7809
DYNAMICPORTLIST 7840-7939
--AUTOSTART ER *
--AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 7
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45


5.增加抽取進程和指定隊列文件

GGSCI>add extract extpdb , tranlog,begin now, threads 2

GGSCI> add exttrail ./dirdat/pd, extract extpdb, megabytes 200

edit params extpdb

EXTRACT extpdb
setenv (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
SETENV (ORACLE_SID=dg)
userid goldengate,password goldengate
tranlogoptions DBLOGREADER
REPORTCOUNT EVERY 1 MINUTES, RATE
WARNLONGTRANS 2h,CHECKINTERVAL 600s
FETCHOPTIONS NOUSESNAPSHOT
DISCARDFILE ./dirrpt/extpd.dsc,APPEND,MEGABYTES 1024
EXTTRAIL ./dirdat/pd
DBOPTIONS ALLOWUNUSEDCOLUMN

TRANLOGOPTIONS MINEFROMACTIVEDG
TRANLOGOPTIONS ALTARCHIVEDLOGFORMAT %t_%s_%r.arc
TRANLOGOPTIONS ALTARCHIVELOGDEST /u01/arch
STATOPTIONS REPORTFETCH

table WOAILYOO.OGG;
 

6.增加傳輸進程和指定隊列文件

GGSCI> add extract dpepdb, exttrailsource ./dirdat/pd

GGSCI>add RMTTRAIL ./dirdat/pd, EXTRACT dpepdb, MEGABYTES 200

EXTRACT dpepdb

PASSTHRU
RMTHOST 192.168.247.16, MGRPORT 7809, compress
RMTTRAIL ./dirdat/pd

table WOAILYOO.OGG;

六.配置目標端OGG

aaa

ORA-16000: database or pluggable database open for read-only access

OGG-00706  Failed to add supplemental log group on table WOAILYOO.OGG due to ORA-16000: database or pluggable database open for read-only access

 

 

可以看到雖然DG庫是單實例的,但依然繼承羣集的架構(雙節點)

 

未完成,明日再寫。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章