First, just to be certain we're covering our basis, this piece of code:
EXP FILE = B.DMP OWNER(B)
won't work. That's not a properly formatted EXP command. But assuming that you're using a properly formatted command, all that a user really needs is the EXP_FULL_DATABASE role, and they should be able to export any object in the database:
SQL> create user captjackvane identified by x default tablespace users temporary tablespace temp;
SQL> grant create session to captjackvane;
exp userid=captjackvane/x owner=rpt file=rpt.dmp log=rpt_dmp.log resumable=Y
This results in
EXP-00032: Non-DBAs may not export other users
EXP-00000: Export terminated unsuccessfully
But when I add the grant:
SQL> grant exp_full_database to captjackvane;
We see that I can now do the export:
About to export specified users ...
. exporting pre-schema procedural objects and actions
. exporting foreign function library names for user RPT
. exporting PUBLIC type synonyms
. exporting private type synonyms
. exporting object type definitions for user RPT
About to export RPT's objects ...
. exporting database links
. exporting sequence numbers
. exporting cluster definitions
. about to export RPT's tables via Conventional Path ...
. . exporting table AD_HOC_FIELD_SET 2 rows exported
If you've granted this permission, then there are a few other things you may want to check. The first is the permissions on the directory you're trying to write your dump file to; your Oracle type user will need to be able to read/write in that directory.
Can you post the exact error message you're getting?