Temporary Undo in Oracle Database 12c Release 1 (12.1)
Place undo segments for global temporary tables in the temporary tablespace in Oracle Database 12c Release 1 (12.1).
oracle 12cconfigurationintermediate
by OracleDba
19 views
Place undo segments for global temporary tables in the temporary tablespace in Oracle Database 12c Release 1 (12.1).
123456789
-- Session level
ALTER SESSION SET TEMP_UNDO_ENABLED = TRUE;
ALTER SESSION SET TEMP_UNDO_ENABLED = FALSE;
-- System level
CONN sys@pdb1 AS SYSDBA
ALTER SYSTEM SET TEMP_UNDO_ENABLED = TRUE;
ALTER SYSTEM SET TEMP_UNDO_ENABLED = FALSE;123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
CONN test/test@pdb1
DROP TABLE my_temp_table PURGE;
CREATE GLOBAL TEMPORARY TABLE my_temp_table (
id NUMBER,
description VARCHAR2(20)
)
ON COMMIT DELETE ROWS;
CONN sys@pdb1 AS SYSDBA
GRANT SELECT ON v_$tempundostat TO test;
CONN test/test@pdb1
SET AUTOTRACE ON STATISTICS;
-- Populate GTT.
INSERT INTO my_temp_table
WITH data AS (
SELECT 1 AS id
FROM dual
CONNECT BY level < 10000
)
SELECT rownum, TO_CHAR(rownum)
FROM data a, data b
WHERE rownum <= 1000000;
1000000 rows created.
Statistics
----------------------------------------------------------
46 recursive calls
15346 db block gets
2379 consistent gets
16 physical reads
2944564 redo size
855 bytes sent via SQL*Net to client
986 bytes received via SQL*Net from client
3 SQL*Net roundtrips to/from client
5 sorts (memory)
0 sorts (disk)
1000000 rows processed
SQL>
SET AUTOTRACE OFF
-- Check undo used by transaction.
SELECT t.used_ublk,
t.used_urec
FROM v$transaction t,
v$session s
WHERE s.saddr = t.ses_addr
AND s.audsid = SYS_CONTEXT('USERENV', 'SESSIONID');
USED_UBLK USED_UREC
---------- ----------
302 6238
SQL>
CONN test/test@pdb1
-- Enable temporary undo.
ALTER SESSION SET TEMP_UNDO_ENABLED = TRUE;
SET AUTOTRACE ON STATISTICS;
-- Populate GTT.
INSERT INTO my_temp_table
WITH data AS (
SELECT 1 AS id
FROM dual
CONNECT BY level < 10000
)
SELECT rownum, TO_CHAR(rownum)
FROM data a, data b
WHERE rownum <= 1000000;
1000000 rows created.
Statistics
----------------------------------------------------------
25 recursive calls
15369 db block gets
2348 consistent gets
16 physical reads
1004 redo size
853 bytes sent via SQL*Net to client
986 bytes received via SQL*Net from client
3 SQL*Net roundtrips to/from client
3 sorts (memory)
0 sorts (disk)
1000000 rows processed
SQL>
SET AUTOTRACE OFF
-- Check undo used by transaction.
SELECT t.used_ublk,
t.used_urec
FROM v$transaction t,
v$session s
WHERE s.saddr = t.ses_addr
AND s.audsid = SYS_CONTEXT('USERENV', 'SESSIONID');
USED_UBLK USED_UREC
---------- ----------
1 1
SQL>
-- Check temporary undo usage.
SET LINESIZE 200
ALTER SESSION SET NLS_DATE_FORMAT='DD-MON-YYYY HH24:MI:SS';
SELECT *
FROM v$tempundostat
WHERE end_time >= SYSDATE - INTERVAL '1' MINUTE;
BEGIN_TIME END_TIME UNDOTSN TXNCOUNT MAXCONCURRENCY MAXQUERYLEN MAXQUERYID
UNDOBLKCNT
EXTCNT USCOUNT SSOLDERRCNT NOSPACEERRCNT CON_ID
-------------------- -------------------- ---------- ---------- -------------- ----------- -------------
----------
---------- ---------- ----------- ------------- ----------
24-NOV-2014 15:11:09 23-NOV-2014 15:17:30 3 2 0 0
321
4 1 0 0 0
SQL>Please to add comments
No comments yet. Be the first to comment!