<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://dbstudy.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Oracle_%EC%9E%85%EB%AC%B8</id>
	<title>Oracle 입문 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://dbstudy.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Oracle_%EC%9E%85%EB%AC%B8"/>
	<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=Oracle_%EC%9E%85%EB%AC%B8&amp;action=history"/>
	<updated>2026-11-04T09:16:41Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=Oracle_%EC%9E%85%EB%AC%B8&amp;diff=2053&amp;oldid=prev</id>
		<title>Dbstudy: /* 9. 기동과 종료 */</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=Oracle_%EC%9E%85%EB%AC%B8&amp;diff=2053&amp;oldid=prev"/>
		<updated>2026-11-04T06:55:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;9. 기동과 종료&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ko&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 이전 판&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2026년 11월 4일 (수) 15:55 판&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l358&quot;&gt;358번째 줄:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;358번째 줄:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;$&gt; sqlplus / as sysdba;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- SYSDBA로&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;-- SYSDBA로&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;STARTUP;                         -- NOMOUNT → MOUNT → OPEN&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;STARTUP;                         -- NOMOUNT → MOUNT → OPEN&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
	<entry>
		<id>https://dbstudy.co.kr/w/index.php?title=Oracle_%EC%9E%85%EB%AC%B8&amp;diff=2049&amp;oldid=prev</id>
		<title>Dbstudy: Oracle 초보 입문자용 문서 생성</title>
		<link rel="alternate" type="text/html" href="https://dbstudy.co.kr/w/index.php?title=Oracle_%EC%9E%85%EB%AC%B8&amp;diff=2049&amp;oldid=prev"/>
		<updated>2026-11-04T06:51:40Z</updated>

		<summary type="html">&lt;p&gt;Oracle 초보 입문자용 문서 생성&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{타이틀 주제&lt;br /&gt;
|부제 = ORACLE DATABASE · FOUNDATION COURSE&lt;br /&gt;
|제목 = Oracle 입문&lt;br /&gt;
|설명 = 엔터프라이즈 데이터베이스의 표준 — 인스턴스와 데이터베이스 구조부터 SQL, 트랜잭션, 사용자·권한, 백업·복구까지&amp;lt;br/&amp;gt;처음 Oracle을 배우는 사람과 다른 DBMS 경험자를 위한 단계별 가이드&lt;br /&gt;
|색상1 = #3d0b06&lt;br /&gt;
|색상2 = #8a2a1c&lt;br /&gt;
|색상3 = #c74634&lt;br /&gt;
|배지1 = 난이도 · 입문&lt;br /&gt;
|배지2 = 학습기간 · 10주&lt;br /&gt;
|배지3 = 기준 · Oracle 19c / 23ai&lt;br /&gt;
|배지4 = 연계 · SQLD / OCP&lt;br /&gt;
}}&lt;br /&gt;
{{단계양식&lt;br /&gt;
|제목1 = 개념 · 설치&lt;br /&gt;
|설명1 = Oracle의 특징, Free 버전 설치, SQL*Plus 접속&lt;br /&gt;
|제목2 = 아키텍처&lt;br /&gt;
|설명2 = 인스턴스(SGA·PGA·프로세스), 데이터베이스 파일, CDB/PDB&lt;br /&gt;
|제목3 = SQL · 트랜잭션&lt;br /&gt;
|설명3 = 데이터 타입, DDL·DML, Undo·Redo, 읽기 일관성&lt;br /&gt;
|제목4 = 운영 · 관리&lt;br /&gt;
|설명4 = 사용자·권한, 기동·종료, 백업·복구, 모니터링&lt;br /&gt;
}}&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== 1. Oracle Database란 ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Oracle Database&amp;#039;&amp;#039;&amp;#039;는 1979년 최초의 상용 SQL 기반 RDBMS로 출시된 이후, 금융·통신·공공·제조 등 &amp;#039;&amp;#039;&amp;#039;대규모 기간 시스템&amp;#039;&amp;#039;&amp;#039;에서 가장 널리 쓰이는 관계형 데이터베이스다. 안정성, 동시성 처리, 고가용성(RAC·Data Guard), 풍부한 관리 도구가 강점이다.&lt;br /&gt;
&lt;br /&gt;
{{요점|제목=한 줄 정의|내용=대용량·고동시성 업무를 위한 &amp;#039;&amp;#039;&amp;#039;엔터프라이즈 표준 RDBMS&amp;#039;&amp;#039;&amp;#039; — 강력한 &amp;#039;&amp;#039;&amp;#039;읽기 일관성&amp;#039;&amp;#039;&amp;#039;과 &amp;#039;&amp;#039;&amp;#039;복구 능력&amp;#039;&amp;#039;&amp;#039;이 핵심}}&lt;br /&gt;
&lt;br /&gt;
=== 1.1 주요 특징 ===&lt;br /&gt;
{{카드묶음|최소너비=230px|&lt;br /&gt;
{{학습카드|번호=CONSISTENCY|제목=읽기 일관성|설명=Undo를 이용해 읽기는 쓰기를 막지 않고, 쓰기도 읽기를 막지 않는다. 조회는 항상 시작 시점 기준의 일관된 데이터를 본다.}}&lt;br /&gt;
{{학습카드|번호=AVAILABILITY|제목=고가용성|설명=RAC(여러 서버가 하나의 DB를 공유), Data Guard(원격 대기 DB)로 장애에도 서비스를 유지한다.}}&lt;br /&gt;
{{학습카드|번호=RECOVERY|제목=강력한 복구|설명=Redo·Archive Log와 RMAN으로 특정 시점 복구, Flashback으로 실수 데이터 되돌리기가 가능하다.}}&lt;br /&gt;
{{학습카드|번호=MULTITENANT|제목=멀티테넌트|설명=하나의 컨테이너 DB(CDB) 안에 여러 플러거블 DB(PDB)를 두고 독립적으로 관리한다 (12c+).}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 1.2 에디션과 버전 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! 내용&lt;br /&gt;
|-&lt;br /&gt;
| Enterprise Edition (EE) || 모든 기능 + 옵션(Partitioning, RAC, Diagnostics/Tuning Pack 등은 별도 라이선스)&lt;br /&gt;
|-&lt;br /&gt;
| Standard Edition 2 (SE2) || 중소 규모용, 소켓 수 제한, 일부 기능 미지원&lt;br /&gt;
|-&lt;br /&gt;
| Free (구 Express Edition) || 학습·개발용 무료 버전 (CPU·메모리·저장 용량 제한)&lt;br /&gt;
|-&lt;br /&gt;
| 19c || 장기 지원(Long Term Release) 버전 — 현재 운영 환경에서 가장 많이 쓰인다&lt;br /&gt;
|-&lt;br /&gt;
| 23ai || 최신 장기 지원 버전 — JSON 관계형 이중성, 벡터 검색, &amp;lt;code&amp;gt;BOOLEAN&amp;lt;/code&amp;gt; 타입, &amp;lt;code&amp;gt;SELECT&amp;lt;/code&amp;gt; without &amp;lt;code&amp;gt;FROM DUAL&amp;lt;/code&amp;gt; 등&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 1.3 다른 DBMS 경험자를 위한 비교 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! Oracle !! [[PostgreSQL 입문|PostgreSQL]] !! [[MySQL 입문|MySQL]]&lt;br /&gt;
|-&lt;br /&gt;
| 스키마 || &amp;#039;&amp;#039;&amp;#039;사용자 = 스키마&amp;#039;&amp;#039;&amp;#039; || DB 안의 별도 객체 || 데이터베이스 = 스키마&lt;br /&gt;
|-&lt;br /&gt;
| 테이블 구조 (기본) || 힙 테이블 || 힙 테이블 || PK 클러스터드 (InnoDB)&lt;br /&gt;
|-&lt;br /&gt;
| MVCC 이전 버전 || Undo 테이블스페이스 || 테이블 안 (VACUUM) || Undo 로그&lt;br /&gt;
|-&lt;br /&gt;
| 기본 격리 수준 || READ COMMITTED || READ COMMITTED || REPEATABLE READ&lt;br /&gt;
|-&lt;br /&gt;
| 빈 문자열 || &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;#039;&amp;#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; = NULL || NULL 아님 || NULL 아님&lt;br /&gt;
|-&lt;br /&gt;
| DDL || 자동 커밋 || 롤백 가능 || 자동 커밋&lt;br /&gt;
|-&lt;br /&gt;
| 페이징 || &amp;lt;code&amp;gt;FETCH FIRST n ROWS ONLY&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ROWNUM&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;LIMIT&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;LIMIT&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 2. 설치와 접속 ==&lt;br /&gt;
=== 2.1 가장 빠른 방법 — Oracle Database Free (Docker) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
docker run -d --name oracle-lab \&lt;br /&gt;
  -p 1521:1521 \&lt;br /&gt;
  -e ORACLE_PWD=Lab12345 \&lt;br /&gt;
  -v oradata:/opt/oracle/oradata \&lt;br /&gt;
  container-registry.oracle.com/database/free:latest&lt;br /&gt;
&lt;br /&gt;
docker logs -f oracle-lab          # &amp;quot;DATABASE IS READY TO USE!&amp;quot; 메시지가 나올 때까지 대기&lt;br /&gt;
&lt;br /&gt;
# 컨테이너 안에서 SYSDBA로 접속&lt;br /&gt;
docker exec -it oracle-lab sqlplus / as sysdba&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{설명|제목=기본 접속 정보 (Free 이미지)|내용=리스너 포트 1521, CDB 서비스명 FREE, 기본 PDB 서비스명 &amp;#039;&amp;#039;&amp;#039;FREEPDB1&amp;#039;&amp;#039;&amp;#039;. 실습 테이블은 CDB가 아니라 &amp;#039;&amp;#039;&amp;#039;PDB에 접속해서&amp;#039;&amp;#039;&amp;#039; 만든다.}}&lt;br /&gt;
&lt;br /&gt;
=== 2.2 접속 방법 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# EZConnect (호스트:포트/서비스명)&lt;br /&gt;
sqlplus system/Lab12345@//localhost:1521/FREEPDB1&lt;br /&gt;
&lt;br /&gt;
# tnsnames.ora 별칭 사용&lt;br /&gt;
sqlplus scott/tiger@ORCLPDB&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# $ORACLE_HOME/network/admin/tnsnames.ora&lt;br /&gt;
ORCLPDB =&lt;br /&gt;
  (DESCRIPTION =&lt;br /&gt;
    (ADDRESS = (PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))&lt;br /&gt;
    (CONNECT_DATA = (SERVICE_NAME = orclpdb)))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{설명|제목=GUI 도구|내용=무료 공식 도구인 SQL Developer, VS Code의 Oracle SQL Developer Extension이 있고, DBeaver, Toad, Orange 등도 많이 쓴다.}}&lt;br /&gt;
&lt;br /&gt;
=== 2.3 SQL*Plus 필수 명령 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 명령 !! 의미&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CONN user/pw@서비스&amp;lt;/code&amp;gt; || 다른 사용자로 재접속&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SHOW USER&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;SHOW CON_NAME&amp;lt;/code&amp;gt; || 현재 사용자 / 현재 컨테이너(CDB·PDB)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ALTER SESSION SET CONTAINER = FREEPDB1;&amp;lt;/code&amp;gt; || SYSDBA 세션에서 PDB로 전환&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DESC 테이블명&amp;lt;/code&amp;gt; || 테이블 구조&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SET LINESIZE 200 PAGESIZE 100&amp;lt;/code&amp;gt; || 출력 폭·페이지 설정&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;COL 컬럼명 FORMAT A30&amp;lt;/code&amp;gt; || 컬럼 출력 폭 지정&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SET TIMING ON&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;SET AUTOTRACE ON&amp;lt;/code&amp;gt; || 실행 시간 / 실행계획·통계 표시&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;@script.sql&amp;lt;/code&amp;gt; || 스크립트 실행&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SPOOL result.txt&amp;lt;/code&amp;gt; … &amp;lt;code&amp;gt;SPOOL OFF&amp;lt;/code&amp;gt; || 결과를 파일로 저장&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SHOW PARAMETER 이름&amp;lt;/code&amp;gt; || 초기화 파라미터 확인&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 3. 아키텍처 ==&lt;br /&gt;
=== 3.1 인스턴스와 데이터베이스 ===&lt;br /&gt;
{{핵심|제목=가장 먼저 구분할 두 개념|내용=&amp;#039;&amp;#039;&amp;#039;인스턴스(Instance)&amp;#039;&amp;#039;&amp;#039; = 메모리(SGA) + 백그라운드 프로세스, &amp;#039;&amp;#039;&amp;#039;데이터베이스(Database)&amp;#039;&amp;#039;&amp;#039; = 디스크의 파일(데이터 파일·컨트롤 파일·리두 로그). 인스턴스가 데이터베이스를 열어(OPEN) 사용한다. RAC에서는 여러 인스턴스가 하나의 데이터베이스를 공유한다.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 ┌──────────────────────────── 인스턴스 ─────────────────────────────┐&lt;br /&gt;
 │  SGA (공유 메모리)                                                 │&lt;br /&gt;
 │  ┌──────────────┐ ┌────────────────────┐ ┌──────────────┐        │&lt;br /&gt;
 │  │ Shared Pool  │ │ Database Buffer    │ │ Redo Log     │        │&lt;br /&gt;
 │  │ (SQL·딕셔너리)│ │ Cache (데이터 블록) │ │ Buffer       │        │&lt;br /&gt;
 │  └──────────────┘ └────────────────────┘ └──────────────┘        │&lt;br /&gt;
 │  백그라운드 프로세스: PMON · SMON · DBWn · LGWR · CKPT · ARCn · MMON  │&lt;br /&gt;
 └───────────────────────────────────────────────────────────────────┘&lt;br /&gt;
   ▲ 서버 프로세스 (접속마다, PGA: 정렬·해시 작업 영역)&lt;br /&gt;
   │&lt;br /&gt;
 ┌──────────────────────────── 데이터베이스 (파일) ──────────────────┐&lt;br /&gt;
 │  Data Files (.dbf) · Control Files (.ctl) · Online Redo Log Files │&lt;br /&gt;
 │  (부가) Parameter File(spfile) · Password File · Archive Log Files│&lt;br /&gt;
 └───────────────────────────────────────────────────────────────────┘&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 3.2 주요 백그라운드 프로세스 ===&lt;br /&gt;
{{단계별양식2&lt;br /&gt;
|최소너비 = 120px&lt;br /&gt;
|제목1 = DBWn |설명1 = 변경 블록을 데이터 파일에 기록&lt;br /&gt;
|제목2 = LGWR |설명2 = 리두 버퍼를 리두 로그에 기록&lt;br /&gt;
|제목3 = CKPT |설명3 = 체크포인트 정보 갱신&lt;br /&gt;
|제목4 = SMON |설명4 = 인스턴스 복구&lt;br /&gt;
|제목5 = PMON |설명5 = 실패 프로세스 정리&lt;br /&gt;
|제목6 = ARCn |설명6 = 리두 로그 아카이브&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 3.3 멀티테넌트 (CDB / PDB) ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 CDB (컨테이너 데이터베이스)&lt;br /&gt;
  ├─ CDB$ROOT   ← 오라클 메타데이터, 공통 사용자(C##)&lt;br /&gt;
  ├─ PDB$SEED   ← 새 PDB를 만들 때 쓰는 템플릿 (읽기 전용)&lt;br /&gt;
  ├─ PDB1       ← 업무 DB (로컬 사용자·테이블)&lt;br /&gt;
  └─ PDB2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* 업무 사용자와 테이블은 &amp;#039;&amp;#039;&amp;#039;PDB 안에&amp;#039;&amp;#039;&amp;#039; 만든다. 21c부터는 멀티테넌트 구조만 지원한다.&lt;br /&gt;
&lt;br /&gt;
=== 3.4 논리 저장 구조 ===&lt;br /&gt;
{{단계별양식2&lt;br /&gt;
|제목1 = 테이블스페이스 |설명1 = 데이터 파일의 논리 묶음&lt;br /&gt;
|제목2 = 세그먼트 |설명2 = 테이블·인덱스 하나&lt;br /&gt;
|제목3 = 익스텐트 |설명3 = 연속된 블록 묶음&lt;br /&gt;
|제목4 = 블록 |설명4 = I/O 최소 단위 (보통 8KB)&lt;br /&gt;
}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 테이블스페이스 !! 용도&lt;br /&gt;
|-&lt;br /&gt;
| SYSTEM / SYSAUX || 데이터 딕셔너리, AWR 등 오라클 내부용&lt;br /&gt;
|-&lt;br /&gt;
| UNDOTBS1 || 변경 전 이미지 (롤백·읽기 일관성)&lt;br /&gt;
|-&lt;br /&gt;
| TEMP || 정렬·해시 임시 작업 공간&lt;br /&gt;
|-&lt;br /&gt;
| USERS 및 업무용 || 사용자 테이블·인덱스&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 4. 기본 SQL과 데이터 타입 ==&lt;br /&gt;
=== 4.1 주요 데이터 타입 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 용도 !! 타입 !! 메모&lt;br /&gt;
|-&lt;br /&gt;
| 가변 문자 || &amp;lt;code&amp;gt;VARCHAR2(n)&amp;lt;/code&amp;gt; || 최대 4000바이트 (확장 시 32767), &amp;lt;code&amp;gt;n CHAR&amp;lt;/code&amp;gt;로 문자 수 지정 가능&lt;br /&gt;
|-&lt;br /&gt;
| 숫자 || &amp;lt;code&amp;gt;NUMBER(p,s)&amp;lt;/code&amp;gt; || 정수·소수 모두. &amp;lt;code&amp;gt;NUMBER(10)&amp;lt;/code&amp;gt;은 정수&lt;br /&gt;
|-&lt;br /&gt;
| 날짜 || &amp;lt;code&amp;gt;DATE&amp;lt;/code&amp;gt; || &amp;#039;&amp;#039;&amp;#039;시·분·초까지 포함&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 일시 || &amp;lt;code&amp;gt;TIMESTAMP&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;TIMESTAMP WITH TIME ZONE&amp;lt;/code&amp;gt; || 소수 초, 시간대&lt;br /&gt;
|-&lt;br /&gt;
| 대용량 || &amp;lt;code&amp;gt;CLOB&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;BLOB&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;LONG&amp;lt;/code&amp;gt;은 사용하지 않음&lt;br /&gt;
|-&lt;br /&gt;
| 반정형 || &amp;lt;code&amp;gt;JSON&amp;lt;/code&amp;gt; (21c+) / &amp;lt;code&amp;gt;CLOB IS JSON&amp;lt;/code&amp;gt; (19c) ||&lt;br /&gt;
|-&lt;br /&gt;
| 참/거짓 || &amp;lt;code&amp;gt;BOOLEAN&amp;lt;/code&amp;gt; (23ai+) || 이전 버전은 &amp;lt;code&amp;gt;CHAR(1)&amp;lt;/code&amp;gt; + CHECK&lt;br /&gt;
|}&lt;br /&gt;
{{중요|내용=Oracle은 &amp;#039;&amp;#039;&amp;#039;빈 문자열(&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;&amp;#039;&amp;#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;)을 NULL로 취급&amp;#039;&amp;#039;&amp;#039;한다. &amp;lt;code&amp;gt;WHERE col = &amp;lt;nowiki&amp;gt;&amp;#039;&amp;#039;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;는 항상 거짓이므로 &amp;lt;code&amp;gt;WHERE col IS NULL&amp;lt;/code&amp;gt;로 써야 한다.}}&lt;br /&gt;
&lt;br /&gt;
=== 4.2 테이블 만들기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
CREATE TABLE customer (&lt;br /&gt;
    cust_id     NUMBER GENERATED ALWAYS AS IDENTITY,    -- 12c+ (이전에는 SEQUENCE + 트리거)&lt;br /&gt;
    cust_nm     VARCHAR2(100 CHAR) NOT NULL,&lt;br /&gt;
    email       VARCHAR2(200),&lt;br /&gt;
    grade_cd    VARCHAR2(10) DEFAULT &amp;#039;NORMAL&amp;#039; NOT NULL,&lt;br /&gt;
    created_at  DATE DEFAULT SYSDATE NOT NULL,&lt;br /&gt;
    CONSTRAINT pk_customer PRIMARY KEY (cust_id),&lt;br /&gt;
    CONSTRAINT uk_customer_email UNIQUE (email)&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
CREATE TABLE orders (&lt;br /&gt;
    order_id    NUMBER GENERATED ALWAYS AS IDENTITY,&lt;br /&gt;
    cust_id     NUMBER NOT NULL,&lt;br /&gt;
    order_dt    DATE   NOT NULL,&lt;br /&gt;
    amount      NUMBER(12,2) NOT NULL,&lt;br /&gt;
    CONSTRAINT pk_orders PRIMARY KEY (order_id),&lt;br /&gt;
    CONSTRAINT fk_orders_cust FOREIGN KEY (cust_id) REFERENCES customer (cust_id),&lt;br /&gt;
    CONSTRAINT ck_orders_amt CHECK (amount &amp;gt;= 0)&lt;br /&gt;
);&lt;br /&gt;
CREATE INDEX ix_orders_01 ON orders (cust_id, order_dt);   -- FK 컬럼 인덱스는 직접 만든다&lt;br /&gt;
&lt;br /&gt;
COMMENT ON TABLE customer IS &amp;#039;고객&amp;#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4.3 자주 쓰는 SQL ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- DUAL: 테이블 없이 식 계산 (23ai부터는 FROM DUAL 생략 가능)&lt;br /&gt;
SELECT SYSDATE, USER FROM DUAL;&lt;br /&gt;
&lt;br /&gt;
-- 시퀀스&lt;br /&gt;
CREATE SEQUENCE sq_order_no START WITH 1 INCREMENT BY 1 CACHE 100;&lt;br /&gt;
SELECT sq_order_no.NEXTVAL FROM DUAL;&lt;br /&gt;
&lt;br /&gt;
-- MERGE (UPSERT)&lt;br /&gt;
MERGE INTO customer t&lt;br /&gt;
USING (SELECT &amp;#039;hong@example.com&amp;#039; AS email, &amp;#039;홍길동&amp;#039; AS cust_nm FROM DUAL) s&lt;br /&gt;
   ON (t.email = s.email)&lt;br /&gt;
 WHEN MATCHED THEN UPDATE SET t.cust_nm = s.cust_nm&lt;br /&gt;
 WHEN NOT MATCHED THEN INSERT (cust_nm, email) VALUES (s.cust_nm, s.email);&lt;br /&gt;
&lt;br /&gt;
-- 페이징 (12c+)&lt;br /&gt;
SELECT * FROM orders ORDER BY order_dt DESC&lt;br /&gt;
OFFSET 40 ROWS FETCH NEXT 20 ROWS ONLY;&lt;br /&gt;
&lt;br /&gt;
-- 계층 조회&lt;br /&gt;
SELECT LEVEL, emp_name FROM emp&lt;br /&gt;
 START WITH mgr_id IS NULL&lt;br /&gt;
CONNECT BY PRIOR emp_id = mgr_id;&lt;br /&gt;
&lt;br /&gt;
-- 자주 쓰는 함수&lt;br /&gt;
SELECT NVL(email, &amp;#039;-&amp;#039;), DECODE(grade_cd, &amp;#039;VIP&amp;#039;, &amp;#039;우수&amp;#039;, &amp;#039;일반&amp;#039;),&lt;br /&gt;
       TO_CHAR(created_at, &amp;#039;YYYY-MM-DD HH24:MI:SS&amp;#039;)&lt;br /&gt;
  FROM customer;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. 트랜잭션, Undo와 Redo ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 구분 !! Undo !! Redo&lt;br /&gt;
|-&lt;br /&gt;
| 기록 내용 || &amp;#039;&amp;#039;&amp;#039;변경 전&amp;#039;&amp;#039;&amp;#039; 데이터 || &amp;#039;&amp;#039;&amp;#039;변경 내역&amp;#039;&amp;#039;&amp;#039; (변경 후 재현 정보)&lt;br /&gt;
|-&lt;br /&gt;
| 목적 || 롤백, &amp;#039;&amp;#039;&amp;#039;읽기 일관성&amp;#039;&amp;#039;&amp;#039;, Flashback || &amp;#039;&amp;#039;&amp;#039;장애 복구&amp;#039;&amp;#039;&amp;#039; (인스턴스·미디어 복구)&lt;br /&gt;
|-&lt;br /&gt;
| 저장 위치 || Undo 테이블스페이스 || Online Redo Log → (아카이브 모드) Archive Log&lt;br /&gt;
|-&lt;br /&gt;
| 관련 오류 || ORA-01555 snapshot too old || 리두 로그 스위치 대기, 아카이브 공간 부족&lt;br /&gt;
|}&lt;br /&gt;
{{요점|내용=COMMIT 시점에는 데이터 파일이 아니라 &amp;#039;&amp;#039;&amp;#039;리두 로그만 디스크에 기록&amp;#039;&amp;#039;&amp;#039;된다 (LGWR). 데이터 블록은 나중에 DBWn이 기록한다. 그래서 커밋은 빠르고, 장애가 나도 리두로 복구할 수 있다.}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- DML은 명시적으로 COMMIT / ROLLBACK&lt;br /&gt;
UPDATE orders SET amount = amount - 1000 WHERE order_id = 10;&lt;br /&gt;
SAVEPOINT sp1;&lt;br /&gt;
DELETE FROM orders WHERE order_id = 11;&lt;br /&gt;
ROLLBACK TO sp1;      -- DELETE만 취소&lt;br /&gt;
COMMIT;&lt;br /&gt;
&lt;br /&gt;
-- 주의: DDL(CREATE, ALTER, TRUNCATE 등)은 실행 전후로 자동 COMMIT 된다&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{중요|내용=&amp;lt;code&amp;gt;DELETE&amp;lt;/code&amp;gt;는 Undo를 남기고 롤백할 수 있지만, &amp;lt;code&amp;gt;TRUNCATE&amp;lt;/code&amp;gt;는 DDL이라 &amp;#039;&amp;#039;&amp;#039;롤백할 수 없다&amp;#039;&amp;#039;&amp;#039;. 운영 데이터 삭제 전에는 반드시 백업 또는 조건을 다시 확인한다.}}&lt;br /&gt;
&lt;br /&gt;
=== 5.1 Flashback — 실수 되돌리기 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 10분 전 데이터 조회 (Undo 보존 범위 안에서)&lt;br /&gt;
SELECT * FROM orders AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL &amp;#039;10&amp;#039; MINUTE)&lt;br /&gt;
 WHERE order_id = 10;&lt;br /&gt;
&lt;br /&gt;
-- 실수로 DROP한 테이블 복원 (휴지통)&lt;br /&gt;
FLASHBACK TABLE orders TO BEFORE DROP;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. 데이터 딕셔너리와 동적 성능 뷰 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 접두어 !! 범위 !! 예&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;USER_&amp;lt;/code&amp;gt; || 내가 소유한 객체 || &amp;lt;code&amp;gt;USER_TABLES&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;USER_INDEXES&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;USER_CONSTRAINTS&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;ALL_&amp;lt;/code&amp;gt; || 내가 접근 가능한 객체 || &amp;lt;code&amp;gt;ALL_TAB_COLUMNS&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;DBA_&amp;lt;/code&amp;gt; || DB 전체 (DBA 권한) || &amp;lt;code&amp;gt;DBA_SEGMENTS&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DBA_DATA_FILES&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DBA_USERS&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;CDB_&amp;lt;/code&amp;gt; || 모든 컨테이너 || &amp;lt;code&amp;gt;CDB_TABLES&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;V$&amp;lt;/code&amp;gt; || 인스턴스 실시간 상태 (메모리) || &amp;lt;code&amp;gt;V$SESSION&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;V$SQL&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;V$INSTANCE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;V$DATABASE&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;GV$&amp;lt;/code&amp;gt; || RAC 전체 인스턴스 || &amp;lt;code&amp;gt;GV$SESSION&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 7. 인덱스와 실행계획 맛보기 ==&lt;br /&gt;
* 기본 인덱스는 &amp;#039;&amp;#039;&amp;#039;B*Tree&amp;#039;&amp;#039;&amp;#039; — 조건 컬럼, 조인 컬럼, 정렬 컬럼에 만든다.&lt;br /&gt;
* 결합 인덱스는 &amp;#039;&amp;#039;&amp;#039;= 조건 컬럼을 앞에, 범위 조건 컬럼을 뒤에&amp;#039;&amp;#039;&amp;#039; 둔다.&lt;br /&gt;
* 인덱스 컬럼을 가공하면(&amp;lt;code&amp;gt;TO_CHAR(col)&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;col + 1&amp;lt;/code&amp;gt;) 인덱스를 쓰지 못한다.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT /*+ GATHER_PLAN_STATISTICS */ * FROM orders WHERE cust_id = 1001;&lt;br /&gt;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL, NULL, &amp;#039;ALLSTATS LAST&amp;#039;));&lt;br /&gt;
&lt;br /&gt;
-- 옵티마이저 통계 수집&lt;br /&gt;
EXEC DBMS_STATS.GATHER_TABLE_STATS(USER, &amp;#039;ORDERS&amp;#039;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{서브|제목=다음 단계|내용=실행계획과 인덱스·조인 튜닝은 [[SQL 튜닝 입문]] → [[실행계획 읽기 실습]] → [[인덱스 튜닝 심화]]에서 자세히 다룬다.|제목아이콘=arrow_forward}}&lt;br /&gt;
&lt;br /&gt;
== 8. 사용자·권한 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- PDB에 접속한 상태에서&lt;br /&gt;
CREATE USER app_user IDENTIFIED BY &amp;quot;Change_me1&amp;quot;&lt;br /&gt;
  DEFAULT TABLESPACE users QUOTA 1G ON users;&lt;br /&gt;
&lt;br /&gt;
GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE SEQUENCE TO app_user;   -- 시스템 권한&lt;br /&gt;
&lt;br /&gt;
CREATE ROLE app_read;&lt;br /&gt;
GRANT SELECT ON app_user.orders TO app_read;                                     -- 객체 권한&lt;br /&gt;
GRANT app_read TO report_user;&lt;br /&gt;
&lt;br /&gt;
-- 권한 확인&lt;br /&gt;
SELECT * FROM DBA_SYS_PRIVS WHERE grantee = &amp;#039;APP_USER&amp;#039;;&lt;br /&gt;
SELECT * FROM DBA_TAB_PRIVS WHERE grantee = &amp;#039;APP_READ&amp;#039;;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{설명|제목=스키마 = 사용자|내용=Oracle에서는 사용자를 만들면 같은 이름의 스키마가 생긴다. 다른 스키마의 테이블은 &amp;lt;code&amp;gt;app_user.orders&amp;lt;/code&amp;gt;처럼 소유자를 붙여 접근하거나 동의어(SYNONYM)를 만든다.}}&lt;br /&gt;
&lt;br /&gt;
== 9. 기동과 종료 ==&lt;br /&gt;
{{단계별양식2&lt;br /&gt;
|제목1 = SHUTDOWN |설명1 = 인스턴스 없음&lt;br /&gt;
|제목2 = NOMOUNT |설명2 = 파라미터 파일 읽고 인스턴스 시작&lt;br /&gt;
|제목3 = MOUNT |설명3 = 컨트롤 파일 열기&lt;br /&gt;
|제목4 = OPEN |설명4 = 데이터 파일·리두 로그 열기&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- SYSDBA로&lt;br /&gt;
STARTUP;                         -- NOMOUNT → MOUNT → OPEN&lt;br /&gt;
SHUTDOWN IMMEDIATE;              -- 진행 중 트랜잭션 롤백 후 정상 종료 (가장 많이 사용)&lt;br /&gt;
&lt;br /&gt;
ALTER PLUGGABLE DATABASE ALL OPEN;               -- 모든 PDB 열기&lt;br /&gt;
ALTER PLUGGABLE DATABASE ALL SAVE STATE;         -- 재기동 시 자동으로 열리도록 저장&lt;br /&gt;
&lt;br /&gt;
SELECT instance_name, status FROM v$instance;&lt;br /&gt;
SELECT name, open_mode, log_mode FROM v$database;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{설명|제목=Alert Log|내용=기동·종료, 오류(ORA-), 로그 스위치 등 DB의 중요한 사건이 기록되는 파일이다. 위치는 &amp;lt;code&amp;gt;SELECT value FROM v$diag_info WHERE name = &amp;#039;Diag Trace&amp;#039;;&amp;lt;/code&amp;gt;로 확인한다. 장애가 나면 가장 먼저 본다.}}&lt;br /&gt;
&lt;br /&gt;
== 10. 백업과 복구 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 방식 !! 도구 !! 특징&lt;br /&gt;
|-&lt;br /&gt;
| 물리 백업 || &amp;#039;&amp;#039;&amp;#039;RMAN&amp;#039;&amp;#039;&amp;#039; (Recovery Manager) || 온라인 백업, 증분 백업, 블록 손상 검사, 시점 복구 — &amp;#039;&amp;#039;&amp;#039;운영 표준&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| 논리 백업 || &amp;#039;&amp;#039;&amp;#039;Data Pump&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;expdp&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;impdp&amp;lt;/code&amp;gt;) || 스키마·테이블 단위 이관, 버전 간 이동&lt;br /&gt;
|-&lt;br /&gt;
| 아카이브 로그 모드 || &amp;lt;code&amp;gt;ARCHIVELOG&amp;lt;/code&amp;gt; || 온라인 백업과 시점 복구의 전제 조건&lt;br /&gt;
|-&lt;br /&gt;
| 실수 복구 || Flashback Query / Table / Drop || Undo·휴지통으로 빠르게 되돌리기&lt;br /&gt;
|-&lt;br /&gt;
| 재해 대비 || Data Guard || 원격 대기 DB로 리두 전송&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# RMAN 전체 백업 (아카이브 로그 포함)&lt;br /&gt;
rman target /&lt;br /&gt;
RMAN&amp;gt; BACKUP DATABASE PLUS ARCHIVELOG;&lt;br /&gt;
RMAN&amp;gt; LIST BACKUP SUMMARY;&lt;br /&gt;
&lt;br /&gt;
# Data Pump 스키마 내보내기 / 가져오기&lt;br /&gt;
expdp system@FREEPDB1 schemas=APP_USER directory=DATA_PUMP_DIR dumpfile=app.dmp logfile=app_exp.log&lt;br /&gt;
impdp system@FREEPDB1 schemas=APP_USER directory=DATA_PUMP_DIR dumpfile=app.dmp remap_schema=APP_USER:APP_TEST&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 11. 모니터링 기본 쿼리 ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
-- 활성 세션과 대기 이벤트&lt;br /&gt;
SELECT sid, serial#, username, status, sql_id, event, seconds_in_wait&lt;br /&gt;
  FROM v$session&lt;br /&gt;
 WHERE type = &amp;#039;USER&amp;#039; AND status = &amp;#039;ACTIVE&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
-- 락 대기 (블로킹 세션)&lt;br /&gt;
SELECT sid, blocking_session, event, sql_id&lt;br /&gt;
  FROM v$session&lt;br /&gt;
 WHERE blocking_session IS NOT NULL;&lt;br /&gt;
&lt;br /&gt;
-- 테이블스페이스 사용률&lt;br /&gt;
SELECT tablespace_name, ROUND(used_percent, 1) AS used_pct&lt;br /&gt;
  FROM dba_tablespace_usage_metrics&lt;br /&gt;
 ORDER BY used_percent DESC;&lt;br /&gt;
&lt;br /&gt;
-- 크기가 큰 세그먼트&lt;br /&gt;
SELECT owner, segment_name, segment_type, ROUND(bytes/1024/1024) AS mb&lt;br /&gt;
  FROM dba_segments&lt;br /&gt;
 ORDER BY bytes DESC FETCH FIRST 10 ROWS ONLY;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 12. 학습 커리큘럼 (10주) ==&lt;br /&gt;
{{안내바|강조=설치 → 아키텍처 → SQL → 트랜잭션 → 운영|내용=한 주에 이론 3시간 + 실습 3시간|우측=SQL 기초가 약하다면 4주차에 시간을 더 쓰세요.}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! style=&amp;quot;width:8%;&amp;quot; | 주차 !! style=&amp;quot;width:12%;&amp;quot; | 단계 !! style=&amp;quot;width:22%;&amp;quot; | 주제 !! 세부 내용 !! style=&amp;quot;width:22%;&amp;quot; | 실습&lt;br /&gt;
|-&lt;br /&gt;
| 1 || rowspan=&amp;quot;2&amp;quot; | 기초 || Oracle 소개와 설치 || 역사·에디션·버전, Free 설치, SQL*Plus·SQL Developer, 접속 방식 || 실습 DB 구축, PDB 접속&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 아키텍처 ① || 인스턴스와 데이터베이스, SGA·PGA, 백그라운드 프로세스 || V$ 뷰로 구조 확인&lt;br /&gt;
|-&lt;br /&gt;
| 3 || rowspan=&amp;quot;2&amp;quot; | 구조 || 아키텍처 ② || CDB/PDB, 테이블스페이스·세그먼트·익스텐트·블록, 데이터 딕셔너리 || 테이블스페이스·사용자 생성&lt;br /&gt;
|-&lt;br /&gt;
| 4 || 데이터 타입과 SQL || VARCHAR2·NUMBER·DATE, 제약조건, IDENTITY·시퀀스, 함수, MERGE || 쇼핑몰 테이블 설계 ([[데이터 모델링 입문]] 연계)&lt;br /&gt;
|-&lt;br /&gt;
| 5 || rowspan=&amp;quot;2&amp;quot; | 트랜잭션 || 트랜잭션과 읽기 일관성 || COMMIT·ROLLBACK, Undo·Redo, 락, ORA-01555 || 두 세션으로 락·일관성 재현&lt;br /&gt;
|-&lt;br /&gt;
| 6 || Flashback과 휴지통 || Flashback Query·Table·Drop, Undo 보존 || 실수 삭제 복구&lt;br /&gt;
|-&lt;br /&gt;
| 7 || rowspan=&amp;quot;2&amp;quot; | 성능 기초 || 인덱스 || B*Tree 구조, 결합 인덱스, 인덱스를 못 쓰는 경우 || 인덱스 유무 비교&lt;br /&gt;
|-&lt;br /&gt;
| 8 || 실행계획과 통계 || DBMS_XPLAN, 옵티마이저 통계 ([[SQL 튜닝 입문]] 연계) || 실행계획 읽기&lt;br /&gt;
|-&lt;br /&gt;
| 9 || rowspan=&amp;quot;2&amp;quot; | 운영 || 사용자·권한·기동 || 시스템·객체 권한, 롤, 프로파일, STARTUP·SHUTDOWN, Alert Log || 읽기 전용 계정 설계&lt;br /&gt;
|-&lt;br /&gt;
| 10 || 백업과 복구 || ARCHIVELOG, RMAN 백업·복구, Data Pump || RMAN 백업, 스키마 이관&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 13. 입문자 체크리스트 ==&lt;br /&gt;
{{노트박스&lt;br /&gt;
|라벨 = SELF CHECK&lt;br /&gt;
|제목 = 이 정도면 입문 완료&lt;br /&gt;
|내용 = □ SQL*Plus로 PDB에 접속하고 현재 사용자·컨테이너를 확인할 수 있다&amp;lt;br/&amp;gt;□ 인스턴스와 데이터베이스, SGA와 PGA의 차이를 설명할 수 있다&amp;lt;br/&amp;gt;□ 테이블스페이스 → 세그먼트 → 익스텐트 → 블록 구조를 설명할 수 있다&amp;lt;br/&amp;gt;□ Undo와 Redo의 역할 차이, DDL 자동 커밋을 설명할 수 있다&amp;lt;br/&amp;gt;□ 사용자를 만들고 시스템·객체 권한을 부여할 수 있다&amp;lt;br/&amp;gt;□ RMAN 백업과 Data Pump 이관을 한 번씩 해 보았다&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 14. 용어집 ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;width:100%;&amp;quot;&lt;br /&gt;
! 용어 !! 설명&lt;br /&gt;
|-&lt;br /&gt;
| 인스턴스 (Instance) || SGA + 백그라운드 프로세스&lt;br /&gt;
|-&lt;br /&gt;
| SGA || 모든 세션이 공유하는 메모리 (버퍼 캐시, 공유 풀, 리두 버퍼)&lt;br /&gt;
|-&lt;br /&gt;
| PGA || 서버 프로세스 전용 메모리 (정렬·해시 작업)&lt;br /&gt;
|-&lt;br /&gt;
| CDB / PDB || 컨테이너 DB / 플러거블 DB&lt;br /&gt;
|-&lt;br /&gt;
| 테이블스페이스 || 데이터 파일을 묶는 논리 저장 단위&lt;br /&gt;
|-&lt;br /&gt;
| 세그먼트 || 저장 공간을 차지하는 객체 하나 (테이블, 인덱스)&lt;br /&gt;
|-&lt;br /&gt;
| Undo || 변경 전 데이터 (롤백·읽기 일관성)&lt;br /&gt;
|-&lt;br /&gt;
| Redo || 변경 내역 로그 (장애 복구)&lt;br /&gt;
|-&lt;br /&gt;
| SCN || 시스템 변경 번호, DB의 논리적 시각&lt;br /&gt;
|-&lt;br /&gt;
| ARCHIVELOG || 리두 로그를 보관하는 운영 모드&lt;br /&gt;
|-&lt;br /&gt;
| RMAN || Oracle 공식 백업·복구 도구&lt;br /&gt;
|-&lt;br /&gt;
| Data Pump || 논리 내보내기·가져오기 도구 (expdp/impdp)&lt;br /&gt;
|-&lt;br /&gt;
| 리스너 (Listener) || 클라이언트 접속 요청을 받아 서버 프로세스로 연결하는 프로세스&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 15. 참고 자료 ==&lt;br /&gt;
* Oracle Database 19c Documentation — https://docs.oracle.com/en/database/oracle/oracle-database/19/&lt;br /&gt;
* Oracle Database Concepts (19c) — 아키텍처 학습의 기본서&lt;br /&gt;
* Oracle Database Free — https://www.oracle.com/database/free/&lt;br /&gt;
* Oracle Live SQL — 설치 없이 브라우저에서 SQL 실습&lt;br /&gt;
&lt;br /&gt;
{{관련글|이전글=[[데이터 모델링 입문]]|다음글=[[SQL 튜닝 입문]]}}&lt;br /&gt;
&lt;br /&gt;
[[분류:Oracle]]&lt;br /&gt;
[[분류:입문 가이드]]&lt;br /&gt;
[[분류:커리큘럼]]&lt;/div&gt;</summary>
		<author><name>Dbstudy</name></author>
	</entry>
</feed>