파라미터, 패스워드, TEMP 파일 복구
PFILE과 RMAN 백업으로 SPFILE 복구, 패스워드 파일 재생성과 임시 테이블스페이스 교체
#핵심 요약
SPFILE은 사용자 관리 방식(CREATE PFILE FROM SPFILE로 텍스트 사본)이나 RMAN(BACKUP SPFILE, 컨트롤 파일 자동 백업)으로 백업함
PFILE 사본이 있으면 CREATE SPFILE FROM PFILE로, RMAN 백업이 있으면 RESTORE SPFILE로 되살림
패스워드 파일은 백업에서 되살리기보다 orapwd로 다시 만듦
임시 파일은 데이터가 남지 않는 파일이라 백업하지 않음
실습에서는 새 임시 테이블스페이스를 만들어 기본값으로 바꾸거나, 재기동 때 Oracle이 임시 파일을 다시 만든다고 적었음
#개념과 동작 원리
| 파일 | 백업 | 복구 |
|---|---|---|
| SPFILE | CREATE PFILE ... FROM SPFILE, RMAN BACKUP SPFILE, 컨트롤 파일 자동 백업에 포함 |
CREATE SPFILE FROM PFILE, RMAN RESTORE SPFILE |
| 패스워드 파일 | 백업 절차 기재 없음 | orapwd로 재생성 |
| 임시 파일 | 백업 대상 아님 | 새 임시 테이블스페이스로 교체 또는 재기동 때 자동 생성 |
| 파일 관련 질문 | 역할과 장애 시 영향 |
|---|---|
| 파라미터 파일의 역할 | 인스턴스를 구성하는 정보가 든 파일이라, 있어야 인스턴스가 구성됨 |
| 파라미터 파일이 지워지면 바로 다운되는가 | 당장 다운되지는 않지만 내렸다가 다시 올리면 인스턴스가 올라가지 않음 |
| 어디서 멈추는가 | 기동 첫 단계(인스턴스 시작)에서 파라미터 처리 오류가 남 |
| 패스워드 파일의 역할 | SYSDBA 권한 인증용 리스너를 거쳐 SYSDBA로 접속하려면 있어야 함 |
| 패스워드 파일이 없으면 | SYS로 원격 도구(SQL Developer 등)에서 접속할 수 없음 |
| 임시 파일의 용도 | 정렬, 임시 테이블, WITH 절 결과 저장 |
수업 자료는 데이터 파일, 컨트롤 파일, 리두 로그를 데이터베이스 내부 파일로, 패스워드 파일, 파라미터 파일, 아카이브 로그, alert log를 외부 파일로 나눔
내부 파일은 운영 중 지워지면 DB가 멈추고, 외부 파일은 지워져도 DB가 바로 멈추지는 않음
Recovery Catalog로 SPFILE을 복원하는 절차는 Recovery Catalog 유지와 복구에 있음
거기서는 텍스트 PFILE 자체는 RMAN 백업 대상이 아니며, SPFILE 백업에서 RESTORE SPFILE TO PFILE '<경로>'로 만들 수 있다고 적었음
#필수 명령어 또는 SQL
#SPFILE 백업
SELECT dbid FROM v$database;CREATE PFILE = '$ORACLE_HOME/dbs/init<날짜>.ora' FROM SPFILE;BACKUP SPFILE;
SHOW ALL;
CONFIGURE CONTROLFILE AUTOBACKUP ON;결과 해석:
DBID는 카탈로그 없이 자동 백업을 찾을 때 필요함
#PFILE 사본으로 SPFILE 되살리기
CREATE SPFILE FROM PFILE = '$ORACLE_HOME/dbs/init<날짜>.ora';결과 해석: 개별 실행 출력은 기재 없음
#RMAN 백업으로 SPFILE 되살리기
SHOW PARAMETER recoveryls -l <FRA_DIR>/<DB_UNIQUE_NAME>/autobackup/<날짜>/SET DBID <DBID>;
STARTUP NOMOUNT;
RESTORE SPFILE FROM '<FRA_DIR>/<DB_UNIQUE_NAME>/autobackup/<날짜>/<AUTOBACKUP_PIECE>.bkp';
STARTUP FORCE;결과 해석:
실습에서는 SET DBID 뒤 STARTUP을 실행하고 RESTORE SPFILE FROM '<자동 백업 조각>' 뒤 다시 STARTUP했음
SPFILE이 없을 때 RMAN이 임시 파라미터로 NOMOUNT까지 기동하는 흐름으로 보여 위 블록은 STARTUP NOMOUNT로 적었음
자동 백업 조각은 DB_RECOVERY_FILE_DEST 아래 autobackup 디렉터리에서 찾음
#패스워드 파일 다시 만들기
cd $ORACLE_HOME/dbs
orapwd file=orapw<ORACLE_SID> password=<PASSWORD> force=y format=12결과 해석:
실습에서는 비밀번호를 명령줄에 적었음force=y는 기존 파일을 덮어씀format=12 형식의 비밀번호 복잡도 조건은 기재 없음
비밀번호 파일 인증과 REMOTE_LOGIN_PASSWORDFILE은 사용자, 스키마, 인증에 있음
#임시 파일이 사라졌을 때
SELECT * FROM database_properties WHERE property_name = 'DEFAULT_TEMP_TABLESPACE';
SELECT tablespace_name, file_name FROM dba_temp_files;CREATE TEMPORARY TABLESPACE temp2 TEMPFILE '<DATAFILE_DIR>/temp2.dbf' SIZE 50M;
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2;DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES;결과 해석:
실습에서는 임시 파일을 지운 뒤 세션의 정렬 영역을 일부러 아주 작게 잡고 큰 정렬을 실행해, 임시 파일을 써야 하는 상황을 만들었음
ALTER SESSION SET workarea_size_policy = MANUAL;
ALTER SESSION SET sort_area_size = 1;
SELECT a.* FROM dba_objects a, dba_objects b ORDER BY a.object_id DESC;결과 해석:
이 조회는 DBA_OBJECTS를 자기 자신과 곱하는 큰 정렬이라 실습 환경에서만 씀
실습에서는 또 하나의 방법으로 "임시 파일을 지우고 재기동하면 Oracle이 자동으로 만든다"고 적었지만 그 실습 블록은 비어 있음
임시 테이블스페이스 관리는 TEMP 테이블스페이스에 있음
#사용 조건과 주의사항
SPFILE이 없으면 인스턴스를 정상 기동할 수 없으므로 PFILE 사본과 RMAN 자동 백업을 함께 관리함