반응형

오라클에서 실행계획을 보는 방법은 여러개 있습니다. sql developer 같은 툴에서도 쉽게 실행 계획을 볼 수도 있습니다. 

하지만 권한 문제나 터미널에서 출력되는 실행계획이 눈에 더 편하게 보이는 이유로 autotrace를 주로 사용합니다. 실행계획은 sql plus에서 autotrace를 set 해주고 쿼리를 실행하면 실행계획이 나옵니다. 아래는 실행계획을 더 편하게 보기 위해서 자주 사용하는 환경설정도 같이 적어 놓았습니다.


set linesize 150

set pagesize 100

col sql_text for a65

col MACHINE FOR a10

col program for a30

col status for a10


set autotrace traceonly explain

-- or

set autotrace traceonly


-- 실행계획을 보고자 하는 쿼리 실행


set autotrace traceonly explain : 쿼리 실행 없이 실행계획만 출력 (당연히 실행에 대한 결과는 출력하지 않는다.)

set autotrace traceonly : 쿼리 실행 후 실행계획 출력 (실행에 대한 결과는 출력하지 않는다.)


set linesize : 라인 당 출력되는 문자열 수 세팅

set pagesize : 페이지 당 출력되는 라인(세로) 세팅

반응형
반응형

4000번 포트로 GraphQL 서버를 시작했는데 [nodemon] app crashed - waiting for file changes before starting... 오류가 발생하였다.

기존의 4000번 포트로 구동중이 서버가 종료가 안되어 충돌이 나고 있었다. PID 확인 후 프로세스를  제거하자.

fuser -n tcp -k 4000 kill pid // 또는 다음 명령어를 사용해도 된다. netstat -ntlp kill pid


반응형
반응형

pip(phthon 2.7버전) 및 virtualenv(가상환경) 설치

sudo apt update sudo apt install python-pip

pip --version


pip install virtualenv

가상환경 구축을 위해서는 패키지 관리 툴인 pip 설치와 virtualenv를 설치 해주셔야 됩니다.

참고를 하셔야 될 내용은 위와 같이 설치 시 파이썬 버전은 2.7버전입니다.


virtualenv을 이용하여 python2.7 가상환경 구축

virtualenv pyvenv2 --python=python2.7
source pyvenv2/bin/activate

python3 가상환경은 python3가 디폴트로 되어 있어 설치가 어렵지 않았으나 python2.7버전 설치가 쉽지 않았습니다. 알고보니 python 뒤에 버전을 명시해주면 손쉽게 설치 할 수 있습니다.

반응형
반응형

오라클 객체 중 시퀀스를 알아보겠습니다. 시퀀스는 순서대로 번호를 만들어줍니다. 예를 들어 게시판 번호를 순차적으로 할당해준다고 합시다. 그렇다면 새로운 게시글을 만들 때 마다 게시판 번호는 시퀀스 객체를 통해서 순서대로 번호를 만들어 줍니다.


시퀀스 생성

CREATE SEQUENCE 시퀀스명 INCREMENT BY 증가 될 숫자 START WITH 시작 숫자 NOMINVALUE | MINVALUE 최솟값   -- NOMINVALUE 디폴트 값은 1, 최솟값 무한대로 설정

NOMAXVALUE | MAXVALUE 최대값   -- NOMAXVALUE 디폴트 값은 1028-1, 최댓값 무한대로 설정

NOCYCLE | CYCLE                -- CYCLE: 최댓값 또는 최솟값의 도달 시 최솟값 또는 최댓값 부터 시작

NOCACHE | CACHE                -- CACHE: 메모리에 시퀀스 값의 할당 여부

;


시퀀스 생성 예제

CREATE SEQUENCE BOARD_SEQ INCREMENT BY 1 START WITH 1 MINVALUE 1

MAXVALUE 99999

NOCYCLE

NOCACHE

;

BOARD_SEQ라는 시퀀스를 생성 하였다. 증가 값은 1, 시작은 1 최댓값은 99999 까지 시퀀스 생성이 가능하다. NOCYCLE, NOCACHE조건을 통해서 최댓값 도달 시 반복되는 것도 없으며 시퀀스 값을 메모리에 할당 해놓지 않는다.


시퀀스를 생성하고 나서 시퀀스 사용방법은 다음과 같다.

시퀀스 번호 추출 및 확인

