오라클/작업 script

[DB] ORACLE import, export

끄적끄적 2008. 11. 18. 11:38
출처 : http://www.superuser.co.kr, http://blog.empas.com/bkseo21/18491412

import, export사용(imp, exp)

linux라는 사용자로 연결한다
SQL> connect linux/linux
연결되었습니다.
SQL> set pagesize 30

linux가 가진 테이블은 다음과 같다
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
S_CUSTOMER TABLE
S_DEPT TABLE
S_EMP TABLE
S_IMAGE TABLE
S_INVENTORY TABLE
S_ITEM TABLE
S_LONGTEXT TABLE
S_ORD TABLE
S_PRODUCT TABLE
S_REGION TABLE
S_TITLE TABLE
S_WAREHOUSE TABLE
TEST TABLE
13 개의 행이 선택되었습니다.
SQL> quit
Oracle8 Release 8.0.5.0.0 - Production
PL/SQL Release 8.0.5.0.0 - Production에서 분리되었습니다.
[linux@localhost db]$ ls -l /usr/local/Oracle
total 2
drwxr-xr-x 3 oracle dba 1024 Sep 22 13:23 app
drwxr-xr-x 3 oracle dba 1024 Sep 22 13:26 oradata
[linux@localhost db]$ ls -l /usr/local/Oracle/oradata
total 1
drwxr-xr-x 2 oracle dba 1024 Sep 22 13:34 kang
[linux@localhost db]$ ls -l /usr/local/Oracle/oradata/kang
total 131172
-rw-r----- 1 oracle dba 1435648 Oct 5 23:46 control01.ctl
-rw-r----- 1 oracle dba 1435648 Oct 5 23:46 control02.ctl
-rw-r----- 1 oracle dba 1435648 Oct 5 23:46 control03.ctl
-rw-r----- 1 oracle dba 15730688 Oct 5 23:44 rbs01.dbf
-rw-r----- 1 oracle dba 512512 Oct 5 23:41 redokang01.log
-rw-r----- 1 oracle dba 512512 Oct 5 23:42 redokang02.log
-rw-r----- 1 oracle dba 512512 Oct 5 23:44 redokang03.log
-rw-r----- 1 oracle dba 83888128 Oct 5 23:44 system01.dbf
-rw-r----- 1 oracle dba 1050624 Oct 5 23:42 temp01.dbf
-rw-r----- 1 oracle dba 26216448 Oct 5 23:42 tools01.dbf
-rw-r----- 1 oracle dba 1050624 Oct 5 23:42 users01.dbf

linux의 테이블을 export한다. OCP에서는 이 툴을 이용하는 백업을 논리적(logical) 백업이라고 한다
그냥 명령인자없이 주면 interactive하게 진행할 수 있다.
이 경우 direct백업(특별한 경우가 아닌 이상, 이 방법으로 하면 속도가 빨라진다.)이 불가능하다(디폴트로 N)
[linux@localhost db]$ exp linux/linux
Export: Release 8.0.5.0.0 - Production on 화 Oct 5 23:46:43 1999
(c) Copyright 1998 Oracle Corporation. All rights reserved.

연결할 곳: Oracle8 Release 8.0.5.0.0 - Production
PL/SQL Release 8.0.5.0.0 - Production
배열 인출 버퍼 크기 입력: 4096 >
엑스포트 파일: expdat.dmp > 그냥 엔터(디폴트 화일명은 expdat.dmp이다)

논리적 백업은 3가지가 있는데 아래에 있는 user, table과 아래에 나오지 않은 full백업이 있다
(full백업은 보통 dba만이 할 수 있다, 만일 백업만을 전담할 사용자를 둔다면, exp_full_database, imp_full_database 권한을 주면 된다.).
user는 사용자가 가진 스키마의 모든 것들을 export하는 것이고, table은 말 그대로 사용자의 지정된 table만을 export하는 것이다.
full은 전체 DB를 백업한다


