兩臺ORACLE之間配置OGG-未配置同步DDL
環境 :
資料庫版本Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
VBOX虛擬機器
主機名、資料庫例項、庫名及IP規劃:
源主機IP:192.168.1.213 HOSTNAME:bys001.oel.com
目標主機IP:192.168.1.213 HOSTNAME:bys2.oel.com
例項名和資料庫名兩臺主機一樣,兩臺主機的資料庫結構完全一樣。
採用先配置源主機,再克隆一臺修改一下配置做為目標機。
其中源主機已經安裝好ORACLE資料庫軟體並已經建立資料庫。
整個配置分6步:
1.修改環境變數,建立目錄
2.上傳OGG軟體解壓並安裝
3.查詢資料庫名、例項名並開啟歸檔模式,強制產生日誌等
4.在資料庫中為OGG建立使用者
5.開始配置OGG的同步--未配置DDL的同步
6.測試test使用者的test1表做DML操作能否同步
######################################
增加這一句:
export OGG_HOME=/u01/ogg
".bash_profile" 24L, 560C written
[oracle@bys001 ~]$ source .bash_profile
[oracle@bys001 ~]$ cd /u01
[oracle@bys001 u01]$ mkdir ogg
[oracle@bys001 u01]$ ls
admin checkpoints oradata
app diag oraInventory
archbys1 flash_recovery_area
cfgtoollogs ogg
[oracle@bys001 u01]$ echo $OGG_HOME
/u01/ogg
[oracle@bys001 ~]$ ls ogg112101_fbo_ggs_Linux_x86_ora11g_32bit.zip ogg112101_fbo_ggs_Linux_x86_ora11g_32bit.zip
[oracle@bys001 ~]$ unzip ogg112101_fbo_ggs_Linux_x86_ora11g_32bit.zip
[oracle@bys001 ~]$ ls fbo_ggs_Linux_x86_ora11g_32bit.tar
fbo_ggs_Linux_x86_ora11g_32bit.tar
[oracle@bys001 ~]$ tar -xvf fbo_ggs_Linux_x86_ora11g_32bit.tar -C $OGG_HOME
開啟 ggsci時的一個錯誤解決:
我這裡在使用ggsci遇到錯誤因為找不到庫檔案報錯:
[oracle@oel-01 ogg]$ ./ggsci
./ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file: No such file or directory
建議在使用前先在OGG的目錄執行:[oracle@bys001 ogg]$ ldd ggsci
如果庫檔案全在,可以直接執行[oracle@bys001 ogg]$ ./ggsci
如果缺少庫檔案,可以find / -name libnnz11.so 這樣在整個/目錄下查詢。
根據查出的庫檔案位置,做一個軟連結就可以了,要使用 root賬戶。如:
[root@oel-01 ~]# ln -s /u01/app/oracle/product/11.2.0/dbhome_1/lib/libnnz11.so /lib/libnnz11.so
建立OGG目錄:要注意在OGG的安裝目錄下呼叫
[oracle@bys001 ogg]$ ./ggsci
GGSCI (bys001.oel.com) 2> create subdirs
Creating subdirectories under current directory /u01/ogg
Parameter files /u01/ogg/dirprm: already exists
Report files /u01/ogg/dirrpt: created
Checkpoint files /u01/ogg/dirchk: created
Process status files /u01/ogg/dirpcs: created
SQL script files /u01/ogg/dirsql: created
Database definitions files /u01/ogg/dirdef: created
Extract data files /u01/ogg/dirdat: created
Temporary files /u01/ogg/dirtmp: created
Stdout files /u01/ogg/dirout: created
只需要在開啟的視窗寫入: PORT 7809就可以了,使用是和VI一樣。
GGSCI (bys001.oel.com) 4> edit param mgr
PORT 7809
GGSCI (bys001.oel.com) 7> start mgr
Manager started.
GGSCI (bys001.oel.com) 8> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
OGG安裝完成。因為後面才會克隆虛擬機器,所以這裡只需要做一次安裝哈哈。
OGG同步的配置在第6步。
###############################################
col open_mode for a10
col name for a10
col db_unique_name for a10
BYS@bys1>select * from user_role_privs;
USERNAME
------------------------------------------------------------
GRANTED_ROLE ADMIN_ DEFAUL OS_GRA
------------------------------------------------------------ ------ ------ ------
BYS DBA
BYS@bys1>select open_mode,name,db_unique_name,log_mode from v$database;
OPEN_MODE NAME DB_UNIQUE_ LOG_MODE
---------- ---------- ---------- ------------------------
READ WRITE BYS1 bys1 ARCHIVELOG
BYS@bys1>alter database force logging;
Database altered.
BYS@bys1>alter database add supplemental log data;
Database altered.
BYS@bys1>select log_mode,supplemental_log_data_min,force_logging from v$database;
LOG_MODE SUPPLEMENTAL_LOG FORCE_
------------------------ ---------------- ------
ARCHIVELOG YES YES
BYS@bys1>alter database add supplemental log data (primary key,unique,foreign key) columns;
Database altered.
BYS@bys1> select supplemental_log_data_min,supplemental_log_data_pk,supplemental_log_data_ui from v$database;
SUPPLEMENTAL_LOG SUPPLE SUPPLE
---------------- ------ ------
YES YES YES
#######################################################
Tablespace created.
BYS@bys1>create user ogg identified by ogg default tablespace ogg;
User created.
BYS@bys1>grant dba to ogg;
Grant succeeded.
BYS@bys1>conn ogg/ogg
Connected.
OGG@bys1>select * from user_role_privs;
USERNAME
------------------------------------------------------------
GRANTED_ROLE ADMIN_ DEFAUL OS_GRA
------------------------------------------------------------ ------ ------ ------
OGG
DBA NO YES NO
################虛擬機器關機,再克隆一個做備機。備機需要修改IP,主機名等資訊,參照開頭的環境中的規劃。
###################################################
add extract ext1,tranlog, begin now
add exttrail /u01/ogg/dirdat/lt, extract ext1
edit params ext1
在開啟的編輯視窗寫入以下五行:
extract ext1
userid ogg, password ogg
rmthost 192.168.1.213, mgrport 7809
rmttrail /u01/ogg/dirdat/lt
table test.*;
此時源端的狀態是:
GGSCI (bys001.oel.com) 15> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT STOPPED EXT1 00:00:00 00:12:16
#######################################3
在編輯視窗輸入以下兩行:
GGSCHEMA ogg
CHECKPOINTTABLE ogg.checkpoint
這裡使用前面為OGG建立的使用者來登陸,同時要注意路徑和OGG安裝路徑的對照。
dblogin userid ogg,password ogg
add checkpointtable ogg.checkpoint
add replicat rep1,exttrail /u01/ogg/dirdat/lt, checkpointtable ogg.checkpoint
edit params rep1
在彈出編輯視窗輸入以下五行:---我這裡只設定了同步test使用者的test1表--這裡的使用者和表名在下一步的測試中再建立。
replicat rep1
ASSUMETARGETDEFS
userid ogg,password ogg
discardfile /u01/ogg/dirdat/rep1_discard.txt,append, megabytes 10
map test.test1, target test.test1;
源端和目標端配置完成
############################
執行狀態:RUNNING是正常。
這裡的執行狀態如果是ABENDED,則需要檢視日誌,定位一下是哪裡的錯誤了。
GGSCI (bys001.oel.com) 18> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT1 00:00:00 00:26:26
GGSCI (bys2.oel.com) 26> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:02
可以看到兩個庫都已經成功執行
---補充:如果配置錯誤,可以刪除重新來再進行配置。
方法如下:
GGSCI (bys2.oel.com) 29> dblogin userid ggate,password ggate
GGSCI (bys2.oel.com) 30> delete extract ext1
如果已經在執行,需要先停止:
GGSCI (bys2.oel.com) 46> stop ext1
GGSCI (bys2.oel.com) 48> delete ext1
#####################################
TEST@bys1>conn test/test
Connected.
TEST@bys1>create table test1(aa varchar2(10) constraint pk_aa primary key);
Table created.
TEST@bys1>set time on
22:42:46 TEST@bys1>insert into test1 values('ogg-test');
1 row created.
22:42:56 TEST@bys1>commit;
Commit complete.
22:42:59 TEST@bys1>select * from test1;
AA
--------------------
ogg-test
TEST@bys2>create table test1(aa varchar2(10) primary key);
Table created.
TEST@bys2>set time on
22:42:13 TEST@bys2>select * from test1;
no rows selected
22:42:17 TEST@bys2>
22:43:01 TEST@bys2>select * from test1;
AA
--------------------
ogg-test
1 row created.
22:45:45 TEST@bys1>commit;
Commit complete.
22:45:50 TEST@bys1>select * from test1;
AA
--------------------
ogg-ok
ogg-test
AA
--------------------
ogg-ok
ogg-test
AA
--------------------
ogg-ok
ogg-test
TEST@bys1>delete test1 where aa='ogg-test';
1 row deleted.
TEST@bys1>set time on
23:18:42 TEST@bys1>commit;
Commit complete.
AA
--------------------
ogg-ok
###############################################
Table created.
22:48:36 TEST@bys1>select * from test2;
no rows selected
目標端:
22:46:01 TEST@bys2>select * from test2;
select * from test2
*
ERROR at line 1:
ORA-00942: 表或檢視不存在
資料庫版本Oracle Database 11g Enterprise Edition Release 11.2.0.1.0
VBOX虛擬機器
主機名、資料庫例項、庫名及IP規劃:
源主機IP:192.168.1.213 HOSTNAME:bys001.oel.com
目標主機IP:192.168.1.213 HOSTNAME:bys2.oel.com
例項名和資料庫名兩臺主機一樣,兩臺主機的資料庫結構完全一樣。
採用先配置源主機,再克隆一臺修改一下配置做為目標機。
其中源主機已經安裝好ORACLE資料庫軟體並已經建立資料庫。
整個配置分6步:
1.修改環境變數,建立目錄
2.上傳OGG軟體解壓並安裝
3.查詢資料庫名、例項名並開啟歸檔模式,強制產生日誌等
4.在資料庫中為OGG建立使用者
5.開始配置OGG的同步--未配置DDL的同步
6.測試test使用者的test1表做DML操作能否同步
######################################
1.修改環境變數,建立目錄
[oracle@bys001 ~]$ vi .bash_profile增加這一句:
export OGG_HOME=/u01/ogg
".bash_profile" 24L, 560C written
[oracle@bys001 ~]$ source .bash_profile
[oracle@bys001 ~]$ cd /u01
[oracle@bys001 u01]$ mkdir ogg
[oracle@bys001 u01]$ ls
admin checkpoints oradata
app diag oraInventory
archbys1 flash_recovery_area
cfgtoollogs ogg
[oracle@bys001 u01]$ echo $OGG_HOME
/u01/ogg
2.上傳OGG軟體解壓並安裝
----使用SSH SECURE SHELL上傳很好用。[oracle@bys001 ~]$ ls ogg112101_fbo_ggs_Linux_x86_ora11g_32bit.zip ogg112101_fbo_ggs_Linux_x86_ora11g_32bit.zip
[oracle@bys001 ~]$ unzip ogg112101_fbo_ggs_Linux_x86_ora11g_32bit.zip
[oracle@bys001 ~]$ ls fbo_ggs_Linux_x86_ora11g_32bit.tar
fbo_ggs_Linux_x86_ora11g_32bit.tar
[oracle@bys001 ~]$ tar -xvf fbo_ggs_Linux_x86_ora11g_32bit.tar -C $OGG_HOME
開啟 ggsci時的一個錯誤解決:
我這裡在使用ggsci遇到錯誤因為找不到庫檔案報錯:
[oracle@oel-01 ogg]$ ./ggsci
./ggsci: error while loading shared libraries: libnnz11.so: cannot open shared object file: No such file or directory
建議在使用前先在OGG的目錄執行:[oracle@bys001 ogg]$ ldd ggsci
如果庫檔案全在,可以直接執行[oracle@bys001 ogg]$ ./ggsci
如果缺少庫檔案,可以find / -name libnnz11.so 這樣在整個/目錄下查詢。
根據查出的庫檔案位置,做一個軟連結就可以了,要使用 root賬戶。如:
[root@oel-01 ~]# ln -s /u01/app/oracle/product/11.2.0/dbhome_1/lib/libnnz11.so /lib/libnnz11.so
建立OGG目錄:要注意在OGG的安裝目錄下呼叫
[oracle@bys001 ogg]$ ./ggsci
GGSCI (bys001.oel.com) 2> create subdirs
Creating subdirectories under current directory /u01/ogg
Parameter files /u01/ogg/dirprm: already exists
Report files /u01/ogg/dirrpt: created
Checkpoint files /u01/ogg/dirchk: created
Process status files /u01/ogg/dirpcs: created
SQL script files /u01/ogg/dirsql: created
Database definitions files /u01/ogg/dirdef: created
Extract data files /u01/ogg/dirdat: created
Temporary files /u01/ogg/dirtmp: created
Stdout files /u01/ogg/dirout: created
只需要在開啟的視窗寫入: PORT 7809就可以了,使用是和VI一樣。
GGSCI (bys001.oel.com) 4> edit param mgr
PORT 7809
GGSCI (bys001.oel.com) 7> start mgr
Manager started.
GGSCI (bys001.oel.com) 8> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
OGG安裝完成。因為後面才會克隆虛擬機器,所以這裡只需要做一次安裝哈哈。
OGG同步的配置在第6步。
###############################################
3.查詢資料庫名、例項名並開啟歸檔模式,強制產生日誌等
我的操作主要是使用的BYS這個DBA使用者來進行配置資料庫。col open_mode for a10
col name for a10
col db_unique_name for a10
BYS@bys1>select * from user_role_privs;
USERNAME
------------------------------------------------------------
GRANTED_ROLE ADMIN_ DEFAUL OS_GRA
------------------------------------------------------------ ------ ------ ------
BYS DBA
BYS@bys1>select open_mode,name,db_unique_name,log_mode from v$database;
OPEN_MODE NAME DB_UNIQUE_ LOG_MODE
---------- ---------- ---------- ------------------------
READ WRITE BYS1 bys1 ARCHIVELOG
BYS@bys1>alter database force logging;
Database altered.
BYS@bys1>alter database add supplemental log data;
Database altered.
BYS@bys1>select log_mode,supplemental_log_data_min,force_logging from v$database;
LOG_MODE SUPPLEMENTAL_LOG FORCE_
------------------------ ---------------- ------
ARCHIVELOG YES YES
BYS@bys1>alter database add supplemental log data (primary key,unique,foreign key) columns;
Database altered.
BYS@bys1> select supplemental_log_data_min,supplemental_log_data_pk,supplemental_log_data_ui from v$database;
SUPPLEMENTAL_LOG SUPPLE SUPPLE
---------------- ------ ------
YES YES YES
#######################################################
4.在資料庫中為OGG建立使用者:
BYS@bys1>create tablespace ogg datafile '/u01/oradata/bys1/ogg01.dbf' size 100m;Tablespace created.
BYS@bys1>create user ogg identified by ogg default tablespace ogg;
User created.
BYS@bys1>grant dba to ogg;
Grant succeeded.
BYS@bys1>conn ogg/ogg
Connected.
OGG@bys1>select * from user_role_privs;
USERNAME
------------------------------------------------------------
GRANTED_ROLE ADMIN_ DEFAUL OS_GRA
------------------------------------------------------------ ------ ------ ------
OGG
DBA NO YES NO
################虛擬機器關機,再克隆一個做備機。備機需要修改IP,主機名等資訊,參照開頭的環境中的規劃。
###################################################
5.開始配置OGG的同步--未配置DDL的同步
主庫的配置:
按順序執行以下操作:add extract ext1,tranlog, begin now
add exttrail /u01/ogg/dirdat/lt, extract ext1
edit params ext1
在開啟的編輯視窗寫入以下五行:
extract ext1
userid ogg, password ogg
rmthost 192.168.1.213, mgrport 7809
rmttrail /u01/ogg/dirdat/lt
table test.*;
此時源端的狀態是:
GGSCI (bys001.oel.com) 15> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT STOPPED EXT1 00:00:00 00:12:16
#######################################3
目標庫的配置:
edit params ./GLOBAL在編輯視窗輸入以下兩行:
GGSCHEMA ogg
CHECKPOINTTABLE ogg.checkpoint
這裡使用前面為OGG建立的使用者來登陸,同時要注意路徑和OGG安裝路徑的對照。
dblogin userid ogg,password ogg
add checkpointtable ogg.checkpoint
add replicat rep1,exttrail /u01/ogg/dirdat/lt, checkpointtable ogg.checkpoint
edit params rep1
在彈出編輯視窗輸入以下五行:---我這裡只設定了同步test使用者的test1表--這裡的使用者和表名在下一步的測試中再建立。
replicat rep1
ASSUMETARGETDEFS
userid ogg,password ogg
discardfile /u01/ogg/dirdat/rep1_discard.txt,append, megabytes 10
map test.test1, target test.test1;
源端和目標端配置完成
############################
啟動源庫:
start extract ext1執行狀態:RUNNING是正常。
這裡的執行狀態如果是ABENDED,則需要檢視日誌,定位一下是哪裡的錯誤了。
GGSCI (bys001.oel.com) 18> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT1 00:00:00 00:26:26
啟動目標庫:
start replicat rep1GGSCI (bys2.oel.com) 26> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:02
可以看到兩個庫都已經成功執行
---補充:如果配置錯誤,可以刪除重新來再進行配置。
方法如下:
GGSCI (bys2.oel.com) 29> dblogin userid ggate,password ggate
GGSCI (bys2.oel.com) 30> delete extract ext1
如果已經在執行,需要先停止:
GGSCI (bys2.oel.com) 46> stop ext1
GGSCI (bys2.oel.com) 48> delete ext1
#####################################
6.測試test使用者的test1表做DML操作能否同步
在主庫的操作:
建立TEST使用者並建表插入資料如下:---注意建立的表最好帶主鍵,好像無主鍵會出現不同步的問題,沒有詳細實驗了。TEST@bys1>conn test/test
Connected.
TEST@bys1>create table test1(aa varchar2(10) constraint pk_aa primary key);
Table created.
TEST@bys1>set time on
22:42:46 TEST@bys1>insert into test1 values('ogg-test');
1 row created.
22:42:56 TEST@bys1>commit;
Commit complete.
22:42:59 TEST@bys1>select * from test1;
AA
--------------------
ogg-test
在目標庫上操作:
資料庫中要建一個TEST使用者和表。TEST@bys2>create table test1(aa varchar2(10) primary key);
Table created.
TEST@bys2>set time on
22:42:13 TEST@bys2>select * from test1;
no rows selected
22:42:17 TEST@bys2>
22:43:01 TEST@bys2>select * from test1;
AA
--------------------
ogg-test
再次在源庫插入:
22:45:37 TEST@bys1>insert into test1 values('ogg-ok');1 row created.
22:45:45 TEST@bys1>commit;
Commit complete.
22:45:50 TEST@bys1>select * from test1;
AA
--------------------
ogg-ok
ogg-test
在目標庫查詢
22:45:59 TEST@bys2>select * from test1;AA
--------------------
ogg-ok
ogg-test
做刪除操作:
TEST@bys1>select * from test1;AA
--------------------
ogg-ok
ogg-test
TEST@bys1>delete test1 where aa='ogg-test';
1 row deleted.
TEST@bys1>set time on
23:18:42 TEST@bys1>commit;
Commit complete.
目標端查詢:
23:18:47 TEST@bys2>select * from test1;AA
--------------------
ogg-ok
###############################################
DDL操作不能同步:
22:45:54 TEST@bys1>create table test2(aa varchar2(10) primary key);Table created.
22:48:36 TEST@bys1>select * from test2;
no rows selected
目標端:
22:46:01 TEST@bys2>select * from test2;
select * from test2
*
ERROR at line 1:
ORA-00942: 表或檢視不存在
相關文章
- 【GoldenGate】Oracle GoldenGate(三) DDL同步配置GoOracle
- Oracle 10g RAC之配置時間同步Oracle 10g
- 兩臺Linux伺服器之間配置互信Linux伺服器
- 配置GoldenGate啟動DDL支援同步DDL操作Go
- GoldenGate配置(三)之DDL複製配置Go
- 為Oracle配置DDL複製Oracle
- NTP配置時間同步
- 配置支援DML和DDL操作同步的GoldenGateGo
- Oracle 11G RAC ntp時間同步配置Oracle
- Linux 時間同步配置Linux
- oracle goldengate 配置DML&DDL實驗OracleGo
- 在一臺機器配置兩個listener(Oracle)(轉)Oracle
- 兩臺伺服器時間同步(NTP)伺服器
- 兩臺linux機器時間同步Linux
- 在RAC中配置NTPD時間同步
- goldengate ddl 配置說明Go
- goldengate配置DDL複製Go
- Hadoop叢集是配置時間同步!Hadoop
- oracle資料庫配置goldengate同步Oracle資料庫Go
- rsync同步配置
- 兩個Oracle配置問題的記錄Oracle
- Oracle兩表之間資料更新Oracle
- Nginx 兩臺伺服器配置負載均衡!!!Nginx伺服器負載
- 配置rhel4的rdate時間同步服務
- Mysql半同步配置MySql
- 【GoldenGate】Oracle GoldenGate(二) 雙向同步配置GoOracle
- Oracle在Linux下使用非同步IO配置OracleLinux非同步
- Mariadb之半同步複製叢集配置
- Oracle 之 配置HugePages記憶體Oracle記憶體
- OGG實現兩臺oracle資料庫的同步Oracle資料庫
- 配置ogg ddl 執行 ddl_setup 報錯處理方法
- 在兩個資料庫之間進行資料同步資料庫
- MySQL主從同步配置MySql主從同步
- Mysql主主同步-配置資料同步MySql
- React之配置元件的props(兩個例項)React元件
- Oracle在Linux下使用非同步IO(aio)配置(轉)OracleLinux非同步AI
- 不同Oracle資料庫之間的資料同步Oracle資料庫
- RAC時間同步的兩種方式