小小狠招:巧妙使用HANA数据库的jdbc driver

SAP旗下的HANA数据库,实际上是分为两个系列进行发布,一种是基于本地部署的称之为HANA Platform。另一种是面向Cloud平台的,称之为HANA Cloud。

在实际使用当用,因为两者基本上共用同一代码库,除个别地方略有差异以外,我们可以共用它们的JDBC driver。

本文就简要介绍一下这个driver的几个非常有用的小技巧,你会感觉到,普普通通的jdbc驱动,也能做很多事情。

实例

获取hana cloud jdbc driver:

我们从:https://mvnrepository.com/artifact/com.sap.cloud.db.jdbc/ngdbc可以得到较新版本的hana JDBC。

也能看到包的定义:

<!-- https://mvnrepository.com/artifact/com.sap.cloud.db.jdbc/ngdbc -->
<dependency>
    <groupId>com.sap.cloud.db.jdbc</groupId>
    <artifactId>ngdbc</artifactId>
    <version>2.20.11</version>
    <type>pom</type>
</dependency>

顺着里边的说明,也可以看到:对应的帮助文档:

https://help.sap.com/docs/SAP_HANA_CLIENT/f1b440ded6144a54ada97ff95dac7adf/434e2962074540e18c802fd478de86d6.html

我们使用单个命令行,就可以下载得到该文件:

mvn dependency:get -DgroupId=com.sap.cloud.db.jdbc -DartifactId=ngdbc -Dversion=2.20.11 -Dtransitive=false
mvn dependency:copy -Dartifact=com.sap.cloud.db.jdbc:ngdbc:2.20.11 -DoutputDirectory=./

第一个命令会下载驱动到你的repository的相关子目录当中。第二个命令会将对应的文件重新复制到你指定的目录:-DoutputDirectory=./  最终会得到文件: ngdbc-2.20.11.jar

当然,你也可以直接从SAP官网上下载相应的完整的client包,它里边也包含有完整的JDBC驱动。

当作命令行连接HANA

java -jar ngdbc-2.20.11.jar -u SYSTEM,<password> -n <ip_address>:30215 -c "SELECT DATABASE_NAME,version FROM SYS.M_DATABASES" -w 50
| DATABASE_NAME                                      | VERSION                          |
-----------------------------------------------------------------------------------------
| HDB                                                | 2.00.070.00.1679989823           |
1 rows.
实例2: 查询数据库服务器上所有安装版本历史:
java -jar ngdbc-2.20.11.jar -u SYSTEM,<password> -n <ip_address>:30215 -c "SELECT * FROM SYS.M_DATABASE_HISTORY"

| INSTALL_TIME                | VERSION                          |
------------------------------------------------------------------
| 2017-01-17 09:38:19.0000000 | 1.00.112.04.1467296086           |
| 2017-04-19 09:20:18.0000000 | 2.00.002.00.1490188421           |
| 2017-06-12 09:19:44.0000000 | 2.00.011.00.1493936640           |
| 2017-07-07 10:34:05.0000000 | 2.00.012.00.1498457145           |
| 2018-07-16 09:40:12.0000000 | 2.00.031.00.1528768600           |
| 2018-09-24 05:50:11.0000000 | 2.00.032.00.1533114046           |
| 2019-02-05 04:43:35.0000000 | 2.00.036.00.1547699771           |
| 2019-09-20 03:32:26.0000000 | 2.00.042.00.1564994110           |
| 2020-02-13 12:02:42.0000000 | 2.00.044.00.1571081837           |
| 2020-05-06 14:04:11.0000000 | 2.00.047.00.1586595995           |
| 2020-10-06 06:01:18.0000000 | 2.00.052.00.1599235305           |
| 2021-01-18 06:15:01.0000000 | 2.00.053.00.1605092543           |
| 2021-02-05 09:46:59.0000000 | 2.00.054.00.1611906357           |
| 2021-05-19 10:25:57.0000000 | 2.00.055.00.1615413201           |
| 2021-09-10 02:38:40.0000000 | 2.00.057.00.1629894416           |
| 2021-10-18 10:39:57.0000000 | 2.00.058.00.1634122452           |
| 2021-11-22 03:29:50.0000000 | 2.00.059.00.1636704142           |
| 2022-02-16 11:20:29.0000000 | 2.00.061.00.1644229038           |
| 2022-05-24 06:05:26.0000000 | 2.00.062.00.1650891137           |
| 2022-10-12 03:49:19.0000000 | 2.00.064.00.1660047502           |
| 2022-11-23 04:35:13.0000000 | 2.00.065.00.1665753120           |
| 2023-01-27 05:55:29.0000000 | 2.00.066.00.1671096120           |
| 2023-05-18 06:08:25.0000000 | 2.00.070.00.1679989823           |

