I think I am not hitting this bug. Following is the exact steps I am doing. Also, this is happening at one of our clients production environment, which is on 10.2.0.4, while I am testing this in my local test environment which is 11.1.0.6.0.
Following are the steps I am doing in a big plsql package (almost 10000 lines of code):
step 1: drop the indexes, constraints
step 2: create a lot of tables in parallel
step 3: DML/MERGE on a lot of tables in parallel
step 4: recreate the indexes in parallel (some of these are on the tables in step3)
step 5: recreate/enable constrants.
step 6: END.
Now, when I am doing the step 4 by calling another procedure (say proc A) which is recreating indexes using execute immediate, all indexes are created in parallel. However, If I call another procedure proc B, which is autonomous, from proc A (by replacing execute immediate), the indexes are created in parallel.
There is a restriction for PDML that if a I have done DML in parallel on a table, no other query/DML is possible in parallel again in the same transaction. However, in my case, I am trying to do DDL, and the moment I say create index, there is an implicit commit.
So, technicalli autonomous transaction and execute immediate is same in a way(atleast in my case), still they are behaving differentlly.
thanks.