同义词 synonym

简介

  1. 同义词就是表、索引、视图等模式对象的一个别名。

  2. 优点:

  • 通过模式同义词的创建,可以隐藏对象的实际名称和所有者信息,或者隐藏分布式数据库中远程对象的设置信息,由此为对象提供一定的安全性保证。

  • 与视图、序列一样,同义词值在数据库的数据字典中保存期定义的描述,而不占据表空间。

  • 开发数据库时,尽量避免直接引用表。视图或者其他数据库对象的名称。而是改用其同义词。好处:避免在管理员对数据库对象作出修改和变动后,必须重新编译应用程序。

  • 简化sql语句

  • 为分布式数据库的远程对象提供位置透明性

  • Oracle同义词在数据库链接中的作用

注意:

数据库链接是一个命名的对象,说明一个数据库到另一个数据库的路径,通过其可以实现不同数据库之间的通信。

Create database link 数据库链名 connect to useridentified by 口令 usingOracle连接串’;
访问对象要通过 object名@数据库链名。同义词在数据库链中的作用就是提供位置透明性。

参考文章,很详细

分类

public 和 私有(默认)

create public synonym for 模式对象名
create synonym for 模式对象名

注意:

  1. public synonym 需要create public synonym 系统权限。
  2. 创建私有 synonym :
  • 在当前用户下创建,就需要权限 create synonym
  • 在其他模式中创建私有synonym 也需要create any synonym权限。
  1. 私有synonym只有在当前用户可以使用,其他用户使用时必须携带 “模式名.”
  2. 当基础对象的名称位置被修改后,用户需要重新为他建立同义词。
  3. 删除 public synonym 需要权限 drop public synonym
  4. 删除 私有 synonym :
  • 用户可以删除自己的 synonym
  • 删除其他模式下的私有synonym,需要 drop any synonym系统权限
  1. 删除共有的synonym : drop public synonym
  2. 删除同义词后不对其基础对象的数据影响
  3. 公共同义词是和用户的schema无关的,但是公共的意思并不是所有的用户都可以访问它,必须被授权后才能进行;私有同义词是schema的对象
  4. 当同义词的原对象被重新建立时,同义词需要重新编译

ALTER SYNONYM T COMPILE;

查看同义词

利用数据字典视图user_synonyms、all_synonyms查看同义词信息。

desc user_synonyms

desc all_synonyms

名称            空值?      类型            
------------- -------- -------------
SYNONYM_NAME NOT NULL VARCHAR2(128)
TABLE_OWNER VARCHAR2(128)
TABLE_NAME NOT NULL VARCHAR2(128)
DB_LINK VARCHAR2(128)
ORIGIN_CON_ID NUMBER

注: 在Oracle数据库中的大部分数据库对象,如表、视图、物化视图、序列、函数、存储过程、包、同义词等等,数据库管理员都可以根据实际情况为他们定义同义词。

拓展

跨database访问 db_link