Oracle WebLogic 数据库连接原理及案例探讨

Slides:



Advertisements
Similar presentations
JSP 与数据库 SQL 语言简介 SQL 语言简介 JDBC 简介 JDBC 简介 使用 JDBC 连接数据库 使用 JDBC 连接数据库 访问数据库 数据库访问应用举例.
Advertisements

Data type P64 ‘’ 转义字符 P67 P68 EXE,选出某个教师的学生中最新的一 个,要姓名, ID (,LIMIT ) EXISTS,NOT EXISTS P409 Q,EXISTS 和 in 的区别( 1000 ,查询结果)
Java 技术与应用 数据库应用 ( 第 14 章 ) 西安交大 卫颜俊 2008 年 12 月 电子信箱: QQ: 网站 : /java.
第 7 章 数据库 1. Overview  数据库概述  数据库管理系统  数据库的体系结构和数据库模型  SQL 语言  数据库技术  构建数据库系统 2.
数据库原理 彭煜玮 计算机学院 珞珈图腾数据库实验室.
Database Management System 資料庫管理系統
第15章 备份与恢复数据库 日志文件 基本概念 恢复数据库的基本原理 数据库故障的种类 备份数据库 备份的内容和时间 备份的一般方法
公司保密工作要求及 院商秘保护工作安排 2014年9月12日.
淘宝海量数据产品技术架构 张轩丞(朋春) 淘宝网-数据平台与产品部.
壹、緣起 在「夢想大作戰」的主題裡,主要分為「個人挑戰」與「小組挑戰」兩個部份,當個人挑戰陸續完成後,緊接著進入小組挑戰的階段。
厦门大学数据库实验室 刘颖杰 2014年11月15日 实习总结报告 厦门大学数据库实验室 刘颖杰 2014年11月15日.
“亲子教育”心理成长任务 主讲:刘晓红 广州中医药大学心理辅导中心 主任 国家心理咨询师职业资格 培训师 全国人才专业技术能力测评EAP 高级讲师.
数据库原理及应用 《数据库原理及应用》课程组 荆楚理工学院.
An Introduction to Database Systems
MORE THAN HONEY 采 得 百 花 成 蜜 后 吕超逸
SAE Java 实际应用 在这里写上你的标题 作者名字/日期
开放式资源共享交易平台 PK学堂 老师体验手册 Version 1.2
云智慧助力在线医疗服务性能优化 —让IT运营更简单 2015年4月 云智慧科技(北京)有限公司.
EF少儿英语学习研究报告(北京).
配合< JSP程序设计>例子源代码一起使用
第六章 数据库和ADO.NET 褚龙现 软件学院.
体育教师提高科研能力的有效策略 ——从观察、分析、选题、构思谈起
第十三章 SQL Server的安全管理.
第 11 章 網際網路與資料庫系統.
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
信息系统 应急解决方案 北京神州讯安科技有限公司
MySQL資料庫安全管理.
建设数字化的卫生监督体系 深 圳 市 卫 生 监 督 所 2006年4月.
伺服器網路檢測與管理 資訊中心網路管理組 王裕仁 2006/06/29.
数据库应用技术 天津大学计算机基础教学部 2013年9月.
                            Oracle 并行服务器介绍
