问题标签 [db2-zos]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
816 浏览

db2 - 从 IBM Z/OS 获取日志

我是大型机概念的新手,之前没有使用过任何 IBM Z 系列机器。但现在我需要从 Z/OS 平台获取 db2 日志。

我之前使用 JT400.jar 从 IBM AS400 收集日志。(将执行远程命令并使用 java 读取输出)。但是对于 Z/OS,我无法从文档中找到这样的东西。

所以我需要知道以下情况的可能性。

  1. 运行远程命令并使用 JT400 等任何 API 读取它的输出。
  2. 将日志作为 Syslog 转发到任何 SIEM 解决方案((如ManageEngine EventLog AnalyzerArcSight ESM),无需任何第三方安装)
  3. 使用 SSH 连接列出日志文件,因为我听说 Z/os 也会有一些 Unix 属性(例如使用 JSCH)

即使有任何其他可能性,请在下面提及。这真的很有帮助。基于可能性,我只能考虑购买 Z/OS 大型机。

提前致谢。

0 投票
1 回答
1787 浏览

spring - 将 spring 数据配置连接到 IBM DB2 z/os 时出现异常

我在启动 Spring Boot 应用程序时遇到以下异常(应用程序没有任何代码,只有在 application.properties 文件中定义的 DB 相关配置和连接参数)

无法从数据库 com.ibm.db2.jcc.am.SqlSyntaxErrorException 获取 SequenceInformation:DB2 SQL 错误:SQLCODE=-204,SQLSTATE=42704,SQLERRMC=SYSCAT.SEQUENCES,DRIVER=4.19.49

pom.xml

数据库连接属性:

春季启动中的数据库配置代码:

}

0 投票
1 回答
149 浏览

db2 - Db2 在什么平台上运行

我被要求连接到公司大型机上的 Db2 数据库。我得到了主机名、端口号和数据库。我能够使用 Java 与 IBM JDK 1.8 版和 Db2 Universal JDBC 驱动程序成功连接到它。现在我已经连接到它,我如何找出底层的大型机平台是什么。它是 z/OS、OS/400 还是 VSE?是否有任何 SQL 查询可以获得该平台信息?另外我如何找出 Db2 的版本是什么?

0 投票
2 回答
406 浏览

jdbc - 使用 IBM JDK 与 OpenJDK 通过 JDBC 连接到 z/OS 上的 Db2

我可以使用与 WebSphere 9 捆绑在一起的 IBM JDK 1.8 使用 IBM 通用 JDBC 驱动程序文件 db2jcc4.jar 连接到 z/OS 上的 Db2。一切正常,我可以浏览目录并执行查询。我使用 Squirrel SQL 4.0.0 版。

但是,当我将 JDK 切换到 Open JDK 8 或 12 并保持其他所有内容相同时,我收到以下错误。应该怎么做才能修复这个错误?IBM JDK 和 Open JDK 之间有什么区别,这会导致 DB2 连接在一个 JDK 上工作而在另一个 JDK 上失败?

使用 Open JDK 12 时出错

0 投票
1 回答
376 浏览

db2 - DSNURWBG - 输入字段 ffffff 不完全在输入记录中

我正在尝试将文件加载到 DB2 表并收到以下错误:

输入字段 ffffffff 不完全在输入记录中

任何人都可以建议出了什么问题。

0 投票
1 回答
53 浏览

stored-procedures - 在 INSERT 或 UPDATE 记录存储过程中仅使用可更新表字段的子集?

考虑简单的命令:

更多的时候,我们只插入或更新一些表字段,但在 INSERT/UPDATE 上的所有 CRUD 存储过程示例都包含所有可更新的表字段,并且要使用这个 SP,我们需要填写所有这些参数。

在以下情况下会出现此类 SP 的问题
- 用户最初只想设置字段的子集 (1+),因此他不能使用插入所有字段的 SP
- 用户并不总是知道所有表字段,因此他不能使用 SP更新所有字段。我不想为可能的字段子集编写相同的 SP。
- 用户不应访问更新所有字段的 SP。
- 用户/用户操作并不总是有权更改所有表字段的值。
- 用户只想更新 1 个字段,但需要使用 CALL {table}_update( ... ) 中的所有表字段
在此示例中,用户可以访问记录的“主键”和“版本”(时间戳/数字)列.


可能的解决方案:


  • 解决方案 0:继续使用 INSERT/UPDATE 语句

这种方法的优点:
- 它有效

这种方法的缺点:
- 允许用户直接访问表时的安全问题-删除记录
时无法保存用户的数据


  • 解决方案 1:发送部分 DML 语句作为参数,SP 将使用它来创建动态 SQL 语句:

这种方法的缺点:
- 可能的 SQL 注入
- 动态 SQL 上没有可用的缓存和优化
- 无法检查输入字符串等...


  • 解决方案2:发送未使用的值 AS NULL并添加带有值的列列表的字符串参数以使用实际参数(即使它为空)

