ogg的安裝配置 配置雙向同步(含DDL)


第一部分 先配置單向同步(含DDL)

一 源端安裝GoldenGate

  1. 創建用戶

創建目錄

mkdir -p /opt/ogg

chmod -R 777 /opt/ogg

chown -R oracle:oinstall /opt/ogg

 

ogg用戶    

useradd -g oinstall -G dba ggate

 

  1. 解壓軟件

  2. 設置環境變量

配置goldengate用戶變量

su – ggate

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1

export ORACLE_SID=prm

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/u01/app/oracle/ggate

export GGATE=/opt/ogg

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export PATH=$PATH:$ORACLE_HOME/bin:$GGATE

  1. 安裝GoldenGate

    圖形化安裝方法中,在software location部分選擇環境變量中GGATE的值,不過要注意給GGATE目錄適當的權限;

    Database Location部分就是ORACLE_HOME的值。

二 目標端安裝GoldenGate

  1. 創建用戶

創建目錄

mkdir -p /opt/ogg

chmod -R 755 /opt/ogg

chown -R oracle:oinstall /opt/ogg

 

ogg用戶    

useradd -g oinstall -G dba ggate

  1. 解壓軟件

  2. 設置環境變量

配置goldengate用戶變量

su – ggate

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1

export ORACLE_SID=prm

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/u01/app/oracle/ggate

export GGATE=/opt/ogg

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib

export PATH=$PATH:$ORACLE_HOME/bin:$GGATE

  1. 安裝GoldenGate

    圖形化安裝方法中,在software location部分選擇環境變量中GGATE的值,不過要注意給GGATE目錄適當的權限;

    Database Location部分就是ORACLE_HOME的值。

三 配置源端數據庫

  1. 開啟歸檔

開啟歸檔

修改之前 創建參數文件做備份

 

create pfile='/home/oracle/initdemo.ora' from spfile;

alter system set log_archive_dest='/arch/prm' scope=spfile; --修改歸檔的路徑

---alter system set db_recovery_file_dest='' scope=spfile; --關閉閃回

shutdown immediate;

startup mount;

alter database archivelog;

archive log list;

alter database open;

  1. 設置數據庫force logging

實際生產應用中,最好同時打開ORACLE的強制日志模式,以防止源數據庫因直接路徑加載忽略redo生成而導致這部分數據無法同步:

SQL> select force_logging from v$database;

SQL> Alter database force logging;

 

  1. 開啟最小附加日志(DDL的話好開啟數據庫級別)

Oracle數據庫需要開啟歸檔日志,並開啟最小附加日志模式。

SQL> select supplemental_log_data_min from v$database; --查看是否開啟了最小附加日志模式

SQL> alter database add supplemental log data; --開啟最小附加日志模式

 

千萬不要小看這步日志設置,其實在GoldenGate的配置中,這步是最容易出錯的環節。如果開啟DDL復制做冗災備份,最好直接在數據庫級別打開補全日志:

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

檢查一下,全是YES就OK了(整個數據庫級別補全)

SQL> select supplemental_log_data_min,

supplemental_log_data_pk,supplemental_log_data_ui from v$database;

  1. 源庫關閉回收站

SQL> show parameter recyclebin  

SQL> alter system set recyclebin=off scope=spfile;

SQL>shutdown immediate;

SQL>startup;

SQL> show parameter recyclebin

 

  1. UNDO設置

alter system set undo_retention=86400;  

  1. 創建goldengate用戶並且授權

創建表空間、用戶、賦予dba權限

create tablespace ogg datafile '/u01/app/oracle/oradata/prm/ogg01.dbf' size 1024M;

create user ggate identified by ggate default tablespace ogg temporary tablespace temp;

grant connect,resource,unlimited tablespace to ggate;

grant connect,resource,dba to ggate;

grant execute on utl_file to ggate;

grant select any dictionary,select any table to ggate;

grant alter any table to ggate;

grant flashback any table to ggate;

grant execute on DBMS_FLASHBACK to ggate;

grant insert any table to ggate;

grant delete any table to ggate;

grant update any table to ggate;

 

運行DDL同步需要的腳本

cd $GGATE

@marker_setup.sql;

@ddl_setup.sql;

@role_setup.sql;

grant GGS_GGSUSER_ROLE to ggate;

