Public synonym can not be exported and never exported even at FULL Export also. See they are owned by PUBLIC (owner). You can get them from "dba_synonyms". I suggest that you create so customer script or spool it
Example : "'create public synonym "..etc. to respective owner and table and execute on the destination DB.
Public synonyms are exported by a full export, or at least by exp. We have imported them as part of a full import many times.
$ grep -i "create public syn" UT1full.D090126.dmp | more
GRANT CREATE PUBLIC SYNONYM TO "DBSNMP"
GRANT CREATE PUBLIC SYNONYM TO "EDSDEV"
GRANT CREATE PUBLIC SYNONYM TO "USER1"
CREATE PUBLIC SYNONYM "ANYTYPE" FOR "SYS"."ANYTYPE"
CREATE PUBLIC SYNONYM "ANYDATA" FOR "SYS"."ANYDATA"
It is very easy to generate the create public and private synonyms statements using SQL selecting on dba_synonyms.
HTH -- Mark D Powell --
set feedback off
set trimspool on
set pagesize 1000
set linesize 1000
set heading off
select 'create public synonym ' || table_name || ' for ' || table_owner || '.' || table_name || ';'
owner='PUBLIC' and table_owner not in ('SYS', 'SYSTEM')