同义词 synonym

来源:互联网 发布:淘宝首页怎么建热点 编辑:程序博客网 时间:2024/05/17 00:56

 http://oracle.chinaitlab.com/PLSQL/920910.html

  同义词是基表的别名、只在数据字典里有其定义、没有存储

  同义词为分布式数据库提供位置透明性、访问异地的资源就像访问本地的资源一样无差别

㈠ 语法

  创建同义词的语法:


  

没有带public的是私有同义词

  私有同义词就是普通用户所创建的同义词,之所以说它是私有,是因为只有创建该同义词的用户才能使用此同义词

  而公用同义词是指数据库管理员创建的,当然,公用同义词是允许所有的用户来使用的

  如果要创建一个远程的数据库上的某张表的同义词,需要先创建一个Database Link,然后再使用@DB_Link_name

  当出现同名时、优先级如下:

  私有同义词 > 公有同义词

  基表 > 公有同义词

  存在同名对象和公共同义词时,数据库优先选择对象作为目标ss

  存在同名私有对象和公共对象时,数据库优先选择私有同义词作为目标

  基表与私有同义词不能同名、否则会报ORA-00955错误

 

㈡ 同义词的操作

  ① 查看同义词

  [sql]

  sys@ORCL>select table_name from dict where table_name like '%SYNONYM%';

  TABLE_NAME

  ------------------------------

  DBA_SYNONYMS

  USER_SYNONYMS

  ALL_SYNONYMS

 ② 删除同义词

  DROP [ PUBLIC ] SYNONYM [schema. ] 同义词名称 [ FORCE ];

  DROP SYNONYM SYSN_TEST;

  DROP PUBLIC SYNONYMPUBLIC_TEST;--当同义词的原对象被删除是,同义词并不会被删除

  ③ 编译同义词

  ALTER  SYNONYM TCOMPILE; --当同义词的原对象被重新建立时,同义词需要重新编译

SQL> alter public synonym emp compile;

Synonym altered.

 

  对原对象进行DDL操作后,同义词的状态会变成INVALID

  当再次引用这个同义词时,同义词会自动编译,状态会变成VALID、无需人工干预,当然前提是不改变原对象的名称

㈢ 同义词的权限管理

  与同义词相关的权限有CREATESYNONYM、CREATE ANY SYNONYM、CREATE PUBLIC SYNONYM权限

① CREATE SYNONYM:用户在自己的模式下创建私有同义词,这个用户必须拥有CREATESYNONYM权限,否则不能创建私有同义词

  ② CREATE ANY SYNONYM:如果需要在其它模式下创建同义词,则必须具有CREATE ANYSYNONYM的权限

  ③ CREATE PUBLIC SYNONYM:创建公有同义词则需要CREATE PUBLICSYNONYM系统权限

OCP考题

[sql]

  Q: 16 Mary has a view called EMP_DEPT_LOC_VU that was created basedon

  the EMPLOYEES, DEPARTMENTS, and LOCATIONS tables. She granted SELECTprivilege to Scott

  on this view. Which option enables Scott to eliminate the need toqualify the view with the name

  MARY.EMP_DEPT_LOC_VU each time the view is referenced?

  A. Scott can create a synonym for the EMP_DEPT_LOC_VU by using thecommand

  CREATE PRIVATE SYNONYM EDL_VU

  FOR mary.EMP_DEPT_LOC_VU;

  then he can prefix the columns with this synonym.

  B. Scott can create a synonym for the EMP_DEPT_LOC_VU by using thecommand

  CREATE SYNONYM EDL_VU

  FOR mary.EMP_DEPT_LOC_VU;

  then he can prefix the columns with this synonym.

  C. Scott can create a synonym for the EMP_DEPT_LOC_VU by using thecommand

  CREATE LOCAL SYNONYM EDL_VU

  FOR mary.EMP_DEPT_LOC_VU;

  then he can prefix the columns with this synonym.

  D. Scott can create a synonym for the EMP_DEPT_LOC_VU by using thecommand

  CREATE SYNONYM EDL_VU

  ON mary(EMP_DEPT_LOC_VU);

  then he can prefix the columns with this synonym.

  E. Scott cannot create a synonym because synonyms can be createdonly for tables.

  F. Scott cannot create any synonym for Mary's view. Mary shouldcreate a private synonym for the view and

  grant SELECT privilege on that synonym to Scott.

  Answer: B

 

原创粉丝点击