본문 바로가기

Database/Oracle20

ORACLE SQL 날짜함수 날짜 함수 오라클에서는 쉽게 날짜를 관리할 수 있도록 여러 가지 함수를 제공합니다. 우리는 일반적으로 날짜에서 숫자를 빼기도 더하기도 날짜끼리 더하기도 빼기도 합니다. 오라클 또한 같은 원리로 날짜 계산을 합니다. 날짜 +- 날짜 = 날짜 날짜 +- 숫자 = 날짜 날짜 += 날짜 = 숫자 SYSDATE 시스템의 현재 날짜와 시간을 알려줍니다. 오라클은 시간을 OS로부터 가져옵니다. 따라서 오라클 DB가 설치된 서버는 OS에서 시간을 함부로 바꾸면 안 됩니다. CURRENT_DATE 세션 설정에 따른 시간입니다. SYSTIMESTAMP 시스템의 현재 날짜와 시간 그리고 밀리세컨드까지 포함합니다. CURRENT_TIMESTAMP 세션 설정에 따른 시간에 밀리세컨드까지 포함합니다. 하지만 출력 결과 연도와 월.. 2021. 11. 26.
[Oracle] Tablespace 우리가 조회하는 모든 데이터들은 Oracle에서 Data file이라는 물리적 파일 형태에 저장하고, 이런 Data file들이 모여서 Tablespace라는 논리적 공간을 형성합니다. Tablespace는 하나의 데이터베이스 안에 가장 큰 논리적 공간으로 상황에 따라 여러 개의 Tablespace로 분리하여 관리되고, Segment라는 논리적 저장공간의 집합이기도 합니다. Tablespace의 종류 Permanent Tablespace - 영구 테이블스페이스는 가장 일반적인 테이블스페이스로 데이터를 축적용도로 사용되는 공간입니다. USERS, SYSAUX, SYSTEM, EXAMPLES가 해당됩니다. Undo, Temporary와는 다르게 고의적으로 삭제하지 않는한 영구적으로 보존되는 객체들을 저장하기.. 2021. 8. 18.
테이블 생성시 추가 속성 1. SEGMENT CREATION IMMEDIATE - 테이블 생성 후 바로 조회가 가능하다. 만약 DEFREAD로 생성한 다면 바로 조회가 불가능하다. 2. PCTFREE - 사용 가능한 공간에서 데이터 행의 갱신을 대비하여 확보해 놓는 블록 값(%) 데이터 블록의 설정한 % 값만큼을 사용 가능한 공간으로 유지하여 각 블록에 있는 행을 갱신한다. 3. PCTUSED - 테이블의 각 데이터 블록에 대해 유지하려는 사용 공간의 최소 백분율이다. 데이터 블록의 사용 영역이 설정한 %값보다 적어야만 새로운 행을 삽입할 수 있다. 4. INITRANS - 하나의 데이터 블록에 지정될 초기 트랜잭션 값이며, 최소 수준의 동시성을 보장하는 옵션이다. 만약 1이 아닌 다른 값으로 설정 시 설정 값만큼 트랜잭션이 동.. 2021. 8. 4.
테이블 및 칼럼 조회 오라클 컬럼 조회 select * from cols : 테이블, 칼럼, 도메인, 등 정보 select * from cols where table_name ='user_table'; : 해당 테이블 칼럼 및 도메인 조회 테이블의 컬럼 코멘트 조회 select * from user_col_comments where table_name= '' 2021. 8. 2.
[Oracle] Cursor 어떤 상황에 CURSOR를 사용할까? DB 프로그래밍을 한다면 커서는 결과 집합의 한 로우에 쉽게 접근할 수 있는 가장 쉬운 방법이다. SQL문 자체는 집합적으로 데이터를 처리하기에 각 ROW에 대한 연산을 하기 위해선 Cursor를 사용하여 쉽게 각 로우에 접근할 수 있다. 커서는 특정 SQL 문장을 처리한 결과 집합을 담고 있는 메모리 영역을 가리키는 포인터 개념이다. 오라클 서버에서는 SQL문을 실행할 때마다 처리를 위한 메모리 공간을 사용합니다. 사용자가 요청하는 데이터를 데이터베이스 버퍼 캐시에서 커서로 복사해온 다음 커서에서 원하는 데이터를 추출하여 후속 작업을 진행합니다. SQL커서는 묵시적 커서와 명시적 커서로 나뉘게 됩니다. 묵시적 커서는 오라클 내부에서 SQL 문장이 실행될 때 자동으로.. 2021. 5. 19.
[ORACLE] PL/SQL PL/SQL정의 오라클에서 제공하는 프로그래밍 언어 SQL과 PL/SQL을 함께 활용함으로 써 효과적인 데이터베이스 접근 가능 절차적인 데이터 처리가 가능 PL/SQL 런타임 구조 PL/SQL이 포함된 블록을 실행하면 오라클 서버 혹은 애플리케이션 서버 메모리에 상주하고 있는 PL/SQL 엔진이 해당 블록을 전달받게 된다. 이후 해당 블록에 있는 SQL 문장들을 Context 변환 과정을 거친 후 오라클 서버 프로세스에 전달되어 SQL 문장을 (Parse -> Bind -> Execute -> Fetch(select한정) )을 거쳐서 쿼리를 수행한 후 리턴합니다. 리턴한 결과를 다시 PL/SQL 엔진에게 전달하고 처리된 결과를 변수에 저장하기 때문에 변수를 선언해야 하고 데이터베이스에서 처리된 결과를 가.. 2021. 5. 16.
[Oracle 12c] Sequence 데이터베이스를 사용할 때 순서가 필요한 많은 양의 데이터가 저장이 되는 경우가 상당히 많습니다. 예를 들어, 고객의 주문번호나 학번들처럼 고유한 번호로 중복되서는 안 되고 연속적인 번호가 필요합니다. 이 경우 시퀀스를 사용하면 간편하게 고유하고 순차적인 번호를 자동으로 받아 처리할 수 있습니다. 정리하자면 시퀀스는 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체입니다. 문법 CREATE SEQUENCE sequence_name [INCREMENT BY n] --시퀀스 번호의 증가 값으로 기본값은 1이다. [START WITH n] -- 시퀀스 시작 번호로 기본값은 1이다. [MAXVALUE n | NOMAXVALUE] -- 생성할 수 있는 시퀀스 최대값이다 [MINXVALUE N | NOM.. 2021. 5. 16.
DBMS_RANDOM 패키지 DBMS_RANDOM패키지를 사용하면 숫자와 문자 랜덤 데이터를 생성할 수 있으며, 테이블 데이터를 랜덤 한 순서로 정렬하여 조회할 수 있다. 1. DBMS_RANDOM.VALUE - 랜덤하게 숫자를 추출하는 함수이다. - DBMS_RANDOM.VALUE( min IN NUMBER, max IN NUMBER)와 같은 문법으로 사용한다. SELECT DBMS_RANDOM.VALUE(1,100) FROM DUAL CONNECT BY LEVEL 2021. 5. 16.
[oracle] db review 데이터베이스를 다루면서 혹은 SQL문을 작성할 때 무의식 적으로 실수하는 경우가 발생했다. 복습을 한번~ 1. Index Suppressing Error는 인덱스를 구성하고 있는 칼럼에 대한 함수의 적용 , 칼럼의 변형, 계산식 등으로 인해 기존의 칼럼이 변형되어 인덱스를 타지 못하는 상태이다. 의식하지 못하는 에러는 묵시적 형변환 시 속도가 느려질 수 있는데, 그 이유는 해당 칼럼에 인덱스가 생성되어 있는 경우 묵시적 형 변환이 생기면 그 인덱스를 사용하지 못하게 됨으로 써 인덱스를 타지 못하는 Index Suppressing Error가 발생하기 때문이다. 2. 집합연산자 사용 시 UNION, INTERSECT, MINUS는 결과를 정렬하여 출력한다. 그렇기에 의도치 않은 성능 저하가 발생할 수 있음.. 2021. 5. 15.
CHAR ? VACHAR? 데이터베이스에서 문자를 저장하는 타입은 두 가지가 존재한다. CHAR와 VACHAR이다. LOB은 구조화되지 않은 대형 데이터를 저장하기 때문에 대량의 문자도 포함하지만 문자를 위한 타입이라고 할 수는 없는 것 같다. 나는 언제 CHAR와 VACHAR를 사용해야 하는지에 대해서 고민을 했고 어떤 차이점이 존재하는지 알아보았다. 1. 저장역역 - VARCHAR는 가변 길이를 가지고 있으므로 필요한 영역은 실제 데이터 크기만큼의 영역을 가지게 된다. VARCHAR를 사용하기에 적합한 상황은 다음과 같은데, 길이가 다양한 칼럼과, 정의된 길이와 실제 데이터 길이에 차리가 있는 칼럼에 적합하다. VARCHAR(10)과 같이 길이를 지정해준다는 것은 사실 LIMIT을 지정해주는 것과 같다. -CHAR는 이와 반대.. 2021. 4. 26.