oracle关于同一表空间下的不同用户查询问题
发布网友
发布时间:2022-04-14 00:18
我来回答
共1个回答
热心网友
时间:2022-04-14 01:48
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
什么事?