이번 글에서는 오라클(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 테이블에서 특정 문자를 넣어서 검색하면 어떤 프로시저에서 특정 문자를 사용했는지를 알 수 있다.
'IT > Oracle' 카테고리의 다른 글
[Oracle] 오라클(Oracle) 시퀀스(SEQUENCE) 생성하는 방법 (0) | 2023.04.27 |
---|---|
[Oracle] 오라클(Oracle) 테이블 생성 할 때의 추가 속성(SEGMENT CREATION IMMEDIATE/DEFERRED) (0) | 2023.04.26 |
[Oracle] 오라클(Oracle) 스케쥴러 잡(SCHEDULER_JOB)에 대한 정리 (0) | 2023.04.20 |
[Oracle] 오라클(Oracle) DB LINK 사용하는 방법 (0) | 2023.04.19 |
[Oracle] 오라클(Oracle) ORA-01654: unable to extend index TEST.PK_TEST001 by 1024 in tablespace TEST 해결하는 방법 (0) | 2023.04.05 |
[Oracle] 오라클(Oracle) DBA_DATA_FILES 이란? (0) | 2023.04.05 |
[Oracle] 오라클(Oracle) DBA_DATA_FILES 테이블 또는 뷰가 존재하지 않습니다. 해결하는 방법 (0) | 2023.04.05 |
[Oracle] 오라클(Oracle) WITH 절 사용하는 방법 및 예제 (0) | 2023.04.04 |
최근댓글