Choice 1 is Actually IncorrectAccording to the Oracle 10.2 documentation http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/sqloperations.htm#sthref1537 section Avoiding Errors with Autonomous Transactions, we find this: "If you try to exit an active autonomous transaction without committing or rolling back, Oracle raises an exception. If the exception goes unhandled, the transaction is rolled back." Consequently, the last sentence of the choice should be (correction in italics): "Otherwise, an exception will be raised by Oracle and a rollback performed on any changes made in the autonomous transaction program unit" not "a rollback performed in your session."
Choice 4: Change made to a TableA player wrote that "change" "to a table" doesn't mean only table data, raising questions regarding the impact of DDL changes to the table as in:
declare /*create table a (d date, v varchar2 (8)); */ pragma autonomous_transaction; begin insert into a values (sysdate,'o'); execute immediate 'truncate table a'; execute immediate 'alter table a add (b varchar2(8))'; execute immediate 'alter table a drop column b'; end;You wouldn't have to do a commit explicilty in this case, because Oracle will do so implicitly. Regardless, this choice is incorrect, because you do not have to commit at all with an autonomous transaction. You could decide to rollback instead. So there is a possible ambiguity in the choice, but the ambiguity does not affect the correctness of the answer.