상세 컨텐츠

본문 제목

2024년 1월 10일 1교시 문제풀이를 통한 노아카이브 모드에서의 콜드 백업 실습

오라클 백업 리커버리

by 병아리 엔지니어 2024. 1. 10. 09:49

본문

[문제]

 

1. archive log mode 인지 noarchive log mode 인지 확인하세요.

2. data file, temp file, redo log file 정보를 확인하세요.

3. noarchive log mode 입니다. Whole database backup(일관성 있는 백업,  cold backup) 을

/home/oracle/backup/noarch/20240110 디렉토리에 백업해 주세요. 초기 파라미터 파일도 백업해 주세요.

 

더보기

[나의 풀이]

 

1. archive log mode 인지 noarchive log mode 인지 확인하세요.

 

2. data file, temp file, redo log file 정보를 확인하세요.

 

(d 102)

select name from v$datafile;

데이터파일들 확인하기

 

(d 102)

select name from v$controlfile;

컨트롤파일들 확인하기

 

(d 102)

select name from v$tempfile;

temp 파일 확인하기

 

(d 102)

select name from v$tempfile;

temp 파일 확인하기

 

 

3. noarchive log mode 입니다. Whole database backup(일관성 있는 백업,  cold backup) 을

/home/oracle/backup/noarch/20240110 디렉토리에 백업해 주세요. 초기 파라미터 파일도 백업해 주세요.

 

① 디렉토리 만들기

 

 

[oracle@oracle ~]$ cd /home/oracle/backup/noarch/
[oracle@oracle noarch]$ pwd
/home/oracle/backup/noarch

 

[oracle@oracle noarch]$ mkdir -p 20240110

 

[oracle@oracle noarch]$ ls
20240110       redo01.log  sysaux01.dbf  undotbs01.dbf
control01.ctl  redo02.log  system01.dbf  users01.dbf
example01.dbf  redo03.log  temp01.dbf

 

 

 

② 백업파일 위치 확인하기

 

백업해야 할 원본파일들이 있는 위치:

/u01/app/oracle/oradata/ora11g/

 

 

[oracle@oracle dbs]$ cd /u01/app/oracle/oradata/ora11g/
[oracle@oracle ora11g]$ pwd
/u01/app/oracle/oradata/ora11g

 

 

[oracle@oracle ora11g]$ ls
control01.ctl  redo02.log    system01.dbf   users01.dbf
example01.dbf  redo03.log    temp01.dbf
redo01.log     sysaux01.dbf  undotbs01.dbf

파일 확인하기

 

백업

 

 

 

초기파라미터 파일 위치:

/u01/app/oracle/product/11.2.0.4/db_1/dbs

 

 

[oracle@oracle ora11g]$ cd $ORACLE_HOME/dbs

[oracle@oracle dbs]$ pwd
/u01/app/oracle/product/11.2.0.4/db_1/dbs

 

 

[oracle@oracle dbs]$ ls
hc_ora11g.dat  initora11g.ora  orapwora11g
init.ora       lkORA11G        spfileora11g.ora

초기파라미터 파일 확인하기

 

③ 백업 1. /u01/app/oracle/oradata/ora11g/ 위치의 파일들 백업하기

 

[oracle@oracle noarch]$ cd /u01/app/oracle/oradata/ora11g/

먼저 백업해야 할 파일들이 있는 위치로 가서

 

[oracle@oracle ora11g]$ ls
control01.ctl  redo02.log    system01.dbf   users01.dbf
example01.dbf  redo03.log    temp01.dbf
redo01.log     sysaux01.dbf  undotbs01.dbf

파일들 확인하고

 

[oracle@oracle ora11g]$ cp -av *.* /home/oracle/backup/noarch/20240110

모든 파일을 속성까지 똑같이, 새로 만든 20240110 디렉토리에 백업하기

 

 

백업 완료

 

④ 백업 2. $ORACLE_HOME/dbs 위치의 초기 파라미터 파일 백업하기

 

[oracle@oracle ora11g]$ cd $ORACLE_HOME/dbs

파일이 있는 위치로 가서

 

[oracle@oracle dbs]$ ls
hc_ora11g.dat  initora11g.ora  orapwora11g
init.ora       lkORA11G        spfileora11g.ora

초기 파라미터 파일 확인하고

 

spfileora11g.ora

 

2023 년 12월 8일 2교시 수업 때

 

mv spfileora11g.ora spfileora11g.bak
이렇게 저 초기 파라미터 파일의 백업본을 하나 만들어 놓고

 

(!!!!!!!!!!!!!!!!!!!!!!!!!! 주의! 현장에서는 mv 하면 안되고 cp 해야 함!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)

 

이런 내용을 찾았는데

난 간이 떨려서 복사하고 싶지 않아...

