Oracle OCP认证考试考点详解082系列15
题记:
本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。
71. 第71题:
- 题目
- 解析及答案:
对于数据库,使用数据库配置助手(DBCA)可以执行以下哪两项任务?
A. 为新数据库配置非标准块大小。
数据库配置助手(DBCA)可用于为新创建的数据库配置非标准块大小。在通过 DBCA 创建新数据库时,有一些选项可用于设置包括块大小在内的各种参数。这使得在创建过程中就能对数据库的存储特性进行定制。所以,该选项正确。
B. 为新数据库配置增量备份。
DBCA 主要侧重于数据库的初始配置与创建以及它们的基本设置。它并不直接负责为新数据库配置增量备份。与备份相关的配置通常涉及数据库管理系统内的其他工具或设置,比如恢复管理器(RMAN)的命令及配置等。所以,该选项错误。
C. 更改现有数据库的标准块大小。
更改现有数据库的标准块大小是一项复杂的操作,通常不会使用 DBCA 来完成此项任务。这往往需要高级的数据库管理步骤,可能还涉及数据迁移等方面的考虑。DBCA 更多地是用于数据库的初始设置和基本配置,而不是修改现有数据库的这类基础特性。所以,该选项错误。
D. 将新数据库注册到可用的企业管理器管理服务器上。
DBCA 可以将新数据库注册到可用的企业管理器管理服务器上。这有助于实现数据库管理的集中化,并且能够通过企业管理器界面进行更好的监控和管理。所以,该选项正确。
E. 为现有数据库启用闪回数据库功能。
为现有数据库启用闪回数据库功能并非通常通过 DBCA 来执行的任务。这涉及到与数据库恢复和闪回能力相关的特定命令及配置,比如设置闪回日志、调整与闪回相关的参数等。所以,该选项错误。
答案是 A 和 D。
72. 第72题:
- 题目
- 解析及答案:
你需要计算从 2019 年 1 月 1 日到今天的天数。日期是以默认格式 DD-MON-RR 存储的。以下哪两个查询能给出所需的输出结果?
A. SELECT ROUND (SYSDATE - TO_DATE (‘01/JANUARY/2019’)) FROM DUAL;
首先,TO_DATE(‘01/JANUARY/2019’)函数会根据默认日期格式(DD-MON-RR)或者会话所定义的不同日期格式,将给定的字符串 ‘01/JANUARY/2019’ 转换为日期值。然后,SYSDATE代表当前的系统日期和时间。用SYSDATE减去通过TO_DATE(‘01/JANUARY/2019’)得到的日期值,就能得出这两个日期之间的天数。这里使用ROUND函数是为了对结果进行取整。所以,该选项能得出 2019 年 1 月 1 日到今天的天数,是正确的。
B. SELECT SYSDATE - TO_DATE (‘01-JANUARY-2019’) FROM DUAL;
与选项 A 类似,TO_DATE(‘01-JANUARY-2019’)会将字符串转换为日期值。然后用SYSDATE减去这个日期值,就能得到这两个日期之间的天数差值。该选项能正确计算出从 2019 年 1 月 1 日到今天的天数,且没有任何会改变计算本质的进一步格式化或取整操作。所以,该选项是正确的。
C. SELECT ROUND (SYSDATE - ‘01-JAN-2019’) FROM DUAL;
在这个选项中,SYSDATE - '01-JAN-2019’的减法运算是不正确的,因为在 Oracle 中 ‘01-JAN-2019’ 不是一个有效的日期格式。应该先使用TO_DATE函数将其转换为日期。如果不进行这个转换,Oracle 将无法执行正确的算术运算来得出天数差值。所以,该选项是错误的。
D. SELECT TO_DATE(SYSDATE, ‘DD/MONTH/YYYY’) - ‘01/JANUARY/2019’ FROM DUAL;
TO_DATE(SYSDATE, ‘DD/MONTH/YYYY’)这部分是错误的。SYSDATE本身已经是一个日期值了,不能直接对它使用TO_DATE函数。TO_DATE函数应该是用于将字符串转换为日期,而不是反过来操作。这种错误的用法会导致出错,并且无法正确计算出天数。所以,该选项是错误的。
E. SELECT TO_CHAR(SYSDATE, ‘DD-MON-YYYY’) - ‘01-JAN-2019’ FROM DUAL;
TO_CHAR(SYSDATE, ‘DD-MON-YYYY’)函数会将SYSDATE(它是一个日期值)按照指定格式转换为一个字符串。然后用它减去 ‘01-JAN-2019’(这也是一个字符串),并不能正确计算出天数。需要对日期值进行日期运算,而不是对一个字符串和一个日期值的组合进行运算。所以,该选项是错误的。
答案是 A 和 B。
73. 第73题:
- 题目
- 解析及答案:
关于非等值连接语句的性能,以下哪项说法是正确的?
A. 所使用的连接语法对性能没有影响。
所使用的连接语法会对性能产生重大影响。不同的连接语法可能导致不同的执行计划,而且优化器可能会根据语法选择不同的访问路径和连接方法。例如,在某些情况下,使用 Oracle 特有的连接语法与符合 ANSI 标准的连接语法相比,其优化方式可能有所不同。所以,该选项错误。
B. 在非等值连接中使用 BETWEEN 条件有时比使用 >= 和 <= 条件性能更好。
在某些情况下,在非等值连接中使用 BETWEEN 条件确实可以比使用 >= 和 <= 条件性能更好。数据库优化器有时能够更高效地处理 BETWEEN 条件。这是因为优化器可能能够利用更有效的索引策略,或者能更好地预估该条件的选择性。不过,这并非在所有情况下都成立,但确实存在这种可能性。所以,该选项正确。
C. 在非等值连接中使用 BETWEEN 条件总是比使用 >= 和 <= 条件性能更好。
在非等值连接中使用 BETWEEN 条件并非总是比使用 >= 和 <= 条件性能更好。性能取决于多种因素,比如数据分布、索引的存在情况以及查询的复杂程度等。在某些情况下,>= 和 <= 条件的性能可能同样好,甚至更好。所以,该选项错误。
D. Oracle 连接语法比符合 SQL:1999 标准的 ANSI 连接语法性能更好。
并没有一般性的规则表明 Oracle 连接语法比符合 SQL:1999 标准的 ANSI 连接语法性能更好。性能取决于具体的查询、数据以及优化器的行为。在某些情况下,由于 ANSI 连接语法标准且结构清晰,数据库能够更好地理解并对其进行优化,从而可能导致更高效的执行计划。所以,该选项错误。
E. Oracle 连接语法比符合 SQL:1999 标准的 ANSI 连接语法性能更差。
同样,也不能保证 Oracle 连接语法就比符合 SQL:1999 标准的 ANSI 连接语法性能更差。性能的比较取决于多个因素,而且在不同情况下会有所不同。所以,该选项错误。
正确的是 B。
注,D选项可能有争议,因为在Oracle OCP官方文档中有这么一段描述:
但我觉得还是选B更好。
74. 第74题:
- 题目
- 解析及答案:
你在未挂载(NOMOUNT)状态下启动数据库实例。以下哪两项操作会被执行?
A. sys 用户可以访问数据库。
在未挂载状态下,数据库尚未对用户访问开放。即使是 sys 用户,从传统意义上讲也无法访问数据库,因为诸如表、视图等数据库结构此时还不可用。实例只是刚刚启动,正在进行必要的后台进程启动以及内存分配等设置工作。所以,该选项错误。
B. 所有必需的后台进程都会被启动。
当数据库实例在未挂载状态下启动时,所有必需的后台进程都会被启动。这些后台进程对于数据库的正常运行至关重要,比如系统监控进程(SMON)、进程监控进程(PMON)、数据库写入进程(DBWR)等等。它们负责诸如实例恢复、进程清理以及将数据写入磁盘等任务。所以,该选项正确。
C. 会为系统全局区(SGA)分配内存。
在未挂载状态下,会为系统全局区(SGA)分配内存。系统全局区是数据库实例的关键部分,包含诸如缓冲缓存、共享池等共享内存结构。为 SGA 分配内存是启动实例的初始步骤之一。所以,该选项正确。
D. 会检查数据库的一致性。
在未挂载状态下,不会检查数据库的一致性。此时数据库尚未挂载或打开,所以在这个阶段不会对数据一致性进行验证。一致性检查通常在挂载(MOUNT)和打开(OPEN)阶段进行,那时会访问并验证控制文件和数据文件。所以,该选项错误。
E. 会打开控制文件。
在未挂载状态下,不会打开控制文件。控制文件用于管理和维护数据库的物理结构,它们是在挂载状态下才被打开的。在未挂载状态下,重点在于启动后台进程以及为 SGA 分配内存。所以,该选项错误。
答案是 B 和 C。
75. 第75题:
- 题目
- 解析及答案:
关于单实例 Oracle 数据库中的序列,以下哪三个陈述是正确的?
A. 如果事务失败,已分配的序列号可以回滚。
在事务中一旦分配了一个序列号,即使事务失败,该序列号也不能回滚。序列号的生成与事务的成功或失败无关。例如,如果使用一个序列为记录插入生成唯一标识符,并且由于约束冲突导致插入失败,为那次失败插入而生成的序列号仍然被消耗掉了,不会被重新使用。所以,该选项错误。
B. 只有数据库管理员(DBA)才能删除序列。
只要用户拥有适当的权限,而不只是 DBA,就可以删除序列。只要用户拥有 “DROP ANY SEQUENCE” 权限,就能够删除一个序列。所以,该选项错误。
C. 序列中总是可能存在间隔。
序列中可能会由于多种原因出现间隔,比如使用了序列号的事务回滚、多个实例访问同一个序列(在 RAC 环境中),或者当序列的缓存值是预先分配的且其中一些缓存值未被使用时。例如,如果一个序列缓存了 20 个值,而使用它的应用程序在只用了其中 10 个缓存值后崩溃了,剩下的 10 个值就丢失了,当再次使用该序列时就会产生间隔。所以,该选项正确。
D. 一个序列可以生成重复的值。
序列在默认情况下是设计用来生成唯一值的。然而,它也可以被配置为生成重复的值。例如,如果为一个序列设置了 “CYCLE” 选项,当该序列达到其最大值(取决于数据类型和设置)时,它会循环回来并再次开始生成值,这就可能导致生成重复的值。所以,该选项正确。
E. 如果实例关闭,序列未分配的缓存值将会丢失。
当一个序列缓存值时,那些值是存储在内存中的。如果实例关闭,内存中的缓存就会被清除,任何未分配的缓存值都会丢失。当实例重新启动并且再次使用该序列时,将会从合适的点(取决于序列的设置)开始生成新的值。所以,该选项正确。
F. 两个或更多的表不能使用同一个序列来生成键值。
两个或更多的表可以使用同一个序列来生成键值。这是一种常见的做法,用于确保在多个相关表中实现一致的编号或标识方案。例如,订单表和订单明细表可以使用同一个序列来为订单和相关的订单明细记录生成唯一标识符。所以,该选项错误。
正确的三个是 CDE。
未完待续。
关注作者,您将获得更多OCP考试及Oracle DB方面的实战经验。后续不定期分享DB核心知识和排障案例及经验、性能调优等