flink 同步oracle11g数据表到pg库

1. 关闭防火墙和selinux

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalldvi /etc/selinux/config
修改为disabled

在这里插入图片描述

2.安装java8

yum list java-1.8* yum install java-1.8.0-openjdk* -yjava -version

在这里插入图片描述

3.下载和部署postgresql

看需求安装pg库版本

下载地址:http://www.postgresql.org/ftp/source/

在这里插入图片描述

上传到服务器解压

tar -zxvf postgresql-16.2.tar.gz
./configure

如果出现以下报错解决方法:

yum -y install gcc  

在这里插入图片描述

如果出现以下错误解决方法:

yum -y install libicu libicu-devel libunwind readline-devel zlib-devel 

在这里插入图片描述

make
make installgroupadd postgres
useradd -g postgres postgres
id postgrescd /usr/local/pgsql/
mkdir data
chown postgres:postgres datacd /home/postgres/
ll -al

在这里插入图片描述

在这里插入图片描述

vi .bash_profile
添加
export PGHOME=/usr/local/pgsql/
export PGDATA=/usr/local/pgsql/data
PATH=$PATH:$HOME/bin:$PGHOME/bin

在这里插入图片描述

source .bash_profile
su – postgres
initdb

在这里插入图片描述

cd /usr/local/pgsql/data/
vi postgresql.conf
修改为listen_addresses = '*'

在这里插入图片描述

启动pg库

service postgresql start
su – postgres
psql

在这里插入图片描述

4.下载和部署oracle

Oracle下载地址:

下载好上传两个文件到系统
mkdir /oracle
cd /oracle

在这里插入图片描述

yum install unzip -y
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
yum -y install wget
yum install yum install gcc make binutils gcc-c++ compat-libstdc++-33 elfutils-libelf-devel elfutils-libelf-devel-static ksh libaio libaio-devel numactl-devel sysstat unixODBC unixODBC-devel pcre-devel -y 
添加安装用户和用户组
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle创建安装目录和设置文件权限
mkdir -p /u01/app/oracle/product/11.2.0
mkdir /u01/app/oracle/oradata
mkdir /u01/app/oracle/inventory
mkdir /u01/app/oracle/fast_recovery_area
chown -R oracle:oinstall /u01/
chmod -R 775 /u01/app/oracle
chown -R oracle:oinstall /oracle/

设置oracle用户环境变量

su – oracle	
vi .bash_profileexport PATH
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0
ORACLE_SID=orcl
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8source .bash_profilecp -R /oracle/database/response/ .
cd response/

vi db_install.rsp

oracle.install.responseFileVersion=oracleinstallrspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
ORACLE_HOSTNAME=flink
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oracle/inventory
SELECTED_LANGUAGES=
ORACLE_HOME=u01/app/oracle/product/11.2.0
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=
oracle.install.db.isCustomInstall=false
oracle.install.db.customComponents=oracle.server11.2.0.1.0,oracle.sysman.ccr10.2.7.0.0,oracle.xdk11.2.0.1.0,oracle.rdbms.oci11.2.0.1.0,oracle.network11.2.0.1.0,oracle.network.listener11.2.0.1.0,oracle.rdbms11.2.0.1.0,oracle.options11.2.0.1.0,oracle.rdbms.partitioning11.2.0.1.0,oracle.oraolap11.2.0.1.0,oracle.rdbms.dm11.2.0.1.0,oracle.rdbms.dv11.2.0.1.0,orcle.rdbms.lbac11.2.0.1.0,oracle.rdbms.rat11.2.0.1.0
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
oracle.install.db.CLUSTER_NODES=
oracle.install.db.config.starterdb.type=
oracle.install.db.config.starterdb.globalDBName=oracle.sunyard
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.characterSet=AL32UTF8
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=512
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.dbcontrol.enableEmailNotification=false
oracle.install.db.config.starterdb.dbcontrol.emailAddress=
oracle.install.db.config.starterdb.dbcontrol.SMTPServer=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=LED_ASM_SYSTEM
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=
DECLINE_SECURITY_UPDATES=true
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=

在这里插入图片描述

cd /oracle/database/
./runInstaller -silent -responseFile /home/oracle/response/db_install.rsp -ignorePrereq

在这里插入图片描述

报错原因:swap分区关闭了 打开即可