山东大学附属中学 甄广军 Tel: 初中体育 课堂教学设计要点 山东大学附属中学 甄广军 Tel:
好爸妈胜过好老师 激活兴趣、培养能力、以文育人 主讲:谢晓鸿 快乐作文杂志社 重庆小记者站.
欢迎各位参加 《中国共产党党务管理信息系统》 培训班 佛山市超迅科技有限公司 讲师:李晓媚 客户服务热线:
转正述职报告 乐恩公司 史航
研究生入学教育 网络中心
性能测试培训 在组设置中可使用此模板作为演示培训材料的起始文件。 节
JAVA 程式設計與資料結構 第十一章 JDBC.
Alibaba 数据库高可用架构 Alibaba
第1章 SQL Server 关系数据库简介 1.1 SQL Server 特点 1.2 SQL Server的安装和配置
計中「多媒體與網路應用」短期訓練課程 FTP server 架設 (in Windows)
JDBC 数据库系统与应用 2014年.
解振宇 客户技术经理 客户售前技术部 微软中国有限公司广州办事处
Arena System Technology Architecture 系统技术架构 1、Database V2(Lotus Notes)V3(Oracle8i) 2、Application Server SilverStream2.53 (Java as server side programming.
Working with Databases (II) 靜宜大學資管系 楊子青
Chap 3 資料庫模型與處理架構.
Discover the power of SSL-VPN+ IT management
数据库实验指导(一)
SQL Server 2000 数据库入门.
在一定程度上 人类的思维产生于 简单个体之间的相互作用 ——Marvin Minsky.
第5章 資料倉儲的資料建置.
TCL信息产业集团 吴士宏 现代远程教育标准国际研讨会 北京
第七章 客服管理中心之系統規劃與建構 -以AvecCRM為例
使用ADO.NET访问数据 数据库连接 C#程序设计课程组.
Oracle Containers for J2EE(OC4J) 独立版
案例—某网上书店系统设计.
数据智能同步系统 操作指南.
專題J組 題目: 檢定考試管理系統 指導老師: 曾修宜 老師 組員: 曾聖棋 謝宗翰
第4章(1) 空间数据库 —数据库理论基础 北京建筑工程学院 王文宇.
SQL Anywhere数据库非常规恢复工具
An Introduction to Database System
模式与实践:Windows Mobile 5.0应用程序架构
Logistics Enterprise 新手指南 系統資料操作
機構督導: 范盛翔 督導 實習生: 佛光大學社會學系江佳穎 實習日期: 7/1(二)~8/29(五)
助教:廖啟盛 JAVA Socket(UDP) 助教:廖啟盛
学 生 端 操 作 指 南
資料庫應用與實作 一到六章重點、習題.
Java语言程序设计.
第 1 章 認識資料庫系統.
数据库应用技术 天津电大 翟迎建.
Presentation transcript:

Oracle WebLogic 数据库连接原理及案例探讨 http://helloweblogic.com

关于我 一 一 一 一 一 一 一 郑波涛 (helloweblogic) 上海东方龙马 中间件技术顾问 浙江Oracle User Group 联合创始人 一 博客:http://fm928.blog.163.com http://helloweblogic.com 一 QQ:155282417 一 TEL:13456782862 ZJOUG China中间件 一 MAIL:zhengbt@olm.com.cn http://helloweblogic.com

主题 WLS JDBC的架构 6种JDBC典型故障 经典故障案例 http://helloweblogic.com

JDBC的架构 http://helloweblogic.com

JDBC的架构 通过java 标准编程访问: 对应用程序透明的、可靠的性能: WSL DataSource 是一个成熟的、稳定的连接池功能,并有一些高级组件可选: 通过java 标准编程访问: DS 可以通过管理进行配置 使用标准 JDNI API调用 使用标准的jdbc API get/close 数据库连接 对应用程序透明的、可靠的性能: Prepared Statement 缓存 自动实现数据库故障的切换和恢复 支持App访问jdbc 驱动特定的对象,以实现对特定供应商的标准进行扩展 http://helloweblogic.com

JDBC的架构 Generic Data Source Multi Data Source GridLink DataSource WebLogic有3中连接类型Data Source: Generic Data Source Multi Data Source GridLink DataSource WLS Data Source和WLS JTA 事务服务紧紧的集成在一起 JAVA EE应用应始终使用WLS DS App应用可以使用JTA 事务 http://helloweblogic.com

JDBC的架构 JTA 事务和JDBC事务的区别: 分为局部事务和全局事务(分布式事务) 分布式事务即涉及多个数据库的事务 关于事务 分为局部事务和全局事务(分布式事务) 分布式事务即涉及多个数据库的事务 XA规范-2pc协议(2Phase Commit) WebLogic 实现了对对全局事务的单阶段优化 http://helloweblogic.com

JDBC的架构 用与连接单一数据库的DS 实际支持任何JDBC标准的驱动 支持多节点的url配置 Generic Data Sources jdbc:oracle:thin:@(description=(address_list= (address=(host=172.18.137.231) (protocol=tcp)(port=1521))(address=(host=172.18.137.230)(protocol=tcp) (port=1521)) (load_balance=yes)(failover=yes))(connect_data=(service_name= db.hello.com))) http://helloweblogic.com

JDBC的架构 实际上是包含多个Generic Data Source 用于多节点数据库 Multi Data Sources 实际上是包含多个Generic Data Source 用于多节点数据库 支持JTA事务之间的load-balancing策略和failover 配置静态化,去节点手动执行 是一种比较老的连接RAC数据库的策略 11g中增加到了Grid Link DS http://helloweblogic.com

JDBC的架构 Multi Data Sources http://helloweblogic.com

JDBC的架构 专用连接RAC 集群数据库环境 11gr2中新增加的连接RAC 集群的策略 GridLink Data Sources 一个RAC 集群对应一个DS 快速的连接恢复,自动适应RAC的拓扑变化 针对各RAC节点的压力进行分发,实现动态负载均衡 配置容易,简便 使用SCAN地址配置方式、ONS/FAN时间驱动通知方式 完美支持Oracle database 12c Web session Affinity Transaction Affinity Oracle Notification Service,分主节点ONS和子节点ONS,就是Oracle分布式集群系统中各服务器上发布和上报因为用户手工初始化、依赖服务失败、运行失败,自动重启等原因产生的"UP,DOWN,Not_restart,Restart_failed,Node_Down,preConn_Up,preConn_Down"事件的进程,是构成高可用性容灾系统的心跳服务。 ps -ef |grep ons只能看到ONS服务是否在运行中,onsctl ping才能确认ORC服务运行是否正常。 http://helloweblogic.com

JDBC的架构 GridLink Data Sources 通过Active GridLink for RAC 将性能提升 3 倍 将 WebLogic 与数据库 RAC 集群相集成 • 动态负载平衡 RAC 节点请求 • RAC 节点事务关联为本地处理 • 无论 RAC 怎样发生变化也能保持连接 http://helloweblogic.com

GridLink DS 快速连接恢复(Fast Connection Failover) 快速的数据库错误定位 自动从pool中消除无效的连接 自动识别新加入或者去除的RAC节点 http://helloweblogic.com

GridLink DS 动态负载均衡(Runtime Connection Load Balancing) 可以根据负荷分配请求到不同的RAC节点 http://helloweblogic.com

GridLink DS Web Session-base Affinity 针对对应用选择一个最佳性能的RAC 实例作为连接 平均响应时间减半、互联流量大幅减少 http://helloweblogic.com

GridLink DS Transection-base Affinity 基于全局事务id,而不是ds 确保不同的ds连接是同一个RAC 节点 http://helloweblogic.com

GridLink DS 可用性大大提高 通过ONS提供故障通知 与幸存节点建立新连接 恢复通知 正常RAC节点关闭 Oracle Notification Service,分主节点ONS和子节点ONS,就是Oracle分布式集群系统中各服务器上发布和上报因为用户手工初始化、依赖服务失败、运行失败,自动重启等原因产生的"UP,DOWN,Not_restart,Restart_failed,Node_Down,preConn_Up,preConn_Down"事件的进程,是构成高可用性容灾系统的心跳服务。 ps -ef |grep ons只能看到ONS服务是否在运行中,onsctl ping才能确认ORC服务运行是否正常。 http://helloweblogic.com

GridLink DS 性能大大提高 RCLB可将运行时连接负载分配给空闲的节点 性能提升2-3倍 提高性能的可预测性 http://helloweblogic.com

GridLink DS 提高可管理性 GridLink可隔离WebLogic不收RAC更改的影响 自动检测RAC节点 更简单 更可靠、零停机 http://helloweblogic.com

动态添加 RAC 节点 响应时间缩短约 30% http://helloweblogic.com

典型JDBC故障6宗之一 <BEA-149205> <Failed to initialize the application ‘TestDataSource’ due to error weblogic.application.ModuleException: . weblogic.application.ModuleException: at weblogic.jdbc.module.JDBCModule.prepare(JDBCModule.java:289) at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93)at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:387) weblogic.common.ResourceException: Could not create pool connection. The DBMS driver exception was: The Network Adapter could not establish the connection - – - – - – 或者- – - – - - weblogic.common.ResourceException: weblogic.common.ResourceException: Could not create pool connection. The DBMS driver exception was: Io exception: The Network Adapter could not establish the connection http://helloweblogic.com

