-
2020-08-26 15:36:25
简单定义:
和视图类似的一种对表指定数据库指定表的一种映射关系。可以节省大量数据库存储空间,简化数据访问与增强对象访问的安全。
主要分为私有同义词和公有同义词:
私有:
由创建同义词的用户所有,可以通过授权控制其他用户是否有权使用该同义词
公有:
公有的由一个特殊的用户组所有,数据库中所有用户均可使用
私有创建方法:
CREATE OR REPLACE SYNONYM "同义词名字" FOR "参照数据库"."参照表";
公有创建方法:
CREATE OR REPLACE PUBLIC SYNONYM "同义词名字" FOR "参照数据库"."参照表";
同义词的删除:
DROP [ PUBLIC ] SYNONYM [ 同义词所在数据库. ] 同义词名称 [ FORCE ];
DROP SYNONYM 同义词名称; (公有的就加PUBLIC)
注意:当同义词的原对象被删除时,同义词却不会被删除!(这是个小坑)
作用:
(1)节省存储空间,并不占实际空间
(2)实现多数据库间的通信
(3)协同开发中,授予不同用户不同权限
(4)简化sql语句,增删改查可以通过创建的同义词名来调用
更多相关内容 -
Oracle的sql基本语法总结(3)-- Oracle synonym 同义词的创建、查看、删除、作用
2019-12-17 19:50:18一、Oracle synonym 同义词。 语法结构: 案例解析: --基础准备与说明: synonym 同义词创建: 创建同义词补充说明(远程操作)。 二、Oracle synonym 同义词作用。目录
一、Oracle synonym 同义词
Oracle synonym 同义词是数据库当前用户通过给另外一个用户的对象创建一个别名,然后可以通过对别名进行查询和操作,等价于直接操作该数据库对象。Oracle同义词常常是给表、视图、函数、过程、包等制定别名,可以通过CREATE 命令进行创建、ALTER 命令进行修改、DROP 命令执行删除操作。
Oracle synonym 同义词按照访问权限分为私有同义词、公有同义词。
- 私有同义词:私有同义词只能当前用户可以访问,前提:当前用户具有create synonym 权限。
- 公有同义词:公有同义词只能具有DBA角色(如:system)的用户才能进行创建,所有用户都可以访问的。
语法结构:
CREATE [OR REPLACE] [PUBLIC] SYSNONYM [当前用户.]synonym_name FOR [其他用户.]object_name;
语法解析:
- 1.create [or replace] 命令创建,加上 or replace 表示如果存在就替换,慎用。
- 2.[public]:创建的是公有同义词,在实际开发过程中少用,创建公有就代表着任何用户都可以通过自己用户访问操作该对象,一般我们访问其他用户对象时,需要该用户进行授权给我们。
- 3.用户名.object_name:oralce用户对象的权限都是自己用户进行管理的,需要其他用户的某个对象的操作权限,只能通过对象拥有者(用户)进行授权给当前用户。或者当前用户具有系统管理员权限(DBA),即可通过用户名.object_name操作该对象
案例解析:
--基础准备与说明:
①创建一个普通用户jalen01
create user jalen01 identified by "a123456";
②授予连接登陆权限
grant create session to jalen01;
③连接jalen01用户测试,现在表空间里什么都没有,没有给该用户授权添加表空间的权限
④登录scott用户,把scott下的emp表的所有操作权限给jalen01用户
grant all on scott.emp to jalen01;
⑤这时候虽然没有给jalen01表空间权限,但是通过scott用户的授权,jalen01用户可以操作scott.emp表,但其他表依然无法操作(如scott.dept)。
⑥现在用管理员用户给jalen01授予操作表空间和表的权限,再次登陆jalen01看看就有scott.emp表存在
grant unlimited tablespace to jalen01;
grant create table to jalen01; --为了方便测试也给jalen01用户授予操作表的权限
synonym 同义词创建:
① 登陆到scott用户,给表emp和dept分别创建同义词
create synonym emp_copy for scott.emp; --私有同义词
create synonym dept_copy for scott.dept; --私有同义词
create public synonym dept_copy01 for scott.dept; --公有同意词②在scott用户下访问同义词的三个表,均可以查询
select * from emp_copy;
select * from dept_copy;
select * from dept_copy01;③登陆到jalen01用户下,查看这三个同义词表,结果发现普通用户不管是私有的还是共有的都没权访问
select * from emp_copy;
select * from dept_copy;
select * from dept_copy01;④除了同义词,jalen01用户还需有对scott用户下表的访问权限,切换到管理员用户下授权
grant all on emp_copy to jalen01;
grant all on dept_copy to jalen01;
grant all on dept_copy01 to jalen01;⑤再次登陆到jalen01用户下,查看这三个同义词表,这时候发现私有的同义词其他用户依然是不能访问的,但公有的同义词授权后其他用户可以访问。
select * from emp_copy;
select * from dept_copy;
select * from dept_copy01;⑥只要是授予了create synonym 的用户均可以给其他(有访问权)的用户创建synonym,drop synonym同理
删除synonym的语法:DROP
[
PUBLIC
] SYNONYM [用户.]sysnonym_name;
创建同义词补充说明(远程操作)
如果要创建远程数据库上的一张表的同义词,需要先创建一个Database Link(数据库连接)来扩展访问,然后在使用如下语句创建数据库同义词:create synonym table_name for table_name@DB_Link;
必须给在user用户中给当前用户(jalen01)授权: 操作(增删改查)表、synonym的权限
创建同义词SQL语句:create [public] synonym table_name for jalen01.table_name;
二、Oracle synonym 同义词作用
oracle中对用户的管理是使用权限的方式来管理的,当前用户要使用数据库必须要有权限,有权限对表进行的操作时必须在表的前面所有者的名称,如select * from user1.table1,当我们建一个同义词后可以直接使用select * from table1对数据库表进行操作。于是,同义词有如下优点:
- 1)多用户协同开发中,可以屏蔽对象的名字及其持有者。如果没有同义词,当操作其他用户的表时,必须通过user名.object名的形式,采用了Oracle同义词之后就可以隐蔽掉user名,当然这里要注意的是:public同义词只是为数据库对象定义了一个公共的别名,其他用户能否通过这个别名访问这个数据库对象,还要看是否已经为这个用户授权。
- 2) 为用户简化sql语句。上面的一条其实就是一种简化sql的体现,同时如果自己建的表的名字很长,可以为这个表创建一个Oracle同义词来简化sql开发。
- 3)为分布式数据库的远程对象提供位置透明性。
-
Oracle 同义词synonym创建和删除
2018-05-07 11:58:49一.Oracle 数据库对象又称模式对象数据库对象是逻辑结构的集合,最基本的数据库对象是表其他... 同义词共有两种类型: (1) 私有同义词只能在其模式内访问,且不能与当前模式的对象同名 (2) 公有同义词可被所有...一.Oracle 数据库对象又称模式对象
数据库对象是逻辑结构的集合,最基本的数据库对象是表
其他数据库对象包括:表、视图、序列、过程、函数、程序包等等.
二.同义词是数据库对象的一个别名
(1) 简化SQL语句
(2) 隐藏对象的名称和所有者(3) 提供对对象的公共访问
三. 同义词共有两种类型:
(1) 私有同义词只能在其模式内访问,且不能与当前模式的对象同名
(2) 公有同义词可被所有的数据库用户访问
四.同义词的语法:
CREATE [OR REPLACE] [PUBLIC] SYSNONYM [schema.]synonym_name FOR [schema.]object_name
语法解析:
① CREATE [OR REPLACE:]表示在创建同义词时,如果该同义词已经存在,那么就用新创建的同义词代替旧同义词。
② PULBIC:创建公有同义词时使用的关键字,一般情况下不需要创建公有同义词。
③ Oracle中一个用户可以创建表、视图等多种数据库对象,一个用户和该用户下的所有数据库对象的集合称为Schema(中文称为模式或者方案),用户名就是Schema名。一个数据库对象的全称是:用户名.对象名,即schema.object_name。
案例1: 如果一个用户有权限访问其他用户对象时,就可以使用全称来访问。比如:
SQL> conn system/manager@orcl;
SQL> SELECT ENAME,JOB,SAL FROM SCOTT.EMP WHERE SAL>2000; ①
代码解析:
① 管理员用户可以访问任何用户的数据库对象,SYSTEM用户访问SCOTT用户的EMP表时,必须使用SCOTT.EMP。
案例1:创建一个用户gj,该用户拥有CONNECT角色和RESOURCE角色。为SCOTT用户的EMP表创建同义词,并通过同义词访问该EMP表。
SQL> conn system/manager@orcl;
SQL> CREATE USER gj IDENTIFIED BY aaa; ①
SQL> GRANT CONNECT,RESOURCE TO gj;
SQL> GRANT CREATE SYNONYM TO gj;
SQL> CONN gj/aaa@ORCL;
SQL> CREATE SYNONYM mys FOR SCOTT.EMP; ②
SQL> SELECT * FROM mys ; ③
ORA-00942: 表或视图不存在
SQL> CONNECT scott/tiger@ORCL
SQL> GRANT ALL ON EMP TO gj; ④
SQL> CONN gj/aaa@ORCL;
SQL> SELECT ENAME,JOB,SAL FROM mys WHERE SAL>2000; ⑤
代码解析:
① 在管理员用户下创建用户gj,对用户gj授予CONNECT和RESOURCE角色。为了gj能够创建序列,必须授予系统权限:CREATE SYNONYM。
② 在gj用户下,为SCOTT.EMP创建私有同义词mys,同义词mys只能在gj用户下使用。访问mys就是访问SCOTT.EMP对象。
③ 访问mys对象出错:对象不存在。因为gj如果访问mys,就相当于访问SCOTT.EMP对象,那么SCOTT用户必须对gj授予相应的权限。
④ SCOTT用户下,把EMP表的所有权限(增删改查)授予gj。
⑤ 对mys执行查询操作。mys就可以像在本地的表一样使用。
五.删除同义词
DROP [PUBLIC] SYNONYM [schema.]sysnonym_name
语法解析:
① PUBLIC:删除公共同义词。
② 同义词的删除只能被拥有同义词对象的用户或者管理员删除。
③ 此命令只能删除同义词,不能删除同义词下的源对象。
-
oracle 删除同义词
2021-05-01 07:21:13Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系,下面是小编整理的相关内容,希望对你有帮助。在Oracle中对用户的管理是使用权限的方式来管理的,也就是说,如果我们想...Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系,下面是小编整理的相关内容,希望对你有帮助。
在Oracle中对用户的管理是使用权限的方式来管理的,也就是说,如果我们想使用数据库,我们就必须得有权限,但是如果是别人将权限授予了我们,我们也是能对数据库进行操作的,但是我们必须要已授权的表的名称前键入该表所有者的名称,所以这就是比较麻烦的,遇到这种情况,我们该怎么办呢?创建个Oracle同义词吧!这样我们就可以直接使用同义词来使用表了。
1.同义词的概念
Oracle数据库中提供了同义词管理的功能。同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle数据库将它翻译成对应方案对象的名字。
与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义。在Oracle数据库中的大部分数据库对象,如表、视图、序列、存储过程、包等等,数据库管理员都可以根据实际情况为他们定义同义词。
2.Oracle同义词的分类
Oracle同义词有两种类型,分别是公用public同义词与私有同义词
1)公用Oracle同义词:
由一个特殊的用户组Public所拥有。顾名思义,数据库中所有的用户都可以使用公用同义词。公用同义词往往用来标示一些比较普通的数据库对象,这些对象往往大家都需要引用。
2)私有Oracle同义词:
它是跟公用同义词所对应,他是由创建他的用户所有。当然,这个同义词的创建者,可以通过授权控制其他用户是否
有权使用属于自己的私有同义词。
3.创建同义词
1)创建公有Oracle同义词的语法:create [public] synonym 同义词名称 for [username.]objectName; 例如:比如把user1.table1在user2中建一个同义词table1
create synonym table1 for user1.table1;
这样当你在user2中查select * from table1时就相当于查select * from user1.table1;
create public synonym table_name for user.table_name;
其中第一个user_table和第二个user_table可以不一样
2)创建一个远程数据库的对象的同义词
如果要创建一个远程的数据库上的某张表的同义词,需要先创建一个Database Link(数据库连接)来扩展访问,然后在使用如下语句创建数据库同义词:create synonym table_name for table_name@DB_Link;
Oracle同义词在数据库链中的作用
数据库链是一个命名的对象,说明一个数据库到另一个数据库的路径,通过其可以实现不同数据库之间的通信。
create database link 数据库链名 connect to user名 identified by 口令 using '远程数据库的网络服务名';
using后面指定的是链接字符串,也就是远程数据库的网络服务名,这个服务名保存在TNSNAMES.ORA文件中,在该文件中定义了协议、主机名、端口和数据库名。
注意:创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限。这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。
一个公用数据库链接对于数据库中的所有用户都是可用的,而一个私有链接仅对创建它的用户可用,是不可授权的。由一个用户给另外一个用户授权私有数据库链接是不可能的,一个数据库链接要么是公用的,要么是私有的。
创建数据库链接时,还可以使用缺省登录方式,即不指定远程数据库的用户名和密码:
create public database link zrhs_link using ‘zrhs’;
在不指定用户名和口令的情况下,ORACLE使用当前的用户名和口令登录到远程数据库
如果没有配置TNSNAMES.ORA,第二种创建db link的方法:
create database link test connect to scott identified by tiger using'(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.112)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)'
查询创建好的db link:
select * from sys.link$;
一直以为只有private db link可以查到密码,原来public 的dblink 也可以看到密码。
只是需要用sys用户登录查询。
查询dblink的user 密码,用sys 登陆
select * from SYS.link$;
select * from SYS.link$ l, SYS.user$ u
WHERE l.owner# IN (SELECT kzsrorol
FROM x$kzsro) AND l.owner# = u.user#;
如果是private 的dblink,就可以用owner登录,查询 user_db_links
select * from user_db_links;
db link创建好之后,访问对象
访问对象要通过 object名@数据库链名。
4.同义词的删除
drop [public] synonym 同义词名称
要想删除私有同义词就 省略 public 关键字
要想删除公共同义词就要 包括public 关键字
例如:
drop synonym emp; --删除名为emp 的私有同义词
drop public synonym public_emp; --删除名为public_emp的公有同义词
5.查看所有同义词:
select * from dba_synonyms
创建好同义词之后,你可以对它进行DML(,update,)操作,当然select语句时肯定支持的
6.Oracle同义词的作用
同义词拥有如下好处:
节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;
扩展的数据库的使用范围,能够在不同的数据库用户之间实现无缝交互;
同义词可以创建在不同一个数据库服务器上,通过网络实现连接
1) 多用户协同开发中,可以屏蔽对象的名字及其持有者。如果没有同义词,当操作其他用户的表时,必须通过user名.object名的形式,采用了Oracle同义词之后就可以隐蔽掉user名,当然这里要注意的是:public同义词只是为数据库对象定义了一个公共的别名,其他用户能否通过这个别名访问这个数据库对象,还要看是否已经为这个用户授权。
2) 为用户简化sql语句。上面的一条其实就是一种简化sql的体现,同时如果自己建的表的名字很长,可以为这个表创建一个Oracle同义词来简化sql开发。
3)为远程数据库的对象连接提供位置透明性。
[oracle 删除同义词]
-
删除同义词,百科如何删除同义词项
2021-05-08 18:57:46百科如何删除同义词项今年4月、5月底,百抄科对于词条的收录标准更2113高5261了,商业类词条几乎无一4102通过,理由很简1653答:不是公众、不具有重大社会影响力、人气不高的,都不具备收录标准. 正当途径都是无法... -
oracle 同义词
2021-05-06 09:37:49今天又是被业务催命似的催着改bug,咋一看很简单,ora-00942:表或视图不存在。要么是表名被改了,要么就是sql语句写错...然后请教了同事,原来不同的用户之间可以通过同义词来互相访问各自的表,但是仅仅了解了这个... -
批量替换采集文章同义词ACCESS版 v1.0
2019-10-18 01:06:47如果想自行修改替换的同义词,请自行打开keyword.mdb,照着格式来添加,key1字段是更换前的词,key2是更换后的词。利用本程序,必要过细以下几点:1、本程序在XP+IIS环境下,由我们团队自行开发,不存在版权问题,请... -
数据库中的同义词synonym
2021-01-18 18:58:27这种情况下 同义词 就有用武之地了, 其实 同义词 也相当于一个视图 可以这个么理解,可以进行对表的 增删改查,(省资源,数据同步); 四、注意事项 0》接上面的举例子:新建的用户 “BB” 要在不复制资源的请款... -
【oracle删除同义词】作文写作问答 - 归教作文网
2021-05-06 06:26:10oracle 中怎么创建同义词?我们需要准备的材料分别是:电脑、oracle。1、首先打开oracle,如果想要实现表空间的方法,则输入以下代码:2、如果想要实现用户的方法,则输入以下代码:3、如果想要实现表的方法,则输入... -
Oracle 实体用户授权及同步同义词
2022-02-13 09:19:09Oracle 实体用户授权及同步同义词 -
Oracle 同义词(Synonym)
2021-12-06 16:58:51私有同义词:拥有 CREATE SYNONYM 权限的用户(包括非管理员用户)即可创建私有同义词,创建的私有同义词只能由当前用户使用。 公有同义词:系统管理员可以创建公有同义词,公有同义词可以被所有用户访问。 创建同义... -
批量替换采集文章同义词ACCESS版 v1.0.rar
2019-07-16 10:40:32如果想自行修改替换的同义词,请自行打开keyword.mdb,照着格式来添加,key1字段是更换前的词,key2是更换后的词。 利用本程序,必要过细以下几点: 1、本程序在XP IIS环境下,由我们团队自行开发,不存在版权问题... -
Oracle授权及创建同义词
2018-08-23 16:30:48今天需要授权和创建同义词,特意记录学习: 例如A账号创建了表tb_users, B账号想要可以使用tb_users表,此时需要进行授权和创建同义词操作 授权操作由tb_users的owner授权(即A账号) A账号登录Oracle后,执行... -
文本数据增强(EDA、同义词替换-新增-交换-删除-生成同义句)
2019-08-22 20:49:46在中文数据少的情况下,可以尝试做数据增强,进行 同义词替换-新增-交换-删除-生成同义句,刚好用到,效果还可以,转载一篇使用博客 原文链接: https://blog.csdn.net/rensihui/article/details/89605517 github... -
Oracle——数据处理(增删改查),创建表与管理表,视图,索引,同义词
2021-04-30 10:13:40sequnece,index,synonym(同义词) 3、DCL(Data Control Language 数据控制语言): grant(授权) revoke(撤销权限) DML 插入数据 insert into emp(empno,ename,sal,deptno) values(1001,'Tom',3000,10); -- 或 采用地址... -
在一个数据库中模拟两个数据库(每个数据库中用户都建立表的同义词)
2021-05-02 10:11:17OS:AIX5.3Oracle:Oracle10.2.0.1.0标题:在一个数据库中模拟两个...原来的数据库中存在一个lhomswas用户,该用户所拥有的对象增删改查权限都赋予给lhdt用户,该用户还创建了与表名一样的公共同义词(public syno... -
Oracle数据库之同义词(SYNONYM)使用(转)
2018-12-06 17:28:34最近在公司听到同义词,不是很懂,甚是尴尬,决定看了一看 从网上看了看资料 同义词是指数据库对象(表、视图、序列、存储过程等数据库对象)用另一个名字来引用。比如: 建立一个同义词可以排除一个对象名字的... -
(同义词)使用户不能修改表结构只能增删改查数据
2019-12-17 12:03:25同义词—(操作同义词数据同步原表) 1).先在A用户创建表 CREATE TABLE EMP3 AS SELECT * from EMP; 2).把增删该查赋权给B用户 GRANT SELECT ,UPDATE,DELETE ,INSERT TO CESHI; 3).给B用户赋权(创建同义词权限)... -
Oracle同义词以及同义词循环链错误。
2017-03-14 15:13:35同义词: 就是别名的意思。与视图类似,是一种映射关系。 是表、索引、视图的对象的别名。 创建: create public synonym table_name for user.table_name; 好处:节省数据空间,不同用户操作同一种表无差别。... -
Oracle 快速入门 同义词&序列&视图&索引
2022-04-24 22:24:36目录 一、数据库对象 ...二、同义词synonym 三、序列 四、视图 五、索引 六、综合代码 1.同义词部分: 2.序列: 3.视图和索引 一、数据库对象 1.数据库对象 2.同义词 3.序列 4.视图 5.索引 ... -
oracle数据库: ORA-01775: 同义词的循环链问题
2020-06-30 11:40:16原因:因为存在同义词,但同义词没有相应的对象(对应的表,等对象 被删了)。 删除数据库对象,但是忘记删除同义词。 删除一个用户,但忘记删除此用户中相关的同名。 创建同名时,同名对应的数据库... -
Oracle数据库中的序列、索引和同义词,详细笔记。
2022-01-24 23:44:50文章目录数据库中的序列、索引和同义词1. 序列1.1 什么是序列1.2 创建序列1.2.1 通过DDL语句创建序列1.2.2 使用工具创建序列1.3 使用序列1.3.1 查询序列1.3.2 使用序列1.4 修改序列1.4.1 修改序列1.4.2 修改序列的... -
SqlServer建立网络链接服务器、同义词、跨库数据访问
2018-11-02 15:31:15一、背景 通常我们在进行开发时,多个项目间数据库服务器分离,但是各项目间...我们可以在其中一个数据库中添加其他服务器数据库的链接,然后在数据库同义词中建立一个同义词(同义词可以是表、视图等等),然后对... -
Oracle 同义词删除不掉
2022-05-12 13:47:55oralce数据库同义词删除就卡住 -
Oracle从零开始16——表的管理06——序列和同义词
2021-05-07 08:15:097.序列(重点) 在很多数据库系统中都寻在一个... 范例:将scott.emp定义emp的同义词 这样就可以在非scott用户的情况下直接查询emp表了 删除同义词: DROP SYNONYM 同义词名称; 注意:此种特性只适用于Oracle数据库。 -
oracle同义词
2021-01-03 14:46:04Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系,通过同义词,我们可以直接增删改查其他属主的表,PUBLIC 的同义词就基本够用 1、添加同义词 CREATE PUBLIC SYNONYM... -
Oracle 数据库中 同义词的意思
2019-04-01 13:22:01其实 同义词 也相当于一个视图 可以这个么理解,可以进行对表的 增删改查,(省资源,数据同步); 四、注意事项 0》接上面的举例子:新建的用户 “BB” 要在不复制资源的请款下建立一个同义词 要可以对 “AA... -
oracle中的授权和创建同义词
2017-07-17 22:57:00grant select,insert,delete,update on ships_support.... --将对ships_support用户下的sys_user表下的增删改查的权限付给eciq_rule; create synonym sys_user for ships_support.sys_user; 转载于:https://www....