Anyway, did you try simply pasting the contents of script 2 to the end of script 1? Alternately, in SQL*PLUS you can call a script from a script using the '@' (run) command and just run script 2 at the end of script 1how to pass the username and password in the script.
In this case, you may want to use substitution variables, like this
DEFINE username = scott DEFINE password = tiger -- This part is done by SYS: CREATE USER &username IDENTIFIED BY &password; GRANT some_role TO &username; ... -- Now connect as the new user and run script_2.sql: CONN &username/&password@dbname @script_2
The only objects that cannot be created like this, are private/local database links and materialised views, if I recall correctly. In such a case, the installation needs to create a procedure as the user schema, running with definer rights, that creates the object. When SYS calls this procedure during the installation, the procedure runs as FOO and creates the database link/whatever as FOO.
--// connected as a SYS user --// create user create user FOO identified by ...; --// set user privs grant .. to FOO; --// change resolution scope to user schema alter session set current_schema=FOO; --// create user objects (these are created by --// SYS in the FOO schema) create table ...; create sequence ..; create trigger ...; etc...