create table BIG_TABLE as select rownum id, a.* from all_objects a where 1=0
/
alter table BIG_TABLE nologging;

declare
    l_cnt number;
    l_rows number := &1;
begin
    insert /*+ append */ into BIG_TABLE
    select rownum, a.*
      from all_objects a
     where rownum <= &1;

    l_cnt := sql%rowcount;

    commit;

    while (l_cnt < l_rows)
    loop
        insert /*+ APPEND */ into BIG_TABLE
        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, NAMESPACE, EDITION_NAME
          from BIG_TABLE
         where rownum <= l_rows-l_cnt;
        l_cnt := l_cnt + sql%rowcount;
        commit;
    end loop;
end;
/
alter table BIG_TABLE add constraint BIG_TABLE_PK primary key(id);

exec dbms_stats.gather_table_stats(user, 'BIG_TABLE');
