50 个最热门 DB2 面试问题及答案 (2025)
以下是 DB2 面试问题和答案,可帮助应届毕业生和有经验的应聘者获得理想的工作。
1)定义DB2。
DB2 是 MVS 操作系统的数据库管理系统,其中 DB2 是 MVS 操作系统的一个子系统。
2)使用COMMIT的目的是什么?
可以使用 COMMIT 使数据更改永久生效。它还允许其他可以引用已提交数据的应用程序访问数据
3)列出可用的数据类型。
此处可用的数据类型有:
1. SMALLINT 2. INTEGER 3. FLOAT 4. DECIMAL 5. CHAR 6. VARCHAR 7. DATE 8. TIME
4)DB2 优化器有什么用途?
- 它处理 SQL 声明。
- 它有助于选择访问路径
5)定义SQLCA。
SQL 通信区是一个变量结构,每次执行 SQL 语句后都会更新。对于包含可执行 SQL 语句的应用程序,只需要一个 SQLCA。FORTRAN 需要提供多个 SQLCA。对于 Java,SQLCA 不适用。
6)定义CHECK约束。
它被指定为确保数据完整性的条件或标准。要插入或更新到表中的值通过 CHECK 约束进行测试。CHECK 约束是在创建表期间创建的。
7)SQLCA 的最大长度是多少?
136 是 SQLCA 的最大长度。
8)讨论 DB2 bind?
构建 DB2 表访问路径的过程称为绑定。绑定使用 DB2 预编译步骤中的数据库请求模块 (DBRequest Modules) 作为输入,并生成应用程序计划。它会检查用户身份验证,并验证 DBRM 中的 SQL 语句。
9)列出可以持有的三种页面锁类型。
- 独家
- 更新
- 份额。
10)定义缓冲池。
缓冲池是预留的主存储器,用于满足一个或多个表空间或索引的缓冲需求。它可以由 4K 或 32K 页组成。
11)解释数据管理器的功能。
物理数据库由称为数据管理器的 DB2 组件管理。它调用其他系统组件来执行日志记录、锁定等操作。
12)什么是存储组(STOGROUP)?
STOGROUP 是 DASD 卷的命名集合,供数据库的索引空间和表空间使用。
13)定义谓词?
谓词是搜索条件的元素,它表达或暗示搜索条件。
14)定义声明生成器(DCLGEN)。
声明生成器是一种用于形成描述表或视图的 SQL 语句的工具。在预编译时,表或视图描述随后用于检查 SQL 语句的有效性。
15)列出 DB2 中的缓冲池
DB2 中有四个缓冲池,分别是:
- BP0
- BP1
- BP2
- BP32
16)定义聚类索引。
聚类索引是一种索引,它定位表行并确定如何在表空间中将行分组在一起。
17)什么是并发?
多个 DB2 应用程序进程可以同时访问相同的数据,这称为并发性。但是,可能会发生问题,例如,丢失对不可重复读取和未提交数据的更新访问。
18)解释数据管理器所起的作用?
数据管理器可以被视为一个能够管理物理存在的数据库的组件,并且能够调用与系统相关的其他组件来执行诸如日志记录、锁定和执行其他 I/O 操作等功能。
19)解释DBRM。
DBRM 代表数据库请求模块,是 DB2 内部的一个组件,由 DB2 的预编译器创建。这是一个由从应用程序中提取的 SQL 源语句组成的模块。DBRM 形成有助于绑定过程的输入。
20)定义数据页面。
数据页可以看作是一个能够从数据库中检索数据的单元。可从中检索数据的数据库采用 4 千字节或 32 千字节的形式。检索数据的形式取决于数据库内表的定义方式。数据页还包含有关数据库的目录或用户的信息。
21)解释 RCT。
RCT 扩展为资源控制表 (Resource – Control Table),定义在 DB2/CICS 区域。该组件包含通过 DSNCRCT 宏收集的功能。RCT 与以下事务 ID 匹配: 计算机控制系统,授权 ID 为 DB2 的授权 ID。这也应该与计划 ID 匹配。
22) 如何将表空间移动到为该表空间分配的另一个 DASD 卷?
您正在使用的表空间仅分配给 STOGROUP,然后您可以输入命令 ALTER STOGROUP 来添加和删除卷。REORG TABLESPACE 和 RECOVER TABLESPACE 语句有助于创建可以指向新卷的新 STOGROUP。ALTER tablespace 和 REORG 和 RECOVER 语句用于更改和恢复内存中分配的表空间。
23)与 SYSIBM.SYSLINKS 表相关的信息是什么?
该表包含有关通过引用约束创建的表之间存在的链接的信息。
24)详细解释缓冲区管理器及其功能?
缓冲区管理器可以视为 DB2 内部的组件,用于在虚拟介质和外部介质之间传输数据。缓冲区管理器通过使用高度复杂的缓冲技术来减少实际执行的物理输入和输出操作的数量。
25)解释游标稳定性?
游标稳定性是一种属性,它告诉 DB2,使用此应用程序读取的数据库值在使用数据时受到保护。
26) 给出一个可信的理由,说明为什么在嵌入的 SQL 程序中 SELECT* 从不被优先考虑。
SELECT* 在嵌入式 SQL 程序中不被优先考虑的主要原因有三个。它们是:
- 如果表的结构发生改变,那么程序就必须经过修改过程。
- 程序将检索所有列,包括可能未使用的列。
- 如果用户希望扫描索引,那么这是不可能的。
27)解释相关子查询。
相关子查询是指内部嵌套查询直接引用外部查询表的查询。对于符合条件的每一行,都必须评估相关子查询。
28)注释在COMMIT期间游标是否关闭。
是的。COMMIT 期间游标已关闭。
29) 在嵌入式 SQL 表中,检索 DB2 表的行的过程是什么?
您可以使用单行 SELECT 语句,或者另一种方法是使用 CURSOR。
30) 提及在 COBOL 程序中突出显示和使用 CURSOR 的方法。
在 COBOL 程序中使用 CURSOR 的最佳方法是使用 DECLARE CURSOR,它既可用于过程划分操作,也可用于工作存储。这样做主要是为了突出 SELECT 语句。一旦使用了 DECLARE CURSOR,接下来就是 OPEN、FETCH 和最后的 CLOSE。
31) 如果在发出 COMMIT 后 CURSOR 保持打开状态,那么保持 CURSOR 处于这种状态的步骤是什么?
在 DECLARE CURSOR 中,有一个 WITH HOLD 选项,在本例中很有用。不过,应该注意的是,如果考虑 CICS 伪传统程序,WITH HOLD 函数绝对不起作用。
32)解释包裹。
PACKAGES 是单元,由用于相应 DBRM 的 SQL 语句的可执行代码组成。
33)突出强调套餐所附带的所有优点。
以下是 PACKAGE 所附带的优点。
- 避免大量 bind 的开销。建议使用小的 collection 而不是大的 collection。
- 确保您不必为了某个特定计划而召集大量的 DBRM 成员。
- 如果您希望在程序中进行更改,而这些更改最终导致错误,那么您可以借助 PACKAGE 来减少回退的复杂性。
- 在特定计划的自动绑定和重新绑定过程中,确保附加到该流程的总事务在此过程中不可用。
34)提及VARCHAR字段中COBOL的定义。
VARCHAR列的备注如下:-
10 REMARKS 49 REMARKS – LEN PIC S9 (4) USAGE COMP. 49 REMARKS – TEXT PIC X (1920).
35)说出 DB2 给定数据类型的物理存储长度 -
日期、时间戳、时间
DATE: PIC X (10) TIMESTAMP: PIC X (26) TIME: PIC X (08)
36) 对于定义为 DECIMAL(2, 11)的 DB2 列,讨论 COBOL 图片子句。
图片 S9 (9) V99 COMP – 3
在表达式 DECIMAL (11, 2) 中,2 恰好是精度,而 11 是数据类型大小。
37)解释DCLGEN。
DCLGEN 基本上是指 DeCLarations GENerator,其主要目的是为表生成宿主语言的副本。它还用于创建 DECLARE 表。
38)提到一些属于 SQLCA 的字段。
SQLERRM、SQLCODE、SQLERRD。
39)解释DCLGEN的一部分内容。
DCLGEN 主要由两个组件组成。它们是:
- 宿主语言的副本,它将为所有列名提供替代定义。
- 就 DB2 的数据类型而言,EXEC SQL DECLARE TABLE 显示了表的美观布局。
40) 评论 DCLGEN 是否强制使用。如果不是,那么使用它有什么意义?
使用 DCLGEN 并非强制性的。DCLGEN 的主要用途是在预编译阶段,它有助于检测拼写错误的列名。由于 DCLGEN 只是一个工具,它只会为主机生成变量定义并减少出错的可能性。
41) 如果 DB2 在某个时间点发生故障,这会影响 DB2-COBOL 程序的预编译过程吗?
即使 DB2 在某个时间点宕机,也不会影响 DB2-COBOL 程序的预编译过程。原因是预编译器从不引用 DB2 的目录表。
42) 根据 DB2 更新语句,计算更新行总数的最快方法是什么?
您所要做的就是检查 SQLERRD (3) 中存储的值。
43)EXPLAIN 是什么意思?
EXPLAIN 主要用于展示优化器对 SQL 语句的基本访问路径。此外,EXPLAIN 还可以在 SPUFI 甚至 BIND 步骤中使用。
44)在给出 EXPLAIN 语句之前,有哪些特权?
在给出 EXPLAIN 语句之前,我们需要确保 PLAN_TABLE 已经在 AUTHID 下创建。
45)提及存储从 EXPLAIN 语句收到的输出的位置。
EXPLAIN 的输出存储在 userid.PLAN_TABLE 中
46)EXPLAIN 的输出为 MATCHCOLS = 0。这表示什么?
这表示如果 ACCESSTYPE = I,则索引扫描不匹配
47) 提及 DB2 中可用的各种锁。
独家、分享和更新
48)BIND 中的 RELEASE/ACQUIRE 是什么?
在程序中的某个时刻,DB2 会获取或释放针对表和表空间的锁。其中包括意向锁。
49) 提到 DB2 中可用的不同锁定级别。
表、页和表空间
50)提及 PAGE 级锁的缺点。
如果需要进行大量更新,那么资源利用率就会相应较高。
这些面试问题也会对你的口试有帮助
如果我能在面试时记住所有这些问题……