环境 :
数据库版本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 rep1
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
#####################################
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: 表或视图不存在
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net