典型JDBC故障6宗之一 检查<DOMAIN_HOME>\config\jdbc下的每一个数据源的配置文件,xml文件,数据库的URL,TNS名称,端口等等的配置是否正确,这要和DBA进行确认; 检查weblogic启动中驱动程序加载是否正确,即驱动jar包是否在classpath中,这个默认是有的; 如果检查都是成功的,可以使用dbping命令来测试一下数据库是否正常。测试的命令如下:java -classpath /bea103/wl_server103/server/lib/weblogic.jar utils.dbping ORACLE_THIN <dbUserName> <dbPasswoes> <dbURL> telnet 数据库服务器的端口是否成功 http://helloweblogic.com

典型JDBC故障6宗之二 <localhost.localdomain> <AppServer01> <[ACTIVE] ExecuteThread: '95' for queue: 'weblogic.kernel.Default (self-tuning)'> <<anonymous>> <> <> <1413511194117> <BEA-001129> <Received exception while creating connection for pool "np": Io exception: Got minus one from a read call> Caused by: java.sql.SQLRecoverableException: Io exception: Got minus one from a read call http://helloweblogic.com

典型JDBC故障6宗之二 数据库在维护的时候或者数据库在不一致状态下发生的,比如数据库还没起好在unmounting状态 检查Server log查看报错的最早时间,并和数据库端进行比对确认; 与DBA进行确认,在这个时间点数据库端发生了什么事情。 为了进一步详细获取信息,可以使用一些debug参数 -Dweblogic.resourcepool.max_test_wait_secs=xx -Dweblogic.debug.DebugJDBCSQL=true -Dweblogic.log.StdoutSeverity=Debug http://helloweblogic.com

