`
53873039oycg
  • 浏览: 824043 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Oracle怎么查看表被数据库中那些object使用

阅读更多

      今天看到一个很有趣的问题,怎么查看一个table被数据库中那些object使用?原问题的链接如下:

      http://www.itpub.net/forum.php?mod=viewthread&tid=1849997&extra=page%3D1%26filter%3Dtypeid%26typeid%3D37%26typeid%3D37

      出于好奇,我搜索了下,个人认为可以很好的回答上面的问题。

 

     (一)正常情况(无动态SQL时)

      参考了链接:

     http://www.oratable.com/which-objects-refer-to-this-table/

     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只能从源码中查询了。参考了链接:

    https://community.oracle.com/thread/517948

    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'))

  

    如果有朋友说,我只想要看表被那些表外键引用了,怎么办呢?

    参考了链接:

    http://stackoverflow.com/questions/1143728/how-can-i-find-which-tables-reference-a-given-table-in-oracle-sql-developer

    查看外键引用的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

    

     希望对各位有用。

     全文完。

  

  

  • 大小: 266.9 KB
  • 大小: 97.1 KB
  • 大小: 127.8 KB
  • 大小: 57.7 KB
  • 大小: 43.8 KB
1
3
分享到:
评论

相关推荐

    Object Browser7.0中文版(ORACLE数据库的开发工具)

    结果也被很方便地显示在二维表中.如果允许,您可以直接在查询结果上进行数据编辑并反映到数据库中.     另外,在显示结果的同时,SQL的执行计划和统计信息也被显示出来,这样您可以一边看着...

    SIObject+BrowserV10 oracle数据库工具

    SIObject+BrowserV10 oracle数据库工具

    Object Browser是一套全面支持Oracle数据库集成环境

    Object Browser是一套全面支持Oracle数据库集成环境, 它的丰富的功能支持您从开发到系统管理的全过程, 精心的设计让使用者在最大程度上提高工作效率 序列号请向www.meslog.cn索取

    Oracle数据库管理员技术指南

    1.6.1 利用 Oracle 安装程序创建数据库 1.6.2 使用安装程序创建数据库的注意 事项 1.6.3 怎样建立自己的定制数据库创建 脚本 1.6.4 如何从已有数据库克隆数据库 1.6.5 怎样利用 Database Configuration ...

    从一个“普通”的Oracle DBA(Oracle数据库管理员)转变为Oracle Applications DBA(Oracle应用程序数据库管理员)

    从一个“普通”的Oracle DBA(Oracle数据库管理员)转变为Oracle Applications DBA(Oracle应用程序数据库管理员),有两个内容你必须去弄清楚。第一个内容是如何成为一个Oracle Applications DBA(Oracle应用程序...

    oracle 数据库优化技术资料

    为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行analyze 命令,以增加数据库中的对象统计信息(object statistics)的准确性. 如果数据库的优化器模式设置为选择性(CHOOSE),那么实际的优化器...

    C# 编程连接oracle数据库方法

    C# 编程连接oracle数据库方法 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using ...

    ORACLE应用中常见的傻瓜问题1000问-1

    ORACLE应用中常见的傻瓜问题1000问 <br> 14. 如何查看系统被锁的事务时间? <br> select * from v$locked_object ; <br> 15. 如何以archivelog的方式运行oracle。 <br> init.ora <br> log_...

    Oracle数据库可视化工具

    Oracle数据库可视化工具 SI Object Browser 感觉还可以 备份用了

    Oracle数据库之C#中调用示例Oracle自定义类型(自定义Object对象)

    C#调用Oracle自定义类型存储过程,Oracle存储入参为type类型,对于不熟悉Oracle朋友,可以参考来调用。实现思路和正常调MSSQL一样,先建立连接,再定义一个IOracleCustomType的类,然后Oracle.DataAccess.dll的...

    Oracle9i数据库系统概述.pdf

    每个Oracle数据库要求至少有两 个或两个以上的控制文件。 7 除了以上三类物理文件之外,数据库中还包 含初始化参数文件、口令文件、归档的日志 文件等物理文件。 初始化参数文件在数据库启动和数据库性能 调优时使用...

    Oracle数据库——数据库安全性管理.pdf

    Oracle数据库 数据库——数据库安全性管理 数据库安全性管理 ⼀、涉及内容 1.验证系统权限管理。 2.验证⾓⾊管理。 3.验证概要⽂件管理。 ⼆、具体操作 (⼀) 1.根据以下要求进⾏系统权限的授予与回收操作。 (1)...

    Java-Oracle数据库连接驱动包

    Java-Oracle数据库连接驱动包,Certified with JDK 8, JDK 7 and JDK 6: It contains the JDBC driver classes except classes for NLS support in Oracle Object and Collection types.

    oracle管理软件SI Object Browser9

    SI Object Browser是集Oracle应用开发支援和数据库管理的功能于一体的Oracle专用的GUI工具。包含以下的功能。 > > Oracle对象的建立与管理 > > 能简单地在GUI上建立和管理数据表、视图等对象。 >可以由专用的Grid...

    oracle 检测数据库是否有对象被锁的脚本

    需要运行两次的脚本 第一次取得所有的锁,第二次会自动对比第一次,如果还存在相同的锁,就会报警出来,一般你可以设定每5分钟运行一次。 使用于AIX LINUX【经测试过】

    oracle表被锁定的完美解决方法

    ora-00031:session marked for kill处理oracle中杀不掉的锁一些ORACLE中的进程被杀掉后,状态被置为”killed”,但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那...

    解决Oracle 9.2.0.6版本数据库由于ORA-07445宕机问题

    1 解决Oracle 9.2.0.6版本数据库由于ORA-07445宕机问题 故障现象: XX网数据库宕机,查看日志发现以下内容: Wed Jun 8 20:24:17 2005 Errors in file /u02/app/oracle/admin/unicom/udump/unicom_ora_661.trc: ORA-...

    ORACLE查询表最近更改数据的方法

    修改项目时,涉及到了Oracle中许多表的修改(包括:增加、删除字段,修改注释等)。由于开始没有进行记录,造成在上测试机时,忘记了具体修改过哪些表了。后来在网上查找了一些资料,例如: 代码如下: 1、select uat...

Global site tag (gtag.js) - Google Analytics