- List item
本系列主要讲解Oracle OCP认证考试考点(题目),适用于19C/21C,跟着学OCP考试必过。
4. 第4题:
1. 题目
4.You currently have an active transaction in your session and have been granted select access to V T R A N S A C T I O N 您当前在会话中有一个活动的事务,并且已被授予对 V TRANSACTION 您当前在会话中有一个活动的事务,并且已被授予对V TRANSACTION您当前在会话中有一个活动的事务,并且已被授予对VTRANSACTION的SELECT访问权限
In which three situations will re-executing this query still return a row but with a different XID indicating a new transaction has started?
在哪三种情况下重新执行查询仍然会返回一行但XID不同,表明已经开始了新的事务?
A.after successfully executing a TRUNCATE statement followed by a DML statement
在成功执行TRUNCATE语句之后执行DML语句
B.after successfully executing a CREATE TABLE AS Select statement followed by a SELECT FOR UPDATE statement
在成功执行CREATE TABLE AS Select语句之后执行SELECT FOR UPDATE语句
C.after successfully executing a CREATE TABLE statement followed by a CREATE INDEX statement
在成功执行CREATE TABLE语句之后执行CREATE INDEX语句
D.after successfully executing a commit or ROLLBACK followed by a DML statement
在成功执行commit或ROLLBACK之后执行DML语句
E.after successfully executing a DML statement following a failed DML statement
在成功执行DML语句之后执行失败的DML语句
F. after successfully executing a commit or ROLLBACK followed by a Select statement
在成功执行commit或ROLLBACK之后执行Select语句
2. 解析及答案
这道题我们需要考虑哪些操作会结束当前事务并隐式或显式地开始一个新的事务。
A. TRUNCATE语句会隐式地提交当前事务。但是,只有在随后的DML语句执行之后,新的事务才会开始。如果在TRUNCATE之后但在DML之前立即重新执行V T R A N S A C T I O N 查询,它将不会显示一个新的事务。因此,这种情况只有在 D M L 执行后才会显示一个新的 X I D 。 B . 与 A 类似, C R E A T E T A B L E A S S E L E C T 会隐式地提交当前事务。 S E L E C T F O R U P D A T E 将开始一个新的事务,但只有在它执行之后, V TRANSACTION查询,它将不会显示一个新的事务。因此,这种情况只有在DML执行后才会显示一个新的XID。 B. 与A类似,CREATE TABLE AS SELECT会隐式地提交当前事务。SELECT FOR UPDATE将开始一个新的事务,但只有在它执行之后,V TRANSACTION查询,它将不会显示一个新的事务。因此,这种情况只有在DML执行后才会显示一个新的XID。B.与A类似,CREATETABLEASSELECT会隐式地提交当前事务。SELECTFORUPDATE将开始一个新的事务,但只有在它执行之后,VTRANSACTION才会显示一个新的XID。
C. CREATE TABLE和CREATE INDEX都会隐式地提交事务。在没有外部干预(如DML语句)的情况下,会话中没有连续的事务上下文允许V T R A N S A C T I O N 显示一个不同的 X I D 。 D . C O M M I T 或 R O L L B A C K 会结束当前事务。任何随后的 D M L 语句都会开始一个新的事务,并且 V TRANSACTION显示一个不同的XID。 D. COMMIT或ROLLBACK会结束当前事务。任何随后的DML语句都会开始一个新的事务,并且V TRANSACTION显示一个不同的XID。D.COMMIT或ROLLBACK会结束当前事务。任何随后的DML语句都会开始一个新的事务,并且VTRANSACTION会立即显示一个新的XID。
E. 失败的DML语句不会结束事务。因此,V$TRANSACTION将继续显示相同的XID,直到执行COMMIT或ROLLBACK。
F.SELECT语句不会开始一个新的事务。它在当前事务的上下文中操作(或者在没有显式启动事务且启用了自动提交的情况下,在事务之外操作)。
答案:ABD。
5. 第5题:
1. 题目
2. 解析及答案
以下哪个关于PMON(进程监控器)后台进程的陈述是正确的?
A. 它回滚进程失败时的事务:PMON确实与事务处理有关,但它主要负责清理失败的进程,而不是直接回滚事务。事务的回滚通常由Oracle的数据库恢复机制(如UNDO日志)处理。
B. 它向数据库实例已知的所有本地和远程监听器注册数据库服务:这是DBCA(数据库配置助手)或LSNRCTL(监听器控制实用程序)的职责,而不是PMON。PMON主要负责监控和清理进程。
C. 它释放未使用的临时段:PMON确实参与资源清理,但它主要关注的是进程相关的资源,而不是具体的数据库对象如临时段。临时段的释放通常由Oracle的后台进程SMON(系统监控器)处理。
D. 它释放异常终止的进程所占用的资源:这是正确的。PMON负责监控数据库中的进程,当检测到某个进程异常终止时,它会释放该进程所占用的资源,如锁、临时段等。
E. 它将检查点信息记录在控制文件中:这也是正确的。PMON参与检查点操作,但它主要是响应其他进程(如CKPT,检查点进程)的触发。在检查点发生时,CKPT进程会请求PMON更新控制文件中的检查点信息,以确保数据库的一致性和可恢复性。
因此,正确的选项是D和E。
6. 第6题:
1. 题目
6.Examine the description of the BOOKS_TRANSACTIONS table:
Which two WHERE conditions give the same result?
A.WHERE borrowed_date= SYSDATE AND (transaction_ type ='RM' AND (member_id='A101' OR member_id ='A102' ))
B.WHERE borrowed_date= SYSDATE AND (transaction type='RM' OR member_id IN ('A101', 'A102'))
C.WHERE borrowed_date= SYSDATE AND (transaction type ='RM' AND member_id 'A101' OR member id ='A102')
D. WHERE borrowed_date= SYSDATE AND transaction type ='RM' OR member id IN
('A101', 'A102')
E. WHERE (borrowed date= SYSDATE AND transaction type ='RM') OR member id IN A101','A1021)
2. 解析及答案
这个题目很简单,也不需要翻译吧。答案DE
7. 第7题:
1. 题目
7.Which three statements are true?
A.The second ROLLBACK command restores the row that was inserted
B.The first ROLLBACK command leaves the inserted row locked
C.The second ROLLBACK command restores the 100 rows that were in the table originally
D.The second ROLLBACK command rolls back the ROLLBACK TO SAVEPOINT a command E.The first ROLLBACK command leaves the table's 100 original rows locked
F.The first ROLLBACK command restores the 100 rows that were in the table originally
G.The first ROLLBACK command restores the row that was inserted.
2. 解析及答案
A中insert没有commit之前是锁的,和rollback语句leaves the lock是一个意思。
C中恢复之前的100行应该是第一个rollback实现的
E第一个rollback反而释放了delete语句加上的锁
本题考查回滚点的知识,比较简单,答案BFG
8. 第8题:
1. 题目
2. 解析及答案
8.在SQL语句中使用SET操作符(如INTERSECT)进行复合查询时,用于对输出进行排序的默认列是哪一列或哪些列?
A. 复合查询中最后一个SELECT的第一个NUMBER或VARCHAR2列 - 这个选项指定了特定的数据类型和位置,但SQL标准不保证这一点。
B. 复合查询中第一个SELECT的第一个NUMBER列 - 同样,这也不是SQL标准保证的行为。
C. 复合查询中第一个SELECT的第一个VARCHAR2列 - 同上,不是标准行为。
D. 复合查询中第一个SELECT的第一个列 - 这个选项更接近于一个可能的"默认"行为,因为它没有指定数据类型,只是基于位置。但即使如此,这仍然不是SQL标准所规定的。
E. 复合查询中最后一个SELECT的第一个列 - 与D选项类似,但基于最后一个SELECT而不是第一个。
在SQL中,当使用SET操作符(如UNION、INTERSECT、EXCEPT等)进行复合查询时,如果需要对结果进行排序,通常需要在查询的外部应用ORDER BY子句。然而,题目询问的是在没有明确指定ORDER BY子句的情况下,哪个列会被视为默认的排序依据。实际上,SQL标准并不指定在没有ORDER BY子句时复合查询结果的默认排序。这意味着,查询结果可能会以数据库系统认为最有效的方式返回,而不保证任何特定的顺序。因此,从技术上讲,没有一个"默认"的排序列。
最接近的答案是D,因为它没有指定数据类型,只是基于位置,这可能会在某些数据库系统的内部处理中有所体现(尽管这不是一个可靠或标准的做法)。然而,重要的是要理解,在没有ORDER BY子句的情况下,不应该假设查询结果有任何特定的顺序。
注意:实际开发中,如果需要保证查询结果的顺序,应该显式地使用ORDER BY子句。
9. 第9题:
1. 题目
9.Examine the description of the MEMBERs table:
You want to display all cities that contain the string AN. The cities must be returned in ascending order with the last names further sorted in descending order.
Which two clauses must you add to the query?
A.ORDER BY 1, LAST_NAME DESC
B.ORDER BY1, 2
C.WHERE city IN ('%AN%')
D.WHERE city= '%AN%'
E.WHERE city LIKE '%AN%'
F.ORDER BY last name DESC, city ASC
2. 解析及答案
本题比较简单,答案:AE
未完待续。
关注作者,您将获得更多OCP考试及Oracle DB方面的实战经验。后续不定期分享DB核心知识和排障案例及经验、性能调优等