ORACLE

오라클 데이터베이스 모드 변경//아카이브 프로세스 활성화//백업

gold99 2024. 1. 17. 00:08

*
-데이터베이스 모드 변경(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
데이터베이스가 마운트되었습니다.
데이터베이스가 열렸습니다.