(2)U(사용자), 또는 (3)T(테이블): (2)U > 여기서는 2을 선택했다
권한부여 엑스포트 (yes/no): yes > 그냥 엔터
테이블 데이터 엑스포트 (yes/no): yes > 그냥 엔터
확장 영역 압축 (yes/no): yes > 그냥 엔터
KO16KSC5601 문자 설정과 KO16KSC5601 NCHAR 문자 설정에서 엑스포트가 종료되었습니다
. LINUX 사용자를 위해 외래 함수 라이브러리 이름을 엑스포트합니다
. LINUX 사용자에 대한 개체 유형 정의를 엑스포트 합니다
LINUX의 개체를 엑스포트하려고 합니다 ...
. 데이터베이스 링크 엑스포트 중
. 순차 번호 엑스포트 중
. 클러스터 정의 엑스포트 중
. LINUX의 테이블을 엑스포트하려고 합니다 via 규정 경로...
. . 테이블 S_CUSTOMER(를)을 엑스포트 중 15 행이 엑스포트됨
. . 테이블 S_DEPT(를)을 엑스포트 중 12 행이 엑스포트됨
. . 테이블 S_EMP(를)을 엑스포트 중 25 행이 엑스포트됨
. . 테이블 S_IMAGE(를)을 엑스포트 중 19 행이 엑스포트됨
. . 테이블 S_INVENTORY(를)을 엑스포트 중 114 행이 엑스포트됨
. . 테이블 S_ITEM(를)을 엑스포트 중 62 행이 엑스포트됨
. . 테이블 S_LONGTEXT(를)을 엑스포트 중 33 행이 엑스포트됨
. . 테이블 S_ORD(를)을 엑스포트 중 16 행이 엑스포트됨
. . 테이블 S_PRODUCT(를)을 엑스포트 중 33 행이 엑스포트됨
. . 테이블 S_REGION(를)을 엑스포트 중 5 행이 엑스포트됨
. . 테이블 S_TITLE(를)을 엑스포트 중 8 행이 엑스포트됨
. . 테이블 S_WAREHOUSE(를)을 엑스포트 중 5 행이 엑스포트됨
. . 테이블 TEST(를)을 엑스포트 중 16 행이 엑스포트됨
. 동의어 엑스포트 중
. 뷰 엑스포트 중
. 저장 프로시저 엑스포트 중
. 참조 무결성 제약조건 엑스포트 중
. 트리거 엑스포트 중
. 이후 테이블 처리를 엑스포트 중
. 스냅샷 엑스포트 중
. 스냅샷 로그 엑스포트 중
. 작업 대기열을 엑스포트 중
. 리프레쉬 그룹과 자식 엑스포트 중
엑스포트가 경고 없이 정상적으로 종료되었습니다.
[linux@localhost db]$ ls -l
total 96
-rw-rw-r-- 1 linux linux 3340 Aug 15 22:30 JdbcTest.class
-rw-r--r-- 1 linux linux 3112 Aug 15 22:43 JdbcTest.java
drwxrwxr-x 2 linux linux 1024 Oct 1 01:10 db_ex
-rw-rw-r-- 1 linux linux 40960 Oct 5 23:46 expdat.dmp
-rw-r--r-- 1 linux linux 41841 Jun 30 11:59 summit.sql
-rw-rw-r-- 1 linux linux 4096 Oct 5 23:46 사용자관리-백업_리스토어.txt

kang이라는 사용자로 import를 수행한다.
[linux@localhost db]$ imp kang/kang
Import: Release 8.0.5.0.0 - Production on 화 Oct 5 23:48:1 1999
(c) Copyright 1998 Oracle Corporation. All rights reserved.

