ORACLE中查询指定用户拥有的所有表

方案1:

根据指定用户名获得对应用户所拥有权限的表

SQL> select table_name, owner from all_tables where owner = 'SYS' and rownum < 6;
TABLE_NAME        OWNER
------------------------------ ------------------------------
AUDIT_ACTIONS   SYS
AW$AWCREATE    SYS
AW$AWCREATE10G SYS
AW$AWMD           SYS
AW$AWREPORT    SYS

方案2:

通过tab视图获得当前登录用户所有表和视图,通过tabletype过滤获得所有表

 

SQL> select * from tab where tabtype = 'TABLE';
 
TNAME                   TABTYPE  CLUSTERID
------------------------------ ------- ----------
DEPT                      TABLE 
EMP                        TABLE 
BONUS                   TABLE 
SALGRADE             TABLE 

 

 tab,dual概念:
Tab is a view, as seen:

create or replace view sys.tab as
select o.name,
decode(o.type#, 2, 'TABLE', 3, 'CLUSTER',
4, 'VIEW', 5, 'SYNONYM'), t.tab#
from sys.tab$ t, sys.obj$ o
where o.owner# = userenv('SCHEMAID')
and o.type# >=2
and o.type# <=5
and o.linkname is null
and o.obj# = t.obj# ( )

Dual is a table with a unique column.
This column is a dummy varchar, that returns what you type.
That´s why if you type select * from dual, the result will be 'X'.
 

方案3:

根据user_tables表获得当前用户拥有所有表

SQL> select table_name from user_tables;
 
TABLE_NAME
------------------------------
DEPT
EMP
BONUS
SALGRADE
方案4:
根据sys表空间下all_object表获得指定用户指定类型对象(表)
SQL> select object_name from sys.all_objects where owner = 'SCOTT' and OBJECT_TYPE = 'TABLE';
 
OBJECT_NAME
------------------------------
DEPT
EMP
BONUS
SALGRADE
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值