postgresql 自定义表变量_Oracle GoldenGate新支持开源关系型数据库PostgreSQL
PostgreSQL是一款免费的对象-关系型数据库(ORDBMS),PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也支持各种扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。最后,因为灵活的许可授权,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。
2020年7月,Oracle数据库产品管理部门很高兴宣布Oracle GoldenGate PostgreSQL 的抽取(Capture)支持已全面上市。自GoldenGate 12.1发行以来,GoldenGate已支持到PostgreSQL的交付,并允许用户将数据从GoldenGate支持的异构数据库实时复制到PostgreSQL数据库。现在,除了GoldenGate PostgreSQL Delivery,又增加了从PostgreSQL 10及更高版本的数据库中捕获数据的能力。
该产品除了支持本地PostgreSQL的捕获,它还支持从Amazon PostgreSQL RDS和Amazon PostgreSQL Aurora(或其它基于PostgreSQL内核的RDS)捕获数据,并帮助您将数据复制到其它任何数据平台,如Oracle自治数据库。该数据库是一个云数据库,使用机器学习来自动执行数据库调优、安全设置、备份、打补丁和其他日常由DBA执行的管理任务。与常规数据库不同,自治数据库无需人工干预即可执行所有这些任务以及更多任务。
您可以在OCI Cloud上运行GoldenGate PostgreSQL,并从Amazon PostgreSQL RDS和Amazon PostgreSQL Aurora远程捕获数据,并将数据复制到自治数据库中。
在部署GoldenGate PostgreSQL时,需要考虑的几个限制:
抽取名称在单个部署中必须唯一
不支持针对系统数据库的捕获和投递
数据库版本必须为10或更高
本文就GoldenGate如何从本地PostgreSQL中抽取数据作一简单介绍,以起到抛砖引玉的作用。主要操作步骤如下:
准备DB环境
配置GoldenGate节点的环境变量
配置ODBC
配置GoldenGate
测试
配置
准备PostgreSQL环境
Oracle GoldenGate PostgreSQL通过逻辑日志读取变更数据。Oracle GoldenGate Capture的每个Extract都需要一个replicat slot,应根据您要运行的抽取程序的数量来设置足够的max_replication_slot值。相应的参数需要添加或修改配置文件postgresql.conf,如下:
wal_level= logical
max_replication_slots= 10 #可以比该值更大
max_wal_senders= 10
如果是远程部署GoldenGate,则还需要修改pg_hba.conf,允许远端的主机IP能访问PG对应的主机,如下示例:
host all all 192.168.7.0/24 md5
修改上述参数可能需要重启PostgreSQL才会生效,详情可参考PG的手册。
创建一个testdb,并设置postgres用户的密码为post3214
配置GoldenGate节点的环境
GoldenGate安装
GoldenGate PostgreSQL的安装与其它DB的安装相同,不在本文赘述。
OS环境变量配置
exportPGHOST=192.168.7.98
exportOGG_HOME=/root/ogg4pg
exportLD_LIBRARY_PATH=$OGG_HOME/lib
exportODBCINI=/etc/odbc.ini
unixODBC配置
# yum -y install unixODBC
# vi /etc/odbc.ini
[ODBC DataSources]
testdb=DataDirect7.1 PostgreSQL Wire Protocol
[ODBC]
IANAAppCodePage=106
InstallDir=/root/ogg4pg
[testdb]
Driver=/root/ogg4pg/lib/GGpsql25.so
Description=DataDirect7.1 PostgreSQL Wire Protocol
Database=testdb
HostName=192.168.7.98
PortNumber=5432
LogonID=postgres
Password=post3214
执行以下命令,确认odbc配置正确。
$ isql -v testdb postgres post3214
+---------------------------------------+
+---------------------------------------+
|Connected! |
| |
| sql-statement |
| help[tablename] |
|quit |
+---------------------------------------+
SQL>select now();
+---------------------------------+
| now |
+---------------------------------+
|2020-07-18 16:34:08.233492+08 |
+---------------------------------+
SQLRowCountreturns -1
1 rowsfetched
经过以上步骤,确认通过ODBC可以正常访问PostgreSQL。
安装libpq
针对远程抽取,需要在安装GoldenGate的机器上安装pg lib。
# yum -y install postgresql-libs
配置GoldenGate
配置MGR和附加日志
运行ggsci
GGSCI> create subidrs
配置mgr
GGSCI> edit param mgr
Port 7809
确认OGG可以登录到PostgreSQL
GGSCI > dblogin sourcedb testdb, useridpostgres, password post3214
Successfully logged into database.
对需要同步的表,添加附加日志
GGSCI> add trandata test.tb1
GGSCI> add trandata test.tb2
配置抽取进程
GGSCI> edit param ex1
extractex1
sourcedbtestdb, userid postgres, password post3214
exttrail./dirdat/ea
tabletest.*;
注册和添加抽取进程
GGSCI >register extract ex1
2020-07-1816:40:45 INFO OGG-25355 Successfully created replication slot 'ex1_46b13bf0f63b63ba' for EXTRACTgroup 'EX1' in database 'testdb'.
GGSCI> add ext ex1, tranlog , begin now
GGSCI >add exttrail ./dirdat/ea, ext ex1
启动抽取进程
GGSCI > start ex1
GGSCI > info ex1
EXTRACT EX1 Last Started 2020-07-18 16:41 Status RUNNING
CheckpointLag 00:00:00 (updated 00:00:07 ago)
ProcessID 11376
VAM ReadCheckpoint 2020-07-18 16:41:02.708290
ReplicationSlot ex1_46b13bf0f63b63ba is activewith PID 8338 in database testdb
SlotRestart LSN 0/16BAA78
SlotFlush LSN 0/16BAAB0
CurrentLog Position 0/16BAAB0
由上述信息可以看出,GoldenGate可以正常读取数据库日志。
测试
在PostgreSQL上进行数据变更操作
testdb=#insert into test.tb1 values(1,'abc');
INSERT 01
testdb=#insert into test.tb1 values(2,'abc');
INSERT 01
testdb=#update test.tb1 set name='ksaa' where id=1;
UPDATE 1
testdb=#delete from test.tb1 where id=2;
DELETE 1
查看GoldenGate是否能捕获增量数据
GGSCI> stats ex1, total
SendingSTATS request to EXTRACT EX1 ...
Start ofStatistics at 2020-07-18 16:42:28.
Output to./dirdat/ea:
Extractingfrom test.tb1 to test.tb1:
*** Totalstatistics since 2020-07-18 16:41:57 ***
Total inserts 2.00
Total updates 1.00
Total deletes 1.00
Total upserts 0.00
Total discards 0.00
Total operations 4.00
End ofStatistics.
可以看到,GoldenGate已经捕获到变更数据。
小结
GoldenGate配置从PostgreSQL抽取增量数据,与其它数据库的配置完全一样。通过使用GoldenGate PostgreSQL,可以在不同异构环境中,实现更多的数据实时集中和分发,以满足数据同步的需求。针对GoldenGate PostgreSQL更详细的说明可参考官方文档:
https://docs.oracle.com/en/middleware/goldengate/core/19.1/installing/installing-postgresql.html
作者简介
蔡东林,甲骨文云平台数据集成资深咨询顾问,专注于甲骨文数据集成相关产品及解决方案。具有15+年的数据仓库、数据处理经验,熟悉甲骨文相关集成产品,方案和项目实施经验。熟悉电信,银行行业。您可以通过donglin.cai@oracle.com与他联系。
了解更多,敬请关注甲骨文开发者社区......
postgresql 自定义表变量_Oracle GoldenGate新支持开源关系型数据库PostgreSQL相关推荐
- 三款开源关系型数据库对比:MySQL、PostgreSQL、SQLite
在这篇DigitalOcean文章中,我们将尝试理解一些最常用.最流行的关系型数据库管理系统(RDBMS)的内核区别.我们将会探索最底层的区别--特性与功能,它们如何工作,在哪方面更出色,以帮助程序员 ...
- MYSQL 使用自定义表变量
mysql 用户自定义表变量,ENGINE=MyISAM DEFAULT CHARSET=gb2312; 制定编码方式,防止乱码 DROP TABLE IF EXISTS p_temp; creat ...
- 华为云数据库 PostgreSQL 支持 10.3 ,高性能,新体验
日前,华为云数据库 PostgreSQL 正式支持 PostgreSQL10.3.这是继支持PostgreSQL 10 版本.性能显著提升后的又一次优化,无论是从功能特性还是用户体验角度,无疑都为用户 ...
- 【译】表变量和临时表的比较(转)
关于表变量是什么(和表变量不是什么),以及和临时表的比较让很多人非常困惑.虽然网上已经有了很多关于它们的文章,但我并没有发现一篇比较全面的.在本篇文章中,我们将探索表变量和临时表是什么(以及不是什么) ...
- 【译】表变量和临时表的比较
关于表变量是什么(和表变量不是什么),以及和临时表的比较让很多人非常困惑.虽然网上已经有了很多关于它们的文章,但我并没有发现一篇比较全面的.在本篇文章中,我们将探索表变量和临时表是什么(以及不是什么) ...
- SQL Server 表变量和临时表的区别
一.表变量 表变量在SQL Server 2000中首次被引入.表变量的具体定义包括列定义,列名,数据类型和约束.而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约 ...
- dedecms自定义表单加验证码
一,在后台左侧点击核心->自定义表单->增加新的自定义表单,按照提示填写信息,保存出来再点击编辑进去添加字段 二,自定义表单的调用,网上有调用方法,可是测试没成功,我就用自己的方法吧,点击 ...
- 表变量与临时表的优缺点?(ZT)
什么情况下使用表变量? 什么情况下临时表? --------------------------------------------------------------- 表变量只存放 ...
- SQL Server 2019中SQL表变量延迟编译
In an article, An overview of the SQL table variable, we explored the usage of SQL table variables i ...
最新文章
- 【Java_基础】Java中Native关键字的作用
- bzoj 2435: [Noi2011]道路修建 树上 dp
- OpenGL ES之基本简介和渲染流程
- java压缩----使用ANT JDK压缩---解决中文问题
- 流程图伪代码计算机语言,流程图与伪代码 PPT课件
- DRF url控制 解析器 响应器 版本控制 分页(常规分页,偏移分页,cursor游标分页)...
- 腾讯视频app官方下载_腾讯视频怎么快进
- 斯坦福大学机器学习公开课视频及课件
- 与数据绑定相关的接口(转)
- Jquery第二章常用方法,一二级菜单淡入淡出,event事件,复选框的全选反选第一节
- jedate插件的使用
- 2022年系统分析师论文模拟题--押题
- 以CIM平台推动数字孪生落地 以数字孪生助力智慧城市建设
- 如何自制条形码扫描器
- 硬盘SMART监控工具Scrutiny
- 神舟笔记本怎么进入bios?神舟笔记本bios设置U盘启动教程
- 两个通宵熬出来的互联网大厂最新面试题收集整理1000道(三-Memcached),欢迎点赞收藏!!!
- 河南省第二类医疗器械首次注册
- php实现邮箱激活功能
- fatal: 无法访问 ‘https://gitlab.com/libeigen/eigen.git/‘:Failed to connect to gitlab.com port 443: 没有到主机
热门文章
- Borg Maze POJ - 3026 (BFS + 最小生成树)
- 【 VS 插件开发 】三、Vs插件简单功能的实现
- JSP的优势与劣势浅析
- scp实现mac与linux服务器之间文件传输
- nginx添加nginx_mod_h264_streaming-2.2.7模块编译报错
- 求助帖--C++中单引号' '内多个字符是什么意思
- 获取PowerShell某个对象的所有命令
- [转载] python3 字符串比较函数_python3 字符串操作相关函数
- [转载] Python-科赫雪花(科克曲线)
- 判断字符串中是否包含指定字符的N种方法对比