Goldengate 12c跨平台同步Oracle 12C
GoldenGate 12C源端为Linux 6.4和目标端为window2012R2的数据同步(单向,单实例)
1.对生产系统影响小:实时读取交易日志,以低资源占用实现大交易量数据实时复制;
2.以交易为单位复制,保证交易一致性:只同步已提交的数据;
3.高性能,智能的交易重组和操作合并,使用数据库本地接口访问,并行处理体系,灵活的拓扑结构:支持一对一、一对多、多对一、多对多和双向复制等。
1 环境准备
1.1 环境信息
| 角色 | 操作系统 | IP地址 | Oracle数据库版本 | 数据库SID | Goldengate(OGG)版本 |
|---|---|---|---|---|---|
| 源端 | Red Hat Enterprise Linux Server release 6.4 (Santiago) 2.6.32-358.el6.x86_64 | 192.168.11.223 | Version12.2.0.1.0 | PROD | Version 12.3.0.1.4 |
| 目标端 | Windows Server2012 R2 Datecenter [版本 6.3.9600]) | 192.168.11.212 | Version12.1.0.1.0 | orcl12c | Version 12.3.0.1.5 |
1.2 环境平台准备
操作系统,数据库部署不详细写,各自安装,不会百度一大堆
1.3 环境核查(源+目标)
在生产环境中要检查很多东西,不列举。实验中都是新环境,就检查下下面两项。
1.3.1 检查监听
提示:有网上资料说,源端和目标端的监听要一样,在监听文件(tnsnames.ora,listener.ora)需要配置成一样,也就在监听文件下互相加监听内容,这个没有测试,实验中只是各种的监听状态正常。
源端:
检查tnsnames.ora
vi tnsnames.ora
PROD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = PROD)
)
)
LISTENER_PROD =
(ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
注意:HOST=[主机名或主机本地IP]
检查listener.ora
listener.ora:用于服务端,用于提示服务端监听哪些实例。
cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
检查监听状态:lsnrctl status
[oracle@enmoedu1 admin]$ lsnrctl status
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 03-JAN-2023 16:38:01
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=enmoedu1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date 03-JAN-2023 16:03:17
Uptime 0 days 0 hr. 34 min. 43 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/enmoedu1/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=enmoedu1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=enmoedu1)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/PROD/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "PROD.enmoedu.com" has 1 instance(s).
Instance "PROD", status READY, has 1 handler(s) for this service...
Service "PRODXDB.enmoedu.com" has 1 instance(s).
Instance "PROD", status READY, has 1 handler(s) for this service...
The command completed successfully
ping测试:
[oracle@enmoedu1 admin]$ tnsping PROD
TNS Ping Utility for Linux: Version 12.2.0.1.0 - Production on 03-JAN-2023 16:38:40
Copyright (c) 1997, 2016, Oracle. All rights reserved.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = enmoedu1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = PROD)))
OK (0 msec)
监听相关文件存放ORACLE_HOME/network/admin/目录下listener.ora , tnsnames.ora ;[ORACLE_HOME根据个人部署路径,不一定和实验一样]
cd $ORACLE_HOME/network/admin/
[oracle@enmoedu1 admin]$ ls
listener.ora samples shrept.lst tnsnames.ora
目标端:
检查tnsnames文件配置:
ORCL12C =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl12c)
)
)
LISTENER_ORCL12C =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
注意:HOST = [主机名,主机本地IP]
检查listener.ora 文件配置
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
检查监听状态:lsnrctl status
PS C:\Users\Administrator> lsnrctl status
LSNRCTL for 64-bit Windows: Version 12.1.0.1.0 - Production on 05-1月 -2023 22:18:07
Copyright (c) 1991, 2013, Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for 64-bit Windows: Version 12.1.0.1.0 - Production
启动日期 05-1月 -2023 17:35:19
正常运行时间 0 天 4 小时 42 分 47 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 C:\app\oracle\product\12.1.0\dbhome_1\network\admin\listener.ora
监听程序日志文件 C:\app\oracle\diag\tnslsnr\WIN-812T4TNGO4M\listener\alert\log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=WIN-812T4TNGO4M)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=WIN-812T4TNGO4M)(PORT=5500))(Security=(my_wallet_directory=C:\APP\ORACLE\ad
min\orcl12c\xdb_wallet))(Presentation=HTTP)(Session=RAW))
服务摘要..
服务 "CLRExtProc" 包含 1 个实例。
实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "orcl12c" 包含 1 个实例。
实例 "orcl12c", 状态 READY, 包含此服务的 1 个处理程序...
服务 "orcl12cXDB" 包含 1 个实例。
实例 "orcl12c", 状态 READY, 包含此服务的 1 个处理程序...
ping测试:
PS C:\Users\Administrator> tnsping orcl12c
TNS Ping Utility for 64-bit Windows: Version 12.1.0.1.0 - Production on 05-1月 -2023 22:18:46
Copyright (c) 1997, 2013, Oracle. All rights reserved.
已使用的参数文件:
C:\app\oracle\product\12.1.0\dbhome_1\network\admin\sqlnet.ora
已使用 TNSNAMES 适配器来解析别名
尝试连接 (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED)
(SERVICE_NAME = orcl12c)))
OK (10 毫秒)
1.3.2 检查字符集
主要两个数据库的字符集设置是否一致,不一致的话先进行修改(看资料说OGG12C字符集不一致也是可以同步)
它的格式如下:NLS_LANG = language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性
其中:
Language: 指定服务器消息的语言,
territory: 指定服务器的日期和数字格式,
charset: 指定字符集。
如:AMERICAN _ AMERICA. ZHS16GBK
源端:
SYS@PROD> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.AL32UTF8
目标:
SQL> select sys_context('userenv', 'language') from dual;
SYS_CONTEXT('USERENV','LANGUAGE')
--------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
修改字符集:
本实验修改源端字符集,在生产环境下,如果目标库是新建的,建议修改目标端。
Linux 下切换到安装数据库的用户下,本次实验是oracle,切换到Oracle用户下,添加环境变量。
su - oracle
vim ~/.bash_profile
export NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
:wq
执行 source ~/.bash_profile 使之生效
reboot重启系统
登录数据库确认字符集修改是否成功:
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
--------------------------------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.AL32UTF8
上面的方法只修改前面语言,地域部分,字符集没有修改成想要的。继续下面的步骤:
管理员身份登录数据库
连接数据库软件:
sqlplus /nolog
管理员连接:
SQL> connect /as sysdba
关闭数据库:
SQL> shutdow immediate
挂载方式启动
SQL> startup mount
修改会话,进程:
SQL> alter system enable restricted session;
SQL> alter system set job_queue_processes=0;
SQL> alter system set aq_tm_processes=0;
打开数据库:
SQL> alter database open;
修改字符集:
SQL> alter database character set internal_use ZHS16GBK;
关闭数据库:
SQL> shutdown immediate;
打开数据库,重启
SQL> startup
再次确认字符集:
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
Windows 2012添加环境变量,修改注册表(实验中未修改windows,记录备用)
添加环境变量:
选中【我的电脑】——右键——【高级系统设置】——【环境变量】——【系统变量】
新建变量:NLS_LANG 值为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

