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 tobe 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):
ansor D …
can anyone explain y not answer b?
Please nothe word PUBLIC which is an Administrator area
It would only work if OE user had the CREATE PUBLIC SYNONYM privilege, which is neither default nor explicited in the question.
Correct Answer: D