본문 바로가기

Programing/Oracle

Oracle - Backup & Recovery 2

###################################################
                        백업 스크립트 만들기
                                                2008.07.07
###################################################

1. CTL 파일 백업하기 스크립트 만들기
SQL>  SELECT 'HOST COPY ' || NAME || ' C:\OFFBACKUP' FROM V$CONTROLFILE;

'HOSTCOPY'||NAME||'C:\OFFBACKUP'
-----------------------------------------------------------------------------

HOST COPY C:\ORACLE\ORADATA\ORCL1\CONTROL01.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\CONTROL02.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\CONTROL03.CTL C:\OFFBACKUP

SQL> HOST COPY C:\ORACLE\ORADATA\ORCL1\CONTROL01.CTL C:\OFFBACKUP
        1개 파일이 복사되었습니다.

SQL> HOST COPY C:\ORACLE\ORADATA\ORCL1\CONTROL02.CTL C:\OFFBACKUP
        1개 파일이 복사되었습니다.

SQL> HOST COPY C:\ORACLE\ORADATA\ORCL1\CONTROL03.CTL C:\OFFBACKUP
        1개 파일이 복사되었습니다.

2. DTL 파일 만들기

SQL>  SELECT 'HOST COPY ' || NAME || ' C:\OFFBACKUP' FROM V$DATAFILE;

'HOSTCOPY'||NAME||'C:\OFFBACKUP'
----------------------------------------------------------------------------

HOST COPY C:\ORACLE\ORADATA\ORCL1\SYSTEM01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\UNDOTBS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\CWMLITE01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\DRSYS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\EXAMPLE01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\INDX01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\ODM01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\TOOLS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\USERS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\XDB01.DBF C:\OFFBACKUP

3. LOG 파일 만들기
SQL>  SELECT 'HOST COPY ' || MEMBER || ' C:\OFFBACKUP' FROM V$LOGFILE;

'HOSTCOPY'||MEMBER||'C:\OFFBACKUP'
----------------------------------------------------------------------------

HOST COPY C:\ORACLE\ORADATA\ORCL1\REDO03.LOG C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\REDO02.LOG C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\REDO01.LOG C:\OFFBACKUP


4.
합쳐보자~~~~~~~~ 교집합이 없으므로 UNION 보다 UNION ALL 이 빠르다.
SCRIPT FOR SCRIPT 방식으로 ~

SET HEADING OFF
SET FEEDBACK OFF

SPOOL OFF1.SQL
SELECT 'HOST COPY ' || NAME || ' C:\OFFBACKUP' FROM V$CONTROLFILE
UNION ALL
SELECT 'HOST COPY ' || NAME || ' C:\OFFBACKUP' FROM V$DATAFILE
UNION ALL
SELECT 'HOST COPY ' || NAME || ' C:\OFFBACKUP' FROM V$TEMPFILE
UNION ALL
SELECT 'HOST COPY ' || MEMBER || ' C:\OFFBACKUP' FROM V$LOGFILE
SPOOL OFF
SET HEADING ON
SET FEEDBACK ON
@OFF1.SQL


5. 스크립트 완성!!!!!!

SHUTDOWN IMMEDIATE
HOST COPY C:\ORACLE\ORADATA\ORCL1\CONTROL01.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\CONTROL02.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\CONTROL03.CTL C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\SYSTEM01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\UNDOTBS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\CWMLITE01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\DRSYS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\EXAMPLE01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\INDX01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\ODM01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\TOOLS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\USERS01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\XDB01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\TEMP01.DBF C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\REDO03.LOG C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\REDO02.LOG C:\OFFBACKUP
HOST COPY C:\ORACLE\ORADATA\ORCL1\REDO01.LOG C:\OFFBACKUP
STARTUP




###################################################
                    Backup & Recovery
                                                2008.07.04
###################################################

1. 아카이브 모드인지 확인

SQL> ARCHIVE LOG LIST
데이터베이스 로그 모드              아카이브 모드
자동 아카이브             사용
아카이브 대상            C:\oracle\oradata\ORCL1\archive
가장 오래된 온라인 로그 순서     3
아카이브할 다음 로그   5
현재 로그 순서           5