@ddl_enable.sql;

 

安裝性能優化包。

SQL> @?/rdbms/admin/dbmspool

 

ddl_pin將觸發器用到的plsql包放進內存中

cd $GGATE  

SQL> @ddl_pin ggate

 

  1. 添加傳輸表【transdata】

光開啟最小附加日志模式還不夠,還需要打開表級的補全日志,可以在GoldenGate中使用add trandata命令強制重做日志記錄主鍵值,以保證在目標端能成功復制:

GGSCI> dblogin userid ggate,password ggate --GoldenGate中登錄OARCLE數據庫

GGSCI>add trandata sender.* --表名可以使用通配符

GGSCI> add trandata coss3.per_test,nokey,cols(sampletime, objectid)

--無主鍵指定字段補全的示例

 

也可以在數據庫中打開:

SQL> alter table <tablename> add supplemental log data (primary key) columns;

 

 

 

示例:

GGSCI(node1) 1> dblogin userid ogg,password oracle

GGSCI(node1) 2> add trandata SCOTT.DEPT

 

四 配置源端進程組

  1. 配置管理進程【1】mgr

GGSCI(node1) 1> edit param mgr

(粘貼下面這段配置)

PORT 8839

--DYNAMICPORTLIST 8000-9000

--AUTOSTART ER *

AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3

PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3

--PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30

--PURGEMARKERHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

  1. 配置源端./GLOBALS

GGSCI (node1) > edit params ./GLOBALS  

GGSCHEMA ggate

 

  1. 啟動管理進程

GGSCI(node1) 2> start mgr

Managerstarted.

GGSCI(node1) 3> info all

Program Status Group Lag at Chkpt Time Since Chkpt

MANAGER RUNNING

  1. 配置抽取進程【2】extnd

增加EXTRAIL

GGSCI(node1)> add extract extnd, tranlog, begin now

EXTRACT added.

 

修改EXTRAIL參數

GGSCI (GOLDENGATE1) 4> edit params extnd

EXTRACT extnd

SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")

SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/dbhome_1")

SETENV (ORACLE_SID = "prm")

USERID ggate, PASSWORD ggate

EXTTRAIL ./dirdat/nd

DISCARDFILE ./dirdat/extnd.dsc,APPEND,MEGABYTES 5

TRANLOGOPTIONS ALTARCHIVELOGDEST /arch/prm

TRANLOGOPTIONS ALTARCHIVEDLOGFORMAT %t_%s_%r.dbf

DDL INCLUDE ALL

DDLOPTIONS ADDTRANDATA

FETCHOPTIONS, USESNAPSHOT, NOUSELATESTVERSION, MISSINGROW REPORT

STATOPTIONS REPORTFETCH

WARNLONGTRANS 1H, CHECKINTERVAL 5M

TABLE sender.*;

 

添加該extract對應的trail文件,用來存儲抽取的數據。單個文件大小設置為100MB

GGSCI(node1)> add exttrail ./dirdat/nd, extract extnd, megabytes 100

EXTTRAIL added.

  1. 添加傳輸進程【3】dpend,配置參數

增加PUMP

GGSCI(node1)>add extract dpend, exttrailsource ./dirdat/nd, begin now

EXTRACT added.

 

修改PUMP參數

GGSCI(node1)> edit params dpend

EXTRACT dpend

SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")

USERID ggate, PASSWORD ggate

RMTHOST 192.168.80.166, MGRPORT 8809

RMTTRAIL ./dirdat/nd

DISCARDFILE ./dirdat/dpend.dsc,APPEND,MEGABYTES 5

TABLE sender.*;

 

添加RMTRAILS

GGSCI(node1)> add rmttrail ./dirdat/nd, extract dpend, megabytes 100

RMTTRAIL added.

五 配置目標數據庫【含源端業務新增數據模擬】

  1. 數據庫初始化【1】

  2. 數據庫先在目標端進行初始化(使用rman備份恢復的方式)
  3. 源數據庫端進行一些數據的更新,並且刷新幾個日志
  4. 創建GoldenGate數據庫用戶並授權【2】

創建表空間、用戶、賦予dba權限

create tablespace ogg datafile '/u01/app/oracle/oradata/prm/ogg01.dbf' size 1024M;

create user ggate identified by ggate default tablespace ogg temporary tablespace temp;

