ORACLE SYNONYM详解
以下内容整理自Oracle 官方文档
一 概念
A synonym is an alias for any table, view,materialized view, sequence, procedure, function, package, type, Java classschema object, user-defined object type, or another synonym. Because a synonymis simply an alias, it requires no storage other than its definition in thedata dictionary.
Oracle中同义词是任何表、视图、物化视图、序列、存储过程、函数、包、类型、JAVA类对象、用户定义类型,或是其他的同义词的别名。由于其只是一个别名,所以除了在
数据字典中的定义不占任何空间。
Synonyms are often used for security andconvenience. For example, they can do the following:
同义词常用于安全和方便。例如,它们可以做:
1. Mask the name and owner of anobject 伪装对象名称和其所有者。
2. Provide location transparency for remoteobjects of a distributed database 为分布式数据库远程对象提供位置透明性
3. Simplify SQL statements for databaseusers 简化数据库用户访问对象SQL语句
4. Enable restricted access similar tospecialized views when exercising fine-grained access control 当行使精细化访问控制时提供类似指定视图的访问限制
You can create both public and privatesynonyms. A public synonym is owned by the special user group named PUBLIC andevery user in a database can access it. A private synonym is in the schema of aspecific user who has control over its availability to others.
你可以创建public和private同义词。public同义词属于PUBLIC组,每个用户都可以访问。private同义词属于对象所有者,只有其显式授权后其他用户才可访问。
Synonyms are very useful in bothdistributed and nondistributed database environments because they hide theidentity of the underlying object, including its location in a distributedsystem. This is advantageous because if the underlying object must be renamedor moved, then only the synonym needs to be redefined. Applications based onthe synonym continue to function without modification.
同义词的优势体现在如果其底层的对象重命名或者转移,那么只需要重定义该同义词。基于该同义词的应用则无需任何修改。
Synonyms can also simplify SQL statementsfor users in a distributed database system. The following example shows how andwhy public synonyms are often created by a database administrator to hide theidentity of a base table and reduce the complexity of SQL statements. Assume thefollowing:
下面举例说明同义词是如何简化用户访问的:
A table called SALES_DATA is in the schemaowned by the user JWARD.
JWARD用户下有一张表 SALES_DATA
The SELECT privilege for the SALES_DATAtable is granted to PUBLIC.
PUBLIC组有SALES_DATA的查询权限
At this point, you have to query the tableSALES_DATA with a SQL statement similar to the following:
此时,你如果查询SALES_DATA表则需以下语句:
SELECT * FROM jward.sales_data;
Notice how you must include both the schemathat contains the table along with the table name to perform the query.
Assume that the database administratorcreates a public synonym with the following SQL statement:
假如数据库管理员创建了一个public 同义词:
CREATE PUBLIC SYNONYM sales FORjward.sales_data;
After the public synonym is created, youcan query the table SALES_DATA with a simple SQL statement:
你的语句将简化为:
SELECT * FROM sales;
Notice that the public synonym SALES hidesthe name of the table SALES_DATA and the name of the schema that contains thetable.
二、CREATE SYNONYM 创建同义词
1、语法结构:
2、前提条件:
To create a private synonym in your own schema, you must have the CREATE SYNONYM system privilege.
在自己模式下创建私有同义词需要CREATE SYNONYM权限。
To create a private synonym in another user's schema, you must have the CREATE ANY SYNONYM system privilege.
在其他用户模式下创建私有同义词需要CREATE ANY SYNONYM权限。
To create a PUBLIC synonym, you must have the CREATE PUBLIC SYNONYM system privilege.
创建公有同义词,需要有CREATE PUBLIC SYNONYM权限。
3、示例
sqlplus / as sysdba
CREATE SYNONYM offices
FOR hr.locations;
GRANT SELECT ON hr.locations to SCOTT;
CREATE PUBLIC DATABASE LINK l_hr
CONNECT TO hr IDENTIFIED BY hr
USING 'orcl';
CREATE PUBLIC SYNONYM emp_table
FORHR.employees@l_hr;
GRANT SELECT ON HR.employees to SCOTT;
conn scott/tiger@orcl
SELECT count(*) from sys.offices;
select count(*) from emp_table;
三、DROP SYNONYM 删除同义词
1、语法结构:
2、前提条件:
To drop a private synonym, either the synonym must be in your own schema or you must have the DROP ANY SYNONYM system privilege.
删除私有同义词需要有DROP ANY SYNONYM权限。
To drop a PUBLIC synonym, you must have the DROP PUBLIC SYNONYM system privilege.
删除公有同义词需要有DROP PUBLIC SYNONYM权限。
3、示例
3.1删除public同义词,必须加public关键字:
SYS@orcl>DROP SYNONYM emp_table;
DROPSYNONYM emp_table
*
第 1 行出现错误:
ORA-01434:要删除的专用同义词不存在
SYS@orcl>DROP PUBLIC SYNONYM emp_table;
同义词已删除。
3.2删除private同义词:
DROP SYNONYM offices;
四、Q&A 问答
Q: 可以对同义词做INSERT/UPDATE/DELETE操作吗?
A:
SCOTT@orcl> UPDATE sys.offices t SETt.city='Shanghai' WHERE location_id=1000;
UPDATE sys.offices t SET t.city='Shanghai'WHERE location_id=1000
*
第 1 行出现错误:
ORA-01031: 权限不足
SYS@orcl> grant update on hr.locationsto scott;
授权成功。
SCOTT@orcl> /
已更新 1 行。
SO: 用户对同义词的操作权限都是基于对其底层对象有哪些操作权限。
-------------------------------
Dylan Presents.
ORACLE SYNONYM详解的更多相关文章
- 创建Oracle synonym 详解
--创建使用同义词 --同义词就是给表.视图等对象取得别名,用于简化对其的访问 --分为2种: --私有同义词:用户自己创建自己使用的 --公共同义词:dba创建,给其它用户使用的 --为dept_s ...
- Oracle 同义词详解(synonym)
Oracle 同义词详解(synonym) 一.Oracle同义词概念 Oracle 数据库中提供了同义词管理的功能.同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性.在使 ...
- Oracle数据字典详解
学习笔记:oracle数据字典详解 --- 本文为TTT学习笔记,首先介绍数据字典及查看方法,然后分类总结各类数据字典的表和视图.然后列出一些附例. 数据字典系统表,保存在system表空间中. ...
- Oracle内存详解之 Library cache 库缓冲
Oracle内存详解之 Library cache 库缓冲 2017年11月09日 11:38:39 阅读数:410更多 个人分类: 体系结构 Library cache是Shared pool的一部 ...
- oracle 数据类型详解---日期型(转载)
oracle 数据类型详解---日期型 oracle数据类型看起来非常简单,但用起来会发现有许多知识点,本文是我对ORACLE日期数据类型的一些整理,都是开发入门资料,与大家分享: 注:由于INTER ...
- oracle 序列 详解
序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. l 自动提供唯一的数值 l 共享对象 l 主要用于提供主键值 l 将序列值装入内存可以提高访问效率 创建序列: 1. 要有创建 ...
- oracle checkpoint 详解
Oracle checkpoint详解 topcheckpoint扫盲 top什么是checkpoint 在数据库系统中,写日志和写数据文件是数据库中IO消耗最大的两种操作,在这两种操作中写数据文件属 ...
- oracle rowid 详解
oracle rowid详解 今天是2013-09-15,存储在数据库中的每一行数据都有一个地址,oracle使用rowid数据类型在存储地址.rowid有如下类别: 1)physical rowid ...
- Oracle索引详解
Oracle索引详解(二) --索引分类 Oracle 提供了大量索引选项.知道在给定条件下使用哪个选项对于一个程序的性能来说非常重要.一个错误的选择可能会引发死锁,并导致数据库性能急剧下降或进程 ...
随机推荐
- 利用apache伪静态技术防止盗链
(在我们制作网站的过程中,可能会遇到这样的问题,就是其他的网站直接盗用了我们网站的图片或css或js,这样可能会大大增加我们自己网站的负载. 所以,我们应该考虑一下怎样防止这样的事情发生.) 下面我们 ...
- RabbitMQ的安装与基本使用
运行环境:https://oneinstack.com/install/ 在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提 ...
- win7使用问题解决
1. VM和主机互相PING不通 问题:桥接模式,VM可以ping 通外网,可以ping 通局域网其它机子,就是ping 不通本地主机 解决:将 vm网卡和本地网连接网卡都共享出来
- Vmware 安装centos7与网络配置
一.下载linux镜像 下载地址:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso 二.创 ...
- OSI7层模型(TCP4层)
OSI7层模型(TCP4层) 第一层:物理层 在局部局域网络上传送帧,它负责管理电脑通信设备和网络媒体之间的互通.包括了针脚.电压.线缆规范.集线器.中继器.网卡.主机适配器等. 第二层:数据链路层 ...
- python,pycharm安装
下载python地址:https://www.python.org/downloads/release/python-371/ 安装python ***python安装目录下的scripts加入环境变 ...
- Failed to set session cookie. Maybe you are using HTTP instead of HTTPS to access phpMyAdmin.
原因:使用负载均衡的时候,第一次请求phpMyAdmin主页的时候web01进行处理,页面返回的cookie存放在web01上.填写用户名密码提交之后,是web02进行处理的,此时给页面的cookie ...
- python --- 22 初始模块 random time collections functools
一 .初始模块 1.从⼩到⼤的顺序: ⼀条代码 < 语句块 < 代码块(函数, 类) < 模块 2.引入模块的方式 ① import 模块 ② from 模块 im ...
- 一些常用的mysql语句实例-以后照写2
specification: 规范, 规格, 产品规范, 产品规格, 技术规范, 产品说明书. 如: create_specification, 等等 创建数据库时, 显式地指明, 字符集: crea ...
- 永久修改VS include目录
原文:https://blog.csdn.net/sysprogram/article/details/49214727 VS2008在选项里可以设置全局的Include目录和Lib目录, 但是VS2 ...