你只要在 -c 后边传入相应的命令行即可。有意思吧。这也算是一个简单的命令行客户端了。

最简单的,你可以直接针对jar不带任何参数,它会输出当前的时间戳(来自服务器的时间)。

java -jar ngdbc-2.20.11.jar -u SYSTEM,<password> -n <ip_address>:30215
| CURRENT_TIMESTAMP           |
-------------------------------
| 2024-03-28 21:08:48.0890000 |

完整的命令行格式是这样的:

java -jar ngdbc.jar -u <user,password>
                   [-n <hostname:port>]
                   [-i <instance-number>]
                   [-d <database-name>]
                   [-o <connect-option>]
                   [-w <maximum-column-width>
                   [-c <sql-command>]

一些重要的开关

其实,这里主要是强调:JDBC Tracing and Trace Options的用法。在你实际开发应用过程当中,添加适当的开关,能帮你快速定位问题。

1、直接在jdbc连接串中设置
jdbc:sap://localhost:30015/?autocommit=false&traceFile=traceFile.txt&traceOptions=CONNECTIONS,API,PACKET,TIMESTAMPS,ELAPSEDTIMES,FAILURE_ACTION_STDERR

这里就设置了很多跟踪选项:CONNECTIONS,API,PACKET,TIMESTAMPS,ELAPSEDTIMES,FAILURE_ACTION_STDERR

2、在命令行里头直接设置
  • 获取当前配置项

java -jar ngdbc-2.20.11.jar SHOW

  Driver version                               : 2.20.11-354e45de0dcbabd02f58c506ecf1138161ee4b1e
  Settings file name                           : ~/.sdb/jdbctracesettings.ini
  Shared memory file name                      : ~/.sdb/jdbctrace.shm

  Configuration
  Trace                                        : Disabled
  Trace file name                              : jdbctrace.prt
  TRACE CONNECTIONS                            : On
  TRACE API                                    : On
  TRACE PACKET                                 : On
  TRACE DISTRIBUTION                           : Off
  TRACE STATISTICS                             : Off
  TRACE CLEANERS                               : On
  TRACE DEBUG                                  : Off
  Show plain-text client-side encrypted values : Disabled
  Show timestamps                              : Disabled
  Show elapsed times                           : Disabled
  Trace file size                              : Unlimited
  Stop on error                                : Disabled
  Trace failure action                         : Ignore
  Performance trace                            : Disabled
  Performance trace file name                  : jdbcperformancetrace.prt
  • 直接设置选项举例

java -jar ngdbc-2.20.11.jar TRACE ON
//
  Driver version                               : 2.20.11-354e45de0dcbabd02f58c506ecf1138161ee4b1e
  Settings file name                           : /Users/i062873/.sdb/jdbctracesettings.ini
  Shared memory file name                      : /Users/i062873/.sdb/jdbctrace.shm

  Configuration
  Trace                                        : Enabled
  Trace file name                              : jdbctrace.prt
  TRACE CONNECTIONS                            : On
  TRACE API                                    : On
  TRACE PACKET                                 : On
  TRACE DISTRIBUTION                           : Off
  TRACE STATISTICS                             : Off
  TRACE CLEANERS                               : On
  TRACE DEBUG                                  : Off
  Show plain-text client-side encrypted values : Disabled
  Show timestamps                              : Disabled
  Show elapsed times                           : Disabled
  Trace file size                              : Unlimited
  Stop on error                                : Disabled
  Trace failure action                         : Ignore
  Performance trace                            : Disabled
  Performance trace file name                  : jdbcperformancetrace.prt

这样我样可以在相同路径下边的jdbctrace*.prt文件里头得到trace的内容:

    <Part PartKind=ResultSetID(13) PartAttributes=0(none) ArgumentCount=1 BigArgumentCount=0 BufferLength=8 BufferSize=29816>
      <PartBuffer>
       0 | b5 97 c0 10 65 72 05 00                         | ....er..         |
      </PartBuffer>
    </Part>
    <Part PartKind=StatementContext(39) PartAttributes=0(none) ArgumentCount=4 BigArgumentCount=0 BufferLength=206 BufferSize=29792>
      <PartBuffer>
       0 | 01 21 ac 00 01 00 00 00 00 00 00 00 68 17 c6 05 | .!..........h... |
      10 | 00 00 00 00 e2 46 b2 42 00 00 00 00 bc e5 53 3d | .....F.B......S= |
      20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ |
      30 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ |
      40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ |
      50 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ |
      60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ |
      70 | 00 00 00 00 00 00 00 00 00 00 00 00 00 15 13 02 | ................ |
      80 | e2 7f 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ |
      90 | 00 00 40 b0 01 00 00 00 00 00 00 00 00 00 00 00 | ..@............. |
      a0 | 00 00 00 00 76 80 34 5c 08 d7 24 00 9d 0a 96 ad | ....v.4\..$..... |
      b0 | 02 04 03 03 00 00 00 00 00 00 07 04 bd 01 00 00 | ................ |
      c0 | 00 00 00 00 08 04 20 bb 00 00 00 00 00 00       | ...... .......   |
.....

这些TRACE的内容非常有用。尤其是在遇到你认为是BUG的时候,可以将这些TRACE文件作为佐证,提供给SAP官方,便于他们去修复问题。

由于这是一个基于操作系统用户级的设置。当你设置完使用完之后,可以再将其恢复到原来的状态:

java -jar ngdbc-2.20.11.jar TRACE OFF
3、启动图形方式进行设置

既然有命令行方式,那同时也就有了GUI方式。我们用-g选项就可以启动。

java -jar ngdbc-2.20.11.jar -g

图片

image-20240329072459665

所有可以配置的参数项,一目了然。

1)有enable tracing的,下边可以指定trace文件,trace级别,以及时间戳大小,是否明文显示。

