공부 이야기/ORACLE
-
Oracle 23c 설치하기공부 이야기/ORACLE 2024. 4. 29. 10:33
1. 이왕 설치하는거 최신 버전을 설치해보자* window에 docker, bash가 다운로드 상태이어야 함2. docker로 이미지 가져오기docker pull container-registry.oracle.com/database/free:latest3. docker 이미지를 실행하기docker run -d --name ora23 container-registry.oracle.com/database/free* ora_container 대신 다른 이름 써도 됨4. 부팅 로그 확인하기docker logs --follow ora23Starting Oracle Net Listener. Oracle Net Listener started. Starting Oracle Database instance FREE. O..
-
Oracle Update 처리 과정 및 성능 튜닝공부 이야기/ORACLE 2024. 4. 27. 16:23
1. 데이터가 변경되는 경우 undo log, redo log에 변경 사항을 각각 기록한다.2. 대용량 데이터를 변경하는 경우, undo space, tablespace, archive file이 full 차는 경우, data type이 맞지 않는 등의 이유로 장애가 발생할 수 있다.3. 수행 시간만큼 롤백에 소요되는 시간이 오래 걸릴 수 있고 데이터 정합성이 맞지 않는 심각한 오류가 발생할 수 있다.4. Update 처리 성능을 높이기 위해서 다음과 같은 방법이 있다.(1) 힌트 : /*+ enable_parallel_dml parallel(6) */ : 병렬 처리를 유도- 예시UPDATE /*+ enable_parallel_dml parallel(6) */ SALESSET SALARY * 1.1WH..
-
Oracle이 SQL을 처리하는 과정(조회-SELECT)공부 이야기/ORACLE 2024. 4. 27. 15:08
시작은 서버 프로그램부터.1. Oracle 서버 메모리에 실행중인 Listener 프로세스가 connection을 accept 한다.2. MTS(connection pool 기반) 혹은 Dedicated Server에서 프로세스를 할당하고 SQL 구문을 처리하기 시작한다.3. 쿼리가 캐싱되어 있지 않은 경우 -> 4~6 실행- SQL 쿼리 캐싱은 소프트 파싱이라고 하며, Shared Pool > Library Cache 에서 확인할 수 있다.4. SQL Parser가 Syntax를 해석- 기본적으로 Library Cache 영역에서 수행하지만 더 큰 메모리를 할당하거나 최적화 작업은 Reserved Pool, Large Pool 에서 진행한다.예약 풀(Reserved Pool): 공유 풀의 일부로, 큰 ..
-
Oracle Listener공부 이야기/ORACLE 2024. 4. 25. 11:35
1. 오라클 서버 메모리에는 Listener 프로세스가 있다.2. 사용자(서버 프로그램)로부터 connection accept 기능을 담당한다.3. 하나의 프로세스만 실행되며 connection만 담당하고 그 다음은 다음 두 프로세스가 담당한다.4. Dedicated Server : 각 connection별로 process가 할당되는 구조5. Multi-Thread Server : connection pool로 관리하는 구조6. 메모리 공간 효율성을 위해서 MTS가 사용됐지만 최근 들어서는 메모리 가격이 낮아지고 성능이 좋아져서 Dedicated Server를 사용한다고 한다.7. 데이터베이스만큼은 안정성을 추구해야하기 때문이다.8. MTS는 하나의 프로세스를 여럿이서 나눠 사용하는 구조인데, 한 곳에서..
-
Oracle Redo, Undo log file공부 이야기/ORACLE 2024. 4. 25. 11:27
1. 데이터의 변경이 발생했을 때 변경 전의 데이터는 Undo log file, 변경 후의 데이터는 Redo log file에 저장한다.2. Undo log file은 rollback을 할 때 필요하고 Redo log file은 장애 복구시 데이터 영속성을 보장하기 위해 사용한다.3. Redo는 데이터의 변경이 발생할 때 LGWR 백그라운드 프로세서가 수행한다.4. 데이터 파일을 관리하는 DBWR 프로세서와는 별개로 동작한다.5. 서버 메모리에 있는 Redo log buffer에 데이터를 저장한 후, 디스크에 있는 Redo log file에 기록을 한다.6. Redo log file은 overwrite가 발생할 수 있다.7. 버전별로 기록하기 위해 Archive file이 있다. Archive mode로..
-
Oracle RAC(Oracle Real Application Clusters)에 대해공부 이야기/ORACLE 2024. 4. 25. 08:50
1. Cluster File System이라고 불리는 datafile, logfile (undo, redo)가 저장된 디스크 스토리지(Shared Storage)를 여러 대의 서버에서 함께 공유하는 구조2. 각 서버를 node라고 했을 때, node끼리 interconnect를 한다.3. 각 노드는 고유의 data buffer cache를 가지는데 interconnect를 하면서 cache data를 공유할 수 있고 이를 cache fusion이라고 부른다.* buffer cache : Disk I/O에서 가져온 데이터 중 일부를 서버 메모리에 올려놓는 것4. 사용자(서버 프로그램)에서 데이터를 fetch할 때, Disk I/O보다 interconnect를 이용해서 옆 노드의 buffer cache에 ..
-
Oracle과 MySQL에서 merge 하는 방법공부 이야기/ORACLE 2024. 2. 13. 10:22
merge란 insert와 update를 동시에 실행할 수 있는 방법으로 기본적으로 insert를 실행하되 기존에 키가 존재한다면 update를 실행하는 방식이다. 먼저 oracle MERGE INTO target_table USING source_table ON (condition) WHEN MATCHED THEN UPDATE SET column1 = value1, column2 = value2, ... WHEN NOT MATCHED THEN INSERT (column1, column2, ...) VALUES (value1, value2, ...); join이 필요한 경우 MERGE INTO target_table t USING source_table s ON (t.id = s.id) WHEN MATC..
-
[Oracle] PGA 사용자별 할당 메모리 영역공부 이야기/ORACLE 2022. 12. 12. 20:35
1. 모든 사용자가 공유 가능한 SGA 영역과 다르게 사용자별로 할당된 개별 영역2. 구조- 정렬 공간 : Order By, Group By와 같은 정렬 연산 또는 해쉬 테이블을 생성하는데 사용되는 임시 메모리 영역- 세션 정보 : 사용자별 세션 정보를 저장하고 있는 영역- 커서 상태 정보 : SQL의 파싱 정보를 저장하고 있는 주소를 저장 (공유 풀 - 라이브러리 캐시랑 다름)- 변수 저장 공간 : 바인드 변수의 값을 저장하고 있는 영역