grant connect,resource,unlimited tablespace to ggate;

grant connect,resource,dba to ggate;

grant execute on utl_file to ggate;

grant select any dictionary,select any table to ggate;

grant alter any table to ggate;

grant flashback any table to ggate;

grant execute on DBMS_FLASHBACK to ggate;

grant insert any table to ggate;

grant delete any table to ggate;

grant update any table to ggate;

 

運行DDL同步需要的腳本

@$GGATE/marker_setup.sql;

@$GGATE/ddl_setup.sql;

@$GGATE/role_setup.sql;

grant GGS_GGSUSER_ROLE to ggate;

@$GGATE/ddl_enable.sql;

 

安裝性能優化包。

SQL> @?/rdbms/admin/dbmspool

 

ddl_pin將觸發器用到的plsql包放進內存中  

SQL> @ddl_pin ggate

 

六 配置目標端進程組

  1. 配置MGR參數mgr

GGSCI(node2) 1> edit param mgr

(粘貼下面這段配置)

PORT 8839

--DYNAMICPORTLIST 8000-9000

--AUTOSTART ER *

AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3

PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3

--PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30

--PURGEMARKERHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

  1. 配置目標端./GLOBALS

GGSCI (node2)> edit params ./GLOBALS

GGSCHEMA ggate

CHECKPOINTTABLE ggate.chkpoint

  1. 添加checkpoint表

需要先退出ggsci

GGSCI (node2)> dblogin userid ggate, password ggate

Successfully logged into database.

 

GGSCI (node2)> add checkpointtable ggate.chkpoint

Successfully created checkpoint table goldengate.chkpoint.

 

  1. 配置復制隊列【4】repnd

增加目標端REP

GGSCI (node2)> add replicat repnd, exttrail ./dirdat/nd, checkpointtable ggate.chkpoint

REPLICAT added.

 

修改REP參數

GGSCI (node2)> edit params repnd

REPLICAT repnd

ASSUMETARGETDEFS

USERID ggate, PASSWORD ggate

DISCARDFILE ./dirrpt/repnd.dsc,APPEND,MEGABYTES 5

DDL INCLUDE ALL

DDLOPTIONS REPORT

BATCHSQL

DBOPTIONS DEFERREFCONST

DBOPTIONS LOBWRITESIZE 102400

DDLERROR DEFAULT DISCARD RETRYOP MAXRETRIES 5 RETRYDELAY 20

MAP sender.* , TARGET sender.* ;

七 啟動進程進行數據庫同步

  1. 啟動源端進程組

start mgr 

  1. 啟動抽取進程和傳輸進程

start extnd

start dpend

 

  1. 啟動目標端進程

start mgr 

start repnd

 

八 數據同步測試

  1. 數據同步測試

源數據庫上創建數據

conn sender/oracle

create table t1 (id number CONSTRAINT id_nn NOT NULL,

name VARCHAR2(40),

PRIMARY KEY (id)

);

insert into t1 values (1,'aaa');

insert into t1 values (2,'bbb');

insert into t1 values (3,'ccc');

insert into t1 values (4,'ddd');

 

create table t2 (id number CONSTRAINT id_nm NOT NULL,

addr VARCHAR2(40),

PRIMARY KEY (id)

);

insert into t2 values (1,'word');

insert into t2 values (2,'now');

insert into t2 values (3,'values');

insert into t2 values (4,'beijing');

 

測試時使用語句

insert into t1 values (5,'eee')

insert into t1 values (6,'fff')

insert into t1 values (7,'ggg')

 

create table t3 as select * from t1 where 1=0;

create table t4 as select * from t1;

alter table t2 rename to t4;

九 環境說明

  1. 環境介紹

十 各程序組配置名稱及參數【成功后記錄】

  1. 源端進程組

管理進程:mgr

參數:

GGSCI(node1) 1> edit param mgr

(粘貼下面這段配置)

PORT 8839

--DYNAMICPORTLIST 8000-9000

--AUTOSTART ER *

AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3

PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3

--PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30

--PURGEMARKERHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

 

GLOBALS:

GGSCI (node1) > edit params ./GLOBALS  

GGSCHEMA ggate

 

 

抽取進程:extnd

參數:

增加EXTRAIL

GGSCI(node1)> add extract extnd, tranlog, begin now