2)是否启用关于性能的tracing,这个对于测量性能指标也非常重要。

总结

一个小小的jdbc驱动,HANA数据库为它提供的功能还是比较强悍的。在关键的时候,能起到非常大的作用。如果只是一些非常简单的连接性需求,甚至不需要任何第三方工具,直接使用简单的命令行就可以顺利完成。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【更清晰】照片分享,欢迎家庭新成员HPE ProLiant DL580 Gen9

正文共&#xff1a;1234 字 29 图&#xff0c;预估阅读时间&#xff1a;1 分钟 距离上一台服务器HPE ProLiant DL360 Gen9开箱已经过去4年了&#xff0c;回忆满满&#xff08;风雨同舟&#xff0c;感谢HP Proliant DL360 Gen9陪我走过的四年&#xff09;&#xff1b;就在上周&a…

相册清理大师-手机重复照片整理、垃圾清理软件

相册清理大师是一款超级简单实用的照片视频整理工具。通过便捷的操作手势&#xff0c;帮助你极速整理相册中的照片和视频、释放手机存储空间。 【功能简介】 向上滑动&#xff1a;删除不要的照片 向左滑动&#xff1a;切换下一张照片 向右滑动&#xff1a;返回上一张照片 整理分…

拌合楼管理软件开发(十三) 对接耀华XK3190-A9地磅(实战篇)

前言: 实战开整 目前而言对于整个拌合楼管理软件开发,因为公司对这个项目还处于讨论中,包括个人对其中的商业逻辑也存在一些质疑,都是在做一些技术上的储备.很早就写好了串口与地磅对接获取代码,也大概知道真个逻辑,这次刚好跟库区沟通,远程连接到磅房电脑,开始实操一下. 一、地…

Sql注入---基础

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.Sql注入概述 攻击者通过构造恶意的SQL查询语句&#xff0c;将其注入到应用程序的数据库查询中&#xff0c;以执行未经授权的操作或者获取敏感信息。 假设如下场景&#xff0c;当你想要知道对…

双端队列的插入与删除操作的实现及其时间复杂度分析

双端队列(deque,全称为double-ended queue)是一种支持在两端插入和删除元素的数据结构。与栈和队列不同,双端队列提供了更加灵活的操作方式。在实现双端队列时,我们可以采用数组作为底层数据结构,以保证插入和删除操作的时间复杂度为O(1)。 一、双端队列的基本概念 双…

《QT实用小工具·四》屏幕拾色器

1、概述 源码放在文章末尾 该项目实现了屏幕拾色器的功能&#xff0c;可以根据鼠标指定的位置识别当前位置的颜色 项目功能包含&#xff1a; 鼠标按下实时采集鼠标处的颜色。 实时显示颜色值。 支持16进制格式和rgb格式。 实时显示预览颜色。 根据背景色自动计算合适的前景色…

Artplayer视频JSON解析播放器源码|支持弹幕|json数据模式

全开源Artplayer播放器视频解析源码&#xff0c;支持两种返回模式&#xff1a;网页播放模式、json数据模式&#xff0c;json数据模式支持限制ip每分钟访问次数UA限制key密钥&#xff0c;也可理解为防盗链 &#xff0c;本播放器带弹幕库。 运行环境 推荐使用PHP8.0 redis扩展…

【每日跟读】常用英语500句(400~500)

