日期:2014-05-16  浏览次数:20519 次

OCP考题解析_007: 同义词
       同义词是基表的别名、只在数据字典里有其定义、没有存储
       同义词为分布式数据库提供位置透明性、访问异地的资源就像访问本地的资源一样无差别
       
       ㈠ 语法
          

          创建同义词的语法:

               

          没有带public的是私有同义词
          私有同义词就是普通用户所创建的同义词,之所以说它是私有,是因为只有创建该同义词的用户才能使用此同义词
          而公用同义词是指数据库管理员创建的,当然,公用同义词是允许所有的用户来使用的
          如果要创建一个远程的数据库上的某张表的同义词,需要先创建一个Database Link,然后再使用@DB_Link_name
          
          当出现同名时、优先级如下:
          私有同义词 > 公有同义词
          基表 > 公有同义词
          存在同名对象和公共同义词时,数据库优先选择对象作为目标
          存在同名私有对象和公共对象时,数据库优先选择私有同义词作为目标
          基表与私有同义词不能同名、否则会报ORA-00955错误
          
       ㈡ 同义词的操作
          
          ① 查看同义词

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 SYNONYM PUBLIC_TEST;--当同义词的原对象被删除是,同义词并不会被删除
             
          ③ 编译同义词
             
             ALTER  SYNONYM T COMPILE; --当同义词的原对象被重新建立时,同义词需要重新编译
             对原对象进行DDL操作后,同义词的状态会变成INVALID
             当再次引用这个同义词时,同义词会自动编译,状态会变成VALID、无需人工干预,当然前提是不改变原对象的名称
             
             
       ㈢ 同义词的权限管理
       
          与同义词相关的权限有CREATE SYNONYM、CREATE ANY SYNONYM、CREATE PUBLIC SYNONYM权限
          
          ① 用户在自己的模式下创建私有同义词,这个用户必须拥有CREATE SYNONYM权限,否则不能创建私有同义词
          ② 如果需要在其它模式下创建同义词,则必须具有CREATE ANY SYNONYM的权限
          ③ 创建公有同义词则需要CREATE PUBLIC SYNONYM系统权限
          
          
       ㈣ OCP考题


Q: 16 Mary has a view called EMP_DEPT_LOC_VU that was created based on
the EMPLOYEES, DEPARTMENTS, and LOCATIONS tables. She granted SELECT privilege to Scott
on this view. Which option enables Sco