###################################################
백업 스크립트 만들기
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 은 단순히 합해서 보여주는 것이므로 유일하게 정렬을 하지 않는다.
백업 스크립트 만들기
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 |