TEMPORARY UNDO در اوراکل 12c

تا قبل از اوراکل 12c، اطلاعات undo مربوط به جداول از نوع global temporary table، درundo tablespace پیش فرض بانک قرار می گیرد.

در اوراکل نسخه 12c، قابلیت TEMPORARY UNDO ارائه شد که با کمک آن، می توان اطلاعات undo این نوع از جداول را در temporary tablespace قرار داد.

این قابلیت دو کاربرد اساسی دارد:

1.در صورت استفاده از global temporary tableه، Redo و undo کمتری ایجاد می شود:

–without temporary undo

SQL> create global temporary table GTT as select * from sys.source$ where 1=2;

Table created.

SQL> insert into GTT select * from sys.source$ ;

346105 rows created.

SQL> select t.USED_UBLK from v$transaction t,v$session s where s.SADDR=t.SES_ADDR and s.AUDSID=sys_context(‘USERENV’,’SESSIONID’);

USED_UBLK

150

–with temporary undo

SQL> alter session set temp_undo_enabled=true;

Session altered.

SQL> create global temporary table GTT2 as select * from sys.source$ where 1=2;

Table created.

SQL> insert into GTT2 select * from sys.source$ ;

346105 rows created.

SQL> select t.USED_UBLK from v$transaction t,v$session s where s.SADDR=t.SES_ADDR and s.AUDSID=sys_context(‘USERENV’,’SESSIONID’);

USED_UBLK

1

2.امکان انجام عملیات DMLای بر روی global temporary table، در محیط read only(همانند محیط دیتاگارد) هم فراهم خواهد شد.

–in primary:

SQL> conn usef/abc

Connected.

SQL> alter system set temp_undo_enabled=true scope=both;

SQL>  create global temporary table US_GTT on commit preserve rows as select * from v$datafile;

–in stb

SQL> conn usef/abc

Connected.

SQL> alter system set temp_undo_enabled=true scope=both;

SQL> insert into US_GTT select * from v$datafile;

4 rows created.

ارتباط با نویسنده مطلب:vahidusefzadeh@ کانال تخصصی اوراکل و لینوکس: OracleDB@

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.