在这里插入图片描述

/u01/app/oracle/inventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0/root.sh
yum -y install net-tools

vi /home/oracle/response/dbca.rsp

修改参数
GDBNAME = "orcl"
SID = "orcl"
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
SYSMANPASSWORD = "oracle"
DBSNMPPASSWORD = "oracle"
DATAFILEDESTINATION =/u01/app/oracle/oradata
RECOVERYAREADESTINATION=/u01/app/oracle/fast_recovery_area
CHARACTERSET = "ZHS16GBK"
TOTALMEMORY = "1638"
dbca -silent -responseFile /home/oracle/response/dbca.rsp

在这里插入图片描述

实例检查
ps -ef | grep ora_ | grep -v grep
在这里插入图片描述

启动监听
lsnrctl start
在这里插入图片描述

查看监听状态
在这里插入图片描述

sqlplus / as sysdba

startup报错
在这里插入图片描述

解决方法

cp /u01/app/oracle/admin/orcl/pfile/init.ora.21520241602 /u01/app/oracle/product/11.2.0/dbs/
cd /u01/app/oracle/product/11.2.0/dbs/
mv init.ora.21520241602 initoral.ora

在这里插入图片描述

5.下载部署flink

flink下载地址:https://www.apache.org/dyn/closer.lua/flink/flink-1.18.1/flink-1.18.1-bin-scala_2.12.tgz
下载flink sql所需驱动
1.	flink-connector-jdbc-3.1.1-1.17.jar 下载地址:https://repo1.maven.org/maven2/org/apache/flink/flink-connector-jdbc/3.1.1-1.17/  
2.	flink-sql-connector-oracle-cdc-3.0.1.jar 下载地址:https://mvnrepository.com/artifact/com.ververica/flink-sql-connector-oracle-cdc/3.0.1
3.	flink-sql-connector-postgres-cdc-3.0.1.jar 下载地址:https://mvnrepository.com/artifact/com.ververica/flink-sql-connector-postgres-cdc/3.0.1

下载完之后上传flink压缩包并解压

tar -zxvf flink-1.18.1-bin-scala_2.12.tgz
进入flink的lib目录上传三个依赖
cd flink-1.18.1/lib/

在这里插入图片描述

需要修改一下flink配置文件
不然会出现以下情况
在这里插入图片描述

vi flink-1.18.1/conf/flink-conf.yaml

原本是localhost修改为ip

在这里插入图片描述

./flink-1.18.1/bin/start-cluster.sh

访问 192.168.207.193:8081 (默认是8081端口 可在配置文件里修改)

在这里插入图片描述

6.实时同步oracle数据到postgresql

数据库先创建一个库,在库里创建表再添加数据

sqlplus / as sysdba
create user ljq identified by linux123;
grant create session,resource to ljq;
sqlplus ljq/linux123@192.168.207.195/orclcreate table players (player_id INT NOT NULL,team_id INT,player_name VARCHAR(255),height FLOAT(53),
PRIMARY KEY (player_id)
);
insert into players (player_id,team_id,player_name,height) values (1001,1001,'韦德','1.93');
insert into players (player_id,team_id,player_name,height) values (1002,1002,'雷吉','1.91');
insert into players (player_id,team_id,player_name,height) values (1003,1003,'安德烈','2.11');
insert into players (player_id,team_id,player_name,height) values (1004,1004,'索恩','2.16');
insert into players (player_id,team_id,player_name,height) values (1005,1005,'兰斯顿','1.88');
insert into players (player_id,team_id,player_name,height) values (1006,1006,'格伦','1.98');
insert into players (player_id,team_id,player_name,height) values (1007,1007,'伊斯梅尔','1.83');
insert into players (player_id,team_id,player_name,height) values (1008,1008,'扎扎','2.11');
insert into players (player_id,team_id,player_name,height) values (1009,1009,'乔恩','2.08');
select * from players;

在这里插入图片描述

格式很乱

解决方法:
set line 320
col player_name for a20

在这里插入图片描述

在pg库创建一个库,在库里创建一个表不插入数据

create database ljq;
\c ljqCREATE TABLE players3 (
player_id INT NOT NULL,
team_id INT,
player_name VARCHAR(255),
height FLOAT(53),
PRIMARY KEY (player_id)
);

启动flink-sql

