1-1 Oracle 데이터베이스의 기본적인 동작과 이해
Oracle은 데이터베이스를 작성하고 이용하기 위한 소프트웨어이다. 이런 소프트웨어를 Database Management System (DBMS)라고 부른다. 대표적인 DBMS로는 Microsoft SQL Server, IBM Db2, MySQL, PostgreSQL 등이 존재한다.
DBMS의 이점
- 대량의 데이터를 관리할 수 있음
- 데이터를 복수의 이용자가 공유하고, 동시에 이용할 수 있음
- 데이터를 고속으로 참조, 변경할 수 있고 퍼포먼스가 뛰어남
- 데이터 정합성을 유지하기 위해 여러 기능이 존재함 (데이터형식, 트랜잭션, 정합성제약 등)
- 데이터가 파손하거나, 장애가 발생한 경우에 빠르게 복구 가능 (가용성)
- 유저마다 액세스 가능한 데이터나 실행 가능한 조작이 정해져 있음 (시큐리티)
RDBMS란
테이블 형식으로 데이터를 관리하는 방법이다. 이를 관계형 데이터베이스(Relational DBMS: RDBMS)라고 부르며, 오라클도 RDBMS의 하나이다. RDBMS를 조작하기 위한 언어로, SQL이라는 언어를 사용한다. SQL은 ANSI나 ISO 표준규격이 정해져 있지만, 각 RDBMS 제품마다 약간 다른 문법도 존재한다.
SQL 커맨드 분류
분류 | 커맨드 | 설명 |
데이터 검색 | SELECT | 테이블에 격납된 행의 참조(검색) |
데이터 조작언어 (DML: Data Manipulation Language) |
INSERT | 테이블에 행 추가 (삽입) |
UPDATE | 테이블의 행을 변경 | |
DELETE | 테이블의 행을 삭제 | |
데이터 정의어 (DDL: Data Definition Language) |
CREATE | 오브젝트 작성 |
DROP | 오브젝트 삭제 | |
ALTER | 오브젝트 정의변경 | |
TRUNCATE | 테이블에 격납된 모든 행을 일괄삭제 | |
트랜잭션 제어어 (TCL: Transaction Control Language) |
COMMIT | 트랜잭션을 확정 |
ROLLBACK | 트랜잭션을 삭제 | |
데이터 제어어 (DCL: Data Control Language) |
GRANT | 권한 부여 |
REVOKE | 권한 박탈 |
트랜잭션: Oracle로 실행되는 모든 데이터 처리는 트랜잭션으로써 실행되는데, 하나의 트랜잭션 단위에 여러 DML를 수행할 수 있다. 트랜잭션의 의미는 "Oracle로 실행되는 데이터의 변경"을 일컫는다고 이해하면 된다.
SQL 실행: 서버 프로세스가 주도
Oracle 접속방법과 접속장소 데이터베이스 지정
접속방법 | 설명 | 접속장조 Oracle 데이터베이스 지정 |
리모트 접속 | 네트워크를 통해 Oracle 데이터베이스에 접속 | 데이터베이스 서비스명 |
로컬 접속 | 네트워크를 통하지 않고 접속, 동일 기기 안의 접속일 때만 사용 가능함 | 인스턴스 SID |
로컬 접속
오라클 데이터베이스 셋업 순서
1. Oracle 소프트웨어 설치하기. OUI (Oracle Universal Installer)를 이용한다. 이 때, ORACLE_HOME에는 Oracle의 동작에 필요한 프로그램 등 여러 파일이 저장된다.
2. Oracle 데이터베이스 작성하기. DBCA (Database Configuration Assistant)라는 툴을 이용한다.
3. Oracle Net Services 구성하기. 리스너 셋업을 포함해 네트워크 환경에서 사용할 수 있는 환경을 설정한다.
4. 어플리케이션용 유저를 작성해 권한을 부여하기. Oracle 데이터베이스를 작성하면, SYS유저나 SYSTEM 유저 등의 관리용 유저가 사전에 작성된다. 우선은, 이 유저로 데이터베이스에 로그인하여 어플리케이션용 유저를 작성하고, 필요한 최소한의 권한을 부여한다.
5. 테이블을 만들고 데이터를 읽고 쓰기
(소프트웨어 설치 - 데이터베이스 작성 - 네트워크 환경설정 - 유저 설정 - 테이블 작성, 데이터 생성 후 운용)
ORACLE_HOME과 데이터베이스
- 하나의 ORACLE_HOME에 여러 릴리스의 소프트웨어를 설치하는 것은 불가능하다. 동일 릴리스의 소프트웨어를 설치하는 것은 가능하다.
- 동일 데이터베이스 서버에 여러 ORACLE_HOME를 작성할 수 있다.
1-2 Oracle 데이터베이스의 내부구조와 인스턴스
SGA
컴포넨트 | 설명 |
데이터베이스 버퍼 캐시 | 데이터파일로부터 읽어들인 블록을 캐시하는 기능, 갱신완료 블록을 일시적으로 보관하는 기능 (버퍼기능) |
공유 풀 | 해석완료된 SQL이나 데이터 딕셔너리의 정보 등을 캐시하는 기능 |
REDO 로그버퍼 | REDO 로그파일에 쓰기 전에 REDO 데이터를 일시적으로 보관함 |
Java 풀 | Java 언어로 작성된 Stored Procedure의 실행을 위해 사용함 |
라지 풀 | 백업이나 병렬처리 등의 작업영역으로서 사용함 |
주요 백그라운드 프로세스
프로세스 이름 | 설명 |
데이터베이스 라이터 (DBWn) | 데이터베이스 버퍼 캐시 안의 갱신완료 블록을 데이터베이스 파일에 작성 |
로그 라이터 (LGWR) | REDO 로그버퍼의 REDO 데이터(갱신이력정보)를 REDO 로그파일에 작성 |
체크포인트 (CKPT) | DBWn에 대해 데이터베이스 버퍼캐시 안의 갱신완료 블록을 데이터파일에 작성하라는 지시를 내보냄 |
시스템 모니터 (SMON) | 인스턴스가 이상종료할 경우, 다음 인스턴스 기동시에 데이터베이스 파일의 정합성을 복구처리 |
프로세스 모니터 (PMON) | 프로세스가 이상종료할 경우, 그 프로세스가 사용하고 있던 여러 데이터나 리소스를 후처리함 |
관리 모니터 (MMON) | 성능분석 등에 사용되는 각종 통계정보를 정기적으로 수집 |
아카이버 (ARCn) | 로그스위치 발생후, REDO 로그파일의 REDO 데이터를 아카이브 로브파일로서 복사함 |
리스너 등록 프로세스 (LREG) | 인스턴스에 관한 정보를 리스너에 등록 |
초기화 파라미터
각 메모리 영역 사이즈나 각 기능의 ON/OFF, 프로세스의 동작특성 등 인스턴스의 동작특성을 결정하는 파라미터이다. 초기화 파라미터의 설정값은 초기화 파라미터 파일이라는 파일에 기재해 놓는다.
인스턴스와 데이터베이스는 기본적으로 1대1 구조이지만, 가용성을 위한 RAC 구성에서는 하나의 데이터 파일 공유 저장소에 여러 인스턴스를 연결할 수 있다. 데이터파일이 여러 데이터베이스 서버로부터 동시에 액세스할 수 있도록, 공유 저장소 장치에 데이터베이스 파일을 배치한다.
Multi-Tenant Architecture
12c부터 Multi-Tenant Architecture라는 새로운 구조를 도입하였는데, 이것은 여러 데이터베이스를 통합해 관리하기 위한 기술이다. 하나의 멀티 테넌트 콘테이너 데이터베이스 (CDB) 안에 여러 개의 플러거블 데이터베이스 (PDB)를 구성한다. PDB는 종래의 Oracle 데이터베이스에 해당하는 것이다. RAC 구성의 경우, 하나의 CDB에 여러 인스턴스가 대응할 수 있다. 21c부터는 Multi-Tenant Architecture만 서포트되고 있다.
1-3 데이터베이스 저장공간 구조
추가로, 테이블스페이스는 논리적인 개념이다.
제어파일
데이터파일명, REDO 로그파일명 등의 구성정보, 데이터베이스 작성의 타임스탬프, 여러 내부동작에 관련된 관리정보가 제어파일이 기록되어 있다. 제어 파일의 파일명은 CONTROL_FILES 초기화 파라미터에 설정된다.
REDO로그파일
REDO로그파일은, Oracle 데이터베이스의 변경이력을 기록하는 파일이다. 온라인 REDO 로그파일이라고도 불린다. REDO 로그파일에 기록된 데이터베이스의 변경이력을 재실행하는 것을 Roll Forward라고 부른다.
REDO 로그파일은 다음과 같은 상황에 사용된다.
- 인스턴스가 이상종료했을 경우의 장애복구 (인스턴스 리커버리). 인스턴스 리커버리는 다시 데이터베이스에 로그인할 때 REDO 로그파일을 이용하여 미반영된 변경을 적용한다.
- 데이터파일이 파손된 경우의 장애복구 (미디어 리커버리)
ARCHIVELOG모드
미디어 리커버리를 처리하려면, 미리 데이터베이스를 ARCHIVELOG모드로 운용하고 있을 필요가 있다. REDO 데이터를 포함한 아카이브 로그파일(아카이브 REDO 로그파일)이 지정된 디렉토리에 출력된다.
NOARCHIVELOG 상태에서는, 오래된 REDO 데이터가 로그 스위칭으로 인하여 덮어쓰여질 수도 있다.
ARCHIVELOG모드의 구성
- 고속 리커버리 영역을 구성하기: 아카이브 로그파일을 포함하여 리커버리 관련의 파일을 저장하는 공간이다. DB_RECOVERY_FILE_DEST 및 DB_RECOVERY_FILE_DEST_SIZE 초기화 파라미터에 값을 설정한다.
- ARCHIVELOG모드로 변경: 인스턴스를 MOUNT 상태까지 기동하여, ALTER DATABASE ARCHIVELOG를 실행한다.
1-4 Oracle의 메모리 영역과 관련된 내부처리
공유 풀
- 해석 완료된 SQL 정보: 동일한 SQL을 처리할 경우, 공유 풀에 저장되어 있는 해석된 SQL 정보를 사용하여, SQL을 실행하기까지의 시간을 단축할 수 있다.
- 데이터 딕셔너리 정보: Oracle은 여러 처리로 데이터 딕셔너리(데이터 파일)에 반복하여 액세스하므로, 데이터 딕셔너리의 정보를 캐시하여 성능을 향상시킬 수 있다.
PGA (Program Global Area)
PGA는, 특정 Oracle 프로세스 전용의 메모리 영역이다. 각 PGA 영역은 소트처리 등의 프로세스 전용의 작업용 메모리 영역으로 사용된다.
'Oracle > Oracle Architecture' 카테고리의 다른 글
CDBの作成 (0) | 2023.04.01 |
---|---|
マルチテナントアーキテクチャの概要 (0) | 2023.04.01 |
오라클마스터 브론즈(10) 백업, 리커버리 개요와 가용성을 높이는 방법 (0) | 2022.09.15 |
오라클마스터 브론즈(9) 데이터베이스 감시 및 어드바이저 사용 (0) | 2022.09.14 |
오라클마스터 브론즈(8) 스키마 오브젝트 관리 (1) | 2022.09.13 |