오라클 데이터베이스 모드 변경//아카이브 프로세스 활성화//백업
*
-데이터베이스 모드 변경(archive log list)
1.마우틴 단계
2.오픈 단계
-아카이브 프로세스 활성화(자동으로 바꾸기)
1.아카이브 로그파일 이름 결정
2.위치결정
3.아카이브 프로세스의 활성화
4.에러 발생시
-로그 스위치 수동 작성 명령어
1.확인
-백업의 대상: 데이터파일, 컨트롤 파일, 리두로그 파일
-컨트롤 파일 위치 알기
-로그파일 위치 알기
-백업대상중인 파일 찾기
-복원해야할 파일이 있는 경우
-테이블스페이스의 백업
1)오라클 가동중 테이블 스페이스 백업
-백업모드로 변경
-백업
-일반모드로 변경
-백업에 실패시(비정상적인 종료)
-파라미터 파일 백업
-dbv 유틸리티(백업이 정상적인지 검사 -명령창에서실행)
-현 데이터 베이스 전체 백업
-아케이브로그 파일들 삭제
-에러시
-시스템 변경
=============================================================================================
sqlplus "/as sysdba"
select sysdate from dual;
archive log list
re:
데이터베이스 로그 모드 아카이브 모드가 아님
자동 아카이브 사용 안함
아카이브 대상 C:\oracle\ora92\RDBMS
가장 오래된 온라인 로그 순서 4
현재 로그 순서 6
-->1. 데이터베이스 모드 변경
shutdown immediate;
startup mount
alter database archivelog;
archive log list
--안되면
sqlplus /nolog
conn /as sysdba
--휴지인스턴스....
startup mount
alter database archivelog;
archive log list
--오픈 단계
alter database open;
-->2.아카이브 프로세스 활성화
show parameter log_archive_start
re:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_start boolean FALSE
show parameter log_archive_dest
log_archive_dest_n
1)아카이브 로그파일 이름 결정
-show parameter log_archive_format
re:
NAME TYPE VALUE
------------------------------------ ----------- -------------
log_archive_format string ARC%S.%T
2)위치결정(폴더 위치 생성)
alter system
set log_archive_dest_1='location=D:\IEDU\archive1'
scope=spfile;
alter system
set log_archive_dest_2='location=D:\IEDU\archive2'
scope=spfile;
alter system
set log_archive_dest_3='location=D:\IEDU\archive3'
scope=spfile;
3)아카이브 프로세스의 활성화
-alter system set log_archive_start=true scope=spfile;
-shutdown immediate
-startup
-archive log list
re:
데이터베이스 로그 모드 아카이브 모드
자동 아카이브 사용
아카이브 대상 D:\IEDU\archive3
가장 오래된 온라인 로그 순서 4
아카이브할 다음 로그 6
현재 로그 순서 6
==============에러생기면
-sqlplus /nolog
-conn /as sysdba
휴지.....
-startup
-shutdown immdiate
-quit
---c:\oracle\ora90\database\spfileIEDU.ora를 확장자 변경
-sqlplus /nolog
-conn /as sysdba
-create spfile from pfile;
=======================================================
-->로그 스위치 수동 작성 명령어
-alter system switch logfile;
re:
시스템이 변경되었습니다.
---------------------------확인----------------------------------------------------------
-select * from v$archive_processes;
re:
PROCESS STATUS LOG_SEQUENCE STAT
---------- ---------- ------------ ----
0 ACTIVE 0 IDLE
1 ACTIVE 0 IDLE
2 STOPPED 0 IDLE
3 STOPPED 0 IDLE
4 STOPPED 0 IDLE
5 STOPPED 0 IDLE
6 STOPPED 0 IDLE
7 STOPPED 0 IDLE
8 STOPPED 0 IDLE
9 STOPPED 0 IDLE
10 개의 행이 선택되었습니다.
--확인 방법
-show parameter log_archive_max_processes;
re:
NAME TYPE VALUE
------------------------------------ ----------- -------------
log_archive_max_processes integer 2
-----------------
alter system set log_archive_max_processes=2;
re:
시스템이 변경되었습니다.
select * from v$archive_processes;
re:
PROCESS STATUS LOG_SEQUENCE STAT
--------- ---------- ------------ ----
0 ACTIVE 0 IDLE
1 ACTIVE 0 IDLE
2 STOPPED 0 IDLE
3 STOPPED 0 IDLE
4 STOPPED 0 IDLE
5 STOPPED 0 IDLE
6 STOPPED 0 IDLE
7 STOPPED 0 IDLE
8 STOPPED 0 IDLE
9 STOPPED 0 IDLE
창2)
-sqlplus "/as sysdba"
-select * from v$archive_processes;
창1)
-conn ejb/ejb
-create table test2(
a number,
b varchar2(20),
c timestamp default sysdate
);
begin
for z in 1.. 200000 loop
insert into test2 values(z,'askim2',default);
end loop;
end;
/
창2)
select * from v$archive_processes;
/
/
창1)
conn /as sysdba
select name from v$archived_log;
창1)
- 입력 취소
rollback;
창2)
select * from v$archive_processes;
창1)
conn /as sysdba
select name from v$archived_log;
select DESTINATION,DEST_name,BINDING,status
from v$archive_dest;
col DESTINATION format a20
col DEST_name format a20
col BINDING format a10
col status format a10
-->백업의 대상(데이터파일, 컨트롤 파일, 리두로그 파일)
select a.TS#,a.NAME tsname, b.FILE#,b.NAME fname,
b.STATUS, b.BYTES from v$tablespace a,v$tempfile b
where a.ts#=b.ts#;
col tname format a20
col tsname foramt a10
--컨트롤 파일에 위치 찾기
select * from v$controlfile;
--로그파일 위치 찾기
select * from v$logfile;
--백업대상중인 파일 찾기
select * from v$backup;
desc v$datafile;
select a.file#,b.name,a.status,a.change#,a.time
from v$backup a,v$datafile b
where a.file#=b.file#;
col name format a20
col status format a15
-복원해야할 파일이 있는 경우
select * from v$recover_file;
-->테이블스페이스의 백업
-1오라클 가동중 테이블 스페이스 백업
select a.TS#,a.NAME tsname, b.FILE#,b.NAME fname,
b.STATUS, b.BYTES from v$tablespace a,v$tempfile b
where a.ts#=b.ts#;
1)백업모드 변경
-alter tablespace ejb begin backup;
-select a.file#,b.name,a.status,a.change#,a.time
from v$backup a,v$datafile b
where a.file#=b.file#;
2)백업
-host
-copy D:\IEDU\ejb.dbf d:\bejb
-exit
3)일반모드 변경
-alter tablespace ejb end backup;
-select a.file#,b.name,a.status,a.change#,a.time
from v$backup a,v$datafile b
where a.file#=b.file#;
-->백업에 실패(백업중 전원등등의 문제로 실패)
-테이블스페이스 만듬
create tablespace ilgi
datafile 'd:\iedu\ilgi.dbf' size 100m;
-ejb로 접속
conn ejb/ejb
-테이블 ilgi tablespace 로 새성
create table test3(
a number,
b varchar2(20)
)
tablespace ilgi;
---비정상적인 종료
conn /as sysdba
alter tablespace ilgi begin backup;
host
copy D:\IEDU\ilgi.dbf D:\bejb
-컴 재부팅
--재시작후
sqlplus /nolog
conn /as sysdba
휴지..
startup
--에러메시지 확인
select a.file#,b.name,a.status,a.change#,a.time
from v$backup a,v$datafile b
where a.file#=b.file#;
host
copy d:\iedu\ilgi.dbf d:\bejb
exit
alter tablespace ilgi end backup; -- 에러시
alter datafase datafile 'd:\iedu\ilgi.dbf' end backup;
alter database open;
-->파라미터 파일 백업
conn /as sysdba
create pfile='d:\bejb\initiedu01.ora' from spfile;
-->dbv 유틸리티 (백업이 잘 되었는가 확인)
명령창에서)
dbv file=d:\bejb\ejb.dbf
logfile=d:\dbv.txt blocksize=8192
--현 데이터 베이스 전체 백업
host
copy d:\iedu\*.* d:\bejb
exit
--아케이브로그 파일들 삭제
conn ejb/ejb
create table test4(
a number,
b varchar2(20),
c timestamp default sysdate
);
begin
for z in 1..300000 loop
insert into test4 values(z,'asadf',default);
end loop;
end ;
/
commit;
-select count(*) from test4;
re:
COUNT(*)
----------
300000
-----------------------------
conn /as sysdba
--시스템 변경
alter system switch logfile;
===================================================================================
4-21(목에 배울 내용)
아카이브모드,자동프로세스
데이터베이스 전체백업
ejb 사용자에게 300000데이터 삽입
=============================================에러시=================================
conn /as sysdba
shutdown abort;
quit
sqlplus /nolog
conn /as sysdba
startup
--에러(메체 복구...)
alter database datafile '&&&&' offline;
alter tablespace ilgi end backup;
alter database open;
conn ejb/ejb
..
sqlplus "/as sysdba" (자동 startup)
sqlplus "/nolog" 로 접속하면 아무것도 접속 안함(startup 상태가 아님)
<==========데이터베이스 개방이 안되었습니다(.dbf 파일 을 날렸을때 다시 복구한후 ======>
SQL> alter database datafile 'D:\IEDU\ILGI' offline;
데이타베이스가 변경되었습니다.
SQL> alter database open;
데이타베이스가 변경되었습니다.
SQL> drop tablespace ilgi;
drop tablespace ilgi
*
1행에 오류:
ORA-01549: 테이블스페이스가 비어있지 않으므로 INCLUDING CONTENTS 옵션을 사용해
주십시오
SQL> drop tablespace ilgi INCLUDING CONTENTS;
테이블 영역이 삭제되었습니다.
SQL> shutdown
데이터베이스가 닫혔습니다.
데이터베이스가 마운트 해제되었습니다.
ORACLE 인스턴스가 종료되었습니다.
SQL> startup
ORACLE 인스턴스가 시작되었습니다.
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.