데이터베이스 연구실.log

DBCA와 데이터베이스 생성

DBCA 배치 유형과 사일런트 DB 생성 옵션, 생성 후 조회 및 등록 작업

DBCAGeneral PurposecreateDatabaseoratab

#핵심 요약

DBCA 배치 유형은 데이터 웨어하우스, 사용자 정의 데이터베이스, 범용 또는 트랜잭션 처리(General Purpose / OLTP)가 있음
데이터 파일을 미리 만들어 둔 시드를 복사하는지 여부가 다름

dbca -silent -createDatabase의 옵션으로 템플릿, DB 이름, CDB와 PDB 구성, 문자 집합, 메모리, 데이터 파일 위치를 정함
문자 집합처럼 생성 뒤 바꿀 수 없는 값이 있음

DBCA는 데이터베이스를 만드는 것만이 아니라 /etc/oratab 등록과 리스너 연결 같은 뒷정리까지 담당함

#개념과 동작 원리

#배치 유형

유형 데이터 파일 포함 용도와 특징
데이터 웨어하우스 예(미리 만든 시드 파일 사용) 대용량 분석, 통계, 리포팅
복잡한 SELECT, JOIN 같은 대량 조회를 빠르게 처리하도록 메모리와 파라미터가 최적화됨
사용자 정의 데이터베이스 아니오(스크립트로 처음부터 생성) db_block_size, 테이블스페이스 등 생성 후 변경할 수 없는 속성을 직접 지정해야 할 때 필수
생성 시간이 더 걸림
범용 또는 트랜잭션 처리 예(미리 만든 시드 파일 사용) 입력, 수정, 삭제가 잦은 OLTP
가장 기본적인 템플릿이며 생성 속도가 빠름

#템플릿에 따른 생성 시간

New_Database.dbt는 시드 복사가 아니라 카탈로그를 스크립트로 전부 생성하므로 실습 기준 30~60분이 걸림
진행 상황은 alert 로그를 tail -f로 봄

#DBCA와 수작업의 차이

실습의 결론: 스크립트 직접 실행은 /etc/oratab 등록을 하지 않음
DBCA는 데이터베이스를 만드는 것만이 아니라 서버에 등록하고 리스너에 연결하는 뒷정리까지 담당하며, 이것이 수작업 대비 DBCA의 실질적 가치임

#필수 명령어 또는 SQL

#사일런트 모드로 바로 생성

실습 환경: 19c 홈, 파일시스템 저장, PDB 없는 CDB cdb
셸(oracle 계정)에서 실행함

셸 (oracle)객체 또는 설정을 변경함
export ORACLE_SID=cdb

dbca -silent -createDatabase \
-templateName General_Purpose.dbc \
-gdbname cdb \
-sid cdb \
-createAsContainerDatabase true \
-numberOfPDBs 0 \
-characterSet AL32UTF8 \
-sysPassword <PASSWORD> \
-systemPassword <PASSWORD> \
-emConfiguration NONE \
-storageType FS \
-datafileDestination /u01/app/oracle/oradata \
-totalMemory 1536

결과 해석:

General_Purpose.dbc는 시드 데이터 파일을 복사하는 템플릿이라 구조만 담는 New_Database.dbt보다 빨리 만들어짐(위 배치 유형 표)
실습에서는 업그레이드할 non-CDB를 PDB로 편입하려고 PDB 0개로 만들었음
비밀번호를 명령행에 쓰면 셸 히스토리와 ps 출력에 남으므로 운영 환경에서는 생략하고 프롬프트로 입력함

#생성 확인

SQL*Plus (SYSDBA)조회만 함
SELECT name, cdb, log_mode, open_mode FROM v$database;
SHOW PDBS

결과 해석:

실습에서는 -enableArchive를 주지 않으면 NOARCHIVELOG로 만들어지며, 백업 전략이 생성 시점에 결정된다고 설명함

#구문과 옵션 설명

옵션 의미 바꿀 입력값
-templateName General_Purpose.dbc(시드 복사) 또는 New_Database.dbt(구조만, 시드 복사 없음) 템플릿 이름
-sysPassword, -systemPassword SYS, SYSTEM 비밀번호
생략하면 프롬프트 입력
비밀번호
-storageType FS 파일시스템 저장
ASM이면 다른 값(확인 불가)
저장 방식
-gdbname, -sid 전역 DB 이름과 SID 기존 DB와 겹치지 않는 이름
-createAsContainerDatabase true, -numberOfPDBs, -pdbName CDB와 PDB 생성 PDB 수와 이름
-characterSet 데이터베이스 문자 집합
실습에서는 나중에 바꿀 수 없는 결정이라고 설명
문자 집합
-automaticMemoryManagement false -totalMemory AMM 끄고 총 메모리(MB) 지정 서버의 남은 메모리 이내
-datafileDestination 데이터 파일 위치 여유 있는 파일시스템
-emConfiguration NONE EM Express 사용 안 함
-enableArchive 아카이브 로그 모드로 생성
주지 않으면 NOARCHIVELOG

실습에서는 기존 DB와 이름이 겹치지 않게 cdb2를 썼고, 루트 파티션 여유가 좁아 데이터 파일을 /home으로 보냈으며, 남은 메모리를 고려해 -totalMemory를 1536으로 낮추고 EM Express 포트 충돌을 피하려고 -emConfiguration NONE으로 했음
이 값들은 실습 서버 기준이며 자기 환경에 맞게 바꿔야 함

#사용 조건과 주의사항

실습의 오류 안내: ORA-00845 또는 메모리 오류는 -totalMemory가 남은 메모리보다 큰 것이고, ORA-01092 또는 파일 존재 오류는 이전 시도의 잔여물(.../oradata/cdb2)을 지우고 재시도함

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

마지막 갱신 개인 학습 기록이며 운영 환경 적용 전 공식 문서 확인 필요

두 글자 이상 입력, 위아래 화살표로 이동하고 Enter로 열기