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

set verify off

declare
  l_cnt    number;
  l_rows   number  := 1000000;
begin
  insert /*+ append */
  into big_table 
  select rownum, a.*
  from   all_objects a;
  
  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
    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);
