[Update 2015-04] Beginning with 12c, dba_views has a column text_vc of varchar2(4000) that captures the (first 4000 bytes of) the view definition. Q: How do I find which view's definition contains a given string? A: Other than spooling dba_views.text to a file and read the file, you can build another table based on dba_views converting the text column to a CLOB type and query your table. In fact, you can use this method to search in trigger code (dba_triggers.trigger_body) or any LONG type column data. (But of course trigger_body is PL/SQL code and so can be easily searched in dba_source.) The following is run in an account with select_catalog_role in Oracle 10.2.0.4. create table myviewtable ( owner varchar2(30), view_name varchar2(30), text clob); insert into myviewtable (owner, view_name, text) select owner, view_name, to_lob(text) from dba_views; Then you can query the CLOB field, case-insensitively if you want: SQL> select owner, view_name from myviewtable where dbms_lob.instr(lower(text), 'histogram') > 0; OWNER VIEW_NAME ------------------------------ ------------------------------ SYS V_$SQL_WORKAREA_HISTOGRAM ... SQL> select max(length(text)) from myviewtable; MAX(LENGTH(TEXT)) ----------------- 33270 SQL> select owner, view_name, length(text) from myviewtable where length(text) > 12000 order by 3; OWNER VIEW_NAME LENGTH(TEXT) ------------------------------ ------------------------------ ------------ ... SYS ALL_IND_STATISTICS 13163 ... SYS ALL_OBJECTS 13885 ... SYS STRADDLING_TS_OBJECTS 16214 ... SYS STRADDLING_RS_OBJECTS 17214 ... CBFACT HLA_RCPT_LOOKUP_WITH_RAW_V 33270 If the views (that you care) had 4000 chars or less in its definition, you could use VARCHAR2 instead of CLOB for even easier search. create table myviewtable2 ( owner varchar2(30), view_name varchar2(30), text varchar2(4000)); insert into myviewtable2 select owner, view_name, substr(text,1,4000) from myviewtable; In my case, that truncates long lines so that's bad: SQL> select max(length(text)) from myviewtable2; MAX(LENGTH(TEXT)) ----------------- 4000 If you really really don't like to create a table for this search, you can use function long2clob in the undocumented package dbms_metadata_util: SQL> select obj#, sys.dbms_metadata_util.long2clob(1000000, 'SYS.VIEW$', 'TEXT', rowid) from sys.view$ where sys.dbms_metadata_util.long2clob(1000000, 'SYS.VIEW$', 'TEXT', rowid) like '%CAPTURE_MESSAGE_NUMBER%'; OBJ# SYS.DBMS_METADATA_UTIL.LONG2CLOB(1000000,'SYS.VIEW$','TEXT',ROWID) ------------ ---------------------------------------------------------------------------------------------------- 8113 select "INST_ID","SID","SERIAL#","CAPTURE#","CAPTURE_NAME","LOGMINER_ID","STARTUP_TIME","STATE","TOT AL_PREFILTER_DISCARDED","TOTAL_PREFILTER_KEPT","TOTAL_PREFILTER_EVALUATIONS","TOTAL_MESSAGES_CAPTURE D","CAPTURE_TIME","CAPTURE_MESSAGE_NUMBER","CAPTURE_MESSAGE_CREATE_TIME","TOTAL_MESSAGES_CREATED","T OTAL_FULL_EVALUATIONS","TOTAL_MESSAGES_ENQUEUED","ENQUEUE_TIME","ENQUEUE_MESSAGE_NUMBER","ENQUEUE_ME SSAGE_CREATE_TIME","AVAILABLE_MESSAGE_NUMBER","AVAILABLE_MESSAGE_CREATE_TIME","ELAPSED_CAPTURE_TIME" ,"ELAPSED_RULE_TIME","ELAPSED_ENQUEUE_TIME","ELAPSED_LCR_TIME","ELAPSED_REDO_WAIT_TIME","ELAPSED_PAU SE_TIME","STATE_CHANGED_TIME" from gv$streams_capture 8115 select "SID","SERIAL#","CAPTURE#","CAPTURE_NAME","LOGMINER_ID","STARTUP_TIME","STATE","TOTAL_PREFILT ER_DISCARDED","TOTAL_PREFILTER_KEPT","TOTAL_PREFILTER_EVALUATIONS","TOTAL_MESSAGES_CAPTURED","CAPTUR E_TIME","CAPTURE_MESSAGE_NUMBER","CAPTURE_MESSAGE_CREATE_TIME","TOTAL_MESSAGES_CREATED","TOTAL_FULL_ EVALUATIONS","TOTAL_MESSAGES_ENQUEUED","ENQUEUE_TIME","ENQUEUE_MESSAGE_NUMBER","ENQUEUE_MESSAGE_CREA TE_TIME","AVAILABLE_MESSAGE_NUMBER","AVAILABLE_MESSAGE_CREATE_TIME","ELAPSED_CAPTURE_TIME","ELAPSED_ RULE_TIME","ELAPSED_ENQUEUE_TIME","ELAPSED_LCR_TIME","ELAPSED_REDO_WAIT_TIME","ELAPSED_PAUSE_TIME"," STATE_CHANGED_TIME" from v$streams_capture SQL> select owner, object_name from dba_objects where object_id in (8113, 8115); OWNER OBJECT_NAME ------------------------------ ------------------------------ SYS GV_$STREAMS_CAPTURE SYS V_$STREAMS_CAPTURE Dbms_metadata_util.long2clob only works on a few data dictionary tables for a few columns (limited by utl_xml it calls). If it doesn't work for you, set serveroutput on and run the query to see if there's any interesting error.