연결할곳: Oracle8 Release 8.0.5.0.0 - Production
PL/SQL Release 8.0.5.0.0 - Production
임포트 파일: expdat.dmp >
삽입 버퍼 크기를 입력하십시오 (최소치는 4096) 30720>
엑스포트 파일은 규정 경로를 거쳐 EXPORT:V08.00.05 에 의해 생성되었습니다
경고: 개체는 다른 사용자 LINUX(이)가 엑스포트한 것입니다.
임포트 파일의 내용만 표시합니다. (yes/no): no >
개체 존재로 인해 발생한 생성 오류는 무시합니다. (yes/no): no >
권한부여 임포트 (yes/no): yes >
테이블 데이터 임포트 (yes/no): yes >
엑스포트 파일 전체를 임포트합니다. (yes/no): no >
사용자명:linux 여기서 kang이라고 입력하지 않도록 주의한다
테이블(T) 또는 분할(T:P)명을 입력하십시오. 널 목록은 사용자의 모든 테이블을 의미합니다.
테이블(T) 또는 분할(T:P)명을 입력하거나 완료 시에는 .을 입력하십시오.
. LINUX 개체를 KANG(으)로 임포트하는 중입니다.
. . 테이블 "S_CUSTOMER"(를)을 임포트 중 15 행이 임포트되었습니다
. . 테이블 "S_DEPT"(를)을 임포트 중 12 행이 임포트되었습니다
. . 테이블 "S_EMP"(를)을 임포트 중 25 행이 임포트되었습니다
. . 테이블 "S_IMAGE"(를)을 임포트 중 19 행이 임포트되었습니다
. . 테이블 "S_INVENTORY"(를)을 임포트 중 114 행이 임포트되었습니다
. . 테이블 "S_ITEM"(를)을 임포트 중 62 행이 임포트되었습니다
. . 테이블 "S_LONGTEXT"(를)을 임포트 중 33 행이 임포트되었습니다
. . 테이블 "S_ORD"(를)을 임포트 중 16 행이 임포트되었습니다
. . 테이블 "S_PRODUCT"(를)을 임포트 중 33 행이 임포트되었습니다
. . 테이블 "S_REGION"(를)을 임포트 중 5 행이 임포트되었습니다
. . 테이블 "S_TITLE"(를)을 임포트 중 8 행이 임포트되었습니다
. . 테이블 "S_WAREHOUSE"(를)을 임포트 중 5 행이 임포트되었습니다
. . 테이블 "TEST"(를)을 임포트 중 16 행이 임포트되었습니다
사용 가능한 제약 조건에 관해서...
임포트가 경고 없이 정상적으로 종료되었습니다.
[linux@localhost db]$ sqlplus
SQL*Plus: Release 8.0.5.0.0 - Production on 화 Oct 5 23:48:37 1999
(c) Copyright 1998 Oracle Corporation. All rights reserved.
사용자명 입력: kang
암호 입력:
Connected to:
Oracle8 Release 8.0.5.0.0 - Production
PL/SQL Release 8.0.5.0.0 - Production

정말 import가 되었는지 확인하자
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
S_CUSTOMER TABLE
S_DEPT TABLE
S_EMP TABLE
S_IMAGE TABLE
S_INVENTORY TABLE
S_ITEM TABLE
S_LONGTEXT TABLE
S_ORD TABLE
S_PRODUCT TABLE
S_REGION TABLE
S_TITLE TABLE
S_WAREHOUSE TABLE
TEST TABLE
13 개의 행이 선택되었습니다.


다시 system으로 접속해서 kang이라는 사용자를 지운다.
이때 kang이라는 사용자의 schema에는 테이블이 존재하므로 cascade옵션을 사용해야 한다

SQL> connect system
암호 입력:
연결되었습니다.
SQL> drop user kang;
drop user kang
*
1행에 오류:
ORA-01922: 'KANG'(을)를 삭제하려면 CASCADE를 지정하여야 합니다

SQL> drop user kang cascade;
사용자가 삭제되었습니다.

