这两天老大让我再oracle中把要替换的表被其他对象引用之处找出来,整理一份表,接到这个任务,我是一脸懵逼,怎么找?大海捞针么?问同事、查资料,自己研究,最后整理一下仅供大家参考,同时以备将来回顾。本篇只涉及表被其他数据库对象引用,不涉及外键,想寻找外键的,自己查看下面附有的链接。

首先有下列几种方式:

1、plsql工具

点击工具,找到 查找数据库对象

最后进入到查找页面

最后根据页面把要查找的 表对象或者关键词填入 文本查找   里,再在对象条件里 选择自己要筛选的条件即可筛选。但是此方法有个弊端,就是  所有者 中下拉条件太多,要筛选很多次。

2.通过sql去查询。相关sql我是网上查阅资料,无意中看到有位大哥曾经在自己的博客回答过这个问题,先推荐给大家http://53873039oycg.iteye.com/blog/2030263/。这位大哥,小弟很不好意思在此引用一下您的内容,敬请见谅。

a>正常情况(无动态SQL时)

System/Sysdba用户,可以使用以下SQL查看:

select * from dba_dependencies  where referenced_name =upper('对象名') and owner=upper('所有者')  
普通用户可以使用以下SQL查看:

select * from all_dependencies  where referenced_name =upper('对象名')   
b>动态SQL情况

System/Sysdba可以使用下面的SQL查询:

select name,type,text from dba_source where upper(text) like '%对象名%'  and owner=upper('所有者')  
普通用户可以使用下面的SQL查询:

select name,type,text from user_source where upper(text) like '%对象名%'   
查看所有引用表的动态sql:

System/Sysdba用户:

select name, type, text

from dba_source

where name in (select name

from dba_source

where upper(text) like '%对象名%'

and owner = upper('所有者')

minus

select name

from dba_dependencies

where referenced_name = upper('对象名')

and owner = upper('所有者'))

and owner = upper('所有者')

普通用户:

select name, type, text

from user_source

where name in

(select name

from user_source

where upper(text) like '%对象名%'

minus

select name   from all_dependencies                 where referenced_name = upper('对象名'))

好啦,以上就是借鉴那位大哥的,下面奉上小弟修改的

查看所有引用表的动态sql(考虑到实际项目中有的公司可能存储过程或者函数、视图里有的使用对象名是大写有的是小写的参考):

普通用户:

select distinct name, type
  from user_source
 where name in (select a.name
                  from user_source a
                 where a.text like  '%对象名小写%' or a.TEXT like '%对象名大写%'
                 group by a.name
                minus
                select name
                  from all_dependencies
                 where referenced_name = '对象名小写' or referenced_name = '对象名大写' )

所以小编就对比动态和静态情况下sql,发现动态情况下sql中包含了静态情况下的sql,而且用了minus函数,

minus函数是什么呢?有什么作用呢?

给大家普及一下minus函数用法:

racle Minus关键字
  SQL中有一个MINUS关键字,它运用在两个SQL语句上,它先找出第一条SQL语句所产生的结果,然后看这些结果有没有在第二个SQL语句的结果中。如果有的话,那这一笔记录就被去除,而不会在最后的结果中出现。如果第二个SQL语句所产生的结果并没有存在于第一个SQL语句所产生的结果内,那这笔资料就被抛弃。
好了,既然知道了minus函数的作用,那我们何不自己写个查询所有的情况(既有静态又有动态的情况)的sql呢,福利来了,那么久整理出了下面的sql,查询的结果包含了对象本身哦。此处小编采用的  UNION ALL 取并集。然后把重复的过滤掉

select distinct name,type
from (select a.name,a.TYPE
                  from user_source a
                 where a.text like  '%表名小写%' or a.TEXT like '%表名大写%'
                 group by a.name,a.TYPE
                UNION ALL 
                select name,type
                  from all_dependencies
                 where referenced_name = '表名大写' or referenced_name = '表名小写') v
---------------------
作者:m0_37984249
来源:CSDN
原文:https://blog.csdn.net/m0_37984249/article/details/81097867