【每日跟读】常用英语500句 Where can I buy a ticket? 在哪里能买到票&#xff1f; When is the next train? 下趟火车什么时候到&#xff1f; Thank you so much for helping me move yesterday. 非常感谢你昨天帮我搬家 I’m feeling a little under the weather toda…

专升本-信息安全

信息安全&#xff1a; 1.信息安全的基本属性&#xff1a;保密性&#xff0c;完整性&#xff0c;可用性 信息本身的安全是指保证信息的保密性&#xff08;非授权用户不能访问信息&#xff09;&#xff0c;完整性&#xff08;信息正确&#xff0c;完整&#xff0c;违背篡改&…

从0开始搭建基于VUE的前端项目

准备与版本 安装nodejs(v20.11.1)安装vue脚手架(vue/cli 5.0.8) ,参考&#xff08;https://cli.vuejs.org/zh/&#xff09;vue版本&#xff08;2.7.16&#xff09;&#xff0c;vue2的最后一个版本 初始化项目 创建一个git项目&#xff08;可以去gitee/github上创建&#xff…

CVE-2023-4427:Out-of-bounds access in ReduceJSLoadPropertyWithEnumeratedKey

文章目录 前言环境搭建for-in && enum cache漏洞分析漏洞利用总结参考 前言 之前分析调试漏洞时&#xff0c;几乎都是对着别人的 poc/exp 调试&#xff0c;感觉对自己的提升不是很大&#xff0c;所以后面分析漏洞时尽可能全面分析&#xff0c;从漏洞产生原理、如何稳定…

亚马逊测评新策略:解决底层环境防关联,提升下单成功率

对于做测评的环境系统&#xff0c;确保稳定性和成功率是非常重要的。市面上有各种环境方案&#xff0c;如虚拟机、模拟机、gcs、云手机、VPS等。然而&#xff0c;这些方案不仅成本高&#xff0c;而且成功率很低。因此&#xff0c;一个好的环境系统是成功的基础。 亚马逊平台的…

zabbix分布式监控实战

zabbix分布式监控实战 架构 组件 zabbix-server&#xff1a;负责接收agent发送的数据 zabbix-agent&#xff1a;部署在被监控主机上&#xff0c;负责被监控主机的数据并将数据发送给zabbix-server zabbix-database&#xff1a;存储所有zabbix配置信息&#xff0c;监控数据 …

(C语言)fread与fwrite详解

1. fwrite函数详解 头文件&#xff1a;stdio.h 函数有4个参数&#xff0c;只适用于文件输出流 作用&#xff1b;将从ptr中拿count个大小为size字节的数据以二进制的方式写到文件流中。返回写入成功的数目。 演示 #include <stdio.h> int main() {FILE* pf fopen(&qu…

微信小程序如何进行npm导入组件

文章目录 目录 文章目录 前言 一、安装node 二、微信小程序通过npm安装组件&#xff08;以Vant-weapp为例&#xff09; 一、Vant-weapp下载 二 、修改 app.json 三 、修改 project.config.json 四 、 构建 npm 包 前言 微信小程序使用npm导入有很多的教程&#xff0c;我…

MySQL开窗函数

测试环境&#xff1a;mysql8.0.18 官方文档&#xff1a;https://dev.mysql.com/doc/refman/8.0/en/window-functions.html 一、窗口函数介绍二、语法结构三、自定义窗口1.rows&#xff08;重点&#xff09;2.range3.默认窗口 四、常用窗口函数示例1.row_number & rank &…

书生·浦语训练营二期第一次笔记

文章目录 书生浦语大模型全链路开源体系视频笔记Intern2模型体系 训练数据集书生浦语全链条开源开放体系开放高质量语料数据预训练微调中立全面性能榜单大模型评测全栈工具链部署 书生浦语大模型全链路开源体系-Bilibili视频InternLM2技术报告&#xff08;中文&#xff09;Inte…

python多方式操作elasticsearch介绍

python多方式操作elasticsearch介绍 1. requests模块操作ES ​ requests 是一个 Python HTTP 库&#xff0c;它简化了发送 HTTP 请求和处理响应的过程。通过 requests 模块&#xff0c;开发人员可以轻松地与 Web 服务进行通信&#xff0c;包括获取网页内容、执行 API 请求等。…

【Docker】搭建安全可控的自定义通知推送服务 - Bark

【Docker】搭建安全可控的自定义通知推送服务 - Bark 前言 本教程基于绿联的NAS设备DX4600 Pro的docker功能进行搭建。 简介 Bark是一款为Apple设备用户设计的开源推送服务应用&#xff0c;它允许开发者、程序员以及一般用户将信息快速推送到他们自己的iPhone、iPad等设备上…

webGIS 之 智慧校园案例

1.引入资源创建地图 //index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&qu…