题记:
本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。
26. 第26题:
- 题目
- 解析及答案:
关于间隔(INTERVAL)数据类型,以下哪两个陈述是正确的?
A. INTERVAL YEAR TO MONTH(年到月间隔)列支持按年的间隔。
B. INTERVAL YEAR TO MONTH 列中的 YEAR(年)字段必须是正值。
C. INTERVAL DAY TO SECOND(日到秒间隔)列中的值可以复制到 INTERVAL YEAR TO MONTH 列中。
D. INTERVAL YEAR TO MONTH 列仅支持单年内的月度间隔。
E. INTERVAL DAY TO SECOND 列支持秒的小数部分。
F. INTERVAL YEAR TO MONTH 列仅支持一定年限范围内的月度间隔。
选项 A:
INTERVAL YEAR TO MONTH 类型确实支持以年为单位的间隔。例如,可以表示 “1 YEAR”(1 年)这样的间隔,当然也可以是包含月的组合间隔,如 “1 YEAR 2 MONTHS”(1 年 2 个月)。所以该选项正确。
选项 B:
在 INTERVAL YEAR TO MONTH 中,YEAR 字段可以是负数。例如,“-1 YEAR - 2 MONTHS” 表示过去的 1 年 2 个月时间间隔。所以该选项错误。
选项 C:
INTERVAL DAY TO SECOND 列的值和 INTERVAL YEAR TO MONTH 列的值代表不同的时间粒度,不能直接相互复制。前者涉及日、小时、分钟和秒,后者涉及年和月。所以该选项错误。
选项 D:
INTERVAL YEAR TO MONTH 列支持跨年和月的多种组合,不只是单年内的月度间隔。比如可以表示 “3 YEARS 5 MONTHS”(3 年 5 个月)。所以该选项错误。
选项 E:
INTERVAL DAY TO SECOND 列支持秒的分数部分。例如,可以精确到毫秒等更精细的时间单位,像 “1 DAY 2 HOURS 30.5 SECONDS”(1 天 2 小时 30.5 秒)这样的表示是允许的。所以该选项正确。
选项 F:
INTERVAL YEAR TO MONTH 列支持任意年和月的组合,不限于某个特定年范围的月度间隔。比如可以表示 “10 YEARS 2 MONTHS”(10 年 2 个月)这样跨多年的间隔。所以该选项错误。
正确答案是 AE。
27. 第27题:
- 题目
- 解析及答案:
关于逻辑数据库结构和物理数据库结构,以下哪两个陈述是正确的?
A. 一个段(segment)的块(block)可以有不同的大小。
在 Oracle 数据库中,一个段内的所有块大小是相同的。块大小在创建表空间(tablespace)时就已确定,段内的所有块都遵循这个固定大小,以便实现高效的存储和访问。所以,该选项错误。
B. 一个段可能只有一个区(extent)。
一个段可能只有一个区。区是为段连续分配的存储空间。一个较小的段,特别是刚创建且数据量不多时,可能仅由一个区组成。随着段内数据的增长,可以为其分配更多的区。所以,该选项正确。
C. 所有表空间都可以有一个或多个数据文件。
一个表空间必须至少有一个数据文件。因为数据文件是表空间中数据的物理存储容器,不存在没有任何数据文件的表空间。所以,该选项正确。
D. 段可以跨越多个表空间。
一个段不能跨越多个表空间。段是包含在单个表空间内的。表空间为段提供了逻辑存储容器。所以,该选项错误。
E. 在某些表空间中,一个段可以跨越多个数据文件。
一个段可以在一个表空间内跨越多个数据文件。随着段的增长并需要更多存储空间时,它可以从同一表空间内的不同数据文件中分配区。这使得段的存储管理和增长更加灵活。所以,该选项正确。
正确是 B 和 E。
28. 第28题:
- 题目
- 解析及答案:
关于Oracle连接语法(Oracle join syntax)和SQL:1999标准的ANSI连接语法(ANSI join syntax),以下两个陈述是正确的:
A. The Oracle join syntax performs better than the SQL: 1999 compliant ANSI join syntax.
这是不正确的。传统上,Oracle连接语法并没有比ANSI连接语法具有显著的性能优势。数据库的性能优化通常取决于多种因素,包括查询的具体结构、表的索引、数据库的配置等,而不仅仅是连接语法的选择。此外,随着数据库技术的发展,现代数据库系统(包括Oracle)已经对ANSI连接语法进行了优化,因此性能上的差异可能更加微小。
B. The Oracle join syntax lacks the ability to do outer joins
这是不正确的。Oracle连接语法完全支持外连接(outer joins),包括左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)。
C. The SQL: 1999 compliant ANSI join syntax supports creation of a Cartesian product of two tables
这是正确的。ANSI连接语法支持通过CROSS JOIN或省略JOIN类型(仅指定ON条件前的逗号)来创建两个表的笛卡尔积(Cartesian product)。笛卡尔积是指两个表之间的所有可能行的组合,结果集的大小是两个表行数的乘积。
D. The Oracle join syntax supports creation of a Cartesian product of two tables
这也是正确的。在Oracle中,可以使用CROSS JOIN或传统的逗号分隔语法(在WHERE子句中指定连接条件之前)来创建两个表的笛卡尔积。与ANSI连接语法类似,Oracle连接语法也允许这种操作。
E. The Oracle join syntax performs less well than the SQL: 1999 compliant ANSI join syntax
这是不正确的。如前所述,Oracle连接语法和ANSI连接语法在性能上并没有显著的差异。性能的优化取决于多种因素,并且现代数据库系统已经对这两种语法进行了优化。
正确的答案是:CD
29. 第29题:
- 题目
- 解析及答案:
查看以下这条命令:
SQL> ALTER TABLE ORDERS SHRINK SPACE COMPACT
以下哪两个陈述是正确的?
A. 在执行收缩(SHRINK)操作期间,允许对 ORDERS 表执行查询和数据操作语言(DML)语句。
B. 相关的索引会变为不可用。
C. 收缩操作会使行从 ORDERS 段的末尾开始移动到空闲空间。
D. 收缩操作会使行从 ORDERS 段的开头开始移动到空闲空间。
E. 在执行收缩操作期间,只允许对 ORDERS 表进行查询。
F. ORDERS 表的高水位标记(HWM)会被调整。
选项 A:
当执行SHRINK SPACE COMPACT命令时,确实允许对ORDERS表进行查询和 DML 操作。因为COMPACT选项的目的是在不阻止对表正常访问的情况下,对表空间进行紧凑化处理,所以该选项正确。
选项 B:
在执行SHRINK SPACE COMPACT操作时,依赖的索引不会变为不可用状态。这个操作不会影响索引的可用性,所以该选项错误。
选项 C:
SHRINK SPACE COMPACT操作是从段的开头开始移动行到空闲空间,而不是从末尾。它的目的是整理数据,将前面的行向空闲空间移动,使得数据更加紧凑,所以该选项错误。
选项 D:
正如前面所解释的,这个操作是从段的开头开始移动行,以填充空闲空间,使表的数据存储更加紧凑,所以该选项正确。
选项 E:
如选项 A 所述,在执行此操作时,不仅允许查询,还允许 DML 操作,所以该选项错误。
选项 F:
SHRINK SPACE COMPACT操作不会调整高水位标记(HWM)。只有完整的SHRINK SPACE(没有COMPACT)操作才会调整 HWM,所以该选项错误。
正确答案是 AD。 - 总结下segment shrink 分为两个阶段:
1、数据重组(compact):通过一系列insert、delete操作,将数据尽量排在段的前面,这个过程中需要在表上加RX锁,即只需要移动的行上加锁
2、HWM调整:第二阶段是调整HWM位置,释放空闲数据块,此过程需要在表上加X锁(独享锁,因此这个表都被锁定,如果系统处在高峰期的时候,其他在此表的DML被挂起,会产生严重阻塞),会造成表上所有DML语句阻塞,系统忙时影响较大。
shrink space语句两个阶段都执行 。 shrink space compact语句只执行第一个阶段,因此不调整高水位,需要另外一个命令alter table …shrink space。
30. 第30题:
- 题目
- 解析及答案:
在 Oracle 数据库中,以下哪三项是段(segment)的类型?
A. 聚簇(clusters)
聚簇是一种段的类型。聚簇是一种模式对象,它包含一个或多个表,这些表由于共享公共列而被物理地存储在一起,并且经常被用于提高连接操作的性能。
B. 序列(sequences)
序列不是一种段的类型。序列是一种用于生成唯一编号的数据库对象。它不具备段的特征,段是与表、索引等的数据存储相关的。
C. 存储过程(stored procedures)
存储过程不是一种段的类型。存储过程是一组组合在一起用于执行特定任务的 SQL 和 PL/SQL 语句。它们与像段那样的物理数据存储无关。
D. 视图(views)
视图不是一种段的类型。视图是基于查询结果的虚拟表。它不像表或索引那样有自己的物理存储段。
E. 回滚段(undo)
回滚段是一种段的类型。它们用于存储回滚事务所需的信息以及提供数据的读一致性视图。
F. 表(tables)
表是一种段的类型。表在数据库中存储实际的数据,并且有它们自己的存储段。
综上,在 Oracle 数据库中,段的三种类型是 A(聚簇)、E(回滚段)和 F(表)。答案AEF
未完待续。
关注作者,您将获得更多OCP考试及Oracle DB方面的实战经验。后续不定期分享DB核心知识和排障案例及经验、性能调优等