추가: 2001-12-20
imp에서 show패러미터는 export파일의 내용을 보여주고, 실제 import는 수행하지 않는다.
보여주는 내용이 SQL문으로 되어 있으므로 어떤 경우, 유용하게 사용될 수 있다.

imp system/xxxxxx full=y show=y file=full_20011220.dmp log=exp_content.sql


복구과정
1. 가장 최근의 exp파일에서 full=y inctype=system으로 imp를 수행하여 data dictionary와 DB구조들을 재생성
(이때 적용될 exp파일은 complete, cumulative, incremental의 종류에 관계없이 가장 최근의 exp파일이다.)
2. 가장 최근의 complete exp파일에서 full=y inctype=restore로 import한다.
(나머지 exp파일들에 대해 full=y와 inctype=restore로 계속 수행한다)
3. 가장 최근의 complete exp파일 이후로 수행된 cumulative exp파일들을 처리
4. 가장 최근의 cumulative exp파일 이후로 수행된 incremental exp파일들을 처리

export시 DB를 restricted session에 두고,(alter system enable restricted session)
exp 패러미터중 consistent를 Y에 두면 최소한의 읽기일관성 보장한다.
단, consistent패러미터는 complete, cumulative에서만 사용할 수 있다.
consistent패러미터는 incremental에서는 사용될 수 없으므로, incremental수행시에는
DB를 restricted session에 두고 수행하는 것이 좋다.


-- 읽기일관성 문제 예
테이블 데이터가 먼저 export되고, index는 그 다음에 수행된다.
따라서, 테이블데이터에 있지 않으나, 인덱스에는 해당 데이터가 있을 수도 있다.
export수행중, 변경된 데이터는 export파일에 저장되지 않는다.


conventional Vs direct
디폴트는 conventional path를 이용해 export된다.
conventional path는 SQL을 SQL*PLUS에서 수행하는 것과 동일한 방식으로 실행된다.
direct패러미터는 디폴트가 N이므로 명시적으로 Y값으로 설정해야 한다.
direct는 데이터 정의와 몇몇 SQL을 skip하여 수행되므로 백업의 속도가 빠르다.
direct path를 사용할 때는 buffer패러미터가 사용되지 않는다.


full=y로 수행된 export파일은 import시 user,table,full 모두에 사용될 수 있다


출처 : http://www.superuser.co.kr, http://blog.empas.com/bkseo21/18491412

