您现在的位置是:主页 > news > 贵州疫情最新消息今天新增了15例/深圳网站优化
贵州疫情最新消息今天新增了15例/深圳网站优化
admin2025/5/23 7:16:04【news】
简介贵州疫情最新消息今天新增了15例,深圳网站优化,网站开发技术html5,没有网站可以做淘宝客吗今天看到一个很有趣的问题,怎么查看一个table被数据库中那些object使用?原问题的链接如下:出于好奇,我搜索了下,个人认为可以很好的回答上面的问题。(一)正常情况(无动态SQL时)参考了链接:System/Sysdba用户…
今天看到一个很有趣的问题,怎么查看一个table被数据库中那些object使用?原问题的链接如下:
出于好奇,我搜索了下,个人认为可以很好的回答上面的问题。
(一)正常情况(无动态SQL时)
参考了链接:
System/Sysdba用户,可以使用以下SQL查看:
select * from dba_dependencies where referenced_name =upper('emp') and owner=upper('tmd')
普通用户可以使用以下SQL查看:
select * from all_dependencies where referenced_name =upper('emp')
上面的区别是可以看的用户范围不同:
DBA_DEPENDENCIES describes all dependencies between objects in the database. This view may only be accessible to users with DBA rights.
USER_DEPENDENCIES describes dependencies between objects only in the current user’s schema. This view does not have the column OWNER, as it is contained in the view definition.
上面的运行结果如下:
上面的缺点是如果表名在字符串里面,也就是存在动态执行sql的情况,则得不到对象名称。例子如下:
select * from all_dependencies where name like '%PROC_DBMS%' and referenced_name =upper('emp')
结果如下:
(二)动态SQL情况
对于动态sql只能从源码中查询了。参考了链接:
System/Sysdba可以使用下面的SQL查询:
select name,type,text from dba_source where upper(text) like '%EMP%' and owner=upper('tmd')
普通用户可以使用下面的SQL查询:
select name,type,text from user_source where upper(text) like '%EMP%'
以上面的例子为例:
select name,type,text from user_source where upper(text) like '%EMP%' and name like 'PROC_DBMS%'
结果如下:
查看所有引用表的动态sql:
System/Sysdba用户:
select name, type, text
from dba_source
where name in (select name
from dba_source
where upper(text) like '%EMP%'
and owner = upper('tmd')
minus
select name
from dba_dependencies
where referenced_name = upper('emp')
and owner = upper('tmd'))
and owner = upper('tmd')
普通用户:
select name, type, text
from user_source
where name in (select name
from user_source
where upper(text) like '%EMP%'
minus
select name
from all_dependencies
where referenced_name = upper('emp'))
如果有朋友说,我只想要看表被那些表外键引用了,怎么办呢?
参考了链接:
查看外键引用的SQL如下:
select table_name, constraint_name, status, owner
from all_constraints
where r_owner = 'TMD'
and constraint_type = 'R'--foreign key
and r_constraint_name in (select constraint_name
from all_constraints
where constraint_type in ('P', 'U')--pk unique key
--and table_name = 'DEPT'
and owner = 'TMD')
order by table_name, constraint_name
希望对各位有用。
全文完。