BOARD_SEQ.NEXTVAL        -- 시퀀스 번호 추출

BOARD_SEQ.CURRVAL        -- 현재 시퀀스 번호 확인

시퀀스에 NEXTVAL을 호출 하면 다음 시퀀스 번호를 리턴하며 CURRVAL을 사용하면 현재 어디까지 시퀀스를 할당 했는지 알 수 있다.


시퀀스 삭제

DROP BOARD_SEQ

시퀀스 삭제는 DROP문을 사용한다.


이렇게 시퀀스를 사용하면 순차로 할당 되는 번호를 손쉽게 사용할 수 있다.

반응형
반응형

Synonym(시노님)의 영어적 의미로는 동의어라는 뜻을 갖고 있다. 오라클에서 시노님이란 동의어의 의미를 갖고 있는데, 오라클의 객체들에게도 본명이 아닌 다른 이름을 붙여 그 이름을 사용 할 수 있다. 보통은 테이블에 시노님을 붙여서 많이 사용하는데 테이블 이외에도 시노님 생성한 객체들은 아래와 같다.


시노님 생성이 가능한 오라클 객체

- 테이블, 뷰, 프로시저, 함수, 패키지, 시퀀스


테이블에 다른이름(시노님)을 붙인다는 이야기는 어떤 이야기일까요? SHOP_USER_SKT 라는 테이블이 있다. SHOP_USER_SKT라는 원본테이블에 SHOP_USER라는 시노님을 주면 SHOP_USER_SKT 대신 SHOP_USER으로 테이블을 사용 할 수 있다


시노님 생성

CREATE OR REPLACE [PUBLIC] SYNONYM 시노님 FOR 원본객체;

PUBLIC 생략 시 PRIVATE로 생성이 되며 PRIVATE는 특정 사용자만 사용이 가능하며 다른 사용자가 사용할 시에는 권한을 부여해야 한다. PUBLIC은 모든 사용자가 사용이 가능하다.

CREATE OR REPLACE SYNONM TELCO_PAY FOR TELCO_PAY_201903; GRANT SELECT ON TELCO_PAY TO JUN;

월마다 생성이 되는(2019년 3월 작업테이블) TELCO_PAY_201903 테이블이 있다. 원본 테이블 TELCO_PAY_201903에 TELCO_PAY라는 시노님을 줘서 TELCO_PAY라는 이름으로 작업을 할 수 있다.


공부를 하다 보면 시노님은 다른 사용자가 사용하게끔 하기 위해서 또는 보안상 사용한다 라는 내용이 많다. 하지만 실제 실무에서 사용한 시노님은 월마다 생성되는 작업 테이블이 있다. PL/SQL 작성 시 함수 내에서 월마다 생성되는 테이블(또는 여러개의 통신사별 테이블)의 시노님을 윗줄에 주고 나면 아래 테이블에는 똑같은 이름(시노님)으로 함수를 작성 할 수 있다. 함수를 깔끔하게 작성 할 수 있다.


PL/SQL - 함수 내 에서 시노님 즉시 생성

EXCUTE IMMEDIATE 'CREATE OR REPLACE SYNONM TELCO_PAY FOR TELCO_PAY_'||CLOSE_MONTH;


master라는 계정에서 시노님을 생성을 했다. JUN이라는 계정에서 TELCO_PAY계정을 사용하고 싶다면 GRANT를 통해서 권한을 주고 master.TELCO_PAY 라는 소유자명을 명시해주고 사용하자. 


PUBLIC을 명시하여 시노님을 생성하면 PUBLIC으로 생성이 된다. 생성 후에 조회를 위해서 SELECT 권한을 PUBLIC에 부여하면 조회가 가능하다.

CREATE OR REPLACE PUBLIC SYNONM FOR TELCO_PAY_201903;

GRANT SELECT ON TELCO_PAY TO PUBLIC;

PUBLIC 권한을 주면 JUN은 소유자명 명시 없이 시노님인 TELCO_PAY만 명시하여 작업을 할 수 있다.


시노님 삭제

DROP SYNONYM TELCO_PAY;           -- PRIVATE 시노님 삭제

DROP PUBLIC SYNONYM TELCO_PAY;    -- PUBLIC 시노님 삭제

시노님 삭제는 DROP을 사용하며 PUBLIC 시노님을 삭제할 시에는 PUBLIC을 명시 해야줘야 한다.

반응형

+ Recent posts