./flink-1.18.1/bin/sql-client.sh embedded
根据需要同步的数据创建源表
CREATE TABLE nbaplayers (
PLAYER_ID INT,
TEAM_ID INT,
PLAYER_NAME VARCHAR,
HEIGHT FLOAT,
PRIMARY KEY (PLAYER_ID) NOT ENFORCED
) WITH (
'connector' = 'oracle-cdc',
'hostname' = '192.168.207.192',
'port' = '1521',
'username' = 'ljq',
'password' = 'ljq',
'database-name' = 'test',
'schema-name' = 'LJQ',
'table-name' = 'PLAYERS'
);
select * from nbaplayers;

在这里插入图片描述

创建结果表

CREATE TABLE nba (
player_id INT,
team_id INT,
player_name VARCHAR,
height NUMERIC(3,2),
PRIMARY KEY (player_id) NOT ENFORCED
) WITH (
'connector' = 'jdbc',
'url' = 'jdbc:postgresql://192.168.207.193:5432/ljq??currentSchema=public&reWriteBatchedInserts=true',
'username' = 'postgres',
'password' = 'linux123',
'table-name' = 'players3'
);

在这里插入图片描述

执行从源表插入结果表操作,生成同步作业

INSERT INTO nba
SELECT
player_id,
team_id,
player_name,
height
FROM nbaplayers;

在这里插入图片描述

Web端查看
在这里插入图片描述

查看是否同步数据到pg库的players3表
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/469204.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用接地气的例子趣谈 WWDC 24 全新的 Swift Testing 入门(三)

概述 从 WWDC 24 开始,苹果推出了全新的测试机制:Swift Testing。利用它我们可以大幅度简化之前“老态龙钟”的 XCTest 编码范式,并且使得单元测试更加灵动自由,更符合 Swift 语言的优雅品味。 在这里我们会和大家一起初涉并领略…

Vue 2 —Vue Router 页面导航和参数传递

当从A页面跳转到B页面的时候把数据也一起传递过去,可用Vue Router 功能: 一、. this.$router.push 方法 Vue Router 是 Vue.js 的官方路由管理器,允许你在应用中进行页面导航(即跳转到不同的 URL 路径)。 this.$rout…

【AI声音克隆整合包及教程】第二代GPT-SoVITS V2:技术、应用与伦理思考

一、引言 在当今科技迅速发展的时代,声音克隆技术成为人工智能领域的一个备受瞩目的分支。GPT-SoVITS V2作为一种声音克隆工具,正逐渐进入人们的视野,它在多个领域展现出巨大的潜力,同时也引发了一系列值得深入探讨的问题。本文旨…

ssm092基于Tomcat技术的车库智能管理平台+jsp(论文+源码)_kaic

毕 业 设 计(论 文) 题目:车库智能管理平台设计与实现 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本车库智能管理平台…

11 Oracle Golden Gate 高可用解决方案:Golden Gate 助力企业保障业务连续性

文章目录 Oracle Golden Gate 高可用解决方案:Golden Gate 助力企业保障业务连续性一、Oracle Golden Gate基本概念二、设计异地灾备策略2.1 需求分析2.2 网络规划2.3 部署架构 三、实施异地灾备策略3.1 环境准备3.2 配置Golden Gate3.3 验证与测试 四、数据保护策略…

【NLP】使用 PyTorch 从头构建自己的大型语言模型 (LLM)

读完这篇文章后,你会取得什么成就?你将能够自己构建和训练大型语言模型 (LLM),同时与我一起编写代码。虽然我们正在构建一个将任何给定文本从英语翻译成马来语的 LLM,但你可以轻松地修改此 LLM 架构以用于其他语言翻译任务。 LLM…

绘制3D图

一个 3D 函数的表面图,其中包含向量场。 Python 代码示例,使用 matplotlib 和 numpy 库来绘制类似的图。 python 复制代码 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D# 生成网格 x np.linspace(-…

MATLAB实战 利用1D-DCGAN生成光谱或信号数据

0.前言 在光谱学或信号处理领域,获取大量高质量的数据可能是一项挑战。利用DCGAN迁移对抗生成光谱或信号数据,可以有效地增加数据集的多样性,提高模型的泛化能力。 该实战项目提供了所有源代码与测试数据,旨在帮助学者快速地掌握了…

