oracle数据库OCP
You want execution of large database operations to suspend, and then resume, in the event of space allocation failures.
You set the value of the initialization parameter RESUMABLE_TIMEOUT to 3600.
Which two statements are true?
A.Before a statement executes in resumable mode, the ALTER SESSION ENABLE RESUMABLE statement must be issued in its session
B.Data Manipulation Language (DML) operations are resumable, provided that they are not embedded in a PL/SQL block.
C.A resumable statement can be suspended and resumed only once during execution.
D.A suspended statement will report an error if no corrective action has taken place during a timeout period.
E. Suspending a statement automatically results in suspending a transaction and releasing all the resources held by the transaction.
Answer: AD
【解析】
可恢复空间分配的工作方式为:
仅当通过以下操作之一为语句的会话启用了可恢复空间分配时,该语句才以可恢复模式执行:
该ALTER SESSION ENABLE RESUMABLE声明是在语句执行前的会议时发出的RESUMABLE_TIMEOUT初始化参数设置为非零值。
该ALTER SESSION ENABLE RESUMABLE TIMEOUT timeout_value语句在执行之前在会话中发出,并且timeout_value是非零值。
当出现以下情况之一时,可恢复语句被挂起(这些条件导致非可恢复语句被发出相应的错误信号):
空间不足
达到最大范围的条件
超出空间配额条件。
当中止可恢复语句的执行时,有一些机制可以执行用户提供的操作,记录错误以及查询语句执行的状态。暂停可恢复语句后,将执行以下操作:
该错误在警报日志中报告。
系统发出“可恢复的会话已挂起”警报。
如果用户在AFTER SUSPEND系统事件上注册了触发器,则将执行用户触发器。用户提供的PL / SQL过程可以使用DBMS_RESUMABLE包和DBA_或USER_RESUMABLE视图访问错误消息数据。
挂起语句会自动导致挂起事务。因此,所有事务资源都通过语句中止和恢复来保留。
解决错误情况后(例如,由于用户干预或其他查询释放的排序空间),被挂起的语句将自动恢复执行,并清除“可恢复的会话被挂起”警报。
可以使用该DBMS_RESUMABLE.ABORT()过程强制执行已暂停的语句引发异常。DBA或发出该语句的用户可以调用此过程。
由RESUMABLE_TIMEOUT初始化参数或ALTER SESSION ENABLE RESUMABLE TIMEOUT语句中的超时值指定的暂停超时间隔与可恢复语句相关联。如果在超时间隔内未解决错误条件,则会暂停在超时间隔内暂停的可恢复语句,并将异常返回给用户。
可恢复语句可以在执行期间被挂起和恢复多次。
【官方手册】
https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/managing-space-for-schema-objects.html#GUID-46AE3FD8-95D4-4CFA-9F3C-B80C5AFDE75B