티스토리 뷰
◈ & 기호 이용하기
◈ 편집기 및 SQL*Plus 공통 설정 지정하기
◈ 프로시져 혹은 함수등의 소스 뽑아내기
◈ 오류 내역 출력
◈ 숫자 출력 범위 늘리기
◈ 쿼리 결과를 셸 스크립트로 자동 저장하기
◈ 쿼리 수행 시간 알아내기
◈ DBMS_OUTPUT.* 으로 출력되는 양 조절
1. 첫번째 방법
SELECT 'You '||Chr(38)||' Me' FROM DUAL;
2. 두번째 방법
SET DEFINE OFF
SELECT 'You & me' FROM DUAL;
SELECT 'You '||Chr(38)||' Me' FROM DUAL;
2. 두번째 방법
SET DEFINE OFF
SELECT 'You & me' FROM DUAL;
◈ 편집기 및 SQL*Plus 공통 설정 지정하기
$ORACLE_HOME/sqlplus/admin/glogin.sql에 SQL*Plus 실행시 항상 지정되는 전체 설정을 할 수 있다.
여기서 "ed" 명령으로 실행되는 에디터는 다음 처럼 지정할 수 있다.
DEFINE_EDITOR=gvim.exe
여기서 "ed" 명령으로 실행되는 에디터는 다음 처럼 지정할 수 있다.
DEFINE_EDITOR=gvim.exe
◈ 프로시져 혹은 함수등의 소스 뽑아내기
SET NEWPAGE 0
SET TERMOUT OFF
SET VERIFY OFF
SET SPACE 0
SET PAGESIZE 0
SET FEEDBACK OFF
SET HEADING OFF
SET TRIMSPOOL ON
SET LINESIZE 500
SPOOL procedure_name.sql
SELECT TEXT FROM USER_SOURCE WHERE NAME='프로시져혹은함수이름' ORDER BY LINE;
SPOOL OFF
이렇게 저장된 procedure_name.sql 에서 불필요한 부분을 삭제하한다. 각 줄의 공백은 SET TRIMSPOOL ON 에 의해 제거된다.
VIM 공백 제거 : :%s/ *$//g
그리고 이렇게 생성된 소스 맨 앞에 CREATE OR REPLACE PROCEDURE 등을 붙여서 각 프로시져 등의 생성 스크립트로 사용할 수 있게 된다.
SET TERMOUT OFF
SET VERIFY OFF
SET SPACE 0
SET PAGESIZE 0
SET FEEDBACK OFF
SET HEADING OFF
SET TRIMSPOOL ON
SET LINESIZE 500
SPOOL procedure_name.sql
SELECT TEXT FROM USER_SOURCE WHERE NAME='프로시져혹은함수이름' ORDER BY LINE;
SPOOL OFF
이렇게 저장된 procedure_name.sql 에서 불필요한 부분을 삭제하한다. 각 줄의 공백은 SET TRIMSPOOL ON 에 의해 제거된다.
VIM 공백 제거 : :%s/ *$//g
그리고 이렇게 생성된 소스 맨 앞에 CREATE OR REPLACE PROCEDURE 등을 붙여서 각 프로시져 등의 생성 스크립트로 사용할 수 있게 된다.
◈ 오류 내역 출력
SHOW ERRORS
직전에 발생한 오류 내역 출력
직전에 발생한 오류 내역 출력
◈ 숫자 출력 범위 늘리기
SET NUM 15
숫자를 15자리까지 출력
숫자를 15자리까지 출력
◈ 쿼리 결과를 셸 스크립트로 자동 저장하기
#!/bin/sh
# 오늘 날짜를 셸 변수로 지정
TODAY=`date +"%Y%m%d"`
sqlplus username/password << ENDSQL
-- 아래는 출력시 불필요한 형식 꾸미기가 안들어가게 한다.
SET ECHO OFF
SET NEWPAGE 0
SET SPACE 0
SET PAGESIZE 0
SET FEEDBACK OFF
SET HEADING OFF
SET TRIMSPOOL ON
SPOOL 저장할파일_${TODAY}_ORIG
SELECT COL1 || '|' || COL2 || '|' || COL3 -- 실행할 쿼리
FROM MYTABLE;
SPOOL OFF
QUIT
ENDSQL
# 처음과 마지막 쿼리 잔재 제거. 일단 스풀을 실행해보고나서 파일 위,아래에 추가되는
# 불필요한 줄수를 알아본다. (여기서는 위에 2줄과 맨 아래 1줄)
sed -e "1,2d" -e "$d" 저장할파일_${TODAY}_ORIG > 저장할파일_${TODAY}
# 최종적으로 "저장할파일_${TODAY}"만 남겨둔다
rm 저장할파일_${TODAY}_ORIG
위와 같은 내용으로 셸 스크립트를 만들면 SQL*Plus 로 쿼리 결과를 특정한 형식(여기서는 각 컬럼을 세로 바(|)로 나눈 형식)으로 뽑아낼 수 있다.
그리고 이 경우 셸 환경 변수 값을 TODAY 처럼 SQL 쿼리 문장에 삽입하는 것이 가능하다.
# 오늘 날짜를 셸 변수로 지정
TODAY=`date +"%Y%m%d"`
sqlplus username/password << ENDSQL
-- 아래는 출력시 불필요한 형식 꾸미기가 안들어가게 한다.
SET ECHO OFF
SET NEWPAGE 0
SET SPACE 0
SET PAGESIZE 0
SET FEEDBACK OFF
SET HEADING OFF
SET TRIMSPOOL ON
SPOOL 저장할파일_${TODAY}_ORIG
SELECT COL1 || '|' || COL2 || '|' || COL3 -- 실행할 쿼리
FROM MYTABLE;
SPOOL OFF
QUIT
ENDSQL
# 처음과 마지막 쿼리 잔재 제거. 일단 스풀을 실행해보고나서 파일 위,아래에 추가되는
# 불필요한 줄수를 알아본다. (여기서는 위에 2줄과 맨 아래 1줄)
sed -e "1,2d" -e "$d" 저장할파일_${TODAY}_ORIG > 저장할파일_${TODAY}
# 최종적으로 "저장할파일_${TODAY}"만 남겨둔다
rm 저장할파일_${TODAY}_ORIG
위와 같은 내용으로 셸 스크립트를 만들면 SQL*Plus 로 쿼리 결과를 특정한 형식(여기서는 각 컬럼을 세로 바(|)로 나눈 형식)으로 뽑아낼 수 있다.
그리고 이 경우 셸 환경 변수 값을 TODAY 처럼 SQL 쿼리 문장에 삽입하는 것이 가능하다.
◈ 쿼리 수행 시간 알아내기
SET TIMING ON
이렇게 설정하고 쿼리를 날리면 쿼리 수행시간도 함께 출력된다.
이렇게 설정하고 쿼리를 날리면 쿼리 수행시간도 함께 출력된다.
◈ DBMS_OUTPUT.* 으로 출력되는 양 조절
SET SERVEROUTPUT ON SIZE 4000;
Execute DBMS_OUTPUT.PUT_LINE(SYSDATE)
Execute DBMS_OUTPUT.PUT_LINE(SYSDATE)
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Heap
- Guava
- Oracle
- svn
- nodejs
- OOP
- spring
- SBM
- bash
- spring boot
- Kubernetes
- Jose
- monitoring
- jboss
- Dependency
- zookeeper
- install
- log4j
- EMV
- Tomcat
- ssh
- docker
- Java
- Maven
- dump
- JSF
- bouncycastle
- SMPP
- ubuntu
- Shell
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함