ORA-04031: unable to allocate 4708660 bytes of shared memory
I'd recommend limiting the number of rows you fetch in your BULK COLLECT and wrapping the whole thing inside a loop:

 -- create our output table
 create table temp as
 select 
   object_type as biz_hierarchy, 
   object_name as project_team, 
   object_name as user_roles,
   object_name as username, 
   object_name as sso
 from all_objects where 1=0;
/

DECLARE
  TYPE t_varchar IS TABLE OF varchar(512 char);
  biz_hierarchy t_varchar := t_varchar();
  project_team  t_varchar := t_varchar();
  user_roles    t_varchar := t_varchar();
  username      t_varchar := t_varchar();
  sso           t_varchar := t_varchar();
  cursor cur is
    select object_type as biz_hierarchy,
           object_name as project_team,
           object_name as user_roles,
           object_name as username,
           object_name as sso
      from all_objects
     where rownum &lt;= 25000;
BEGIN
  open cur;
  loop
    fetch cur BULK COLLECT
      INTO biz_hierarchy,
           project_team,
           user_roles,
           username,
           sso limit 1000;
    FORALL i IN biz_hierarchy.FIRST .. biz_hierarchy.LAST
      INSERT INTO temp
      VALUES
        (biz_hierarchy(i),
         project_team(i),
         user_roles(i),
         username(i),
         sso(i));
    exit when cur%notfound;  
  end loop;

END;


see Asktom on large bulk collect for further info