oracle关于同一表空间下的不同用户查询问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle关于同一表空间下的不同用户查询问题相关的知识,希望对你有一定的参考价值。

我建了一个表空间 如YBT 然后在这个表空间上建了一个用户 如 LIS 给LIS授DBA和CONNECT角色 然后用LIS用户登陆,并导入了一些表和数据。 然后在YBT表空间我又建立了一用户 GUEST 授予DBA和CONNECT角色 我用GUEST用户登陆的时候怎样才可以查询到LIS用户的数据? 当然了,也可以通过select * from lis.table1来查询; 但我不想每次查询都带上lis.的标签.

参考技术A 1.
你概念没对,不是在表空间上建用户,而是允许用户使用哪个表空间。
2.
你权限没弄对,DBA是最高权限,已经包括connect了。有了DBA权限,整个数据库你就随便搞了。
3.
想查询就通过通过select
*
from
lis.table1来查询。不想总是写一个lis.就建立同义词。
4.
你都有dba权限了,可以建public同义词。这样你的任何用户都可以不用Lis.直接访问那个表了。
select
*
from
table1
但是如果你当前的用户下有同名的表,那么这句话访问的就是你当前用户下的表。一般不要建public,下面这是私有的。
创建方法:
create
synonym
guest.lccont
for
lis.lccont
5.
怎么全部重建。这个问题很简单,你拼一个赋权语句就可以了。
select
'create
synonym
'||table_name||'
for
lis.'||table_name||';'
from
dba_tables
where
owner='LIS';
你把上面这句话的执行结果拷贝出来,执行一遍就全建完了。如果你会不停的创建表,你干脆写个批处理让它自己跑好了。
6.
再一问题就是,如果guest表中已经有lbcont这个表了,
再执行create
or
replace
synonym
guest.lbcont
for
lis.lbcont;就报错了。
那当然了,要不然重名了,你访问这个表的时候怎么知道你访问的是这个表还是同义词。
这个问题无解。
除非建public同义词,那样再访问的话访问的就是你当前用户下的表,而非同义词。
补充:
2搂没对,同义词关db
link
什么事?

oracle 怎样查询某用户下的所有表的表名

select * from all_tab_comments -- 查询所有用户的表,视图等。

select * from user_tab_comments -- 查询本用户的表,视图等。

select * from all_col_comments  --查询所有用户的表的列名和注释。

select * from user_col_comments -- 查询本用户的表的列名和注释。

select * from all_tab_columns --查询所有用户的表的列名等信息。

select * from user_tab_columns --查询本用户的表的列名等信息。


扩展资料

ORACLE下有三个视图

DBA_TABLES  拥有DBA角色的用户可以查看系统中的所有表

USER_TABLES 登录数据库的当前用户拥有的所有表

ALL_TABLES 登录数据库的当前用户有权限查看的所有表

参考资料:百度百科-Oracle

参考技术A

如果是用该用户登录使用以下语句:

SELECT *

FROM USER_TABLES;

如果是用其他用户(在dba权限下):

SELECT *

FROM ALL_TABLES WHERE OWNER='USER_NAME' 

扩展资料:

1、查询“c001”课程比“c002”课程成绩高的所有学生的学号;

select * from sc a
where a.cno='c001'
and  exists(select * from sc b where b.cno='c002' and a.score>b.score
and a.sno = b.sno)

2、查询平均成绩大于60 分的同学的学号和平均成绩;

select sno,avg(score) from sc  group by sno having avg(score)>60;

3、查询所有同学的学号、姓名、选课数、总成绩;

select a.*,s.sname from (select sno,sum(score),count(cno) from sc group by sno) a ,student s where a.sno=s.sno

4、查询姓“刘”的老师的个数;

select count(*) from teacher where tname like '刘%';

参考技术B

ORACLE下有三个视图

select table_name from user_tables; //当前用户拥有的表

select table_name from all_tables; //所有用户的表

select table_name from dba_tables; //包括系统表

select table_name from dba_tables where owner='用户名'

类似的,除了表,还有视图、存储过程、同义词等等对象,使用[DBA|USER|ALL]_TABLES可以查看到你想要的对象

扩展资料:

当创建视图后,ORACLE将会验证视图的有效性,如修改了基本表,则会导致视图的无效状态.可查询数据字典user_objects的status.

1、创建表T,包含ID和NAME两列;

2、使用该表创建一个视图t_view,查看该表所有信息;

3、使用该表创建一个视图t_view2,查看该表的ID和NAME列

4、查看该视图状态;

5、在表T上增加一列性别sex,重新查看视图t_view的状态.

6、在表T上删除列NAME,重新查看视图t_view2的状态.

注:VALID表示正常状态,invalid表示非正常状态

参考资料:Oracle视图-百度百科

参考技术C

ORACLE下有三个视图

    DBA_TABLES  拥有DBA角色的用户可以查看系统中的所有表

    USER_TABLES 登录数据库的当前用户拥有的所有表

    ALL_TABLES 登录数据库的当前用户有权限查看的所有表

类似的,除了表,还有视图、存储过程、同义词等等对象,使用[DBA|USER|ALL]_TABLES可以查看到你想要的对象

本回答被提问者和网友采纳
参考技术D -- connect xx/xx 切换到这个用户
select * from tab;

以上是关于oracle关于同一表空间下的不同用户查询问题的主要内容,如果未能解决你的问题,请参考以下文章

oracle数据库中表空间和表之间的关系是怎么样的

oracle表空间设计基本原则

在Oracle数据库中如何查询某一个表空间下的某张表里面的数据;怎么查询某个表空间下的所有表的信息

oracle修改表的表空间

oracle怎么查看其它用户下的表

Oracle 用户表空间授权备份导入等操作相关