12
返回列表 发新帖
楼主: snow_winter

为什么USER_TABLES有两个owner sys和public?

[复制链接]
论坛徽章:
7
2010新春纪念徽章
日期:2010-03-01 11:20:00数据库板块每日发贴之星
日期:2010-04-01 01:01:04数据库板块每日发贴之星
日期:2010-07-03 01:01:03鲜花蛋
日期:2011-10-20 14:50:30咸鸭蛋
日期:2012-03-19 15:49:09迷宫蛋
日期:2013-01-13 12:29:08紫蛋头
日期:2013-01-13 13:32:18
11#
 楼主| 发表于 2008-4-2 14:41 | 只看该作者
原帖由 beyond_sea 于 2008-4-2 13:54 发表



晕倒,楼主貌似没有听说过同义词是什么。建议好好看看oracle 文档再来论坛问。

SQL> select * from dba_synonyms where synonym_name='USER_TABLES';

OWNER                          SYNONYM_NAME                   TABLE_OWNER                    TABLE_NAME                     DB_LINK
------------------------------ ------------------------------ ------------------------------ ------------------------------ --------------------------------------------------------------------------------
PUBLIC                         USER_TABLES                    SYS                            USER_TABLES                    

SQL



呵呵,兄弟您你水平高,这样的问题是不屑回答的
那兄弟你解释下 select * from user_tables的时候,查询的是sys的user_tables还是public的user_tables
为什么select * from user_tables不用加用户前缀
比如 select * from sys.user_tables;

多谢了

如果看文档都能解决问题,那还要论坛做啥呢?

使用道具 举报

回复
招聘 : 数据库管理员
论坛徽章:
22
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15复活蛋
日期:2011-07-06 18:52:312011新春纪念徽章
日期:2011-03-29 08:35:29ITPUB9周年纪念徽章
日期:2010-10-08 09:32:262010广州亚运会纪念徽章:曲棍球
日期:2010-09-18 22:57:592010新春纪念徽章
日期:2010-03-01 11:21:03祖国60周年纪念徽章
日期:2009-10-09 08:28:002009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:狗
日期:2008-12-28 21:42:40
12#
发表于 2008-4-2 14:53 | 只看该作者
原帖由 snow_winter 于 2008-4-2 14:41 发表



呵呵,兄弟您你水平高,这样的问题是不屑回答的 -------呵呵, 不屑回答我刚才给你答了那么多,还做了select给你看。谈不上什么水平问题,而是基本概念要搞懂。
那兄弟你解释下 select * from user_tables的时候,查询的是sys的user_tables还是public的user_tables   ----查询的是public.user_tables这个公共同义词 ,但是由于它是公共同义词,它指向的是sys.user_tables这个视图,所以你最终查询的数据还是来自sys.user_tables.
为什么select * from user_tables不用加用户前缀 --------因为user_tables有公共同义词
比如 select * from sys.user_tables;

多谢了

如果看文档都能解决问题,那还要论坛做啥呢? --------很多问题自己深入研究一下是能解决的,如果什么都靠问别人,自己提高很慢的

一家之言,仅供参考。


同义词 (synonym):  是数据库对象的一个别名,这些对象可以是表,视图,序列,过程,函数,程序包甚至其他同义词.


同义词可以使多个用户使用同一个对象而不用将模式(Schema )作为前缀加在对象的前面,从而简化授权方面的操作。
同义词(synonym)是指向其它数据库表的数据库指针。
同义词有两种类型:私有(private)和公共(public)。私有的同义词是在指定的模式中创建并且只创建者使用的模式访问。公共同义词是由public 指定的模式访问,所有数据库模式(用户)都可以访问它。

用户可以访问其它模式的数据库对象而无需指定模式前缀.

例如:
用户a拥有表tb1, 如果用户a授权给b:  grant select on tb1 to b;

那么用户b查询表tb1需要带a的用户名: select * from a.tb1;

如果用户b建立私有同义词:create synonym tb1_pri for a.tb1;
那么用户b查询表tb1的时候就不需要再带模式前缀a: select * from tb1_pri;

如果用户b建立了公有同义词: create public synonym tb1_pub for a.tb1;
而且a授权给c : grant select on tb1 to c ;
那么c用户查询tb1的时候可以直接引用tb1_pub

当然用户a也可以自己为表tb1建立公共同义词,并将公共同义词的select权限赋给别的用户。

[ 本帖最后由 beyond_sea 于 2008-4-2 14:57 编辑 ]

使用道具 举报

回复
论坛徽章:
7
2010新春纪念徽章
日期:2010-03-01 11:20:00数据库板块每日发贴之星
日期:2010-04-01 01:01:04数据库板块每日发贴之星
日期:2010-07-03 01:01:03鲜花蛋
日期:2011-10-20 14:50:30咸鸭蛋
日期:2012-03-19 15:49:09迷宫蛋
日期:2013-01-13 12:29:08紫蛋头
日期:2013-01-13 13:32:18
13#
 楼主| 发表于 2008-4-2 16:23 | 只看该作者
上面的老大,你试试 select * from public.user_tables;

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表