The ORDERS TABLE belongs to the user OE. OE has granted the SELECT privilege on the ORDERS table to
the user HR.
Which statement would create a synonym ORD so that HR can execute the following query successfully?
SELECT * FROM ord;
A.
CREATE SYNONYM ord FOR orders; This command is issued by OE.
B.
CREATE PUBLIC SYNONYM ord FOR orders; This command is issued by OE.
C.
CREATE SYNONYM ord FOR oe.orders; This command is issued by the database administrator.
D.
CREATE PUBLIC SYNONYM ord FOR oe.orders; This command is issued by the database administrator.
Explanation:
Creating a Synonym for an Object
To refer to a table that is owned by another user, you need to prefix the table name with the name of the user
who created it, followed by a period. Creating a synonym eliminates the need to qualify the object name with the
schema and provides you with an alternative name for a table, view, sequence, procedure, or other objects.
This method can be especially useful with lengthy object names, such as views.
In the syntax:
PUBLIC Creates a synonym that is accessible to all users synonym Is the name of the synonym to be created
object Identifies the object for which the synonym is created
Guidelines
The object cannot be contained in a package.
A private synonym name must be distinct from all other objects that are owned by the same user. If you try to
execute the following command (alternative B, issued by OE):
To create a PUBLIC synonym, you must have the CREATE PUBLIC SYNONYM system privilege. Here, this is not specified, so D should be the correct answer.