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 107The column "duration" will show whether it is preserving data for the session or the transaction.
Read more about PTTs in the Oracle 18c documentation