programing

Oracle에서 저장 프로시저를 포함한 개체를 검색하는 SQL

mytipbox 2023. 3. 9. 21:41
반응형

Oracle에서 저장 프로시저를 포함한 개체를 검색하는 SQL

Oracle 데이터베이스의 모든 개체를 쿼리할 수 있는 SQL을 작성해야 합니다.유감스럽게도 우리가 사용할 수 있는 도구에는 이것이 내장되어 있지 않습니다.기본적으로 모든 테이블, 절차, 트리거, 뷰 등을 검색해야 합니다.

개체 이름을 검색하는 방법을 알고 있습니다.단, 오브젝트의 내용을 검색해야 합니다.예를 들어 SELECT * FROM DBA_OBJETES WHERE object_name = '%search string%';

고마워 글렌

질문을 잘 이해했는지 모르겠지만 특정 검색 문자열을 데이터베이스에서 검색하려면 다음을 시도해 보십시오.

SELECT owner, name, type, line, text 
FROM dba_source
WHERE instr(UPPER(text), UPPER(:srch_str)) > 0;

여기서 더 필요한 정보가 있으면 오브젝트/라인 번호를 조회할 수 있습니다.

뷰의 경우 다음을 사용할 수 있습니다.

SELECT *
FROM dba_views
WHERE instr(UPPER(text_vc), UPPER(:srch_str)) > 0

제가 당신을 이해했는지 잘 모르겠습니다만, "user_source" 테이블에서 시도할 수 있는 트리거, 프로시저, 패키지 및 함수의 소스 코드를 조회합니다.

select * from user_source

DBA_를 사용합니다.SOURCE(액세스 권한이 있는 경우) 필요한 개체가 로그인한 스키마에 의해 소유되지 않으면 표시되지 않기 때문입니다.

패키지 내의 기능과 Proc를 알고 싶다면 다음과 같이 시도해 보십시오.

select * from all_source
 where type = 'PACKAGE'
   and (upper(text) like '%FUNCTION%' or upper(text) like '%PROCEDURE%')
   and owner != 'SYS';

마지막 행은 모든 sys stuff(DBMS_et al)가 반환되지 않도록 합니다.사용자 고유의 스키마만 필요한 경우 user_source에서 사용할 수 있습니다.

특정 테이블을 사용하는 모든 절차를 찾다가 이 질문에 도달했습니다.

Oracle SQL Developer는 이 기능을 제공합니다.https://www.thatjeffsmith.com/archive/2012/09/search-and-browse-database-objects-with-oracle-sql-developer/

[View] 메뉴에서 [Find DB Object]를 선택합니다.DB 연결을 선택합니다.테이블의 이름을 입력합니다.개체 유형에는 함수, 절차 및 패키지만 보관합니다.코드 섹션에서 모든 소스 라인을 선택합니다.

여기에 이미지 설명 입력

ALL_SOURCE는 현재 사용자가 액세스할 수 있는 저장된 개체의 텍스트 소스를 나타냅니다.

여기 해결책 중 하나가 있습니다.

select * from ALL_SOURCE where text like '%some string%';

Oracle 11g에서는 데이터베이스 전체 또는 아래의 절차에서 텍스트를 검색하려면 다음 쿼리를 사용할 수 있습니다.

user_source WHERE UPER(텍스트)에서 '%YOUR SEGE%'와 같은 *를 선택합니다.

언급URL : https://stackoverflow.com/questions/853547/sql-to-search-objects-including-stored-procedures-in-oracle

반응형