데이터 마이닝
PL/SQL코드 숨기기(wrap유틸리티 사용)
패키지/함수/프로시저
Net8 설정
Oracle Database 생성(8.1.7)
External Table
하나의 호스트에 2개의 DB인스턴스 실행
redo log파일이름 변경
실수로 데이터파일 삭제시 처리방안
초간단 트리거강좌
Recovery Catalog를 위한 DB생성
data file이름 변경
SQL*LOADER 1편
COPY사용법
스냅샵의 사용
Database Link사용법
DBVERIFY사용
사용자의 default tablespace변경
파티셔닝 이용하기
SQL Trace / TKPROF 의 사용
autotrace사용하기(Windows 2000 + Oracle 8i(8.1.6) )
실행계획 설명
윈도NT에서 커맨드라인에서 오라클서비스 시작/종료(net명령)
NT에서 Instance Manager를 이용한 서비스 제어
ODBC설정과 사용
DB삭제하기
Oracle Database Assistant를 이용한 DB생성
윈도NT에서 DB생성
DBMS_REPAIR패키지 사용하기
롤백세그먼트와 트랜잭션
List Partitioning
tablespace의 coalesce
변수대입에 대해
ORDBMS기능 맛배기
8이후 추가된 disable novalidate
테이블 저장관계 테스트
시스템 권한 & 객체 권한의 grant/revoke
롤과 권한에 대한 실습
TABLESPACE의 CREATION과 DROP
아카이브모드 사용
online backup(archive log mode)
offline 백업/복구
full export and import실습
full DB export 사용
import, export사용(imp, exp)
로그스위치
제약조건(constraint)를 위반하는 행(row) 알아내기
커맨트 달기
읽기전용 트랜잭션
클러스터 사용
테이블이름 변경과 View(with check opeion)와의 관계
사용자 생성
로그인패스워드변경
패스워드파일을 사용한 인증(DB인증)
데이터베이스 생성
기본적인 테이블 작업
Oracle Networking Services FAQ (SQL*Net, Net8 and Net9)
Overload의 제거
랜덤한 숫자/문자 생성(DBMS_RANDOM 패키지)
컬럼값을 암호화하여 저장(DBMS_OBFUSCATION_TOOLKIT 패키지)
statspack 사용방법
스토어드 프로시저/함수를 자바로 작성하는 법
SQL*PLUS를 통한 SQL문 사용 못하게 하기
방화벽내 오라클서버 접근
merge(MySQL의 replace 기능와 동일)
대소문자 구분없이 검색할때 인덱스 태우기
Oralce Names Server 사용
tnsnames.ora없이 원격DB에 접속
Intelligent Agent
SNMP for Oracle
서비스에서 리스너 제거후 다시 등록
using backup controfile 복구 시나리오
SQL문장의 끝을 세미콜론으로 지정
J2EE의 CloudScape
테이블스페이스 백업/복구(hot backup 시나리오 실습)
컨트롤 파일의 재생성(DB명 변경)
원격지에서 오라클서버 시동/종료
시동/종료를 새로운 방식으로..
[DB2]db2look
[DB2]db2move
Hierarchical Query(조직구성도..)
[DB2]export & import
log miner의 활용
log miner의 설치
DBMS_APPLICATION_INFO 패키지 사용
[DB2][연재] DB2 사용 4
DB2 UDB 운용 가이드
[DB2][연재] DB2 사용 3
[DB2][연재] DB2 사용 2
[DB2][연재] DB2 사용 1
iSQL*Plus 사용
Resumable Space Allocation
인덱스 rebuild의 예제
LMT(Locally Managed Tablespace)사용하기
Flashback (과거시점에서 질의실행)
DB2 사용법 기초 정리
DBMS별 지원되는 최대 컬럼수(Oracle,ms-sql,mysql,db2)
Transportable Tablespace
테이블내 조건에 맞는 데이터만 export
RedHat 8.0 에 Oracle 8.1.7 설치
OMF(Oracle Managed Files)사용하기
Oracle Server Architecture
tablespace, table, index의 단편화 제거
컨트롤 파일을 다른 디렉토리로 이동하기
리두로그파일을 다른 디렉토리로 이동하기
데이터파일을 다른 디렉토리(폴더)로 이동하기
자동증가하는 데이터파일 생성하기
시스템을 잠지 정지시키기
자주 사용되는 코드테이블을 메모리에 올려놓기
테이블과 인덱스를 다른 테이블스페이스로 이동하기
union, intersect, minus, union all
IOT(Index Organized Table)
오라클 9i에서 명칭변경,기능강화된 것
특정 컬럼 사용중지/drop
중복되는 행(row) 검출
자동증가컬럼 사용
shell Script를 이용한 오라클 사용
오라클 버전별 지원하는 윈도OS
윈도에서의 오라클9i 아키텍처
&문자 insert하기
오라클에서 데이터의 암호화/복호화
오라클 9i의 시동과 종료
컬럼명 변경(rename column name)
설치된 오라클 제품파악
테이블스페이스 생성&삭제
오라클 계정 패스워드 제한설정
Net8 Protocol Adapters
서버에 설치된 프로토콜 어댑터 파악
tnsnames.ora를 일반계정에 두는 법
temporary table
9i에 추가된 timestamp데이터타입
SQL Gate for Oracle 사용법
Oracle8i Network 설정
리눅스7.0 + 오라클 8.1.7
ORACLE 설치
ORACLE 기본 관리법(Admin)
반응형