데이터베이스 연구실.log

데이터베이스 삭제와 잔여 파일

dbca -silent -deleteDatabase로 데이터베이스를 지우기 전 확인할 항목, 삭제 명령, 삭제 뒤 남을 수 있는 파일과 등록 정보 정리

DBCAdeleteDatabaseoratab잔여 파일

#핵심 요약

삭제는 dbca -silent -deleteDatabase가 편함
단, 데이터 파일까지 지우므로 대상 SID 확인이 필수임

삭제 전에 데이터 파일, 임시 파일, 리두 로그, 빠른 복구 영역, 컨트롤 파일 위치를 조회해 두면 삭제 뒤 잔여 파일을 대조할 수 있음

DBCA 삭제 뒤에도 /etc/oratab 항목, $ORACLE_HOME/dbs의 파라미터 파일과 패스워드 파일, 진단 디렉터리, 리스너 정적 등록이 남을 수 있다고 실습에서는 정리했음

#주요 용어와 구성 요소

용어 설명
-deleteDatabase DB를 삭제하는 DBCA 명령
-forceArchiveLogDeletion 아카이브 로그도 강제로 삭제
/etc/oratab SID:ORACLE_HOME:Y 또는 N 형식의 등록 파일
맨 뒤 플래그는 dbstart, dbshut 대상 여부

#필수 명령어 또는 SQL

#삭제 전 현재 상태 확인

SQL*Plus (SYSDBA)조회만 함
SELECT name, cdb, log_mode FROM v$database;
SELECT con_id, name, open_mode FROM v$pdbs;
SELECT con_id, file_name FROM cdb_data_files ORDER BY con_id;
SELECT con_id, file_name FROM cdb_temp_files ORDER BY con_id;
SELECT member FROM v$logfile;
SHOW PARAMETER db_recovery_file_dest
SHOW PARAMETER control_files

결과 해석: 개별 실행 출력은 기재 없음

#DB 삭제

실습에서는 이 명령을 SQL 프롬프트가 아닌 OS 프롬프트에서 실행하라고 표시했음

셸 (oracle)데이터 또는 파일을 삭제함, 되돌릴 수 없음
echo $ORACLE_SID
. oraenv
dbca -silent -deleteDatabase \
  -sourceDB <SID> \
  -sysDBAUserName sys \
  -sysDBAPassword <PASSWORD> \
  -forceArchiveLogDeletion

결과 해석:

#삭제 후 잔여 파일 정리

DBCA 삭제 뒤에도 남을 수 있는 것을 실습에서는 다음과 같이 정리했음
각 경로는 <SID>를 실제 값으로 바꿔 씀
rm은 지우기 전에 ls로 눈으로 확인함

셸 (oracle)데이터 또는 파일을 삭제함, 되돌릴 수 없음
cat /etc/oratab                       # 대상 SID 줄이 남아 있으면 vi로 삭제
cd $ORACLE_HOME/dbs
ls -l *<SID>* *<SID_UPPER>*
rm -f init<SID>.ora spfile<SID>.ora orapw<SID> hc_<SID>.dat lk<SID_UPPER>

rm -rf /u01/app/oracle/oradata/<SID_UPPER>
rm -rf /u01/app/oracle/admin/<SID>
rm -rf /u01/app/oracle/diag/rdbms/<SID>

# 흩어진 파일은 먼저 눈으로 확인한 뒤 삭제
ls -l /home/oracle/*.dbf
ls -lR /home/oracle/<SID_UPPER>

결과 해석:

리스너 정적 등록 확인과 최종 확인

셸 (oracle)인스턴스 또는 서비스 중단이 필요함
grep -i <SID> $ORACLE_HOME/network/admin/listener.ora
# 있으면 SID_LIST 항목 삭제 후
lsnrctl reload
lsnrctl status
셸 (oracle)조회만 함
ls /u01/app/oracle/oradata        # 결과: 아무것도 없어야 함
ps -ef | grep pmon                # 결과: 아무것도 없어야 함
cat /etc/oratab                   # DB 항목 없음
df -h /
lsnrctl status                    # 리스너만 살아 있고 서비스 없음

결과 해석: 개별 실행 출력은 기재 없음

#구문과 옵션 설명

옵션 의미 바꿀 입력값
-deleteDatabase -sourceDB 삭제 대상 DB 삭제할 SID(주의)
-sysDBAUserName, -sysDBAPassword SYSDBA 계정과 비밀번호 비밀번호는 생략하면 프롬프트 입력
-forceArchiveLogDeletion 아카이브 로그까지 삭제

#사용 조건과 주의사항

DBCA 없이 생성 스크립트로 직접 만든 DB는 /etc/oratab 등록이 있어야 삭제할 수 있음
실습의 점검표에서 삭제 시 "database not found"가 나오면 등록을 빠뜨린 것임

실습 후 환경변수 ORACLE_SID를 원래 DB로 되돌려야 이후 접속이 엉뚱한 인스턴스로 가지 않음

잔여 파일 경로는 실습 서버 기준임
실제 위치는 삭제 전 조회 결과로 대조함

SEO_HKabsumveritas@gmail.comBuilt with Claude Code & Codex

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

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