问题标签 [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.
concurrency - 需要帮助以了解在 z/OS 上的 DB2 中删除期间观察到的锁定行为
检查从指向 z/OS 上 DB2 数据库实例的两个 DbVisualizer 实例启动的两个事务的行为,我注意到在从表中删除记录期间的以下行为。
假设我有一个MYTABLE
带有主键的表MYID
,并假设执行
select MYID from MYTABLE
给出类似的东西(数字是任意的,写下来只是让事情变得具体)
在试验 A 中,我从第一个事务(使用第一个 DBVisualizer 实例)开始执行,并且没有提交,
然后我从第二个事务执行(使用第二个 DBVisualizer 实例)
然而,这会阻止第二笔交易,并在一段时间后产生错误
在类似的试验中,试验 B,当我使用MYID
s112
而789
代替(789
是“不靠近” 112
)时,第二笔交易不会阻塞。查找TYPE OF RESOURCE 00000302
一个发现的含义,在https://www.ibm.com/support/knowledgecenter/en/SSEPEK_10.0.0/codes/src/tpc/db2z_resourcetypes.html,“表空间页面”(链接是针对 DB2在 z/OS 上)。
所以看起来在试验 A中,第一个 DELETE “锁定”了一些“页面”,记录都属于该页面,MYID
112
并且119
该锁定随后阻塞了第二个事务。而在试验 B中,两条记录属于不同的“页面”,第一个 DELETE 不会阻止第二个。
拿一本关于 DB2 的著名书籍,我读到“根据请求的操作,数据库管理器可以获取表行、表块、表、表空间、缓冲池和数据库上的锁”。然后解释存在各种“锁定模式”。
我的问题是:上面引用中的“表块上的锁”是指在试验中观察到的“表空间页上的锁”,还是引用中没有提到的其他锁类型?为什么使用的锁是“表空间页面锁”而不是行级锁,它可能不会导致第二个事务在试验 A期间阻塞?(我读到了 DB2 中的锁升级,但据我所知,当时没有涉及到的事务进行MYTABLE
)
所涉及的 DB2 版本在“兼容模式”下是 10,这会将其降级为类似于 DB2 版本 8。我认为配置应该是“默认”或“标准”。
(这个问题是我努力理解前面问题中描述的问题的结果,一个删除多行的删除语句会导致死锁吗?)
编辑
刚刚在我的 Windows 笔记本上的 DB2 Express 上尝试过,我看到的行为是不同的;正如我所期望的那样,锁是行锁(所以只有当我尝试删除同一行时,第二个 DELETE 才会阻塞)。那么这确实是关于 z/OS 上的 DB2 吗?还是 DB2 的旧版本?或者也许观察暗示了 DB2 的某些特殊配置?
db2 - 如何从cobol中的国家数据类型中删除@字符
我在将 unicode 数据转换为国家字符时遇到问题。当我使用 national-of 函数将 Unicode 数据转换为国家级时,字符串后面会附加一些像 @ 这样的垃圾字符。
例如 Ws-unicode pic X(200) Ws-national pic N(600)
--让Ws-Unicode中的值为これらの変更は。从java端获取。
将函数 national-of (Ws-unicode ,1208) 移动到 Ws-national。
--转换后的值就像これらの変更は@。
我不希望在转换后添加额外的 @ 字符。
请帮我找出可能的解决方案,我尝试使用inspect子句将N'@'替换为空格。它运行良好,但在某些特定情况下失败了,比如如果我们在用户端输入 @ 。在那种情况下,真正的@也转换为空格。
sql - DB2 子系统中单个模式下的最大表名数是多少?
对于 z/OS 上的 DB2,以下 SQL 查询可能产生的最大结果数是多少?
此查询旨在获取 DB2 子系统中特定模式/创建者下的所有表名的列表。
我很难找到明确的答案。根据 IBM 的“ DB2 for z/OS 中的限制”一文,DB2 数据库的最大内部对象数为 32767。对象包括视图、索引等。
对于一个模式下的最大表名数量,我更喜欢一个更具体的答案。例如,以下是相关问题的IDUG 线程的摘录:
基于一个数据库中 32767 个对象的限制,其中每个表空间有两个条目,表和索引各有一个条目,那么理论上的最大值似乎是,每个数据库有一个表空间,32767 - 2(对于单个表空间) = 32765 / 2 = 16382 个表,假设每个表至少需要一个索引。
这些假设是否有效(每个表空间有两个条目,每个表至少有一个索引)?
mainframe - DB2 ZOS 大型机 - 归档日志禁用
我在 DB2 ZOS 版本 10 中工作,我一直在数据屏蔽项目下工作。对于这个项目,我已经执行了超过 100k DDL 语句(删除、更新、插入)。
所以我需要在整个 SCRAMBLE PROCESS 开始之前禁用事务日志。
在 DB2 iSeries AS400 中,我已经通过调用有助于禁用 TRANSACTION LOG DISABLE 的过程来处理相同的问题。
同样,我需要在 DB2 ZOS 中做。
db2 - 以批处理模式从 Mainframe DB2 导出 CSV
如何在 CSV 文件中以批处理模式从 Mainframe DB2 导出 SELECT 查询的结果?我已经尝试过 FILE MANAGER 在线模式并且它可以工作,但我需要使用批处理模式以获得更好的性能。我也可以使用 ISQL,但我不知道必须使用哪些参数来创建 CSV 文件。谢谢
java - DB2 System Runtime Table 检索最后执行的 SQL 语句
大型机中是否有 DB2 系统表 - 批处理运行时日志?在 DB2 for i Series 中,有一个表函数QSYS2.GET_JOB_INFO()
在运行时返回作业信息,包括状态(活动/完成),最重要V_SQL_STATEMENT_TEXT
的是 - 最后一次 SQL 运行的语句。
场景:我想在 Cobol 批处理作业中检索运行时最后执行的 SQL 语句。这样做的主要目的是确定在作业运行时是否发出了 COMMIT 或 ROLLBACK。目的是创建一个小程序,我们称之为“控制器”,在发出 Commit 或 Commit interval 甚至 Rollback 时监控 DB2。更具体地说,这个“控制器”将充当迷你操作系统,并具有触发主程序的能力。
例如,如果主程序发出 ROLLBACK,“控制器程序”可以发出特定的业务逻辑并控制更新。可以在 T1 和 T2 类型的 DB2 连接中进行更新。通过这种方式,更新是在批处理客户端或在 EXCI 中运行的 Java 端完成的(EXCI 使用 RRS 恢复)。
mainframe - 大型机中的 SHA256。REXX 中是否存在函数?
我调查了加密字符串 unsing rexx(大型机 ZOS)的问题。我找到了一些有用的链接: http ://rexxeec.sourceforge.net/doc/RexxEEC.pdf
但是当我尝试在 TSO 中使用它时,我得到了一个错误:
那么,也许我忘了添加任何库?还是完全不可能,我必须自己写 SHA256?
顺便说一句,我从 DB2 中加密了一行,看起来不可能像这样使用约束: Select HASH(column, 2) from table; 使用 ZOS DB2
rest - DB2 Z/OS 原生存储过程、Restful WebService 、JSON
我正在考虑创建一个 DB2 Z/OS 本机存储过程,它使用 JSON 作为可互换格式调用 Restful 服务。是否可以使用 Restful/JSON ?如果是,您能否提供一些文件或信息。谢谢
sql - Oracle 将本地表加入 DB2 大型机的速度很慢
这个让我很困惑。单独从 DB2 拉取很快,从表中拉取也很快,但我不知道为什么它们不能很好地配合使用。我无权访问 DB2 表或那里的服务器的索引。
此查询需要 0.017 秒:
显然我不想硬编码所有的零件号,因为我有将近 200k 的零件号要查询。
我把零件号留在这里只是为了尝试让它工作。我选择相同的 6 个零件编号的查询需要 1.23 秒:
问题是当我将这些组合在一起时:
在我看来,这个查询应该需要大约 3 秒左右。它需要492 秒。
有一个更好的方法吗?我需要索引我的 PARTS_REPORT 表吗?这里的关键是什么?
编辑:要运行所有 200k-ish 部件号,相同的查询需要 564 秒 - 大约是我上面运行的时间。
编辑2:下面的用户帮助我知道发生了什么-我必须拉下整个远程表,这很慢。我想我明白现在发生了什么 - 谢谢。
python - DB2 Z/OS Python 连接
我正在尝试从 Windows 64 位的 Python 首次连接到 DB2 Z/OS。我已经下载并成功安装了 python 2.7.9。根据文档,我还需要 ibm_db 鸡蛋,它应该从 C:\Python27\Scripts 安装。我确实看到了easy_install-2.7,但是当我单击它时,没有任何东西被安装为C:\Python27\Lib\site-packages 下的ibm_db。当我点击简易安装时,它说“没有 url – 文件名或要求”。
你能告诉我我在这里缺少什么吗?