EXTRACT added.

 

修改EXTRAIL參數

GGSCI (GOLDENGATE1) 4> edit params extnd

EXTRACT extnd

SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")

SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/dbhome_1")

SETENV (ORACLE_SID = "prm")

USERID ggate, PASSWORD ggate

EXTTRAIL ./dirdat/nd

DISCARDFILE ./dirdat/extnd.dsc,APPEND,MEGABYTES 5

TRANLOGOPTIONS ALTARCHIVELOGDEST /arch/prm

TRANLOGOPTIONS ALTARCHIVEDLOGFORMAT %t_%s_%r.dbf

DDL INCLUDE ALL

DDLOPTIONS ADDTRANDATA

FETCHOPTIONS, USESNAPSHOT, NOUSELATESTVERSION, MISSINGROW REPORT

STATOPTIONS REPORTFETCH

WARNLONGTRANS 1H, CHECKINTERVAL 5M

TABLE sender.*;

 

添加該extract對應的trail文件,用來存儲抽取的數據。單個文件大小設置為100MB

GGSCI(node1)> add exttrail ./dirdat/nd, extract extnd, megabytes 100

EXTTRAIL added.

 

 

傳輸進程:dpend

參數:

增加PUMP

GGSCI(node1)>add extract dpend, exttrailsource ./dirdat/nd, begin now

EXTRACT added.

 

修改PUMP參數

GGSCI(node1)> edit params dpend

EXTRACT dpend

SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")

USERID ggate, PASSWORD ggate

RMTHOST 192.168.80.166, MGRPORT 8809

RMTTRAIL ./dirdat/nd

DISCARDFILE ./dirdat/dpend.dsc,APPEND,MEGABYTES 5

TABLE sender.*;

 

添加RMTRAILS

GGSCI(node1)> add rmttrail ./dirdat/nd, extract dpend, megabytes 100

RMTTRAIL added.

  1. 目標端進程組

管理進程:mgr

參數:

GGSCI(node2) 1> edit param mgr

(粘貼下面這段配置)

PORT 8839

--DYNAMICPORTLIST 8000-9000

--AUTOSTART ER *

AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3

