使用OGG,兩個Oracle庫之間單向同步資料,oggoracle

來源:互聯網
上載者:User

使用OGG,兩個Oracle庫之間單向同步資料,oggoracle

配置:來源資料庫100.100.100.21        執行個體名dbsid2

            目標資料庫100.100.100.41      執行個體名db1

實驗目標:來源資料庫中的 scott使用者 emp表同步到目標資料庫 scott中的test表

安裝包為檔案ogg112101_fbo_ggs_Linux_x64_ora10g_64bit.zip

解壓之後,然後再tar解壓tar -xvf fbo_ggs_Linux_x64_ora10g_64bit.tar -C  /oracle/ogg/

1.       來源資料庫(dbsid2)配置:

(1)       使用者權限:grant dba to scott

(2)       開啟歸檔模式

(3)附加日誌:
           alter database add supplemental log data;

     alter database force logging;

   (4)將目標資料庫db1資訊添加到 tnsnames.ora中

2.       目標資料庫(db1)配置:

(1)       scott使用者建立空表test,表結構和emp相同

(2)       開啟歸檔模式

(3)       附加日誌:

alter database add supplemental log data;

alter database force logging;

(4)       將來源資料庫(dbsid2)的資訊添加到 tnsnames.ora中

3.       來源資料庫伺服器 goldengate安裝

(1)       解壓到/oracle/ogg目標下面

(2)       運行./ggsci

(3)       建立子目錄: GGSCI (host2) 1> create subdirs

Creating subdirectories under current directory /oracle/ogg

Parameter files                /oracle/ogg/dirprm: already exists

Report files                   /oracle/ogg/dirrpt: created

Checkpoint files               /oracle/ogg/dirchk: created

Process status files           /oracle/ogg/dirpcs: created

SQL script files               /oracle/ogg/dirsql: created

Database definitions files     /oracle/ogg/dirdef: created

Extract data files             /oracle/ogg/dirdat: created

(4)       配置字元管理的Port參數

GGSCI (host2) 6> edit params mgr

輸入: PORT 7809 然後儲存

檢查輸入情況:

GGSCI (host2) 7> view params mgr

PORT 7809

(5)       啟動Start mgr:

GGSCI (host2) 8> start mgr

MGR is already running.

GGSCI (host2) 9> info mgr

Manager is running (IP port host2.7809).

4.       目標資料庫伺服器 goldengate安裝(和源目標伺服器相同)

(1)       解壓到/oracle/ogg目標下面

(2)        運行./ggsci

(3)       建立子目錄: GGSCI (host2) 1> create subdirs

Creating subdirectories under current directory /oracle/ogg

Parameter files                /oracle/ogg/dirprm: already exists

Report files                   /oracle/ogg/dirrpt: created

Checkpoint files               /oracle/ogg/dirchk: created

Process status files           /oracle/ogg/dirpcs: created

SQL script files               /oracle/ogg/dirsql: created

Database definitions files     /oracle/ogg/dirdef: created

Extract data files             /oracle/ogg/dirdat: created

(4)      配置字元管理的Port參數

GGSCI (host2) 6> edit params mgr

輸入: PORT 7809 然後儲存

檢查輸入情況:

GGSCI (host2) 7> view params mgr

PORT 7809

(4)       啟動Start mgr:

GGSCI (host2) 8> start mgr

MGR is already running.

GGSCI (host2) 9> info mgr

Manager is running (IP port host2.7809).

5.       配置來源資料庫伺服器(dbsid2)傳輸進程extract

(1)添加名字為source1的進程

GGSCI (host2) 19> add extract source1,sourceistable  

EXTRACT added.

(3)       修改source1參數

GGSCI (host2) 20> edit params source1

添加如下,並且儲存

extract source1

setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

userid scott,password tiger                        

rmthost 100.100.100.41,mgrport 7809

rmttask replicat,group target1

table scott.emp;

註:1、需要複製表的使用者名稱為scott,密碼tiger

    2、目標資料庫(db1)的IP為100.100.100.41,連接埠為7809

    3. 目標資料庫(db1)的接收進程名字為 target1

    4.  需要複製的table為: scott.emp表。

查看修改的參數

GGSCI (host2) 21> view params source1

6.       配置目標資料庫db1 replicat接收進程

(1)       添加replicat進程,名字為source1

GGSCI (host2) 9> add replicat target1,specialrun

REPLICAT added.

(2)       添加修改參數:GGSCI (host2) 13> edit params target1

replicat target1

setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

assumetargetdefs

userid scott,password tiger

discardfile ./dirrpt/target1.dsc,purge

map scott.emp,target scott.test;

註:1. 目標資料庫帳號為scott,tiger

         2. 將來源資料庫的表scott.emp同步到scott.test表中

        查看修改之後

        GGSCI (host2) 1> view params target1

7.       來源資料庫(dbsid2)開始同步

(1)       開始同步

GGSCI (host2) 11> start extract source1

 

Sending START request to MANAGER ...

EXTRACT SOURCE1 starting

(2)       監控同步過程

GGSCI (host2) 12> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING   

 

(3)       來源資料庫查看同步處理記錄

GGSCI (host2) 13> view report source1

8.       目標資料庫(db1)查看同步情況

SQL> select * from test;


怎實現兩個Oracle資料庫的資料同步?

執行定時的 exp 資料庫A, 然後 imp 資料庫B
 
急,怎在兩個oracle資料庫之間的相同結構的兩個表實現資料的同步更新,dblink已經建好了

資料類型都一樣的麼,可以考慮用觸發器實現 以oracle資料庫為例 有兩張表test和test01 欄位有id name age sal
create or replace trigger TRIG_UPDATE_TEST
after insert or delete or update on test
for each row
declare
l_id varchar2(50);
l_name varchar2(50);
l_age number;
l_sal number;

begin
if(deleting or updating) then
delete test01
where id=:old.id;
if(deleting) then
return;
end if;
end if;

l_id:=:new.id;
l_name:=:new.name;
l_age:=:new.age;
l_sal:=:new.sal;
begin
insert into test01(id,name,age,sal) values(l_id,l_name,l_age,l_sal);
end;
end TRIG_UPDATE_TEST;
再簡化點就是在觸發器中不聲明變數,直接用:new.欄位代替
哎,沒分啊
 

相關文章

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.