The default is to throw away the data after a transaction ends with commit or rollback:
create private temporary table ora$ptt_mytemptab on commit drop definition;
You could also let the data be visible for the entire duration of the session:
create private temporary table ora$ptt_mytemptab on commit preserve definition;The notation ora$ptt is derived from the parameter private_temp_table_prefix:
SQL>show parameter private_temp_table_prefix NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ private_temp_table_prefix string ORA$PTT_
It must be included in the create statement of the PTT. You can find information about your PTTs in the dictionary:
set lines 200 col table_name format a20 col tablespace_name format a20 col duration format a20 col num_rows format 99999999 SELECT sid, serial#, table_name, tablespace_name, duration, num_rows FROM user_private_temp_tables;In my case the output is:
SID SERIAL# TABLE_NAME TABLESPACE_NAME DURATION NUM_ROWS
---------- ---------- -------------------- -------------------- -------------------- ---------
280 12720 ORA$PTT_MYTEMPTAB TEMP SESSION 107
The column "duration" will show whether it is preserving data for the session or the transaction.
Read more about PTTs in the Oracle 18c documentation

No comments:
Post a Comment