본문 바로가기
DATABASE/ORACLE

[SPOOL] SQL 스크립트를 출력하는 스풀링

by 허도치 2020. 4. 24.
서론

  Table이나 Procedure, Fuction 등 간혹 백업을 위해서 스크립트를 추출해야 하는 경우가 있는데, 이를 하나씩 조회하고 파일로 저장하다가 귀찮아서 Spool을 이용하여 동적으로 스크립트를 저장할 수 있는 쿼리를 만들어 보았다.

 

 

 

1. 동적 Script 추출 쿼리
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/** 스크립트 실행 결과 출력 **/    
SET FEEDBACK OFF
/** 스크립트 검증 **/
SET VERIFY OFF
/** 스크립트 명령 출력 **/
SET ECHO OFF
/** 조회 결과 출력 **/
SET TERM ON
/** 컬럼명 출력 **/
SET HEADING OFF
 
/** 화면에 표시할 수 있는 문자의 사이즈 **/
SET LONG 999999
/** 페이지 사이즈, 0은 무한 **/
SET PAGESIZE 0
/** 라인당 출력할 수 있는 문자수 **/
SET LINESIZE 32767  
 
/** 변수 선언 **/
DEFINE SAVE_PATH = "C:/Users/Administor"
DEFINE OBJ_OWNER = "SCHEMA"
DEFINE OBJ_NAME = "TABLE, PROCEDURE, FUNCTION 등"
 
 
/** SPOOL 시작 **/
/** .은 문자열 연결, ..은 마침표 **/
SPOOL "&SAVE_PATH/&OBJ_OWNER..&OBJ_NAME..sql" 
 
SELECT T1.TEXT
  FROM DBA_SOURCE T1
 WHERE 1=1
   AND T1.OWNER = '&OBJ_OWNER'
   AND T1.NAME = '&OBJ_NAME'
 ORDER BY T1.LINE ASC
;
 
SPOOL OFF;
/** SPOOL 종료 **/
 
/** 변수 삭제 **/
UNDEFINED OBJ_NAME
UNDEFINED OBJ_OWNER
UNDEFINED SAVE_PATH
 
/** 옵션 초기화 **/
SET LINESIZE 1439
SET PAGESIZE 14
SET LONG 80
 
SET HEADING ON
SET TERM OFF
SET ECHO ON
SET VERIFY ON
SET FEEDBACK ON
cs

 

 

 

마치며

  자주 사용하지는 않지만, 종종 사용할 때 유용하게 쓰일 것이다.

 

 

 

 

댓글