精华内容
下载资源
问答
  • Oracle 同义词的简单介绍、创建及删除方法
    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 synonym 同义词。 语法结构: 案例解析: --基础准备与说明: synonym 同义词创建: 创建同义词补充说明(远程操作)。 二、Oracle synonym 同义词作用。

    目录

    一、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:13
    Oracle的同义词(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 删除同义词]

    展开全文
  • 百科如何删除同义词项今年4月、5月底,百抄科对于词条的收录标准更2113高5261了,商业类词条几乎无一4102通过,理由很简1653答:不是公众、不具有重大社会影响力、人气不高的,都不具备收录标准. 正当途径都是无法...
  • oracle 同义词

    2021-05-06 09:37:49
    今天又是被业务催命似的催着改bug,咋一看很简单,ora-00942:表或视图不存在。要么是表名被改了,要么就是sql语句写错...然后请教了同事,原来不同的用户之间可以通过同义词来互相访问各自的表,但是仅仅了解了这个...
  • 如果想自行修改替换的同义词,请自行打开keyword.mdb,照着格式来添加,key1字段是更换前的词,key2是更换后的词。利用本程序,必要过细以下几点:1、本程序在XP+IIS环境下,由我们团队自行开发,不存在版权问题,请...
  • 数据库中的同义词synonym

    千次阅读 2021-01-18 18:58:27
    这种情况下 同义词 就有用武之地了, 其实 同义词 也相当于一个视图 可以这个么理解,可以进行对表的 增改查,(省资源,数据同步); 四、注意事项 0》接上面的举例子:新建的用户 “BB” 要在不复制资源的请款...
  • oracle 中怎么创建同义词?我们需要准备的材料分别是:电脑、oracle。1、首先打开oracle,如果想要实现表空间的方法,则输入以下代码:2、如果想要实现用户的方法,则输入以下代码:3、如果想要实现表的方法,则输入...
  • Oracle 实体用户授权及同步同义词
  • Oracle 同义词(Synonym)

    2021-12-06 16:58:51
    私有同义词:拥有 CREATE SYNONYM 权限的用户(包括非管理员用户)即可创建私有同义词,创建的私有同义词只能由当前用户使用。 公有同义词:系统管理员可以创建公有同义词,公有同义词可以被所有用户访问。 创建同义...
  • 如果想自行修改替换的同义词,请自行打开keyword.mdb,照着格式来添加,key1字段是更换前的词,key2是更换后的词。 利用本程序,必要过细以下几点: 1、本程序在XP IIS环境下,由我们团队自行开发,不存在版权问题...
  • 今天需要授权和创建同义词,特意记录学习: 例如A账号创建了表tb_users, B账号想要可以使用tb_users表,此时需要进行授权和创建同义词操作 授权操作由tb_users的owner授权(即A账号) A账号登录Oracle后,执行...
  • 在中文数据少的情况下,可以尝试做数据增强,进行 同义词替换-新增-交换-删除-生成同义句,刚好用到,效果还可以,转载一篇使用博客 原文链接: https://blog.csdn.net/rensihui/article/details/89605517 github...
  • sequnece,index,synonym(同义词) 3、DCL(Data Control Language 数据控制语言): grant(授权) revoke(撤销权限) DML 插入数据 insert into emp(empno,ename,sal,deptno) values(1001,'Tom',3000,10); -- 或 采用地址...
  • OS:AIX5.3Oracle:Oracle10.2.0.1.0标题:在一个数据库中模拟两个...原来的数据库中存在一个lhomswas用户,该用户所拥有的对象增改查权限都赋予给lhdt用户,该用户还创建了与表名一样的公共同义词(public syno...
  • 最近在公司听到同义词,不是很懂,甚是尴尬,决定看了一看 从网上看了看资料 同义词是指数据库对象(表、视图、序列、存储过程等数据库对象)用另一个名字来引用。比如: 建立一个同义词可以排除一个对象名字的...
  • 同义词—(操作同义词数据同步原表) 1).先在A用户创建表 CREATE TABLE EMP3 AS SELECT * from EMP; 2).把增该查赋权给B用户 GRANT SELECT ,UPDATE,DELETE ,INSERT TO CESHI; 3).给B用户赋权(创建同义词权限)...
  • 同义词: 就是别名的意思。与视图类似,是一种映射关系。 是表、索引、视图的对象的别名。 创建: create public synonym table_name for user.table_name; 好处:节省数据空间,不同用户操作同一种表无差别。...
  • 目录 一、数据库对象 ...二、同义词synonym 三、序列 四、视图 五、索引 六、综合代码 1.同义词部分: 2.序列: 3.视图和索引 一、数据库对象 1.数据库对象 2.同义词 3.序列 4.视图 5.索引 ...
  • 原因:因为存在同义词,但同义词没有相应的对象(对应的表,等对象 被了)。 删除数据库对象,但是忘记删除同义词。 删除一个用户,但忘记删除此用户中相关的同名。 创建同名时,同名对应的数据库...
  • 文章目录数据库中的序列、索引和同义词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 修改序列的...
  • 一、背景 通常我们在进行开发时,多个项目间数据库服务器分离,但是各项目间...我们可以在其中一个数据库中添加其他服务器数据库的链接,然后在数据库同义词中建立一个同义词同义词可以是表、视图等等),然后对...
  • Oracle 同义词删除不掉

    2022-05-12 13:47:55
    oralce数据库同义词删除就卡住
  • 7.序列(重点) 在很多数据库系统中都寻在一个... 范例:将scott.emp定义emp的同义词 这样就可以在非scott用户的情况下直接查询emp表了 删除同义词: DROP SYNONYM 同义词名称; 注意:此种特性只适用于Oracle数据库。
  • oracle同义词

    2021-01-03 14:46:04
    Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系,通过同义词,我们可以直接增改查其他属主的表,PUBLIC 的同义词就基本够用 1、添加同义词 CREATE PUBLIC SYNONYM...
  •  其实 同义词 也相当于一个视图 可以这个么理解,可以进行对表的 增改查,(省资源,数据同步); 四、注意事项  0》接上面的举例子:新建的用户 “BB” 要在不复制资源的请款下建立一个同义词 要可以对 “AA...
  • grant select,insert,delete,update on ships_support.... --将对ships_support用户下的sys_user表下的增改查的权限付给eciq_rule; create synonym sys_user for ships_support.sys_user; 转载于:https://www....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,945
精华内容 2,778
关键字:

删的同义词