[oracle] Oracle 同义词

   目的

使用CREATE SYNONYM语句创建一个同义词,这是一个表,视图,序列,过程,存储函数,包的替代名称,物化视图,Java类模式对象,用户定义的对象类型,或其他同义词。 

    别名提供了数据的独立性和位置透明性。
同义词允许应用程序无需修改功能,无论哪个用户拥有的表或视图,无论哪个数据库保存的表或视图。
但是,同义词是不能代替对数据库对象的权限。
适当特权必须被授予给用户,然后用户可以使用同义词。 
您可以参考同义词以下DML语句:SELECT,INSERT,UPDATE,DELETE,闪回表,说明计划和LOCK TABLE。 
您可以参考同义词以下DDL语句:AUDIT,NOAUDIT,GRANT,REVOKE和评论。

前提条件 
要创建一个私有同义词在自己的架构,您必须拥有CREATE SYNONYM系统权限。 
要创建一个私有同义词另一个用户的模式,你必须拥有CREATE ANY同义系统权限。 
要创建一个公共同义词,您必须拥有CREATE PUBLIC SYNONYM系统权限。

语法

create_synonym(创建同义词):

Description of create_synonym.gif follows

语义

  OR REPLACE

指定OR REPLACE重新创建的同义词,如果它已经存在。
此子句用于更改现有同义词的定义,而先放弃它。 
在更换同义词限制 
你不能使用OR REPLACE子句的一种类型的同义词有任何从属表或相关的有效的用户定义的对象类型。

PUBLIC

指定PUBLIC创造一个公共同义词。
公共同义词是提供给所有用户。
然而,每个用户必须以使用同义词有底层对象上相应的权限。 
当解析为一个对象引用,Oracle数据库使用公共同义词仅当对象不是由一个模式开头,而不是跟着一个数据库链接。 
如果忽略该子句,那么同义词是私有并且只能在它的架构。
私有同义词名称必须在其模式是独一无二的。

 公共同义词的注意事项 
下面的说明适用于公共同义词: 
如果你创建一个公共同义词,它随后有相关表或相关的有效的用户定义的对象类型,那么你就不能创建同名的另一个数据库对象在相同的模式依赖对象的代名词。 
请注意,不要创建一个公共同义词使用相同的名称与现有架构。如果这样做,那么使用该名称的所有PL / SQL单元将失效。

概要

指定要包含同义词的模式。如果省略模式,那么Oracle数据库中创建您自己的模式的代名词。你不能为同义词指定是否已指定公共架构。
synonym

指定同义词的名称创建。 
注意: 
别名超过30个字节长,可以创建和删除。但是,除非它们代表了Java的名字,他们将不会在任何其他SQL命令的工作。名超过30个字节的部分将被转换成存储在数据字典中一个不起眼的短字符串。

FOR子句

指定为其创建同义词的对象。
该架构对象要为其创建同义词可以是以下类型: 
表或对象表 
视图或对象视图 
次序 
存储过程,函数或包 
物化视图 
Java类模式对象 
用户定义的对象类型 
代名词 
该架构对象不需要当前存在,则需要没有权限访问该对象。

在FOR子句限制 
架构对象不能被包含在包中。

架构 
指明该对象所在的架构。
如果你不符合条件的对象与模式,则数据库假定模式对象是在你自己的模式。 
如果要创建一个同义词在远程数据库的过程或​​函数,则必须指定在此CREATE语句模式。
或者,你可以创建对象所在的数据库在本地的公共同义词。
不过,数据库链接必须被包含在所有后续调用过程或函数。 
DBLINK 
您可以指定一个完整或部分数据库链接到远程数据库所在的对象位于创建的同义词架构对象。
如果指定DBLINK,并省略架构,那么同义词是指由数据库链接指定的模式的对象。 
Oracle建议您指定包含在远程数据库中的对象的架构。 
如果省略DBLINK,那么Oracle数据库假定目标位于本地数据库。 
在数据库链接的限制 
不能指定为DBLINK一个Java类代名词。

示例:

在aisr用户下创建私有同义词,查询可以查询到结果。

--在aisr用户下 创建私有同义词
create  synonym SSEC_STAFF FOR SEC.SEC_STAFF;
--查询
SELECT * FROM SSEC_STAFF;

 

在base用户下登录,查不到结果:

 

翻译自:

官方文档(

CREATE SYNONYM

 

posted @ 2015-08-31 19:49  snow__wolf  阅读(435)  评论(0)    收藏  举报