一、介绍

Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系。它可以节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;它扩展了数据库的使用范围,能够在不同的数据库用户之间实现无缝交互。

很多时候,会有多个oracle账号访问一个账号下的表,比如:USER_A用户下面有很多表,相关的sql语句都是USER_A.Tablename等等等,这时候需要用USER_B用户去访问USER_A的表,但是sql语句还要保持USER_A.Tablename,就需要用到同义词了

同义词分类:

Oracle同义词有两种类型,分别是Oracle公用同义词与Oracle私有同义词。普通用户创建的同义词一般都是私有同义词,公有同义词一般由DBA创建,普通用户如果希望创建同义词,则需要CREATE PUBLIC SYNONYM这个系统权限。

Oracle公用同义词:由一个特殊的用户组Public所拥有。顾名思义,数据库中所有的用户都可以使用公用同义词。公用同义词往往用来标示一些比较普通的数据库对象,这些对象往往大家都需要引用。

Oracle私有同义词:它是跟公用同义词所对应,他是由创建他的用户所有。当然,这个同义词的创建者,可以通过授权控制其他用户是否有权使用属于自己的私有同义词。

二、创建同义词

语法:

CREATE [OR REPLACE] [PUBLIC] SYNONYM [ schema.] 同义词名称 FOR [ schema.] object [ @dblink ];

专有(私有)同义词

CREATE SYNONYM SYSN_TEST FOR TEST;

公共同义词

CREATE PUBLIC SYNONYM PUBLIC_TEST FOR TEST;

2.1首先需要sys用户授权USER_B创建同义词权限

其中USER_B是需要创建同义词的用户

GRANT CREATE SYNONYM TO USER_B;

这个时候还需要一个权限就是USER_B用户select USER_A用户table的权限,这个时候是在USER_A用户下赋值的

grant select on tableA to user_temp;

2.2创建同义词

create synonym USER_B.Tablename for USER_A.Tablename;

2.3测试同义词

使用USER_B用户oracle,有输出结果代表可以在USER_B用户下以USER_B的schema查看USER_A的表

select count(*) from USER_B.Tablename;

三、批量创建同义词

很多时候,当前环境下的表有几百张甚至几千张,很多人说可以select * from dba_tables where owner=‘UPCENTER‘ 把表名查出来,用notpad拼成命令,批量执行,这里是行不通的,因为每条命令的行尾都不一样(表名不同)

这时候可以先用notpad软件把USER_B用户select USER_A用户table的权限批量执行,然后再执行下面的命令,把输出结果执行以下即可:

select 'create synonym USER_B.'||table_name||' for upcenter.'||table_name||';' from dba_tables where owner='USER_A'

四、查看同义词和删除同义词

4.1查看用户下的同义词

SELECT * FROM DBA_SYNONYMS where OWNER = 'UPAPP';

4.2删除同义词

DROP SYNONYM SYSN_NAME;

原文:https://www.cnblogs.com/williamzheng/p/11733594.html

oracle批量建同义词,Oracle批量创建同义词相关推荐

  1. oracle 授权同义词权限不足,创建同义词ora-01031权限不足

    我需要帮助了解用户需要何种授权/权限才能在指向另一个(不同的)模式对象时创建SYNONYM.创建同义词ora-01031权限不足 当我尝试下面的内容时,我得到的ora-01031权限不够,所以显然我失 ...

  2. oracle mysql 同义词_Oracle数据库创建同义词(synonym)详细讲解

    1.1数据库创建同义词(synonym) Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系.它可以节省大量的数据库空间,对不同用户的操作同一张表没 ...

  3. oracle如何建pdb,Oracle 12c 命令行创建PDB

    1.登陆cdb创建pdb sqlplus / as sysdba create pluggable database pdb4 admin user pdb4 identified by pdb4 f ...

  4. oracle sqlplus建用户,Oracle用SQL Plus创建数据库表空间和用户

    1. 在电脑左下角点击"开始",然后输入"sql plus",选择运行sql plus程序(登录身份:指登录时的Role指定,oracle11g中分SYSDBA ...

  5. oracle如何建pdb,教你创建PDB的三种方法

    12C官方文档提到6种创建PDB的技术,如下:Create a PDB by using the seed Create a PDB by cloning an existing PDB or non ...

  6. oracle存储过程建分区表,oracle存储过程创建表分区实例

    用存储过程创建数据表: 创建时注意必须添加authid current_user,如果创建的表已存在,存储过程继续执行,但如不不加此关键语句,存储过程将出现异常, 这个语句相当于赋权限. 例1 创建语 ...

  7. Oracle数据库建表 Oracle数据库的统一命名与编码规范

    本文转载自:http://chinaxxren.iteye.com/blog/889590 如有疑问请咨询原博主,谢谢!! 写在前边: 规范是一种习惯,在Oracle数据库中笔者认为表中的字段命名规范 ...

  8. oracle怎样建表,oracle怎样建表?_数据库

    oracle建表的要领:1.必需以字母开头:2.不必SQL里的保留字, 肯定要用时可用双引号把字符串括起来:3.用和实体或属性相干的英文标记长度有肯定的限定. oracle建表的要领: 1.建立表格语 ...

  9. oracle表关联词语,Oracle的同义词(synonyms)详解

    Oracle的同义词(synonyms)详解 从字面上理解就是别名的意思,和视图的功能类似.就是一种映射关系. 同义词语法:CREATE [PUBLIC] SYNONYM synonym FOR ob ...

  10. oracle 建库,Oracle手工建库步骤

    Oracle手工建库步骤,创建数据库所需的目录,包括数据文件存放目录,日志存放目录,归档存放目录等,开始执行create database 命 Oracle手工建库步骤: 1.创建数据库所需的目录,包 ...

最新文章

  1. 没有安装python如何使用anaconda运行python命令行
  2. Exchange系列—管理邮件队列
  3. Select()系统调用及文件描述符集fd_set的应用
  4. selenium python (八)定位frame中的对象
  5. unity 给图片边缘_Unity Shader 屏幕后效果——边缘检测
  6. 修改telnet提示并非_iPhone修改微信提示音,iOS12可用,无需越狱详细教程
  7. python和java的区别-一张图秒懂Java和Python的区别,你知道吗?
  8. python中的字符数字之间的转换函数
  9. elasticsearch 请求全部数据
  10. CNBlog客户端--第一阶段记录
  11. html 数据库 留言板,使用html5本地数据库留言本代码分享
  12. 获取三角形外接圆的圆心坐标、半径
  13. 面向开发人员的 27种Vuejs开发工具
  14. 【浏览器】谷歌浏览器自带翻译失效
  15. AutoCAD块属性提取
  16. 幽暗镰刀:隐私安全下的收割者们
  17. svg学习之svg动画
  18. 计算机主机突然断电有什么影响吗,断电对电脑的伤害大吗?有什么损伤?
  19. 我只好去找了一根绳子系着它的脖子
  20. PHOTOSHOP基本概念解释【转】

热门文章

  1. 生命计算器 --算算已经活了多少天了
  2. 反病毒引擎设计之虚拟机查毒篇
  3. UE4/UE5 虚幻引擎,动画篇(四)骨骼重定向,重定向动画资产
  4. 百度地图API之GPS坐标转换
  5. 图像预处理(二值化)
  6. python ddt 实现数据驱动
  7. Linux下用Samba作PDC配置方法
  8. 【转】编写游戏人物、剧情、对话的8大经验总结
  9. 因果推断系列18-断点回归设计(Regression Discontinuity Design,RDD)
  10. Android自适应大小和屏幕