QUESTION NO: 22
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.
Answer: D
答案解析:
参考:49:http://blog.csdn.net/rlhua/article/details/12781661
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
Oracle 1z0-051 Exam
"Pass Any Exam. Any Time." - 100% Pass Guarantee 19
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):
CREATE PUBLIC SYNONYM ord FOR orders;
You will get an error.
Error que empieza en la línea 693 del comando:
create public synonym nuly for prueba_null
Error en la línea de comandos:693 Columna:0
Informe de error:
Error SQL: ORA-01031: privilegios insuficientes
01031. 00000 - "insufficient privileges"
The message gives you the answer: OE doesn't have enough privileges. However, if you give the
necessary privileges (issued by DBA):
GRANT CREATE PUBLIC SYNONYM TO OE;
You won't have problems executing the command in the alternative B (issued by OE):
CREATEPUBLIC
SYNONYM ord FOR orders;
Finally, if you need to be sure what system privileges you have in your active session, you can
execute the following command (issued by OE):
SELECT * FROM USER_PRIVS;
(One of the rows must be: CREATE PUBLIC SYNONYM ).