kettle庖丁解牛第9篇之DB连接终篇

Posted 飞哥大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kettle庖丁解牛第9篇之DB连接终篇相关的知识,希望对你有一定的参考价值。

引言

上一篇文章中,我们介绍了:kettle中的DB连接(连接sqlserver)、MS SQL SERVER和MS SQL SERVER(NATIVE)两种类型的区别。

在本篇文章中,我们接着介绍:kettle中的DB连接(连接oracle)。

别看本篇就1个知识点,关于oracle这个数据库中的王者,我们还是有太多太多要聊的了。为啥我要这么说,因为我从学习oracle到现在,已经近10个年头了,对oracle还是有一定了解的。

kettle要想连接oracle数据库,咱们就有必要聊聊oracle的监听器了。

Oracle监听器

简介

Oracle监听器运行于数据库服务器端一个进程,用于监听所有来自客户端的连接请求,并提供处理数据库服务方面的请求。

示意图如下:

kettle庖丁解牛第9篇之DB连接终篇

客户端的连接请求有多种

我来介绍一下,2种常见的方式

(a)、常用的数据库开发工具比如:PLSQL Developer和SqlDeveloper,它们通过配置要连接数据库相关的参数,向数据库发起连接请求

(b)、java编程中的jdbc,运行程序时,向数据库发起连接请求

以上2种连接请求,客户端要和Database server端网络畅通,否则无法正常连接

客户端的连接请求在Database server的进程

语法 :ps -ef|grep oracle实例名

kettle庖丁解牛第9篇之DB连接终篇

通过查询结果可以看出来,现在没有任何客户端,通过网络向数据库发起连接请求。

使用plsqldev.exe通过网络向数据库发起连接请求。

kettle庖丁解牛第9篇之DB连接终篇

kettle庖丁解牛第9篇之DB连接终篇

再次查看Database server的进程

kettle庖丁解牛第9篇之DB连接终篇

通过查询结果可以看出来,现在有1台客户端,通过网络向数据库发起连接请求,产生的进程标识为oracleecom (LOCAL=NO)。

至此,我讲的客户端请求,都是通过网络远程向数据库发起连接请求,在数据库端产生的进程标识是LOCAL=NO的。如果在数据库端本地登录,在数据库端产生的进程标识是LOCAL=YES的。我来演示一下,详细如下图所示。

数据库端本地使用sqlplus登录

kettle庖丁解牛第9篇之DB连接终篇

再次查看Database server的进程

kettle庖丁解牛第9篇之DB连接终篇

通过查询结果可以看出来,现在有2台客户端,通过网络向数据库发起连接请求,产生的进程标识为oracleecom (LOCAL=NO)和oracleecom (LOCAL=YES)。

为什么在此处要给大家扩展讲一下进程,因为早些年在联通做DBA时,我们的RAC集群进程突然爆增,手机短信报警疯了。当时就是通过进程发现的,当时发现产生了大量的oracleecom​​ (LOCAL=NO)进程。最后定位到问题,是开发那边的数据库连接池没有配置好,申请完session后,没有正常释放。如果有兄弟对这个案例感兴趣的,可以单独找我聊聊,在此处我就不过多的赘述了!

Oracle支持的2种连接方式

专有模式:为每个用户提供一个单独的到服务器的会话通道,其特点是响应客户端请求速度快,但PGA占用较多。

共享模式:由多个用户连接共享一个进程,多个用户共享一个会话通道。

监听器的主要功能

(a)、监听客户端请求,监听器运行在数据库服务器之上,与Oracle实例(可为多个)相关关联,是一个专门的进程process。在Windows的服务项目或者Linux的运行进程列表中,都会看到对应的运行进程,Windows上名为TNSLSNR,Linux/Unix平台上是lsnrctl,监听器守候在服务器制定端口(默认为:1521),监听客户端的请求。

(b)、为客户端请求分配Server Process,监听器只负责接收请求,之后将请求转接给Oracle

Server Process,在Oracle的服务模式下,客户端进程是不允许直接操作数据库实例和数据,而是通过一个服务进程Server Process(也称为影子进程)作为代理。监听器接受到请求之后,就向操作系统(或者Dispatcher组件)要求fork(或分配)一个Server

Process与客户端相连。

(c)、注册实例服务,本质上讲,listener是建立实例和客户端进程之间联系的桥梁。Listener与实例之间的联系,就是通过注册的过程来实现的,注册的过程就是实例告诉监听器,它的数据库数据库实例名称instance_name和服务名service_names。监听器注册上这样的信息,对客户端请求根据监听注册信息,找到正确的服务实例名称,目前Oracle版本中,提供动态注册和静态注册两种方式。

(d)、错误转移failover,Failover是RAC容错的一个重要方面功能,其功能是在数据库实例崩溃的时候,可以自动将请求转移到其他可用实例上的一种功能。可以提供很大程度上的可用性(Availability)功能,这个过程中,发现实例已经崩溃,并且将请求转移到其他实例上,就属于是listener的功能。