PURGEOLDEXTRACTS ./dirdat/*,usecheckpoints, minkeepdays 3

--PURGEDDLHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30

--PURGEMARKERHISTORY MINKEEPDAYS 3, MAXKEEPDAYS 5, FREQUENCYMINUTES 30

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

 

GLOBALS:

GGSCI (node2)> edit params ./GLOBALS

GGSCHEMA ggate

CHECKPOINTTABLE ggate.chkpoint

 

 

復制進程:repnd

參數:

增加目標端REP

GGSCI (node2)> add replicat repnd, exttrail ./dirdat/nd, checkpointtable ggate.chkpoint

REPLICAT added.

 

修改REP參數

GGSCI (node2)> edit params repnd

REPLICAT repnd

ASSUMETARGETDEFS

USERID ggate, PASSWORD ggate

DISCARDFILE ./dirrpt/repnd.dsc,APPEND,MEGABYTES 5

DDL INCLUDE ALL

DDLOPTIONS REPORT

BATCHSQL

DBOPTIONS DEFERREFCONST

DBOPTIONS LOBWRITESIZE 102400

DDLERROR DEFAULT DISCARD RETRYOP MAXRETRIES 5 RETRYDELAY 20

MAP sender.* , TARGET sender.* ;

第二部分配置雙向同步(含DDL)

  1. 現目標端數據庫配置【這次目標端和源端和第一部分的正好互換】

確認源庫處於歸檔模式

    因為現源端數據庫是之前目標端數據庫rman初始化過來的,所以這部分忽略

確認源庫為FORCE_LOGGIN

    因為現源端數據庫是之前目標端數據庫rman初始化過來的,所以這部分忽略

確認源庫打開輔助日志

    因為現源端數據庫是之前目標端數據庫rman初始化過來的,所以這部分忽略

 

源庫關閉回收站

    因為現源端數據庫是之前目標端數據庫rman初始化過來的,所以這部分忽略

保證字符集一致

    因為現源端數據庫是之前目標端數據庫rman初始化過來的,所以這部分忽略

UNDO設置

    因為現源端數據庫是之前目標端數據庫rman初始化過來的,所以這部分忽略

安裝DDL_OBJETS

    因為現源端數據庫是之前目標端數據庫rman初始化過來的,所以這部分忽略

  1. 現源端MGR配置

PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPFILES 10

----這個之前配置過 忽略

  1. 現目標端MGR配置

PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPFILES 10

----這個之前配置過 忽略

  1. ./GLOBALS配置(現目標端)

GGSCI (node1)> edit params ./GLOBALS

GGSCHEMA ggate

CHECKPOINTTABLE ggate.chkpoint

GGSCI (node1)>exit

GGSCI (node1)> dblogin userid ggate, password ggate

GGSCI (node1)> add checkpointtable ggate.chkpoint

GGSCI (node1)>exit

  1. 增加EXTRACT(現源端)extd2

增加EXTRACT

add extract extd2, tranlog, begin now

 

修改配置:

GGSCI (node1)> edit params extd2

EXTRACT extd2

SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")

SETENV (ORACLE_HOME = "/u01/app/oracle/product/11.2.0/dbhome_1")

SETENV (ORACLE_SID = "prm")

USERID ggate, PASSWORD ggate

TRANLOGOPTIONS EXCLUDEUSER ggate

IGNOREREPLICATES

EXTTRAIL ./dirdat/et

DISCARDFILE ./dirdat/extd2.dsc,APPEND,MEGABYTES 5

TRANLOGOPTIONS ALTARCHIVELOGDEST /arch/prm

TRANLOGOPTIONS ALTARCHIVEDLOGFORMAT %t_%s_%r.dbf

DDL INCLUDE ALL

DDLOPTIONS ADDTRANDATA

FETCHOPTIONS, USESNAPSHOT, NOUSELATESTVERSION, MISSINGROW REPORT

STATOPTIONS REPORTFETCH

WARNLONGTRANS 1H, CHECKINTERVAL 5M

TABLE sender.*;

 

添加該extract對應的trail文件,用來存儲抽取的數據。單個文件大小設置為100MB

GGSCI (node2)> add exttrail ./dirdat/et,extract extd2,megabytes 100

  1. 修改原源庫【現目標端】EXTRAIL參數

GGSCI (node1)>edit param EXTND

TRANLOGOPTIONS EXCLUDEUSER ggate 

IGNOREREPLICATES

 

去掉以下兩行 不然啟動不起來

TRANLOGOPTIONS ALTARCHIVELOGDEST /arch/prm

TRANLOGOPTIONS ALTARCHIVEDLOGFORMAT %t_%s_%r.dbf

 

  1. 增加PUMP(現源端)dpnd2

增加PUMP

GGSCI (node2)>add extract dpnd2, exttrailsource ./dirdat/et, begin now

 

修改配置:

GGSCI (node2)> edit params dpnd2

EXTRACT dpnd2

SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")

USERID ggate, PASSWORD ggate

RMTHOST 192.168.80.160, MGRPORT 8809

RMTTRAIL ./dirdat/et

DISCARDFILE ./dirdat/dpnd2.dsc,APPEND,MEGABYTES 5

TABLE sender.*;

 

添加遠程TRAIL文件:

GGSCI (node2)> add rmttrail ./dirdat/et, extract dpnd2, megabytes 100

  1. 增加現目標端REP進程repnd2

增加目標端REP進程

GGSCI (node1)> add replicat repnd2, exttrail ./dirdat/et, checkpointtable ggate.chkpoint

 

 

修改配置參數:

GGSCI (node1)> edit params repnd2

REPLICAT repnd2

ASSUMETARGETDEFS

USERID ggate, PASSWORD ggate

DISCARDFILE ./dirrpt/repnd2.dsc,APPEND,MEGABYTES 5

DDL INCLUDE ALL

DDLOPTIONS REPORT

BATCHSQL

DBOPTIONS DEFERREFCONST

DBOPTIONS LOBWRITESIZE 102400

DDLERROR DEFAULT DISCARD RETRYOP MAXRETRIES 5 RETRYDELAY 20

MAP sender.* , TARGET sender.* ;

  1. 在現源端增加傳輸表

GGSCI (node2)>exit

GGSCI (node2)> dblogin userid ggate, password ggate

GGSCI (node2)> add trandata sender.*

GGSCI (node2)>exit

  1. 查現現源庫SCN

SQL> select current_scn from v$database;

1297690

  1. 啟動GG各進程【注意啟動現目標端repnd2進程

停止兩端所有近程

GGSCI (node1)> stop EXTND

GGSCI (node1)> stop DPEND

GGSCI (node1)> stop mgr

 

GGSCI (node2)> stop repnd

GGSCI (node2)> stop mgr

重啟兩端所有進程

node1:

start mgr

start EXTND

start DPEND

start repnd2, aftercsn 1297690

 

 

node2:

start mgr

start repnd

strat extd2

start dpnd2

  1. 數據測試

測試時使用語句

insert into t1 values (6,'fff');

insert into t1 values (7,'ggg');

insert into t1 values (7,'hhh');

insert into t1 values (8,'eee');

insert into t1 values (9,'fff');

insert into t1 values (10,'ggg');

 

create table t5 as select * from t1 where 1=0;

create table t4 as select * from t1;

conn / as sysdba

alter system switch logfile;

create tablespace test01 datafile '/u01/app/oracle/oradata/prm/test01.dbf' size 5m;

 

create table t6 as select * from t1;

alter table t6 rename to t7;

conn / as sysdba

alter system switch logfile;

drop tablespace test01 including contents and datafiles;

 

 

alter table t7 rename to t6;

 

 

十一 附件

  1. DDL同步

 

GoldenGate的DDL同步只支持兩邊一致的數據庫,限制條件較多(如不能進行字段映射、轉換等),具體可以參考官方文檔。DDL的抓取不是通過日志抓取來捕獲的,而是通過觸發器來實現,所以對源數據庫的性能影響要比單純的數據抓取要大很多,可謂屏棄了GoldenGate的優勢。盡量不要使用GoldenGate的DDL復制功能,在大多數業務系統中,實際上不會有頻繁的數據庫結構變動,完全可以通過手工的方式進行維護。確實有大量DDL操作的環境,如果可以,還是推薦物理DG之類的替換方案;確實要使用GoldenGate的DDL復制,那么請詳細參考官方文檔的限制和說明。

--以上主要為個人意見,有不同看法的請無視

 

開啟DDL復制的基本配置步驟為:

(1)關閉ORACLE的回收站功能。

(2)選擇一個數據庫schema存放支持DDL的GoldenGate對象,運行相應創建腳本。

(3)編輯globals參數文件。

(4)修改extl和repl的配置文件

 

 

具體操作步驟:

(1)關閉數據庫回收站:

SQL>alter system set recyclebin=off scope=both;

 

(2)編輯globals參數文件:

GGSCI>edit param ./globals

添加以下內容后保存:

GGSCHEMA ddw --標明支持DDL的GG對象存放在哪個schema下

 

(3)執行創建腳本:

首先需要命令行進入GG安裝目錄下,然后再運行sqlplus執行腳本,如果不進入目錄下腳本執行會報錯(應該是由於GG腳本中子腳本嵌套使用相對路徑的問題所造成)。

SQL>@marker_setup.sql --提示輸入目標schema

SQL>@ddl_setup.sql --提示輸入目標schema,輸入initialsetup最后輸入yes

SQL>@role_setup.sql

SQL>grant GGS_GGSUSER_ROLE to ddw; --不進行該步賦權后面起進程會報錯

SQL>@ddl_enable.sql --使觸發器生效

 

(4)修改提取進程和復制進程的配置文件,分別加入ddl include all屬性。

此時repl必須指定assumetargetdefs屬性,這表明只有兩邊數據庫結構一致的情況下才可以啟用DDL復制。另外,開啟DDL同步不能再只映射單表了,對整個模式下的對象都有效。

加入DDL復制之后,數據復制的lag明顯增加了。

 

 

清除數據庫中DDL復制的設置

在實際測試中,由於我在同一個數據庫中進行映射,映射表結構不一致,導致進程報了一系列的錯誤。這個時候需要把通過腳本創建的GG對象中的數據清空,安裝目錄下只提供了清除對象的腳本,可以如下操作:

首先要求把所有的GG進程停掉,包括mgr進程

SQL>@ddl_disable.sql --首先使DDL觸發器失效

SQL>@ddl_remove.sql

SQL>@marker_remove.sql

role_setup.sql沒有對應的清除腳本,但是這塊不影響配置信息的清除

然后重新再創建腳本。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM