日期:2014-05-17  浏览次数:20907 次

oracle 里面 想直接通过写sql语句获取其他用户下的表数据 要怎么写呢 比如有没有类似这样 select * from 用户名/密码@li
rt!
oracle 里面 想直接通过写sql语句获取其他用户下的表数据 要怎么写呢
比如有没有类似这样 
select * from 用户名/密码@listener tbname

------解决方案--------------------
如果是同一个库,直接下面sql:
select * from 用户名.表名
如果是不同的库,就需要建立dblink,然后:
select * from 用户名.表名@dblink_name
------解决方案--------------------
1.假设数据库DB1需要访问DB2的表,需要在DB1建立dblink,前提是DB1的tns中有配DB2的信息;
2.假设数据库DB1中有两个用户USER1,USER2,需要从USER1账号访问USER2中的表TABLE2,需要在USER2中将TABLE2 GRANT给USER1,USER1才有权限访问,访问的时候用SELECT * FROM USER2.TABLE2语句,如果不想在TABLE2前面加上SCHEMA(USER2),需要在USER1中建立TABLE2的同义词(SYNONYM),或者在USER2中建立TABLE2的PUBLIC SYNONYM(这个好处是如果你有第三个账号也想访问这张表,那么也是有同义词的,不要额外再建)

以上需要你的账号有CREATE DBLINK, GRANT, CREATE SYNONYM等权限,没有这些权限需要让DBA帮你加。
------解决方案--------------------
引用:
如果是同一个库,直接下面sql:
select * from 用户名.表名
如果是不同的库,就需要建立dblink,然后:
select * from 用户名.表名@dblink_name

正解
------解决方案--------------------
首先是管理员用户才行,才有权限查看别的用户的表。
SELECT t.TABLE_NAME FROM dba_tables t
WHERE t.OWNER='用户名'