我需要编写一些sql来允许我查询Oracle数据库中的所有对象 . 不幸的是,我们被允许使用的工具没有内置 . 基本上,我需要搜索所有表,过程,触发器,视图,一切 .
我知道如何搜索对象名称 . 但我需要搜索对象的内容 . 即SELECT * FROM DBA_OBJECTS WHERE object_name ='%search string%';
谢谢,格伦
我不确定我是否理解你,但查询你可以尝试使用“user_source”表的触发器,程序,包和函数的源代码 .
select * from user_source
我不确定我是否完全理解这个问题,但是如果你想在数据库中搜索特定搜索字符串的对象,请尝试:
SELECT owner, name, type, line, text FROM dba_source WHERE instr(UPPER(text), UPPER(:srch_str)) > 0;
如果您需要更多信息,可以从那里查找对象/行号 .
我会使用DBA_SOURCE(如果您有权访问它),因为如果您需要的对象不属于您登录的模式,您将无法看到它 .
如果您需要了解包中的函数和Procs,请尝试以下方法:
select * from all_source where type = 'PACKAGE' and (upper(text) like '%FUNCTION%' or upper(text) like '%PROCEDURE%') and owner != 'SYS';
最后一行阻止返回所有sys内容(DBMS_等) . 如果您只想要自己的架构内容,这将在user_source中工作 .
ALL_SOURCE描述当前用户可访问的存储对象的文本源 .
这是解决方案之一
select * from ALL_SOURCE where text like '%some string%';
我试图找到使用某个表的所有程序时达到了这个问题
Oracle SQL Developer提供此功能,如本文所述:https://www.thatjeffsmith.com/archive/2012/09/search-and-browse-database-objects-with-oracle-sql-developer/
从View菜单中,选择Find DB Object . 选择数据库连接 . 输入表格的名称 . 在对象类型中,仅保留函数,过程和包 . 在“代码”部分,选中“所有源代码行”
5 回答
我不确定我是否理解你,但查询你可以尝试使用“user_source”表的触发器,程序,包和函数的源代码 .
我不确定我是否完全理解这个问题,但是如果你想在数据库中搜索特定搜索字符串的对象,请尝试:
如果您需要更多信息,可以从那里查找对象/行号 .
我会使用DBA_SOURCE(如果您有权访问它),因为如果您需要的对象不属于您登录的模式,您将无法看到它 .
如果您需要了解包中的函数和Procs,请尝试以下方法:
最后一行阻止返回所有sys内容(DBMS_等) . 如果您只想要自己的架构内容,这将在user_source中工作 .
ALL_SOURCE描述当前用户可访问的存储对象的文本源 .
这是解决方案之一
我试图找到使用某个表的所有程序时达到了这个问题
Oracle SQL Developer提供此功能,如本文所述:https://www.thatjeffsmith.com/archive/2012/09/search-and-browse-database-objects-with-oracle-sql-developer/
从View菜单中,选择Find DB Object . 选择数据库连接 . 输入表格的名称 . 在对象类型中,仅保留函数,过程和包 . 在“代码”部分,选中“所有源代码行”