set feedback off set timing off DROP TABLE scott.big_tab PURGE; CREATE TABLE scott.big_tab AS SELECT ROWNUM id, owner, object_name, subobject_name, object_id, data_object_id, object_type, created, last_ddl_time, timestamp, status, temporary, generated, secondary FROM dba_objects a WHERE 1=0; DECLARE l_cnt NUMBER; l_rows NUMBER := 2000000; BEGIN INSERT /*+ APPEND */ INTO scott.big_tab SELECT ROWNUM, owner, object_name, subobject_name, object_id, data_object_id, object_type, created, last_ddl_time, timestamp, status, temporary, generated, secondary FROM dba_objects; l_cnt := SQL%ROWCOUNT; COMMIT; WHILE l_cnt < l_rows LOOP INSERT /*+ APPEND */ INTO scott.big_tab SELECT ROWNUM + l_cnt, owner, object_name, subobject_name, object_id, data_object_id, object_type, created, last_ddl_time, timestamp, status, temporary, generated, secondary FROM scott.big_tab WHERE ROWNUM <= l_rows - l_cnt; l_cnt := l_cnt + SQL%ROWCOUNT; COMMIT; END LOOP; END; / ALTER TABLE scott.big_tab ADD CONSTRAINT big_tab_pk PRIMARY KEY(id); BEGIN DBMS_STATS.GATHER_TABLE_STATS( ownname => 'SCOTT', tabname => 'BIG_TAB', estimate_percent => 100, cascade => TRUE); END; / set feedback on set timing on