如何在Oracle中 查询一个表被其他数据库对象引用[z]的更多相关文章

  1. Linq 中查询一个表中指定的字段

    //Linq中查询一个表中指定的几个字段: ); // FindAllItems()为查询对应表的所有数据的方法: // Where 里面为查询条件 // Select 为查询的筛选条件 new{} ...

  2. mysql中查询一个字段属于哪一个数据库中的哪一个表的方式

    mysql中查询一个字段具体是属于哪一个数据库的那一张表:用这条语句就能查询出来,其中 table_schema 是所在库, table_name 是所在表 --mysql中查询某一个字段名属于哪一个 ...

  3. oracle中查询用户表/索引/视图创建语句

    不多说,直接上干货 1.查询当前用户下表的创建语句 select dbms_metadata.get_ddl('TABLE','ux_future') from dual; 2.查询其他用户下表的创建 ...

  4. 如何在ORACLE中查询某一用户下所有的空表

    先分析表 select 'analyze table '||table_name||' compute statistics;' from user_tables; 把查询结果依次执行 把所有表分析一 ...

  5. Oracle中如何查询一个表的所有字段名和数据类型

    Oracle中如何查询一个表的所有字段名和数据类型 查询语法 select A.COLUMN_NAME,A.DATA_TYPE from user_tab_columns A where TABLE_ ...

  6. oracle中查询某张表都被哪些表参照了

    起因: 系统测试的时候发现如果某条记录已经被引用了,这个时候删除这条记录会引起数据不一致,系统会报错.比如警员信息,在考勤记录表里会引用警员ID,如果考勤记录表中已经存在这个警员ID了,这时从警员表中 ...

  7. SQL查询一个表中类别字段中Max()最大值对应的记录

      SQL查询一个表中类别字段中Max()最大值对应的记录 SELECT A.id, A.name, A.version FROM   DOC A, (SELECT id, MAX(version)  ...

  8. Oracle中查询当前数据库中的所有表空间和对应的数据文件语句命令

    Oracle中查询当前数据库中的所有表空间和对应的数据文件语句命令 ------------------------------------------------------------------ ...

  9. 关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)

    关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999 ...

随机推荐

  1. 转:探讨JS合并两个数组的方法

    我们在项目过程中,有时候会遇到需要将两个数组合并成为一个的情况. 比如: var a = [1,2,3]; var b = [4,5,6]; 有两个数组a.b,需求是将两个数组合并成一个.方法如下: ...

  2. [重点]delphi 实现 根据给定的标题去《中国青年报》网上电子报数据中查找匹配的内容,并从该内容中取出引题、正题、副题、作者和正文。

    项目要求:根据给定的标题去<中国青年报>网上电子报数据中查找匹配的内容,并从该内容中取出引题.正题.作者和正文. unit Unit1; interface uses Winapi.Win ...

  3. django select_related()和反射结合

    对于有外键关联的表,select_related()会自动进行多变关联; ret = models.UserInfo.objects.all().select_related() print ret. ...

  4. SQL Server Assembly (SQL CLR) 还原数据库后的问题

    最近弄项目迁移的时候遇到还原数据库(SQL Server 2008)后遇到的一个问题: 消息 10314,级别 16,状态 11,第 1 行 在尝试加载程序集 ID 65536 时 Microsoft ...

  5. 十分钟搞定pandas

    转至:http://www.cnblogs.com/chaosimple/p/4153083.html 本文是对pandas官方网站上<10 Minutes to pandas>的一个简单 ...

  6. webui-popover 一个轻量级的jquery弹出层插件

    该提示框插件可以和Bootstrap完美结合,但是并不一定需要和Bootstrap一起使用.它支持IE7以上的浏览器. 首先要引入需要的css  js  文件 <link rel="s ...

  7. 学习BOS物流项目第九天

    1 教学计划 1.业务受理需求分析 a. 业务通知单 b.工单 c.工作单 2.创建业务受理环节的数据表 a.业务通知单 b.工单 c.工作单 3.实现业务受理自动分单 a.在CRM服务端扩展方法根据 ...

  8. mysql查找某连续字段中断的编号

    查询dj_pxlb表中zwh 空缺的值 select model2.zwh-1 as kqzwh from (select model1.zwh from dj_pxlb as model1 wher ...

  9. HBuilder在MAC下的SVN

    1. 安装svn插件,工具--插件安装---svn--安装 2. 使用svn,文件---导入---从svn检出项目 -- 下一步 3. 创建新的资源库位置--下一步-- URL(输入svn仓库地址)- ...

  10. 删除kafka topic

    1.因为项目原因,kakfa通道中经常造成数据阻塞,导致kafka通道中数据量过大,因此我需要将kakfa通道中数据清除(个人项目原因,一直使用一个消费者,只要保证当前消费者不在消费之前很久的数据就可 ...