solaris-Oracle11g于linux-mysql相连
Oracle11g(solaris64sparc)+mysql(linux)实验
此实验目的,实现公司ebs R12 连mysql上的短信平台.预警和提示ebs中信息,
一,环境
主机名 ip 平台 数据库 dbname
ebs234 192.168.1.234 solaris 10 64 sparc oralce 11g ebstest
mysql 192.168.1.247 linux redhad up4 mysql 5.1 mccdb
二,此连接原理
+-----------------------------<ODBC Client Host>---------------------------+
| |
| [ORACLE] <---> [DG4ODBC] <---> [ODBC Driver Manager] <---> [ODBC Driver] |
| | |
+-------------------------------------------------------------------|-------+
/|\
|
NETWORK
|
\|/
+--<MySQL Server Host>--+
| |
| [MySQL Server] |
| |
+-----------------------+
这是个核心的连接过程.现分路段来配制这个过程,
我们倒着配制.就能慢慢明白其中原理
先确定一下二个数据库及期系统的版本
file $ORACLE_HOME/bin/dg4odbc
系统版本和linux版本及mysql版本都容易查,不重复了
在mysql上建个用户先
grant all privileges on mccdb.* to APPS@192.168.1.234 identified by '123456' with grant option;
flush privileges;(刷新权限设置)
以下操作均在oracle主机
1)odbc drvier -->mysql
mysql是在192.168.1.247主机上. 现solaris 平台上的oracle 11g要连接mysql.就是通过odbc这个驱动.
所以要在solaris 平台安装odbc 驱动for mysql.同时又要装一个管理这个odbc驱动的管理软件,即odbc driver manager
a,下载地址odbc driver manager 选择合适的驱动, 下地直任选
http://sourceforge.net/projects/unixodbc/files/unixODBC/
http://www.unixodbc.org/download.html
b, 下载地址odbc driver
http://www.mysql.com/downloads/connector/odbc/5.1.html
c ,安装(oratest用户)
mkdir /ebstest/app/etc
mkdir /ebstest/app/myodbc
mkidr /ebstest/app/unixodbc-2.2.14
把odbc driver 移入myodbc中
把odbc driver manager ,即unixodbc-2.2.14-sunos-sparc-64.tar.gz移到unixodbc-2.2.14中
分别解压
把odbc dirver manager 中解开的目录稍调整一下.即把生成的usr下的文件bin lib include移到unixodbc-2.2.14目录下.
目的是目录不要那么深,好看一些,并把usr删掉
把myodbc中解开的长文件名更名一下.mv 长文件名 mysqlodbc也是好看一些
好,现在基本工作就绪
1,配置环境变量
PATH=/ebstest/app/unixodbc-2.2.14/bin:/ebstest/app/prod/apps/tech_st/10.1.2/OPatch/opatch:$PATH
export PATH
LD_LIBRARY_PATH=/ebstest/app/unixodbc-2.2.14/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
DISPLAY=192.168.1.196:0.0; export DISPLAY
ODBCINI=/ebstest/app/etc/odbc.ini
export ODBCINI
ODBCSYSINI=/ebstest/app/etc
export ODBCSYSINI
2, 注册生成odbcinst.ini
在myodbc目录中进入mysqlodbc/bin
Register a driver;
$ myodbc3i -a -d -t"MySQL ODBC 3.51 Driver;Driver=/usr/lib/libmyodbc3.so;Setup=/usr/lib/libmyodbc3S.so"
Create a user data source name;
$ myodbc3i -a -su -t"DSN=MyDSN;Driver=MySQL ODBC 3.51 Driver;Server=localhost;UID=pharvey"
根据这二个命令
改一下 ./myodbc3i -a -d -t "MySQL ODBC 3.51 Driver;Driver=/ebstest/app/myodbc/mysqlodbc/lib/libmyodbc3.so;Setup=/ebstest/app/myodbc/mysqlodbc/lib/libmyodbc3_r.so"
这样就在环境变量规定的目录中生成了odbcinst.ini
又根据生成user data source name;这个命令来生成odbc.ini文件
./myodbc3i -a -su -t "DSN=mccdb;Driver=/ebstest/app/myodbc/mysqlodbc/lib/libmyodbc3.so;Server=192.168.1.247;UID=apps"
----------------------------
./configure --prefix=/ebs/app/myodbc/unixODBC --includedir=/usr/include --libdir=/usr/lib --bindir=/usr/bin --sysconfdir=/ebs/app/myodbc/etc
make
make install
./myodbc-installer -d -a -n "MySQL ODBC 5.1 Driver" -t "DRIVER=/ebstest/app/myodbc/mysqlodbc5/lib/libmyodbc5.so;Setup=/ebstest/app/myodbc/mysqlodbc5/lib/libmyodbc5.so"
./myodbc-installer -s -a -c2 -n "mccdb" -t "DRIVER=MySQL ODBC 5.1 Driver;SERVER=192.168.1.247;DATABASE=mccdb;UID=apps;PWD=123456"
5.1版本问题按上述改
----------------------------
执行一下.也许生成不了.没关系可以手动在/ebstest/app/etc中建一个odbc.ini
内容如下:
$ more odbc.ini --这个实际是dsn驱动名
[ODBC Data Sources]
data_source_name = mccdb
[mccdb]
Driver = /ebstest/app/myodbc/mysqlodbc/lib/libmyodbc3.so
DATABASE = mccdb
DESCRIPTION = MySQL ODBC 3.51 Driver
SERVER = 192.168.1.247
UID = apps
PASSWORD = 123456
PORT = 33306
SOCKET =
具体内容,要看情况更改
以上odbc驱动文件全部配好了.现需要注册一下在odbc driver mangaer中.
cd /ebstest/app/unixodbc-2.2.14/bin
./odbcinst -i -d -f /ebstest/app/etc/odbcinst.ini -i (install) -d (drvier) -q (query)
./odbcinst -i -s -l -f /etc/odbc.ini -i(install) -s(data source) -l system dsn -f (file name of template.ini follows)
可以不用-f
------------------------
$ ./odbcinst -i -d -f /ebstest/app/etc/odbcinst.ini
odbcinst: Driver installed. Usage count increased to 2.
Target directory is /ebstest/app/etc
$ ./odbcinst -i -s -l -f /ebstest/app/etc/odbc.ini
5.1版本如上
------------------------
检查是否连通
进入/ebstest/app/unixodbc-2.2.14/bin
./odbcinst -s -q 看是否能检测到连接dsn驱动名mccdb
./isql mccdb -v
看是否连通
理论是没什么问题的.当然出问题得查找原因
2) [ORACLE] <---> [DG4ODBC] 配制这一段 (oracle 11g已经有dg4odbc了,不用装gateway)
这一段要明白oracle 11g是连dg4odbc 也就是配tnsnames.ora 和listener.ora
tnsnames.ora (oracle_home/network/中)
增加如下一段
mccdb =
(DESCRIPTION =
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.234)(port=1529))
(CONNECT_DATA =
(SID = mccdb) )
(HS=OK)
)
要想清楚host地址,端口不要重用
listener.ora 增加如下二段
mccdb =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ebs2.riso.com.cn)(PORT = 1529))
)
)
SID_LIST_MCCDB=
(SID_LIST =
(SID_DESC =
(PROGRAM=dg4odbc)
(SID_NAME = mccdb)
(ENV=/ebstest/app/unixodbc-2.2.14/lib)
)
)
配完以后.看能不能不起动.lsnrctl start mccdb
tnsping mccdb
成功则说明没问题了. oracle 11g连DG4ODBC这段成功了.
3) [DG4ODBC] <---> [ODBC Driver Manager] 连这一段,其实这一段的真正核心就是hs目录中的初始化参数文件
cd $ORACLE_HOME//hs/admin
cp initdg4odbc.ora initmccdb.ora
修改后文件如下:
$ more initmccdb.ora
# This is a sample agent init file that contains the HS parameters that are
# needed for the Database Gateway for ODBC
#
# HS init parameters
#
HS_FDS_CONNECT_INFO = mccdb
HS_FDS_TRACE_LEVEL = Debug
HS_FDS_SHAREABLE_NAME = /ebstest/app/unixodbc-2.2.14/lib/libodbc.so --这一行是关键,千万别折腾到myodbc目中去了.myodbc是连mysql. 现在是dg4odbc->odbc driver
HS_LANGUAGE=AMERICAN_AMERICA.WE8ISO8859P1
#HS_LANGUAGE=american_america.al32utf8
HS_NLS_DATE_FORMAT=YYYY-MM-DD
#HS_FDS_FETCH_ROWS=100
#
# ODBC specific environment variables
#
set ODBCINI=/ebstest/app/etc/odbc.ini
set ODBCINSTINI=/ebstest/app/etc/odbcinit.ini
set ODBCSYSINI=/ebstest/app/etc
set ORACLE_HOME=/ebstest/app/prod/db/tech_st/11.1.0
#
# Environment variables required for the non-Oracle system
#
在开启debug后.
先创建一个dblink
create public database link myodbc connect to apps identified by 123456 using 'mccdb';
再连接对方表试试
select * from msg_table@myodbc;
根据出错的信息.在hs/admin/log中查询出错原因
如果理解清楚,肯定容易找出问题所在
最终可能问题
一,是版本问题,只能查出一行
二,是乱码问题.
相关文章:
solaris-Oracle11g于linux-mysql相连
Oracle11g(solaris64sparc)mysql(linux)实验 此实验目的,实现公司ebs R12 连mysql上的短信平台.预警和提示ebs中信息, 一,环境 主机名 ip 平台 数据库 dbname ebs234 192.168.1.234 …...
大厂齐出海:字节忙种草,网易爱社交
配图来自Canva可画 随着国内移动互联网红利逐渐触顶,互联网市场日趋饱和,国内各互联网企业之间的竞争便愈发激烈起来。在此背景下,广阔的海外市场就成为了腾讯、阿里、字节、京东、拼多多、百度、网易、快手、B站等互联网公司关注和争夺的重…...
几个实用的正则表达式
1到100之间的正整数正则 表达式:^[1-9]\d?$|^100$ 解释: ^表示匹配字符串开始位置 [1-9]表示数字1-9中的任意一个 \d表示任意一个数字 ?表示前面一个字符或子表达式出现0或1次 $表示匹配字符串结束位置 |表示或 最终的解释为:匹配满…...
python实战应用讲解-【numpy数组篇】常用函数(八)(附python示例代码)
目录 Python Numpy MaskedArray.cumprod()函数 Python Numpy MaskedArray.cumsum()函数 Python Numpy MaskedArray.default_fill_value()函数 Python Numpy MaskedArray.flatten()函数 Python Numpy MaskedArray.masked_equal()函数 Python Numpy MaskedArray.cumprod()函…...
Speech and Language Processing-之N-gram语言模型
正如一句老话所说,预测是困难的,尤其是预测未来。但是,如何预测一些看起来容易得多的事情,比如某人接下来要说的几句话后面可能跟着哪个单词。 希望你们大多数人都能总结出一个很可能的词是in,或者可能是over&#x…...
【AI】Python 安装时启用长路径支持
文章目录 场景:解释:关于文件长路径:计算方法: 场景: Python 安装时,会出现 Disable path length limit 的提示。 解释: 在 Windows 操作系统中,文件路径的长度是有限制的。在早期…...
深入理解Go语言中的接口编程【17】
文章目录 接口接口接口类型为什么要使用接口接口的定义实现接口的条件接口类型变量值接收者和指针接收者实现接口的区别值接收者实现接口指针接收者实现接口下面的代码是一个比较好的面试题 类型与接口的关系一个类型实现多个接口多个类型实现同一接口接口嵌套 空接口空接口的定…...
“数字中国·福启海丝”多屏互动光影艺术秀27日在福州举办
作为深化“数字海丝”的核心区、海上丝绸之路的枢纽城市,为喜迎第六届数字中国建设峰会盛大召开之际,福州市人民政府特此举办“数字中国福启海丝”多屏互动光影秀活动。本次光影秀活动是由福建省文化和旅游厅指导,福州市人民政府主办…...
Docker安装mysql8.0文档
第一步需要安装Docker基础环境,具体可以看看这篇 docker基础篇 第二步,拉取mysql8.0的镜像 docker pull mysql:8.0 第三步,镜像启动和文件挂载 复制下面命令执行,33006是对外访问暴露的端口,当然你也可以设置为3306…...
在函数中使用变量
shell脚本编程系列 向函数传递参数 函数可以使用标准的位置变量来表示在命令行中传给函数的任何参数。其中函数名保存在$0变量中,函数参数则依次保存在$1、$2等变量当中,也可以使用特殊变量$#来确定参数的个数 在脚本中调用函数时,必须将参…...
python算法中的深度学习算法之自编码器(详解)
目录 学习目标: 学习内容: 自编码器 Ⅰ. 编码器(Encoder) Ⅱ. 解码器(Decoder)...
Python入门(一)Python概述与环境搭建
Python概述与环境搭建 1.概述1.1版本及下载1.2 Python 特点 2.环境搭建3.第一个程序“hello,world”4.可能会存在的问题 1.概述 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言…...
02_Lock锁
首先看一下JUC的重磅武器——锁(Lock) 相比同步锁,JUC包中的Lock锁的功能更加强大,它提供了各种各样的锁(公平锁,非公平锁,共享锁,独占锁……),所以使用起来…...
面试总结,4年经验
小伙伴你好,我是田哥。 本文内容是一位星球朋友昨天面试遇到的问题,我把核心的问题整理出来了。 1:Java 层面的锁有用过吗?除了分布式锁以外 是的,Java中提供了多种锁机制来保证并发访问数据的安全性和一致性。常见的J…...
享受简单上传体验:将Maven仓库迁移到GitHub
前言:我为什么放弃了Maven Central 之前我写过一篇《Android手把手,发布开源组件至 MavenCentral仓库》,文中详细介绍了如何发布组件到Maven Central中供所有开发者共用。但是最近使用下来,发现Sonatype JIRA 的Maven Center上传…...
R语言 | 进阶字符串的处理
目录 一、语句的分割 二、修改字符串的大小写 三、unique()函数的使用 四、字符串的连接 4.1 使用paste()函数常见的失败案例1 4.2 使用paste()函数常见的失败案例2 4.3 字符串的成功连接与collapse参数 4.4 再谈paste()函数 4.5 扑克牌向量有趣的应用 五、字符串数据的…...
【MySQL高级】——InnoDB索引MyISAM索引
一、索引概述 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。 索引的本质:索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。 这些数据结构以某种方式指向…...
电影《灌篮高手》观后
上周和同学一起看了电影《灌篮高手》这部电影,个人以前没有看过相关漫画和动画,但记得,看过海报和一些宣传物品,有的衣服上,有文具盒上,也都出现过,而且是在自己小时候,可见当时的影…...
C# .Net 中的同步上下文
.Net 中的同步上下文 【文 / 张赐荣】 什么是同步上下文? 同步上下文(SynchronizationContext)是一个抽象类,它提供了一个基本的功能,用于在不同的同步模型中传播一个同步操作。 同步上下文表示一个代码执行的位置&a…...
3分钟入门:Flex 布局
flex 布局原理 全称 flexible box,弹性布局。 如何开启:为元素添加 display: flex。 开启 flex 布局的元素,称为 flex 容器(flex container),其子元素成为容器成员,称为 flex 项目。 flex 布…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
目录 前言 操作系统与驱动程序 是什么,为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中,我们在使用电子设备时,我们所输入执行的每一条指令最终大多都会作用到硬件上,比如下载一款软件最终会下载到硬盘上&am…...
