Oracle 데이터베이스 Export & Import
예를들어 다음과 같이 서버에 데이터소스가 정의되어있을 경우 다타베이스를 Export하고 Import하는 경우를 살펴본다.
<Resource auth="Container"
driverClassName="oracle.jdbc.driver.OracleDriver"
global="jdbc/데이터소스명"
maxActive="100" maxIdle="20" maxWait="10000" minIdle="5"
name="jdbc/데이터소스명"
password="pppp" type="javax.sql.DataSource"
url="jdbc:oracle:thin:@localhost:1521/orcl.local"
username="XXXXX"/>
Note:
스키마는 기본적으로 내/외부 개념이 존재하는데 내부 스키마는 DBMS에 맞는 저장구조 등 DBA및 개발자가 보는 등 실제 데이터를 조작하는 사람들이 볼 수 있는 구조 및 실체이다. 오라클과 같은 DBMS는 스키마를 정의하는 계정을 두고, 스키마 계정이 스키마를 사용할 계정에게 각각 권한과 쿼타등을 지정해 필요한 정보만 제공할 수 있게 하는 구조로 설계어있다. 대표적으로 설계자 및 DBA가 기본 설계를 하고 WAS가 사용할 계정을 만들고, WAS유저에게는 웹 어플리케이션에서 사용할 테이블의 권한만 주는 등의 용도로 사용됩니다.
1. Export
예를 들어 위와같은 정보로 오라클 다타베이스를 Import하고 Export하는 예를 보도록 하겠다.
DOS CMD>exp XXXXX/pppp@orcl.local file=ZZZZ.orcl.local.dump
이와 같이 하게되면 "orcl.local"라는 데이터베이스 서비스명(SID)에서 "XXXXX"사용자에 부여된 스키마를 덤프하게된다.
사실 "orcl.local"라는 데이터베이스 서비스명(SID)에는 "XXXXX"사용자가 볼수없는 더 많은 리소스들이 있을 수 있다.
이때 주의할 것은 데이터베이스 서비스명 "orcl.local"이 tnsnames.ora 에 어떻게 정의되어있는지 봐야하는데 실제로 이것이
다르게 정의 되어있을수 있다.
이런경우
C:\Temp>exp XXXXXX/pppp@orcl.local file=ZZZZ.orcl.local.dump
Export: Release 11.2.0.1.0 - Production on Wed Sep 3 07:44:38 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
EXP-00056: ORACLE error 12154 encountered
ORA-12154: TNS:could not resolve the connect identifier specified
EXP-00000: Export terminated unsuccessfully
C:\Temp>
와같이 서비스를 찾을수 없는 오류가나온다.
만일 tnsnames.ora에
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl.local)
)
)
와 같이 정의되어있다면 다음과 같은 명으로 수정해줘야하겠다.
C:\Temp>exp XXXXXX/pppp@ORCL file=ZZZZ.orcl.local.dump
Note:
아마 백업 받았으면 스키마를 삭제하여 디스크 공간을 확보하는 작업이 필요하겠다..
DROP USER XXXXXX CASCADE;
2. Import
C:\Temp>imp XXXXXX/pppp@ORCL fromuser=XXXXXX touser=XXXXXX file=ZZZZ.orcl.local.dump
Note:
우선 사용자가 존재하지 않는 경우 사용자를 생성하고 적절한 권한 설정이 다음 명령등을 이용하여 생성해야한다.
(사용할 테이블스페이스, 용량 쿼터등등과 함께)
CREATE USER XXXXXX IDENTIFIED BY pppp DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON XXXXXX;
GRANT connect, resource TO XXXXXX;
GRANT dba TO XXXXXX;
GRANT create session TO XXXXXX;