반응형

Oracle 로고

이번 글에서는 오라클(Oracle)에서 프로시저 내에 어떤 특정 테이블을 검색할 상황이 생겼었다. 그 전에, MS-SQL이나 Tibero에서도 프로시저 검색을 많이 했었는데, 이번에는 오라클(Oracle)에서 프로시저(Procedure) 내용 조회하는 방법에 대해 글을 기록한다.


프로시저를 검색하기 전에 테이블에 대한 내용들을 알아야 한다.

 

1. USER_OBJECTS

USER_OBJECTS 테이블은 해당 DB에 모든 오브젝트의 목록들이 들어 있다. 즉, OBJECT 이름은 무엇이며, 이 TYPE은 뭐다 라는 것을 알 수 있다.

그래서, 아래의 쿼리를 보자.

 

SELECT DISTINCT OBJECT_TYPE
  FROM USER_OBJECTS

 

위의 쿼리를 실행하면, USER_OBJECTS 테이블에 어떤 OBJECT_TYPE이 있는지를 확인할 수 있다. 여기서, USER_OBJECTS 테이블의 OBJECT_NAME과 조인을 하여 관련 데이터를 가져갈 수 있다.

 

2. USER_PROCEDURES

USER_PROCEDURES 테이블은 해당 DB에 존재하는 PROCEDURE, FUNCTION, PACKAGE, TRIGGER 관련 데이터가 저장되어 있다. 즉, OBJECT 이름은 무엇이며, 이 TYPE은 뭐다 라는 것을 알 수 있다.

그래서, 아래의 쿼리를 보자.

SELECT DISTINCT OBJECT_TYPE
  FROM USER_PROCEDURES

위의 쿼리를 실행하면 해당 OBJECT_TYPE들이 저장되어 있는 것을 볼 수 있다.

 

3. USER_SOURCE

USER_SOURCE 테이블은 DB 내에 있는 PROCEDURE, FUNCTION, TRIGGER 등의 오브젝트의 소스 코드가 들어 있는 테이블이다. 그래서, 위의 USER_OBJECTS 테이블과 USER_PROCEDURES 테이블들과 조인을 걸어 소스들을 검색하여 해당 프로시저에 특정한 문자를 검색하는 메인 테이블이라고 할 수 있다.

 

프로시저 내에 내용 검색

프로시저 내에서 내용 검색하는 쿼리는 아래와 같다.

SELECT *
  FROM USER_SOURCE
 WHERE TYPE = 'PROCEDURE'
   AND TEXT LIKE '%특정문자%'

 

단순하게 위의 설명에서 나온 것처럼, USER_SOURCE 테이블에서 특정 문자를 넣어서 검색하면 어떤 프로시저에서 특정 문자를 사용했는지를 알 수 있다.


 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기