题记:
本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。
105. 第105题:
- 题目
- 解析及答案:
题目翻译:
关于Oracle数据库中的事务请选择两个正确的陈述:
A) 当用户退出SQL*Plus时,未提交的事务会自动提交。
B) 由含有未提交事务的会话发出的DDL语句会自动提交该事务。
C) DDL语句仅自动提交由执行DDL引起的数据字典更新。
D) 一个会话可以看到由同一用户在不同会话中做出的未提交更新。
E) DML语句总是开始新的事务。
分析:
选项 A
在 Oracle 数据库中,当用户退出 SQLPlus 时,未提交的事务并不会自动提交。该事务仍处于未提交状态,如果用户重新连接并回滚该事务,所做的更改将会被撤销。例如,如果用户开启一个事务,向一个表中插入了一些记录,然后未提交就关闭了 SQLPlus,那么在后续的会话中,那些插入的记录仍然可以被回滚。所以,该选项错误。
选项 B
当一个会话中存在未提交的事务时,该会话发出的数据定义语言(DDL)语句会自动提交该事务。像 CREATE TABLE(创建表)、ALTER TABLE(修改表)等这类 DDL 语句会导致隐式提交。例如,如果用户已经向一个表中插入了一些行,然后在该表上执行一个 CREATE INDEX(创建索引)语句,那么插入操作就会被提交。所以,该选项正确。
选项 C
DDL 语句并非只提交因执行 DDL 而导致的数据字典更新。它们会提交整个当前活动的事务。当执行一个 DDL 语句时,它不仅会更新数据字典,还会提交当前事务中任何未提交的数据操作语言(DML)操作。例如,如果用户在一个事务进行过程中执行了一些 INSERT(插入)和 UPDATE(更新)操作,然后执行一个 DDL 语句,那么所有这些 DML 操作都会被提交。所以,该选项错误。
选项 D
一个会话无法看到同一用户在不同会话中所做的未提交的更新。Oracle 使用多版本读一致性模型。每个会话看到的数据视图都是其查询或事务开始时的一致状态。其他会话中未提交的更改对给定的会话是不可见的。例如,如果一个会话向一个表中插入了一条新记录但未提交,另一个会话查询该表时将不会看到那条新记录。所以,该选项错误。
选项 E
DML 语句并非总是开启新的事务。一个事务可以包含多个 DML 语句。例如,用户可以开启一个事务,然后在同一个事务内执行多个 INSERT(插入)、UPDATE(更新)和 DELETE(删除)语句。并非每个 DML 语句都会开启一个新的事务。所以,该选项错误。
答案:本题正确只有 B,但题目要求选两个,那就AB吧。
106. 第106题:
- 题目
- 解析及答案:
题目翻译:
关于动态性能视图,以下哪三个陈述是正确的?
A) 它们由SYSTEM用户拥有。
B) 可以查询V F I X E D T A B L E 来显示所有动态性能视图的名称。 C ) 通过查询动态性能视图显示的数据是从数据字典中的元数据派生的。 D ) 通过查询动态性能视图显示的数据是从内存结构中派生的。 E ) 它们只能在数据库打开时查询。 F ) 不保证读一致性。分析:选项 A 动态性能视图并非由 S Y S T E M 用户所拥有。它们是由 S Y S 用户拥有的。这些视图提供了有关数据库内部运作情况的信息,是 O r a c l e 数据库架构的重要组成部分。所以,该选项错误。选项 B 可以查询 V F I X E D T A B L E 视图来显示所有动态性能视图的名称。它可作为一个有用的参考,用于找出数据库中其他可用的动态性能视图。例如,像 F I X E D T A B L E W H E R E n a m e L I K E ′ V FIXED_TABLE来显示所有动态性能视图的名称。 C) 通过查询动态性能视图显示的数据是从数据字典中的元数据派生的。 D) 通过查询动态性能视图显示的数据是从内存结构中派生的。 E) 它们只能在数据库打开时查询。 F) 不保证读一致性。 分析: 选项 A 动态性能视图并非由 SYSTEM 用户所拥有。它们是由 SYS 用户拥有的。这些视图提供了有关数据库内部运作情况的信息,是 Oracle 数据库架构的重要组成部分。所以,该选项错误。 选项 B 可以查询 V FIXED_TABLE视图来显示所有动态性能视图的名称。它可作为一个有用的参考,用于找出数据库中其他可用的动态性能视图。例如,像FIXED_TABLE WHERE name LIKE 'V FIXEDTABLE来显示所有动态性能视图的名称。C)通过查询动态性能视图显示的数据是从数据字典中的元数据派生的。D)通过查询动态性能视图显示的数据是从内存结构中派生的。E)它们只能在数据库打开时查询。F)不保证读一致性。分析:选项A动态性能视图并非由SYSTEM用户所拥有。它们是由SYS用户拥有的。这些视图提供了有关数据库内部运作情况的信息,是Oracle数据库架构的重要组成部分。所以,该选项错误。选项B可以查询VFIXEDTABLE视图来显示所有动态性能视图的名称。它可作为一个有用的参考,用于找出数据库中其他可用的动态性能视图。例如,像FIXEDTABLEWHEREnameLIKE′V%';” 这样的查询可用于列出许多重要的动态性能视图。所以,该选项正确。
选项 C
通过查询动态性能视图所显示的数据并非源自数据字典中的元数据。相反,它主要是从数据库的内存结构中获取的。这些视图提供了有关数据库当前状态的实时信息,比如会话的状态、系统资源的使用情况等等。所以,该选项错误。
选项 D
动态性能视图中的数据源自内存结构。例如,像 V S E S S I O N 这样的视图会显示数据库中当前用户会话的信息,这些信息在会话处于活动状态时会保存在内存中。这些视图中的数据反映了数据库当前的运行状态,并且会随着数据库活动的变化而实时更新。所以,该选项正确。选项 E 大多数动态性能视图只有在数据库处于开启状态时才能被查询。由于它们提供的是有关数据库操作当前状态的信息,所以在数据库关闭时无法访问它们是合理的。例如,与活动事务和会话细节相关的视图在数据库未运行时是没有意义的。不过,也存在一些例外情况,在某些其他状态下(比如数据库启动时)可能也能获取到一些信息,但总体来说,该选项正确。选项 F 动态性能视图无法保证读一致性。因为这些视图会不断更新以反映数据库的当前状态,所以在不同时间进行查询可能会返回不同的结果。例如, V SESSION 这样的视图会显示数据库中当前用户会话的信息,这些信息在会话处于活动状态时会保存在内存中。这些视图中的数据反映了数据库当前的运行状态,并且会随着数据库活动的变化而实时更新。所以,该选项正确。 选项 E 大多数动态性能视图只有在数据库处于开启状态时才能被查询。由于它们提供的是有关数据库操作当前状态的信息,所以在数据库关闭时无法访问它们是合理的。例如,与活动事务和会话细节相关的视图在数据库未运行时是没有意义的。不过,也存在一些例外情况,在某些其他状态下(比如数据库启动时)可能也能获取到一些信息,但总体来说,该选项正确。 选项 F 动态性能视图无法保证读一致性。因为这些视图会不断更新以反映数据库的当前状态,所以在不同时间进行查询可能会返回不同的结果。例如,V SESSION这样的视图会显示数据库中当前用户会话的信息,这些信息在会话处于活动状态时会保存在内存中。这些视图中的数据反映了数据库当前的运行状态,并且会随着数据库活动的变化而实时更新。所以,该选项正确。选项E大多数动态性能视图只有在数据库处于开启状态时才能被查询。由于它们提供的是有关数据库操作当前状态的信息,所以在数据库关闭时无法访问它们是合理的。例如,与活动事务和会话细节相关的视图在数据库未运行时是没有意义的。不过,也存在一些例外情况,在某些其他状态下(比如数据库启动时)可能也能获取到一些信息,但总体来说,该选项正确。选项F动态性能视图无法保证读一致性。因为这些视图会不断更新以反映数据库的当前状态,所以在不同时间进行查询可能会返回不同的结果。例如,VSESSION 视图可能会根据查询执行的时间不同,显示出关于会话数量和状态的不同信息,因为在两次查询之间会话可能会开始或结束。所以,该选项正确。
答案:
正确的三个 B、D 和 F。
107. 第107题:
- 题目
- 解析及答案:
题目翻译:
关于在没有定义INSTEAD OF触发器的视图上执行DML操作的陈述,以下哪三个是正确的?
A. 总是可以通过视图对表执行插入操作。
B. 当通过视图从基础表中删除行时,WITH CHECK子句不起作用。
C. 总是可以通过视图对表执行删除操作。
D. 如果表有未在视图定义查询中引用的、没有默认值且不允许为NULL的列,则无法使用视图向基础表添加行。
E. 如果表有主键,并且主键列未在视图定义查询中引用,则无法使用视图查询基础表的行。
F. 如果视图的定义查询包含DISTINCT关键字,则无法使用视图向基础表添加或修改行。
分析:
选项 A
并非总是能通过视图对表执行插入(Insert)语句。如果视图的列没有涵盖底层表中所有那些没有默认值的非空(NOT NULL)列,那么通过该视图进行的插入操作将会失败。例如,如果一个表有列 “column1”,它带有非空约束且没有默认值,而视图在其定义中未包含 “column1”,那么通过这个视图进行插入操作就行不通。所以,该选项错误。
选项 B
当通过视图从底层表中删除行时,“WITH CHECK OPTION” 子句不起作用。通过视图删除行时,只要视图对表具有必要的访问权限,就只是从底层表中删除相应的行。例如,一个为插入和更新操作定义了 “WITH CHECK OPTION” 的视图,在删除行时仍然可以自由进行,不会违反 “WITH CHECK OPTION”,因为删除操作并不涉及该选项所强制实施的那种检查。所以,该选项正确。
选项 C
并非总是能通过视图对表执行删除(Delete)语句。如果视图是通过涉及连接和聚合操作的复杂查询来定义的,并且视图与底层表的行之间没有一一对应的映射关系,那么通过该视图进行的删除操作可能无法进行,或者可能会产生意想不到的结果。例如,一个基于底层表进行 “GROUP BY” 操作得到的视图,就没有明确的方法将其映射回底层表的各个行以便进行删除操作。所以,该选项错误。
选项 D
如果底层表中有带有非空约束且没有默认值的列,而这些列在视图的定义查询中未被引用,那么就无法通过视图向底层表添加行。正如在选项 A 中所提到的,如果底层表中存在一些必填列(非空且无默认值),而视图没有涵盖这些列,那么在通过视图进行插入操作时就无法为这些列提供值。所以,该选项正确。
选项 E
即使表有主键,并且主键列在视图的定义查询中未被引用,视图仍然可以用来从底层表查询行。只要查询有效,视图仍然可以选择并显示表中的其他列和行。例如,一个视图可以选择非主键列并显示数据,即便主键列不在视图的定义之中。所以,该选项错误。
选项 F
如果视图的定义查询中包含 “DISTINCT” 关键字,就无法通过视图向底层表添加或修改行。“DISTINCT” 关键字改变了结果集的性质,使得在通过视图进行插入或更新操作时难以将行映射回底层表。例如,如果一个视图使用 “DISTINCT” 来从表中选择唯一的行,那么当试图通过该视图执行 DML 操作时,就不清楚应该插入或更新底层表中的哪些行。所以,该选项正确。
答案:BDF。
108. 第108题:
- 题目
- 解析及答案:
当你的其中一个数据库处于挂载(mount)状态时,由于数据文件已被移至新的文件系统,所以它们被重新命名了。之后该数据库被打开。
以下哪两个陈述是正确的?
选项 A
V D A T A F I L E 视图会显示数据文件的新名称。 V DATAFILE视图会显示数据文件的新名称。 V DATAFILE视图会显示数据文件的新名称。VDATAFILE视图用于展示数据库实例所知晓的有关数据文件的当前状态及信息。当数据文件被重命名且控制文件已更新(在进行了此类更改后,数据库从挂载状态转换到打开状态时会自动发生这种更新),之后数据库被打开时,V$DATAFILE视图将会显示数据文件的新名称。该视图反映的是正在运行的实例所识别到的这些数据文件的当前状态。所以,该选项正确。
选项 B
DBA_DATA_FILES视图会显示数据文件的原始名称。
DBA_DATA_FILES是一个数据字典视图,用于提供有关数据库数据文件的信息。一旦在数据文件被重命名后打开数据库,DBA_DATA_FILES视图也会更新以反映数据文件的新名称。在这些更改已被正确纳入数据库(即在重命名后打开数据库)之后,它不会再显示原始名称。所以,该选项错误。
选项 C
必须手动将DBA_DATA_FILES视图与控制文件重新同步,以便它能显示新的文件名。
并不需要手动将DBA_DATA_FILES视图与控制文件进行重新同步。当数据库被打开时,控制文件中的信息会被用于更新相关的数据字典视图,比如DBA_DATA_FILES视图。Oracle 数据库管理系统会负责这种内部的同步工作,以确保这些视图能显示有关数据文件的正确且当前的信息。所以,该选项错误。
选项 D
DBA_DATA_FILES视图会显示数据文件的新名称。
如前文所述,在数据文件被重命名后打开数据库时,DBA_DATA_FILES视图会显示数据文件的新名称。这是因为数据库会根据控制文件中所记录的这些数据文件的当前状态来更新该视图中的信息。所以,该选项正确。
选项 E
DBA_DATA_FILES视图会同时显示数据文件的新名称和旧名称。
DBA_DATA_FILES视图只会显示数据文件的新名称,而不会同时显示新名称和旧名称。在数据库被打开且完成必要的更新之后,它反映的是正在使用的数据文件的当前状态。所以,该选项错误。
答案:正确的是 A 和 D。
未完待续。
关注作者,您将获得更多OCP考试及Oracle DB方面的实战经验。后续不定期分享DB核心知识和排障案例及经验、性能调优等