I am having 2 schema with following details.
Schema1 having 50tables with created public synonym for the tables.
Schema2 having 10tables.
Please advise to restrict access of public synonym from schema2. I want access only schema2 tables and should not access schema1 Tables.
Synonyms (public or private) have nothing to do with privileges. The fact that there is a public synonym on a table in schema1 does not in any way mean that schema2 has the ability to query that table. The presence of a public synonym my give away the fact that the table exists but schema2 won't be able to select any of the data unless it is granted access to the base table.
Don't grant the privileges to public.
If you grant privileges to public, you can't then revoke them from one user. You can grant the privileges to a new role and grant that role to whatever users actually need access to the tables.