今天又是被业务催命似的催着改bug,咋一看很简单,ora-00942:表或视图不存在。要么是表名被改了,要么就是sql语句写错了呗。但抱着对同事的专业精神的信(shi)任(wang),我还是去问了一下同事,老铁,帮我看一下这个表是哪张表呗,然后坐等他跟我承认他改了表。可是结果,那张表存在的!只不过属于另一个用户。然后请教了同事,原来不同的用户之间可以通过同义词来互相访问各自的表,但是仅仅了解了这个还不够,bug依然存在。接下来需要更多的步骤来查明,解决这个问题。

问题一:什么是同义词,作用又是什么?

从网上抄来的定义:同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle数据库将它翻译成对应方案对象的名字。

说白了,就是别名的意思,和视图的功能类似,就是一种映射关系.关于同义词的更多详细信息可以百度一下,在这里就不赘述了。

基本用法:

create [public] synonym 同义词名称 for [username.]objectName;

[public]属于可选项,如果加上了就是公有同义词,没加就是私有同义词。

一般创建的时候都不写public ,也就是私有同义词,拥有者可以通过授权来控制其他用户对表的相关操作:如增删改查。

那么问题就来了,现在我查询这张表时发现无法找到这张表,说明了要么这张表他根本就没有创建同义词,要么就是该用户没权限,究竟属于哪种情况需要排查。

2.如何查看已经创建的同义词?

第一种方案非常简单粗暴,就是再建一个呗,因为同义词对象的名称也是不能重复的,如果创建不成功,就是说明已经存在该同义词了,但不推荐这种方案,太低级了,一定有相关的语句可以查看该用户下的同义词的。

所以,第二种方案:select * from all_objects where object_name=upper('A');

这个语句的意思是查找某个名为A的数据库对象,这里要注意一下红色的地方,因为貌似命名对大小写敏感,不加这个upper就没法查出来,同义词的命名为了便于记忆,一般和表名取的一样。所以可以直接通过表名来查找同义词。

其次,这个all_objects是数据库自带的,它和DBA_OBJECTS  / USER_OBJECTS一样,是数据库的视图,只不过,只有dba权限的用户(如system),才能查看DBA_OBJECTS ,否则会报表或视图不存在。而USER_OBJECTS表示的是查询当前用户的数据库视图。

好了,执行一下语句,我发现了有两个数据库对象都是叫这个A名字的,正好一张是表,一张是同义词,那既然有了同义词,为什么会报“表或视图不存在”呢?因为光创建了同义词没用,还需要对其他用户授予相应的权限才能做操作呀。

3.如何给其他用户授予权限?

很简单,语法如下,

GRANTprivilege [, ...] ON object [, ...]    TO { PUBLIC | GROUP group | username }

嗯。。。看起来很复杂,其实很简单,比如我有个用户a,a有个表A,然后还有个用户b,想要访问用户a的表A,那么我们刚刚创建了同义词A,就可以这么写:

grant select on A to b ;

注意,是在登录用户a的情况下执行这句sql,因为同义词是a的,当然得由a来说得算。

这里我只有给一个用户b赋予了查的权限,如果要给多个用户,更多的同义词赋予更多的权限,可以使用逗号分隔,如:

grant select , update,delete,insert on A,B to b ,c;

如果你不放心,可以查询一下究竟有没有授权成功:

select * from user_tab_privswhere ......

这里的user_tab_privs依旧是一张视图,可以查看相应的用户对某张表的权限。

这里顺便讲一下分库查询,因为目前我们讲的都是同一个数据库下不同用户的权限。那其实在实际项目中,还有分布式数据库。或者还有一种情况是本地数据库访问远端数据库。那么又该如何访问呢?这里需要用到数据库连接即dblink。

4.dblink

可以参考其他人的博客:https://www.cnblogs.com/wangyong/p/6354528.html

http://blog.itpub.net/24104981/viewspace-1116085/

因为我也没有实际操作过,只是在解决问题的时候顺便了解到还有这样的技术存在,有兴趣的可以尝试搜索一下,万一以后碰到了,不至于像今天一样,无从下手,要有目的地解决问题,听到一句话说,勤奋不是马不停蹄,而是有效的利用时间,努力也不是一味的埋头苦干,而是利用智慧去解决问题,否则,在这个行业做十年,也只不过是一年的工作经验重复10遍而已。

