今天看到一个很有趣的问题,怎么查看一个table被数据库中那些object使用?原问题的链接如下:
出于好奇,我搜索了下,个人认为可以很好的回答上面的问题。
(一)正常情况(无动态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'))
如果有朋友说,我只想要看表被那些表外键引用了,怎么办呢?
参考了链接:
查看外键引用的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
希望对各位有用。
全文完。
相关推荐
结果也被很方便地显示在二维表中.如果允许,您可以直接在查询结果上进行数据编辑并反映到数据库中. 另外,在显示结果的同时,SQL的执行计划和统计信息也被显示出来,这样您可以一边看着...
SIObject+BrowserV10 oracle数据库工具
Object Browser是一套全面支持Oracle数据库集成环境, 它的丰富的功能支持您从开发到系统管理的全过程, 精心的设计让使用者在最大程度上提高工作效率 序列号请向www.meslog.cn索取
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 Applications DBA(Oracle应用程序...
为了使用基于成本的优化器(CBO, Cost-Based Optimizer) , 你必须经常运行analyze 命令,以增加数据库中的对象统计信息(object statistics)的准确性. 如果数据库的优化器模式设置为选择性(CHOOSE),那么实际的优化器...
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问 <br> 14. 如何查看系统被锁的事务时间? <br> select * from v$locked_object ; <br> 15. 如何以archivelog的方式运行oracle。 <br> init.ora <br> log_...
Oracle数据库可视化工具 SI Object Browser 感觉还可以 备份用了
C#调用Oracle自定义类型存储过程,Oracle存储入参为type类型,对于不熟悉Oracle朋友,可以参考来调用。实现思路和正常调MSSQL一样,先建立连接,再定义一个IOracleCustomType的类,然后Oracle.DataAccess.dll的...
每个Oracle数据库要求至少有两 个或两个以上的控制文件。 7 除了以上三类物理文件之外,数据库中还包 含初始化参数文件、口令文件、归档的日志 文件等物理文件。 初始化参数文件在数据库启动和数据库性能 调优时使用...
Oracle数据库 数据库——数据库安全性管理 数据库安全性管理 ⼀、涉及内容 1.验证系统权限管理。 2.验证⾓⾊管理。 3.验证概要⽂件管理。 ⼆、具体操作 (⼀) 1.根据以下要求进⾏系统权限的授予与回收操作。 (1)...
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.
SI Object Browser是集Oracle应用开发支援和数据库管理的功能于一体的Oracle专用的GUI工具。包含以下的功能。 > > Oracle对象的建立与管理 > > 能简单地在GUI上建立和管理数据表、视图等对象。 >可以由专用的Grid...
需要运行两次的脚本 第一次取得所有的锁,第二次会自动对比第一次,如果还存在相同的锁,就会报警出来,一般你可以设定每5分钟运行一次。 使用于AIX LINUX【经测试过】
ora-00031:session marked for kill处理oracle中杀不掉的锁一些ORACLE中的进程被杀掉后,状态被置为”killed”,但是锁定的资源很长时间不释放,有时实在没办法,只好重启数据库。现在提供一种方法解决这种问题,那...
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中许多表的修改(包括:增加、删除字段,修改注释等)。由于开始没有进行记录,造成在上测试机时,忘记了具体修改过哪些表了。后来在网上查找了一些资料,例如: 代码如下: 1、select uat...