修改注册表:
win+R,输入regedit,进入注册表;找到以下路径HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ORACLE\KEY_OraDB12Home1
(注意:KEY_OraDB12Home1与自己要修改的数据库对应)
找到NLS_LANG,

右键,修改数值,修改为客户端/服务器对应的字符集;保存,关闭
重启系统
2 Goldengate(OGG) 安装(源+目标)
goldengate12.2支持的版本是oracle11.2,oracle12c需要goldengate12.3以上版本
G o l d e n g a t e 12.3 s u p p o r t s O r a c l e ≥ 12.2.0.1 G o l d e n g a t e 12.2 s u p p o r t s O r a c l e ≥ 11.2.0.1 G o l d e n g a t e 12.1 s u p p o r t s O r a c l e ≥ 11.1.0.6 G o l d e n g a t e 11.2 s u p p o r t s O r a c l e ≥ 10.2.0.4 F o r e a r l i e r d a t a b a s e v e r s i o n s ( 8 i ( D M L o n l y ) , 9 i − 11.1 ) u s e G o l d e n g a t e 10.4 Goldengate 12.3 supports Oracle \geq 12.2.0.1\\ Goldengate 12.2 supports Oracle \geq 11.2.0.1\\ Goldengate 12.1 supports Oracle \geq 11.1.0.6\\ Goldengate 11.2 supports Oracle \geq 10.2.0.4\\ For earlier database versions(8i(DML only),9i-11.1)use Goldengate10.4 Goldengate12.3supportsOracle≥12.2.0.1Goldengate12.2supportsOracle≥11.2.0.1Goldengate12.1supportsOracle≥11.1.0.6Goldengate11.2supportsOracle≥10.2.0.4


5万+

被折叠的 条评论
为什么被折叠?