와... 근데 나 3번 문제 풀면서 DB 안내리고 백업했어...

 

DB를 안 내리고 백업을 해도 백업파일이 만들어지긴 하지만

그 파일로는 복구하는 게 의미가 없다 (복구해도 원래 있던 파일들만 깨지게 만들게 될 뿐)

그렇지만 이 상태에서 DB 를 내리고 새로 백업하면

DB 를 내린 상태에서 새로 백업받는 파일들이

DB 를 안내리고 받은 상태의 백업파일들에 덮어씌워지면서

아무런 문제도 없게 된다.

(휴... 다행이야...!)

 

(와... 근데 나 이거 위에 거 만치에한테 물어봤던 내용 맞지?... 큰일났다고 있는 호들갑 없는 호들갑 다 떨어가면서?

오늘이 1월 31일인데 21일 전에는 이런 걸 질문이라고 했었군그래?...

정말 만치에도 인내심 대단해... 웃는 얼굴로 받아주기 힘들었을 텐데

진짜 만치에는 하늘에서 내려온 천사야 ㅠㅠ )

 

[정답]

더보기

[정답]

 

1. archive log mode 인지 noarchive log mode 인지 확인하세요.

2. data file, temp file, redo log file 정보를 확인하세요.

3. noarchive log mode 입니다. Whole database backup(일관성 있는 백업,  cold backup) 을

/home/oracle/backup/noarch/20240110 디렉토리에 백업해 주세요. 초기 파라미터 파일도 백업해 주세요.

 

1. archive log mode 인지 noarchive log mode 인지 확인하세요.

 

SQL>

select log_mode from v$database;

 

 

SQL>

archive log list;

 

 

2. data file, temp file, redo log file 정보를 확인하세요.

 

SQL>

select name from v$datafile;

데이터 파일 확인

 

 

SQL>

select name from v$tempfile;

템프 파일 확인

 

 

SQL>

select name from v$controlfile;

컨트롤 파일 확인

 

 

SQL>

select member from v$logfile;

(리두로그 파일은 네임 컬럼이 아니라 멤버 컬럼으로 확인해야 한다)

 

 

select a.group#, a.member, b.bytes/1024/1024 mb, b.archived, b.status
from v$logfile a, v$log b
where a.group# = b.group#
order by 1, 2;

 

 

 

 

 

3. noarchive log mode 입니다. Whole database backup(일관성 있는 백업,  cold backup) 을

/home/oracle/backup/noarch/20240110 디렉토리에 백업해 주세요. 초기 파라미터 파일도 백업해 주세요.

 

SQL>

select status from v$instance;

인스턴스가 열려 있는 상태인지 확인

 

 

SQL>

shutdown immediate

DB 내리기

 

 

SQL> !

OS로 나가기

 

 

1단계. 디렉토리 만들기

 

[oracle@oracle]$ cd backup/noarch

백업 디렉토리로 가기

 

[oracle@oracle noarch]$ mkdir 20240110

오늘 날짜로 된 백업용 디렉토리 만들기

 

 

[oracle@oracle noarch]$ cd 20240110

 

[oracle@oracle noarch]$ cd /u01/app/oracle/oradata/ora11g/

백업해야 하는 원본파일들이 있는 위치로 가기

 

 

2단계. 데이터 파일, 리두로그 파일, 컨트롤 파일, 템프 파일 등등 백업하기

 

[oracle@oracle ora11g]$ cp -av *.* /home/oracle/backup/noarch/20240110

원본파일이 있는 디렉토리의 모든 파일들을 새 위치 /home/oracle/backup/noarch/20240110 로 백업

 

 

 

3단계. 초기 파라미터 파일 백업하기

 

SQL>

show parameter spfile

 

현재 떠있는 초기 파라미터 파일 확인하기

 

 

spfile 을 pfile 로 생성하면 그게 백업이므로

 

SQL>

create pfile from spfile;

spfile 이 있는 위치에 pfile 도 생성됨

(init<SID>.ora 라는 이름으로 만들어짐)

 

SQL>

create pfile='/home/oracle/backup/noarch/20240110/initora11g_20240110.ora' from spfile;

 

다른 위치에 pfile 생성하기

백업파일 이름을 정할 때는 그 파일을 만든 날짜도 꼭 같이 써주는 것이 좋다.

 

 

create pfile='절대경로' from spfile;

(spfile 로부터 pfile 을, 원하는 위치에 만드는 마법의 주문)

 

그럼 새로 만든 파일이 있는 물리적인 위치로 한번 가보자.

 

[oracle@oracle ora11g]$ cd /home/oracle/backup/noarch/20240110/

 

 

initora11g_20240110.ora 이 파일이 생성되었는지 확인해보기

 

 

만일에 대비해서 꼭 pfile 하나 정도는 만들어 놓자.

관련글 더보기