Global temp followup

Global temp followup

 

  

Using a on commit preserve rows seems to eliminate the rollback issue and
seems to perform faster:

SQL> create global temporary table test_temp on commit preserve rows as
select * from dba_objects;

Table created.

Elapsed: 00:00:01.03
SQL> select count(*) from dba_objects;
COUNT(*)
----------
31476

1 row selected.

Elapsed: 00:00:00.07
SQL> select count(*) from test_temp;
COUNT(*)
----------
31476

1 row selected.

Elapsed: 00:00:00.02
SQL> declare
2 i integer;
3 begin
4 for i in 1..10 loop
5 insert into test_temp select * from dba_objects;
6 end loop;
7 end;
8 /

PL/SQL procedure successfully completed.

Elapsed: 00:01:00.04
SQL> select count(*) from test_temp;
COUNT(*)
----------
346236

1 row selected.

Elapsed: 00:00:00.07
SQL> commit;

Commit complete.

Elapsed: 00:00:00.00
SQL> select count(*) from test_temp;
COUNT(*)
----------
346236

1 row selected.

Elapsed: 00:00:00.09
SQL> delete test_temp;

346236 rows deleted.

Elapsed: 00:02:36.08
SQL> rollback;

Rollback complete.

Elapsed: 00:01:55.05
SQL> select count(*) from test_temp;
COUNT(*)
----------
346236

1 row selected.

Elapsed: 00:00:01.09



Michael R. Ault
Senior Technical Management Consultant
TUSC - The Ultimate Software Consultants
5 Concourse Parkway
Suite 3100
Atlanta, Ga 30328, USA
770-481-1935

Oracle LazyDBA home page