典型JDBC故障6宗之三 console看到数据源的状态是SUSPENDED/DISABLED状态 首先可以使用telnet检查数据的端口是否正常。 再可以使用其他一些客户端连接数据库用户名和DS的一样。 如果可以,可以手动将数据源进行停止再启动,命令如下: 1),执行suspend: java weblogic.Admin -url t3://localhost:7001 -username weblogic -password weblogic SUSPEND_POOL DataSourceName 2),执行启动:java weblogic.Admin -url t3://localhost:7001 -username weblogic -password weblogic RESUME_POOL DataSourceName http://helloweblogic.com

典型JDBC故障6宗之四 <Warning> <JDBC> <BEA-001153> <Forcibly releasing inactive connection “weblogic.jdbc.wrapper.PoolConnection_oracle_jdbc_driver_T4CConnection@3″ back into the connection pool “TestDataSource”, currently reserved by: java.lang.Exception 非环境问题,意思是“你的应用程序已经获取到一个Connection对象并没有释放,或者因为一直在等待数据库的返回而hanging“ 连接泄露 可以通过inactive time out缓解 http://helloweblogic.com

典型JDBC故障6宗之五 java.sql.SQLException: Closed Connection At oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70) 应用获取到的connection对象是不可用的 将连接池的“Test Connection On Reserve”参数打开 执行select 1 from dual 测试 http://helloweblogic.com

典型JDBC故障6宗之六 java.sql.SQLException: No more data to read from socket at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1200) at oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1155) at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:279) 应用程序以及从数据源获取到了一个数据库连接对象,但是应用程序自身以及检测到这个连接以及time out 或者已经是staled状态了。 需要手工进行数据库的重启或者是WebLogic Server的重启 简单一招:将数据源重新部署一下,使连接池进行重置 http://helloweblogic.com

Support Pattern: JDBC_Causes_Server_Hang 再赠送一个经典故障: Support Pattern: JDBC_Causes_Server_Hang http://helloweblogic.com

Support Pattern: JDBC_Causes_Server_Hang 问题现象分析 App 或wls本身调用的connection会阻塞一个thread的执行 长时间占用thread 即使transaction超时,也不会终止,wls只是标记为rollback 抛出异常如下: 最终导致 Server 挂起! 无休止的Hung。。。。 唯一的办法:restart ! <ExecuteThread: '64' for queue: 'default' has been busy for "740" seconds working on the request "Scheduled Trigger", which is more than the configured time (StuckThreadMaxTime) of "600" seconds.> <kernel identity> <> <000339> <ExecuteThread: '66' for queue: 'default' has become "unstuck".> http://helloweblogic.com

Support Pattern: JDBC_Causes_Server_Hang 为什么发生此问题? 在JDBC代码中使用了DriverManager.getConnection() 发送给DB的SQL执行时间异常的长 配置了JDBC连接池的数据库挂起且不及时从调用返回 低速或超载的网络导致数据库调用速度减慢或挂起 死锁导致所有执行线程挂起和永久等待 JDBC 连接池中的 RefreshMinutes 或 TestFrequencySeconds 属性导致 WebLogic Server 中出现挂起期间。 JDBC 连接池收缩和数据库连接的重新创建使响应时间变长 http://helloweblogic.com

Support Pattern: JDBC_Causes_Server_Hang 如何处理此问题? 分析挂起的Server实例,通过threadump分析 优化JDBC代码,主要是SQL 优化JDBC连接池的配置 优化数据库的性能,比如表索引,sql执行计划,数据量大小 http://helloweblogic.com

经验分享 分析问题,要尽可能的走自己的路 从Java虚拟机的角度而不是应用程序的角度考虑问题 尽可能的通过参数和配置而不是改应用代码来解决问题 不要轻易认同开发人员的问题解决方式 不要被用户和开发人员误导入歧途 否则可真就是“自寻死路” http://helloweblogic.com

Thank You ! ZJOUG 微 信 公 众 号:【ZJOUG】 Helloweblogic微信公众号:【China中间件】