oracle刷同义词报错,oracle 同义词相关推荐

  1. oracle em配置报错,oracle em 启动报错OC4J Configuration issue

    oracle em 启动报错OC4J Configuration issue 今天在测试服务器上,启动emctl start dbconsole的时候,报如下错误: [oracle@test ~]$ ...

  2. oracle包同义词报错,Oracle——04同义词与数据库链接

    1.同义词: 在分布式数据库环境中,为了识别一个数据库对象,必须规定主机名.服务器名.对象的拥有者和对象名.这无疑增加了访问者的访问难度.为了给不同的用户使用数据库对象时提供一个简单的.唯一标识数据库 ...

  3. oracle插入时间报错,Oracle 插入时间时 报错:ORA-01861: 文字与格式字符串不匹配 的解决办法...

    一.写sql的方式插入到Oracle中 往oracle中插入时间  '2007-12-28 10:07:24' 如果直接按照字符串方式,或者,直接使用to_date('2007-12-28 10:07 ...

  4. oracle进入rman报错,Oracle 11g单实例RMAN恢复到Oracle 11g RAC

    一.环境说明 操作系统版本: RHEL 6.5 x64 1. 源数据库服务器 Oracle版本: Oracle 11g 11.2.0.4 64位(单机) Oracle_SID: orcl db_nam ...

  5. oracle进入rman报错,Oracle学习系列之Rman学习(三)

    学习rman的大纲: 1.进入rman 2.rman基础命令 3.rman基本备份命令 4.rman其他命令 5.rman实战 6.rman恢复 仅供自己参考用,也供大家学习. 1.进入rman (1 ...

  6. oracle 监听报错,Oracle EBS系统数据库监听报错TNS-12547、TNS-12560和TNS-00517解决方法...

    记得有一次Oracle EBS系统中止运行3小时,实在比较一次惨痛的教训,让我至今记忆犹新. 问题症状:用户反映提交的请求全部是红色错误 开始意为是并发管理"标准管理器"的问题,在 ...

  7. oracle 数据转换不报错,oracle数据库与hibernate方言转型异常

    oracle数据库与hibernate方言转型异常 报错信息: org.hibernate.MappingException: No Dialect mapping for JDBC type: -9 ...

  8. oracle客户端 安装报错,Oracle 11g客户端安装在构建客户机共享库报错

    今天同事反馈在RedHat 5.5上面安装Oracle 11g客户端一直不成功,报错截图见下: 查看具体报错信息如下: 信息: 构建客户机共享库 信息: 构建客户机共享库 信息: 此 make 操作的 ...

  9. oracle净额结算批报错,Oracle 运行脚本报错 ORA-20785: Workaround is not needed.

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 sqlplus 运行脚本@prvtlmpg.plb 报错,请问各位大神有什么解决方法 SQL> @prvtlmpg.plb Oracle Golde ...

  10. oracle升级补丁报错,oracle rac升级补丁及中间的错误提示

    tail -f /var/log/messages /u01/app/oracle/product/10.2.0/db_1/OPatch/opatch /u01/app/oracle/product/ ...

最新文章

  1. [WC2013]平面图——平面图点定位
  2. 如何查看oracle压力,oracle压力测试之orabm
  3. PHP HTML 生成 PDF
  4. Windows系统安全从定制IP策略开始
  5. Node.js package.json
  6. 调试裕泰微yt8521s的phy芯片流程记录
  7. Java StringTokenizer类使用方式
  8. Ubuntu 12.04 root默认密码? 如何使用root登录?
  9. HP常用函数总结(一):
  10. 360se html怎么删除,删除360浏览器的方法 如何删除360浏览器?
  11. 计算机类科技论文发表,计算机类科技论文
  12. Flex弹性布局详细介绍
  13. 北京大学计算机学硕考研分数线,2020北京大学研究生分数线汇总(含2016-2020历年复试)...
  14. C语言程序——梅花易数年月日时起卦法
  15. Linux——权限|shell运行原理——外壳程序|Linux权限的概念|对人操作|角色和文件操作|文件类型访问权限|修改权限ugo+-|8进制|修改权限|更改文件的拥有
  16. html大于号是什么选择器,什么是“”(大于号)CSS选择器是什么意思?什么是“”(大于号)CSS选择器是什么意...
  17. linux下的pmap命令
  18. 从零开发一款轻量级滑动验证码插件(深度复盘)
  19. 科技云报道:元宇宙,会是云计算的下一个新战场吗?
  20. html 双向绑定组件,contenteditable联合v-html实现数据双向绑定的vue组件

热门文章

  1. wifi的html页面,WiFi
  2. 企业微信登录本地调试
  3. 华为鸿蒙内涵,“鸿蒙”两个字有何真意,还得让古人来解读
  4. android 连续播放动画,Android ObjectAnimator 无限循环播放,实现上下左右浮动效果...
  5. 常用工作方法总结(7S、SWOT分析、PDCA循环、SMART原则、6W2H、时间管理、WBS等)
  6. 共享计算机怎么连,电脑如何连接共享文件
  7. 为什么华为a1路由器网速变慢_华为a1路由器wifi经常掉线怎么办
  8. java中根号2怎么表示_根号2的计算方法(Java实现)
  9. IOS 13陀螺仪监控
  10. 2020-1-7(169)