If you are using the old imp method the users and tablespaces must be created first. This includes grants, database links and any advanced queues you may be using. A sample script could look like this in Windows
imp a_DBA_user/apassword LOG =C:\dump\logs\import.log file =user01.dmp fromuser=user_name touser=user_name
The newer datapump method works wonderfully. You don't need to create the user but I would create any custom tablespaces you may have on the original.
A sample data pump call requires you to create a database link to the original database and a directory. This creates a directory
CREATE OR REPLACE DIRECTORY
DATA_PUMP_DIR AS
'C:\app\Oracle\product\11.2.0\dbhome_1\rdbms\log\';
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO EXP_FULL_DATABASE;
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO auser;
GRANT READ, WRITE ON DIRECTORY DATA_PUMP_DIR TO IMP_FULL_DATABASE;
In your script to import set these variables
NLS_LANG
ORACLE_SID= your database name
impdp a_user_who_exists/your database name directory=DATA_PUMP_DIR network_link=original database name schemas= user1,user2 LOGFILE=DataPump.log TABLE_EXISTS_ACTION=REPLACE