DB 의 변경 이력 정보들은 리두가 가지고 있는데
리두는 순환 형식의 파일이기 때문에 어느 순간 overwrite 가 되어 버린다.
그래서 순환을 할 때마다 current 그룹의 내용을 기록하는 것이 아카이브 모드 archive mode
★ 노아카이브 로그 백업 no archive log backup
- 무조건 일관성 있는 백업을 수행한다.
(일관성 있는 백업 = close backup = cold backup = offline backup)
- DB 운영 중에 백업을 받을 수 없다.
(DB 를 정상적으로 종료해야 한다 / shutdown normal | transactional | immediate)
(주의!!!!!!!!!!!!!!! shutdown abort 해서 백업하면 절대 복구 못한다!!!!!!!!!!!!!!!!!!)
- whole database backup 해야 한다.
- 모든 데이터파일, 컨트롤파일, 리두로그 파일을 카피 copy
- 초기 파라미터 파일이 깨지면 SGA 메모리 구성이 어떻게 되어있는지 모르게 되므로
같이 카피해놓는 것이 좋다.
백업시나 파일을 (파일 크기라든가) 수정했을 경우에는
꼭 기록을 해놓자.
(d 102)
select current_scn from v$database;
현재 SCN 번호 확인하기
1640530
(d 102)
select current_scn from v$database;
그런데 또한번 확인해보면 : 바뀌어 있다.
1640538
(얘는 계속해서 바뀐다)
(d 102)
select checkpoint_change# from v$database;
체크포인트 시점의 SCN 번호 확인하기
★ 체크포인트: DBC 에 있는 커밋된 더티 버퍼들이 디스크로 내려가는 것
이 순간까지의 데이터는 복구할 필요가 없다
(따라서 체크포인트 = 리커버리 기준점)
체크포인트 정보는 데이터 파일 헤더에 저장되어 있다.0
그럼 이제 백업을 받아보자.
(d 102)
select name, checkpoint_change# from v$datafile;
현재 데이터 파일 헤더에 있는 체크포인트 정보 확인하기
수위가 맞춰져 있는 것이 보인다.
(d 102)
select scn_to_timestamp(1639499) from dual;
SCN 번호를 이용해서 마지막 체크포인트가 발생한 시점의 시간 알아보기
(SCN 번호로 시간 정보를 확인할 수도 있다.)
백업을 받기 위해서는 백업받아야 하는 파일들의 위치를 알아야 한다.
(d 102)
select name from v$datafile;
데이터파일들 확인하기
(d 102)
select name from v$controlfile;
컨트롤파일들 확인하기
(d 102)
select member from v$logfile;
리두로그파일들 확인하기
(d 102)
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;
리두 정보 확인하기
아까, 마지막 체크포인트 번호가 1639499 번이었는데
이 이후의 변경 이력 정보들은
(d 102)
select * from v$log;
리두로그 정보 확인
1 번 그룹에 저장되어 있을 것
(d 102)
select name from v$tempfile;
temp 파일 확인하기
템프 파일도 꼭 놓치지 말고 백업해 주자.
(!!!!!!!!!!!!!!!!!!!!!!! 백업시에는 파일을 하나도 놓치면 안된다 !!!!!!!!!!!!!!!!!!!!!!!!)
(d 102 또는 퍼티)
archive log list
현재 아카이브 모드인지 노아카이브 모드인지 확인하기 : 노아카이브 모드라고 나온다.
show parameter DB_RECOVERY_FILE_DEST
DB_RECOVERY_FILE_DEST 라는 파라미터 보기
(QUESTION. DB_RECOVERY_FILE_DEST 얘는 또 뭐하는 놈이야?
플래식 복구 영역의 기본 위치 지정... 이라는데 이게 뭔 외계어야?...)
(ANSWER. DB 복구를 위해 필요한 파일들의 위치를 지정하는 파라미터. 그냥 이름 그대로네)
저 위치
/u01/app/oracle/fast_recovery_area
에 아카이브받게 된다.
(d 102)
select tablespace_name, logging from dba_tablespaces;
테이블스페이스 정보 중에서 tablespace_name, logging 정보 확인
temp 외에는 다 logging 으로 되어 있어야 한다.
(nologging = 테이블스페이스에 속한 세그먼트들에 변경 작업이 일어날 때 리두 만들지 않겠다는 뜻)
(temp 는 영구적인 테이블스페이스가 아니므로 기본이 nologging)
nologging으로 해야 될 때 = 테이블스페이스를 처음 만들고 대량의 데이터를 부어넣을 때,
처음 시점에는 리두 만들 필요가 없다 = logging 으로 설정할 필요가 없다.
사실 unrecoverable load data 를 할 때도 약간의 리두가 만들어지는데
그것마저 하지 않는 것이 nologging
SQL>
alter tablespace example logging
노로깅 모드로 되어있는 테이블스페이스를 로깅 모드로 바꾸기
DB를 내리기 전에
백업해야 할 파일들이 어느 위치에 있는지 확인해보자.
/u01/app/oracle/oradata/ora11g/
모두 이 위치에 있다.
★ 백업받기
1. DB 내리기
shutdown immediate
SQL> shutdown immediate
SQL 에서 빠져나오기
SQL> exit
현재 위치 보기
[oracle@oracle ora11g]$ pwd
/u01/app/oracle/oradata/ora11g
백업용 디렉토리 생성하기
[oracle@oracle ~]$ pwd
/home/oracle
여기에 백업 디렉토리를 만들자.
[oracle@oracle ~]$ mkdir -p backup/noarch/
새로 만든 백업 디렉토리로 들어가기
[oracle@oracle ~]$ cd backup/noarch/
[oracle@oracle noarch]$ pwd
/home/oracle/backup/noarch
주소를 복사해서
백업할 파일들이 있는 위치로 가기
[oracle@oracle noarch]$ cd /u01/app/oracle/oradata/ora11g/
[oracle@oracle ora11g]$ ls
control01.ctl redo01.log redo03.log system01.dbf undotbs01.dbf
example01.dbf redo02.log sysaux01.dbf temp01.dbf users01.dbf
2. 카피
a: 파일의 속성까지 그대로 카피
v: 화면에 출력
[oracle@oracle ora11g]$ cp -av *.* /home/oracle/backup/noarch/
모든 파일과 모든 확장자에 대해
파일의 속성까지 그대로 카피하고 + 화면에 결과도 출력
/home/oracle/backup/noarch/
이 위치로 카피
(시간이 꽤나 걸린다...)
백업 (카피) 완료
실제 백업받아놓은 곳으로 가서 잘 받아졌는지 확인해보기
[oracle@oracle ora11g]$ cd /home/oracle/backup/noarch/
[oracle@oracle noarch]$ ls
control01.ctl redo01.log redo03.log system01.dbf undotbs01.dbf
example01.dbf redo02.log sysaux01.dbf temp01.dbf users01.dbf
파일들 확인하기
[oracle@oracle noarch]$ ls -l
a 옵션을 썼기 때문에 속성까지 모두 동일하게 카피되었다.
백업본이 있기 때문에 이제는 원본이 만약 깨지더라도 > 여기 있는 백업본들을 원래 위치에 돌려놓으면 된다.
(백업하면 카피된 시점으로 DB 가 되돌아가게 된다)
★ DB 스타트업
SQL> startup
ORACLE instance started.
Total System Global Area 711430144 bytes
Fixed Size 1367004 bytes
Variable Size 448791588 bytes
Database Buffers 255852544 bytes
Redo Buffers 5419008 bytes
Database mounted.
Database opened.
2024년 1월 9일 6교시 시나리오 5. 백업 X + 리두 X + TBS 안 세그먼트 O (0) | 2024.01.09 |
---|---|
2024년 1월 9일 5교시 시나리오 4. 특정 dbf 손상 + 백업 X + 리두 O (0) | 2024.01.09 |
2024년 1월 9일 4교시 시나리오 3. 특정 dbf 손상 + 백업 X + 리두 X (0) | 2024.01.09 |
2024년 1월 9일 3교시 시나리오 2. 특정 dbf 손상 + 백업본 O + 백업 이후 리두 정보 X = 완전 복구 불가능 (0) | 2024.01.09 |
2024년 1월 9일 2교시 시나리오 1. 특정 dbf 손상 + 백업본 O + 백업 이후 리두 정보 O (0) | 2024.01.09 |