2.
SQL> @"C:\hanbit\03. ORACLE_Admin_1 (2008.04.07~2008.04.25, 2006.06.30~)\0707\EN
V.sql"

테이블이 변경되었습니다.


인덱스가 변경되었습니다.


4 행이 삭제되었습니다.


테이블이 변경되었습니다.


테이블이 변경되었습니다.

3. 간단하게 백업하기
1) DB 내린다.
2) os 에서 카피 한다.
3) startup

4. DFILE 확인
SQL> SELECT NAME FROM V$DATAFILE;

NAME
-------------------------------------------------------------------------------

C:\ORACLE\ORADATA\ORCL1\SYSTEM01.DBF
C:\ORACLE\ORADATA\ORCL1\UNDOTBS01.DBF
C:\ORACLE\ORADATA\ORCL1\CWMLITE01.DBF
C:\ORACLE\ORADATA\ORCL1\DRSYS01.DBF
C:\ORACLE\ORADATA\ORCL1\EXAMPLE01.DBF
C:\ORACLE\ORADATA\ORCL1\INDX01.DBF
C:\ORACLE\ORADATA\ORCL1\ODM01.DBF
C:\ORACLE\ORADATA\ORCL1\TOOLS01.DBF
C:\ORACLE\ORADATA\ORCL1\USERS01.DBF
C:\ORACLE\ORADATA\ORCL1\XDB01.DBF

10 개의 행이 선택되었습니다.

5. CTL 파일 확인

SQL> SELECT NAME FROM V$CONTROLFILE;

NAME
-------------------------------------------------------------------------------

C:\ORACLE\ORADATA\ORCL1\CONTROL01.CTL
C:\ORACLE\ORADATA\ORCL1\CONTROL02.CTL
C:\ORACLE\ORADATA\ORCL1\CONTROL03.CTL

6. 로그 파일 확인
SQL> SELECT MEMBER FROM V$LOGFILE;

MEMBER
--------------------------------------------------------------------------------

C:\ORACLE\ORADATA\ORCL1\REDO03.LOG
C:\ORACLE\ORADATA\ORCL1\REDO02.LOG
C:\ORACLE\ORADATA\ORCL1\REDO01.LOG



###################################################
                    집합 활용
                                                2008.07.07
###################################################

1. SCOTT 접속 후 테이블 생성

SQL> ED
file afiedt.buf(이)가 기록되었습니다

  1  CREATE TABLE EMP_HIS
  2  AS
  3  SELECT EMPNO, ENAME, SAL
  4  FROM EMP
  5* WHERE DEPTNO = 10
SQL> /

테이블이 생성되었습니다.


2. 1번이 퇴사한 사원들의 집합이라고 가정하고 퇴사하지 않은 사원들을 구하는 쿼리를 만들어보자

SELECT EMPNO, ENAME, SAL FROM EMP
MINUS
SELECT EMPNO, ENAME, SAL FROM EMP_HIS



SELECT * FROM EMP
WHERE EMPNO NOT IN (SELECT EMPNO FROM EMP_HIS);

와 같다.


교집합 : INTERSECT
합집합 : UNION ( 교집합을 빼줌 )
차집합 : MINUS

- 위 3가지는 각각의 비교를 위해서 정렬(SORT) 을 유발한다.
- 하지만 정렬에는 속도저하가 발생하는데........

SELECT EMPNO, ENAME, SAL FROM EMP
UNION ALL
SELECT EMPNO, ENAME, SAL FROM EMP_HIS

- UNION ALL 은 단순히 합해서 보여주는 것이므로 유일하게 정렬을 하지 않는다.

 

'Programing > Oracle' 카테고리의 다른 글

펌]간단한 sqlplus 명령  (0) 2008.08.12
Oracle - ARCHIVE 모드에서 복구 , switch  (0) 2008.07.29
Oracle - Backup & Recovery  (0) 2008.07.29
Oracle - Remote  (0) 2008.07.29
Oracle - Export/Import  (0) 2008.07.29