这种方法的缺点:
- 如果 SP 将来会更改参数的顺序,则该系统将中断
- 语句将再次动态准备,因此没有缓存。
- 创建“ins_fields”或“upd_fields”参数的复杂性


  • 解决方案 3:使用包含所有更改的 XML 字符串发送更新。

这种方法的优点:
- 可用于 1 个 SP 调用中的 INSERTs/UPDATEs/DELETEs
- 只有 1 个参数来列出所有更新的字段。

这种方法的缺点:
- 传输更多数据(因为 XML)
- 由于需要在服务器上解析 XML 而降低性能
- 增加了存储过程的复杂性。
- 增加客户端代码复杂性(创建 XML 字符串)


那么我缺少什么解决方案?哪些被认为是主流/最佳/普遍?

这个问题在现代 ORM 中是如何解决的?他们使用第一种、第二种或第三种方法吗?

我个人想使用第三种解决方案(带有 XML 参数),但我需要示例:
1)此类 XML 参数的模式示例。
2)解析XML参数的存储过程示例

当前使用的环境:使用 Visual FoxPro 应用程序中的 SQL 直通 (ODBC) 执行直接 INSERT/UPDATE/DELETE 语句。DBMS:DB2 for z/OS v10

0 投票
1 回答
207 浏览

stored-procedures - 存储过程 - 如何在 rexx 中获取数组作为输出

我正在测试 Db2 for z/OS 的一些功能,现在当我尝试通过 REXX 调用存储过程时遇到了麻烦。

Bellow 是创建我需要在存储过程中返回的数据类型的代码

这是我用来创建存储过程的 DDL

这就是我用来调用存储过程的 REXX

现在我有 SQLCODE

你能帮我吗,我试图将存储过程的输出返回到 REXX 程序,它说我在 CALL 中使用的变量与我在存储过程中定义的变量不兼容。

我不明白是什么问题,你能帮帮我吗?

提前问候

0 投票
1 回答
212 浏览

db2 - IBM DB2 - 不要卸载超过一定长度的 DECIMAL 行

我有一个 IBM DB2 表,我想从中卸载数据,以便将其加载到另一个 DB2 表中。

两个表都有相同的列(和类型),除了一个十进制字段。

在源表中为 DECIMAL(6),在目标表中为 DECIMAL(5)。

源表中有许多条目在 DECIMAL 字段中最多仅使用 5 位数字,并且只有一些条目使用了全部 6 位。

我要做的只是复制源表中最多 5 位的条目并删除所有其他条目。

我可以仅使用 UNLOAD 语句执行此操作吗?因此,有一个选项告诉系统“将列 'id' 卸载为 DECIMAL(5)(尽管它在表本身中是 DECIMAL(6)),并且如果该列的条目使用所有 6 个数字 (>99999),则不卸载那一排”。

另外,如果情况相反,您将如何处理?例如,从源中卸载 DECIMAL(5) 并在目标中加载为 DECIMAL(6)

我为什么要这样做?因为目标表是旧版本应用程序使用的表的旧版本。我们将在 6 个月内停止支持,但在那之前我们需要刷新其中的数据集。

使用 UNLOAD 和 LOAD 我正在谈论例如 https://www.ibm.com/support/knowledgecenter/SSEPEK_11.0.0/ugref/src/tpc/db2z_utl_unload.html下描述的 z/OS (?) 的 UNLOAD 和 LOAD 实用程序

0 投票
1 回答
182 浏览

db2 - IBM DB2 向 IBM DB2 Z/O 加载失败

这是我上面的当前命令,生成的单个文本文件如下:

我得到的错误是:

SQL3116W 行“F8-8245”和列“6”中的字段值缺失,但目标列不可为空。

SQL3185W 上一个错误在处理输入文件的“F8-8245”行中的数据时发生。

我正在使用“

这是一个制表符分隔的文件。

我不确定为什么文件在第 6 列被填满时失败。

任何帮助将不胜感激。

0 投票
2 回答
1576 浏览

sql - DB2 无法从内部查询中选择不同的列值

我有一个简单的 DB2 SQL 查询:

当我在 DBeaver 内的 DB2 DB 上的任何表上尝试这样的示例查询时,我收到以下错误:

SQL Error [56038]: ATTEMPT TO USE A FUNCTION WHEN THE APPLICATION COMPATIBILITY SETTING IS SET FOR A PREVIOUS LEVEL. SQLCODE=-4743, SQLSTATE=56038, DRIVER=4.13.127

当我在 DB2 支持站点中查找特定的 SQLCODE 时,它提到发生这种情况是因为查询不会运行,尽管他们没有说明为什么它不会运行。有人可以帮我弄清楚为什么这个查询不会运行吗?