(e)、负载均衡衡量,在RAC架构中,Oracle实现了负载均衡。当一个客户请求到来时,Oracle会根据当前RAC集群环境中所有实例的负载情况,避开负载较高的实例,将请求转移到负载较低的实例进行处理。在早期RAC版本中,负载轻重的衡量是根据监听器当前维护连接数目来确定的,而不是实时查看多实例的负载,RAC环境中的监听器之间进行沟通通信。

配置Oracle监听器

(a)、方式1 直接编辑监听的配置文件listener.ora

 vi $ORACLE_HOME/network/admin/listener.ora

#listener.ora Network Configuration File:/oracle/app/oracle/product/10.2.0/db_1/network/admin/listener.ora

#Generated by Oracle configuration tools.

SID_LIST_LISTENER=

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME= 实例名)

(ORACLE_HOME= /oracle/app/oracle/product/10.2.0/db_1)

(SID_NAME = 实例名)

)

)

LISTENER =

(DESCRIPTION=

(ADDRESS =(PROTOCOL = TCP)(HOST = 数据库本机IP)(PORT = 默认端口1521))

)

(b)、方式2  图形界面1

kettle庖丁解牛第9篇之DB连接终篇

kettle庖丁解牛第9篇之DB连接终篇

(c)、方式2  图形界面2

kettle庖丁解牛第9篇之DB连接终篇

kettle庖丁解牛第9篇之DB连接终篇

监听维护常用命令

启动指定的监听器

lsnrctl start

关闭指定的监听器

lsnrctl stop

显示监听器的状态

lsnrctl status

输入本条命令后:显示监听器是不是活动的,日志与跟踪文件的位置,监听器已经持续运行了多长时间,以及监听器所监听的任务。如下图所示:

kettle庖丁解牛第9篇之DB连接终篇

说到这块,oracle的监听器的技术点,已经够大家入门的了。要想连接oracle Database我们还差一个知识点,就是如何查询oracle的实例名。

查看oracle的实例名

kettle庖丁解牛第9篇之DB连接终篇

oracle的监听器和实例名,我们都已经了解了。下面我们就进入正题:使用kettle创建DB连接。

kettle的DB连接

加载oracle驱动

kettle存放驱动包的位置:pdi-ce-8.3.0.0-371\\data-integration\\lib

将oracle的驱动jar包,拷贝到kettle存放驱动包的位置,如下截图

kettle庖丁解牛第9篇之DB连接终篇

加载数据库对应的驱动,这一步是必须的,如果不做这一步,后续在创建DB连接时,直接报错找不到对应的驱动类。

创建转换

我们要做的ETL操作,全是在转换中设计的,所以我们要先创建一个转换。

kettle庖丁解牛第9篇之DB连接终篇

kettle庖丁解牛第9篇之DB连接终篇

保存转换

kettle庖丁解牛第9篇之DB连接终篇

给你新建的转换,起个名字,并保存

kettle庖丁解牛第9篇之DB连接终篇

创建DB连接

kettle庖丁解牛第9篇之DB连接终篇

kettle庖丁解牛第9篇之DB连接终篇

kettle庖丁解牛第9篇之DB连接终篇

兄弟们仔细看一下,此处填写的信息,正是我们jdbc需要配置的相关信息。

kettle庖丁解牛第9篇之DB连接终篇

兄弟们,看到这个弹框提示的successfully的内容,恭喜恭喜你已经成功的使用kettle创建了一个连接oracle的DB连接!!!

kettle庖丁解牛第9篇之DB连接终篇

kettle庖丁解牛第9篇之DB连接终篇

展开DB连接标签,就可以看到我们上面创建的DB连接,兄弟们跟着我一步一步操作,相信你和我一样成功了,嘿嘿你真棒!!!

结束语

本篇文章主要详细的讲解了:oracle监听器相关内容(简介、请求的类型、连接方式、配置监听、维护命令、查看实例名)、kettle中的DB连接(连接oracle)。

来看文章的兄弟们,技术功底是不一样的,关于kettle的DB连接部分就写到这吧,市面上主流的DB应该全包括了,如果工作中遇到其它类型的数据,操作过程应该是类似的。

下一篇带来的是表输入组件,这几篇DB连接就是为了表输入做的准备知识点。

兄弟们,其实想和作是有一段距离的,你想着想着就没有了,可是你做着做着,它就落地了。

啥都别说了,兄弟们后面跟着我干就完了,我们依然掰开揉碎的方式去说。后续的内容更精彩,敬请期待,感谢兄弟们的关注!!

以上是关于kettle庖丁解牛第9篇之DB连接终篇的主要内容,如果未能解决你的问题,请参考以下文章

kettle庖丁解牛第20篇之JSON输出

kettle庖丁解牛第14篇之JSON输入

kettle庖丁解牛第26篇之删除

kettle庖丁解牛第5篇之文本文件输入

kettle庖丁解牛第25篇之插入更新

kettle庖丁解牛第21篇之SQL文件输出