데이터베이스 삭제와 잔여 파일
dbca -silent -deleteDatabase로 데이터베이스를 지우기 전 확인할 항목, 삭제 명령, 삭제 뒤 남을 수 있는 파일과 등록 정보 정리
#핵심 요약
삭제는 dbca -silent -deleteDatabase가 편함
단, 데이터 파일까지 지우므로 대상 SID 확인이 필수임
삭제 전에 데이터 파일, 임시 파일, 리두 로그, 빠른 복구 영역, 컨트롤 파일 위치를 조회해 두면 삭제 뒤 잔여 파일을 대조할 수 있음
DBCA 삭제 뒤에도 /etc/oratab 항목, $ORACLE_HOME/dbs의 파라미터 파일과 패스워드 파일, 진단 디렉터리, 리스너 정적 등록이 남을 수 있다고 실습에서는 정리했음
#주요 용어와 구성 요소
| 용어 | 설명 |
|---|---|
-deleteDatabase |
DB를 삭제하는 DBCA 명령 |
-forceArchiveLogDeletion |
아카이브 로그도 강제로 삭제 |
/etc/oratab |
SID:ORACLE_HOME:Y 또는 N 형식의 등록 파일맨 뒤 플래그는 dbstart, dbshut 대상 여부 |
#필수 명령어 또는 SQL
#삭제 전 현재 상태 확인
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 프롬프트에서 실행하라고 표시했음
echo $ORACLE_SID
. oraenv
dbca -silent -deleteDatabase \
-sourceDB <SID> \
-sysDBAUserName sys \
-sysDBAPassword <PASSWORD> \
-forceArchiveLogDeletion결과 해석:
#삭제 후 잔여 파일 정리
DBCA 삭제 뒤에도 남을 수 있는 것을 실습에서는 다음과 같이 정리했음
각 경로는 <SID>를 실제 값으로 바꿔 씀rm은 지우기 전에 ls로 눈으로 확인함
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>결과 해석:
리스너 정적 등록 확인과 최종 확인
grep -i <SID> $ORACLE_HOME/network/admin/listener.ora
# 있으면 SID_LIST 항목 삭제 후
lsnrctl reload
lsnrctl statusls /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로 되돌려야 이후 접속이 엉뚱한 인스턴스로 가지 않음
잔여 파일 경로는 실습 서버 기준임
실제 위치는 삭제 전 조회 결과로 대조함