华为:hcia综合实验

一、拓扑图 二、实验要求 1. pc地址请自行规划,vlan已给出 2. 服务器地址自行规划,vlan,网段已给出 3. 交换机互联链路捆绑保证冗余性 4. 内网pc网关集中于核心交换机,交换机vlan 40互联路由器 ,地址网段已给出 5.配置静态路由实…

jenkins流水线pipeline

创建项目 1. 新建item 并选择pipeline 1.1 和普通项目配置的区别 普通项目配置目录: pipeline项目目录: pipeline的两种语法 声明式语法 2. 配置 2.1 流水线配置 2.2 选择声明式 声明式需要添加一个名为Jenkinsfile的文件实现流水线 Jenkinsfile的…

微信小程序自定义tabbar;禁用某个tab;修改某个tab的样式

微信小程序自定义tabbar;禁用某个tab;修改某个tab的样式 原本使用本身的tabBar就已经很舒服了,很合适了的,但是总有一些脑洞大开的产品和客户,给你搞点多样式,没办法牛马就得去做咯,现在就给大…

深入浅出rust内存对齐

在 Rust 中,内存对齐是一个重要的概念,它涉及到数据在内存中的存储方式,以及如何优化内存访问的效率。往往一门语言的内存布局以及对齐方式决定了一门语言的性能,因此学会并深入理解rust中内存布局会让我们写出高性能的rust代码&a…

闯关leetcode——3206. Alternating Groups I

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/alternating-groups-i/description/ 内容 There is a circle of red and blue tiles. You are given an array of integers colors. The color of tile i is represented by colors[i]: colors[i…

HTML5和CSS3的进阶_HTML5和CSS3的新增特性

目录 HTML5的新特性 1. HTML5 的新特性 1.1 HTML5 新增的语义化标签 1.2 HTML5 新增的多媒体标签 1. 视频 2. 音频 3. 多媒体标签总结 1.3 HTML5 新增的 input 类型 1.4 HTML5 新增的表单属性 required 必须输入信息,不能为空; 重点&#xf…

小马识途营销顾问谈百科词条建立的注意事项

百度百科是百度旗下的产品,它就好比是一本网络百科全书,当我们在网络上搜索某个人物或是企业的时候,如果他们有创建百度百科的话就可以搜出来百度百科词条。词条上展示的荣誉、贡献、社会评价或是企业组织架构等方面可以在无形之中提升人物或…

6、If、While、For、Switch

6、If、While、For、Switch 一、If 1、if-else if (boolean) {代码块 } else if (boolean) {代码块 } else if (boolean) {代码块 } else { // 默认情况代码块 }关于IDEA单元测试控制台不能输入数据的问题: https://blog.csdn.net/m0_72900498/article/details/…

华为路由器DHCP配置

一、单臂路由结构的DHCP 1.启动设备 2.将pc设为DHCP获取IP地址 3.交换机创建vlan并设置模式 [SW1]vlan batch 10 20 [SW1]int g0/0/1 [SW1-GigabitEthernet0/0/1]port link-type trunk [SW1-GigabitEthernet0/0/1]port trunk allow-pass vlan all [SW1-GigabitEthernet0…

【Vue】Vue3.0(十七)Vue 3.0中Pinia的深度使用指南(基于setup语法糖)

上篇文章: 【Vue】Vue3.0(十一)Vue 3.0 中 computed 计算属性概念、使用及示例 🏡作者主页:点击! 🤖Vue专栏:点击! ⏰️创作时间:2024年11月10日15点23分 文章…

element plus el-form自定义验证输入框为纯数字函数

element plus 的el-form 使用自定义验证器&#xff0c;验证纯数字&#xff0c;禁止输入小数、中文、字母、特殊符号。input的maxlength为最大输入多少位长度 效果图 <el-form ref"dataFormRef" :model"dataForm" :rules"dataRules" label-w…

SwiftUI(十)- 列表(分组,折叠)

引言 SwiftUI中的List组件不仅可以用户创建简单的列表&#xff0c;和UITableView一样&#xff0c;它也支持分组和折叠功能&#xff0c;让数据展示更具层次感。通过分组功能&#xff0c;我们可以将数据按照特定的逻辑进行组织&#xff0c;而折叠则为用户提供了更为紧凑的界面体…