Goodus 기술노트 [20 회 ] DataPump Author 한대영, 김형미 Creation Date 2007-05-28 Last Updated 2007-05-28 Version 1.0 Copyright(C) 2004 Goodus Inc. All Rights Reserved Version 변경일자 변경자 ( 작성자 ) 주요내용 1 2007-05-28 한대영, 김형미 문서최초작성 2 3
Contents 1. Data Pump... 3 1.1. Oracle Data pump란?...3 1.2. Data pump Key features...3 1.2.1. Fast Performance... 3 1.2.2. Imporved Management Restart... 3 1.2.3. Fine-Grained Object Selection... 3 1.2.4. Monitoring and Estimating Capability... 4 1.2.5. Network Mode... 4 1.3. Data pump overview...5 1.3.1. Data Pump Overview... 5 1.3.2. Data Pump Benefit... 5 1.3.3. Data Pump File Locations... 5 1.3.4. Data Pump File Naming and size... 6 1.3.5. Data Pump Filtering... 6 1.3.6. Data Pump Job Monitoring... 7 1.3.7. Data Pump Export and Import... 7 1.3.8. Data Pump restarting... 8 1.4. Data pump 실습... 10 1.4.1. 전체데이터베이스 export 실습... 10 1.4.2. 특정스키마 DDL 스크립트생성실습... 13 1.4.3. 존재하는 table import... 15 부록 A expdp parameter... 16 부록 B impdp parameter... 17 2. Pro-Active Tuning Service...19 2.1. 실제사용자 (End-User) 관점의응답시간튜닝... 19 2.2. 최상의성능상태로비즈니스고가용성을유지... 19 2.3. Knowledge Transfer... 20 2.4. Tuning 범위확대... 20 2.5. 기대효과... 21 2.5.1. 재무적관점... 21 2.5.2. 서비스관점... 21 2.5.3. 사용자관점... 22 2.5.4. 혁신적관점... 22-2 -
1. Data Pump 1.1. Oracle Data pump 란? Oracle Data Pump 는 Oracle Database 10g 버전에서제공되는 Utility 로향상된데이터이동을가능하게한다. 이전버전의오라클을설치한홈디렉토리에는 imp, exp 라는실행파일이있다. 이는오라클에서제공하는 backup 및 recovery 에사용되는도구이다. Exp 는데이터베이스에저장되어있는데이터들을 OS 의바이너리파일로전환하는도구이고, imp 는바이너리파일을데이터베이스안의데이터로전환하는도구이다. 새로등장한 Data Pump 는 exp 와 imp 를대체하기위하여오라클 10g 버전부터제공되는유틸리티로 Exp / Imp 와유사한동작을하지만 data pump 가훨신효율적으로동작한다. Exp/Imp 와비교하여그효율성을예를들자면 exp 시 single thread 에서 2 배가빠르고 imp 시 15~45 배빠르므로데이터베이스간의 bulk data 와 meta data 의전송시간을줄이는데효율적으로사용될수있다. 1.2. Data pump Key features 1.2.1. Fast Performance 앞에서말한것과같이 Data Pump Export and Import 유틸리티는기존의 Export and Import 유틸리티보다훨씬빠르다. Data Pump Export 에서 direct path method 를사용시 single stream data unload 에서기존의 export 보다 2 배가빠르다. 이는 direct path API 가더효과적으로수정되었기때문이다. Parallelism 의 level 에따라서는더욱향상된 performance 를보일수있다. Data pump import 에서는 single stream 의 data load 시기존의 import 보다 15~45 배가빠르다. 이는기존의 import 에서단순히 export dump 파일에서레코드를읽고일반적인 insert into 명령을사용해서대상테이블에삽입하는대신에 Data pump import 는 Direct path method loading 을사용하기때문이다. 1.2.2. Improved Management Restart 모든 Data Pump operation 은 Data Pump job 을실행하는스키마에만들어진 master table 을가지고있다. Master table 은현재수행중인모든 export 또는 import 시객체의상태정보와 dump file set 에서의위치정보를가지고있다. 이는갑작스런 job 의중단에도 job 의성공적인종료에상관없이어떤 object 의작업이진행중이었는지알수있게해준다. 그래서 master table 과 dump file set 이있는한모든정지된 data pump job은데이터손실없이다시시작할수있다. 1.2.3. Fine-Grained Object Selection Data Pump job 은거의모든 type 의 object 를 exclude 또는 include 시킬수있다. 아래의 parameter 가사용된다. * EXCLUDE - 특정객체유형을제외한다. ( 예 : EXCLUDE=TABLE:EMP) * INCLUDE - 특정객체유형을포함한다. ( 예 : INCLUDE=TABLE_DATA) * CONTENT - 로드를취소할데이터를지정한다. 적합한키 : (ALL), DATA_ONLY 및 METADATA_ONLY. * QUERY - 테이블의부분집합을엑스포트하기위해사용되는술어절이다. - 3 -
1.2.4. Monitoring and Estimating Capability Data Pump 는 Standard progress, error message 를 log file 에기록할뿐만아니라현재 operation 의상태를대화식모드 command line 으로보여준다. Job 의 completion percentage 를측정하여보여주며초단위의지정한 time period 에따라자동으로 update 하여표시한다. 1 개이상의 client 가 running job 에 attach 수있기때문에업무환경에서 job 을실행하고, detach 한후집에가서 job 을 reattach 하여끊김없이모든 job 을모니터링할수있다. 모든 export job 이시작할때대략적인전체 unload 양을측정해준다. 이는사용자가 dump file set 을위한충분한양의 disk space 를할당할수있게한다. 1.2.5. Network Mode Data Pump Export and Import 는 job 의 source 가리모트인스턴스일경우를위한 network mode 를지원한다. Network 을통해 import 를할때 source 가 dump file set 이아닌다른 database 에있기때문에 dump file 이없다. Network 를통해 export 를할때 souce 가다른시스템에있는 read-only database 일수있다. Dumpfile 은 local(non-networked)export 처럼 local 시스템에쓰이게된다. - 4 -
1.3. Data pump overview 1.3.1. Data Pump Overview - expdp/impdp 로제공되어진다. - exp/imp 의 superset 이다. - Data 와 metadata 를매우빠른속도로 load/unload 하는 Server-based facility 이다. ==> dump file sets 은 Server 에생성 - DBMS_DATAPUMP PL/SQL Package 를이용하여사용가능하다. - Web-based interface <--access from EM Database Control 이가능하다. - Data Pump job 을실행하는 schema 에 master table(mt) 이만들어진다. MT 는해당 job 의모든것 (aspects) 을관리하며 data pump(expdp) 의마지막단계에서 pump file sets 에기록된다. file based import 작업 (impdp) 시 dump file 에있는 MT 내용을 current user 의 schema 에제일먼저 loading 한다. 계획또는예상치못한 job 의중단시재가동수있게하는 Data Pump 의핵심이 MT 이다. expdp client -->Data Pump Job -- DB(Master Table:Job 소유자 ) -->Dump file sets(mt 내용기록 ) ^ Remote 의 Server Process Client process 는 Data Pump API 를 call 한다. - 여러개의 clients 가모니터링하고 control 하기위해서 job 을 attach/detach 한다. 1.3.2. Data Pump Benefit - Data Access Methods : Direct Path, External Tables - Detach from, reattach to log-running jobs - Restart Data Pump Jobs - Find-grained object selection <-- 원하는 rows 만 (EXCLUDE, INCLUDE, CONTENT) - Explicit database version specification - Parallel execution - Estimate export job space <--ESTIMATE_ONLY - Network Mode 에서는 Remote 의 server process 가 DB link 를이용하여 Local 에 dump file 을직접만들어준다.. - Import 과정에서 target data file name, schema, tablespace 을변경할수있다. 1.3.3. Data Pump File Locations - Data pump file 종류 - DUMP file : data 와 metadata 를포함한다. - LOG file : operation 과관련된 message 를기록한다. - SQL file : impdp 에서 SQLFILE operation 의결과를기록한다. - Data Pump 는 server-based 이므로 Oracle directory path 를통해서 Data Pump file 에 access 한다. Absolute path 는보안상지원되지않는다. - Order of precedence of file locations 1) per-file directory - dump file, log file, sql file 마다지정될수있다. 콜론 (:) 으로 directory 와 file name 을구분한다. 예 ) dumpfile=aa:a.dmp 2) DIRECTORY parameter - 5 -
- directory object 를사용한다. Create Directory DIR_PJH as '/home/oracle10g/test/'; Grant read, write On Directory DIR_PJH to SCOTT; Directory=AA Dumpfile=A.dmp 3) DATA_PUMP_DIR 환경변수 - DIRECTORY Parameter 를대신하여 directory object name 을설정한다. export DATA_PUMP_DIR=AA Dumpfile=A.dmp - 위의모든경우에시도하려는 operation 에대해 directory object 에대해적절한 access privs 가있어야한다. Export 할경우모든 file 에대해 write access 가필요하다. Import 할경우 dump file 에대해 read access, log file 과 sql file 에대해 write access 가필요하다. 1.3.4. Data Pump File Naming and size (1) DUMPFILE - file list 는, 로분리한다. - %U template --> two-character, fix-width, 01 부터증가하는 integer 를가진다. - DUMPFILE 이지정되어있지않으면 expdat.dmp 가 default 로사용된다. Default 는 autoextensible 이다. (2) FILESIZE - FILESIZE 가지정되어있으면각 file 은 FILESIZE 안으로만들어지고늘어날수없다. dump 공간이더필요하고 template %U 가지정되었다면, 새로운파일이생성된다. 그렇치않으면사용자는 new file 을 add 하라는메세지를받는다. (3) PARALLEL - %U 가지정되면 PARALLEL parameter 의개수만큼초기에 file 이생성된다. - 기존에존재하는 file 과이름이중복될경우 overwrite 하지않고에러를발생시키고 job 이 abort 된다. - 복수개의 dump file template 가제공되면 round-robin fashion 으로 dump file 을생성하는데사용한다. 1.3.5. Data Pump Filtering (1) Find-grained object selection - 기존의 exp/imp는 index, trigger, grant, constraint를포함하거나제외하는것이있으나 data pump는 virtually any type of object를포함하거나제외할수있다. - EXCLUDE 와 IMCLUDE는 mutually exclusive 하다. - INCLUDE = object_type[:"name_expr"] - EXCLUDE = object_type[:"name_expt"] - 모든 view, 모든 package, EMP 로시작하는 Index 만제외한다. EXCLUDE=view EXCLUDE=package EXCLUDE=INDEX:"LIKE 'EMP%' " (2) Data Selection - CONTENT = ALL(def) METADATA_ONLY DATA_ONLY - QUERY = [Schema.][table_name:]"query_clause" - CONTENT 에 data_only 가사용되면 EXCLUDE 와 INCLUDE 를사용할수없다. - 6 -
QUERY=hr.employees:"WHERE department_id in (10,20) and salary < 1600 ORDER BY department_id" <-- 특정 table 을지정해서해당 table 로한정. imp 시에도적용. 1.3.6. Data Pump Job Monitoring - 데이터베이스뷰에서실행되는 Data Pump 작업에관해서도자세한정보를확인할수있다. - DBA_DATAPUMP_JOBS 작업에서실행되는작업자프로세스 (DEGREE 열 ) 의수를확인할수있다. - DBA_DATAPUMP_SESSIONS 이전뷰및 V$SESSION 과조인하여 foreground 프로세스세션의 SID 확인할수있다. select sid, serial# from v$session s, dba_datapump_sessions d where s.saddr = d.saddr; - V$SESSION_LONGOPS - 작업완료에걸리는시간을예측하는또다른유용한정보를얻을수있다. select sid, serial#, sofar, totalwork from v$session_longops where opname = 'CASES_EXPORT' and sofar!= totalwork; totalwork 열에는총작업량이표시되는데, 이중현재까지 sofar 작업량을완료했으므로이를통해얼마나더시간이걸릴지예측할수있다. 1.3.7. Data Pump Export and Import 1) Parallel Full Export and Import > expdp system/manager full=y parallel=4 dumpfile=datadir1:full1%u.dat, DATADIR2:full2%U.dat, DATADIR3:full3%U.dat, DATADIR4:full4%U.dat filesize=2g <--4 개의 work process 를가진 full export, Pump file 은 DATADIR1, DATADIR2, DATADIR3, DATADIR4 네곳에라운드로빈방식으로생성된다. 2G 를넘지않으면서최소 4 개생성. Job 과 master table 이름은 default 로 SYSTEM_EXPORT_FULL_01 를가진다. >impdp system/manager directory= NET_STORGAE_1 parallel=4 dumpfile= full1%u.dat, full2%u.dat, full3%u.dat, full4%u.dat <--expdp 로받은 dump file 을 network 를통해 NET_STORAGE_1 이라는 directory object 위치로보내졌다. Default import 는 dump set 전체를 import 하는것이므로 Full=y 는필요없다. Job 과 master table 이름은 default 로 SYSTEM_IMPORT_FULL_01 를가진다. - 7 -
2) Limited Schema Export (fine-grained) > expdp system/manager schemas=hr,oe directory=usr_data dumpfile=schema_hr_oe.dat parfile=exp_par.txt <------- incluse=function include=procedure include=pacakge include=type include=view:"like 'PRODUCT%'" <--HR, OE schema 에서모든 func, prod, pkg, user-defined type, PRODUCT 로시작하는 view 를 export 한다. Schema definition 과 system priv graints 는 export 되지않는다. > impdp system/manager directory=usr_data dumpfile=schema_hr_oe.dat sqlfile=schema_hr_oe.dat <-- 실제 import 는하지않고 dmp file 에서 DDL 문장만뽑아낸다. 3) Network Mode Import (DB Link) > impdp system/manager schemas=hr,sh,payroll parfile=imp_par.txt <------------------ network_link=finance.hq.com <--db link remap_schema=payroll:finance <--Source DB 에 dblink 로붙어서 hr, sh, payroll schema 를가져온다음 imp 한다. 이때 payroll schema 로 finance schema 로만들어진다. SYSTEM 은 IMPORT_FULL_DATABASE role 을가지고있고 Source DB 에대해서는 EXPORT_FULL_DATABASE role 을가지므로 Target DB 에해당 schema definition 이없으면만들어진다. flashback_time 은예전의 CONSISTENT 와동일하다. 4) Data-Only Unload > expdp hr/hr parfile=exp_par.txt dumpfile=expdat.dmp content=data_only include=table:"in ('DEPARTMENTS','DEPARTMENTS_HIST','EMPLOYEES','EMP_HIST')" query="where DEPARTMENT_ID!= 30 order by DEPARTMENT_ID" 1.3.8. Data Pump restarting 1) Attaching to Existing Job > expdp system/manager attach=exp_ts1 <--Job name(mt name) :dba_datapump_jobs job: EXP_TS1 해당스키마에 active export job 이하나만있을경우안적어도된다.. owner: SYSTEM mode: status: Export> STOP_JOB <--중지. Attach session은 terminate 되고실행되던 job은 controlled fashion으로 run down 된다. - 8 -
해당 Job 은 dump file 과 SYSREM.EXP_TS1 table 이 disturbed 되지않는한 startable 하다. 2) Restarting Stopped Job > expdp system/manager attach=exp_ts1 <-- 같은 schema 안에여러개의 outstanding job 이있으면 job name 지정한다. Export> parallel=4 Export> start_job Export> status =600 <--10 분 <-- detailed per-work process 가 10 분단위로 regular status message 를보여준다. KILL_JOB 로 job 을 kill 한다. <--status, status=600( 초 ) stop_job, start_job, continue_client: attach 한 session 이계속받아서 expdp 실행한다.(logging mode 로전환 ) exit_client: Attach 를빠져나옴. expdp 는 background 로실행한다. parallel=4, - 9 -
1.4. Data pump 실습 1.4.1. 전체데이터베이스 export 실습 SQL> conn /as sysdba 연결되었습니다. SQL> create directory dump as 'C: oracle/backup'; ->directory 를생성한다. 디렉토리가생성되었습니다. SQL> grant read,write on directory dump to public; -> directory 에권한을부여한다. 권한이부여되었습니다. SQL> host Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C: oracle>expdp system/oracle dumpfile=full.dmp directory=dump full=y job_name=lucie Export: Release 10.2.0.1.0 - Production on 화요일, 29 5 월, 2007 17:17:41 Copyright (c) 2003, 2005, Oracle. All rights reserved. 접속대상 : Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the OLAP and Data Mining options "SYSTEM"."LUCIE" 시작중 : system/******** dumpfile=full.dmp directory=dump full=y job_name=lucie BLOCKS 메소드를사용하여예측진행중... 객체유형 DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA 처리중 BLOCKS 메소드를사용한총예측 : 66.56 MB -> 대략적인 dmp 파일 size 를예측할수있다. 객체유형 DATABASE_EXPORT/TABLESPACE 처리중객체유형 DATABASE_EXPORT/SYS_USER/USER 처리중객체유형 DATABASE_EXPORT/SCHEMA/USER 처리중객체유형 DATABASE_EXPORT/SCHEMA/TABLE/POST_INSTANCE/PROCDEPOBJ 처리중.... "SCOTT"."DEPT" 48.00 MB 2097152 행이엑스포트됨.. "SYSMAN"."MGMT_JOB_CRED_PARAMS" 11.70 KB 18 행이엑스포트됨.. "SYSMAN"."MGMT_JOB_PROP_PARAMS" 8.820 KB 12 행이엑스포트됨.. "SYSMAN"."MGMT_JOB_STEP_PARAMS" 127.3 KB 1128 행이엑스포트됨. Control + c -> 중간에끊어도 job 이끊기지않고명령모드로들어간다. Export>status 작업 : LUCIE 작업 : EXPORT 모드 : FULL 상태 : EXECUTING 처리된바이트 : 50,337,376 완료율 : 84 -> 진행률을알수있다. 현재병렬도 : 1 작업오류수 : 0 덤프파일 : C: ORACLE BACKUP FULL.DMP 기록된바이트 : 55,226,368 작업자 1 상태 : 상태 : EXECUTING 객체스키마 : SYSMAN 객체이름 : MGMT_JOB_EXECUTION 객체유형 : DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA 완료된객체 : 45-10 -
총객체 : 408 작업자병렬도 : 1 Export> stop_job -> job 을정지시킨다. 이작업을정지하겠습니까 ([ 예 ]/ 아니오 ): C: oracle> C: oracle>sqlplus "/as sysdba" SQL*Plus: Release 10.2.0.1.0 - Production on 화 5 월 29 17:32:59 2007 Copyright (c) 1982, 2005, Oracle. All rights reserved. 다음에접속됨 : Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the OLAP and Data Mining options SQL>select owner_name,job_name,operation,job_mode,state from dba_datapump_jobs; OWNER_NAME JOB_NAME OPERATION JOB_MODE STATE ---------- ---------- ------------ ----------- ------------ SYSTEM LUCIE EXPORT FULL NOT RUNNING ->job 상태를확인할수있다. SQL> exit C: oracle>expdp system/oracle attach=lucie ->job 을다시 attach 한다. Export: Release 10.2.0.1.0 - Production on 화요일, 29 5 월, 2007 17:35:54 Copyright (c) 2003, 2005, Oracle. All rights reserved. 접속대상 : Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the OLAP and Data Mining options 작업 : LUCIE 소유자 : SYSTEM 작업 : EXPORT 생성자권한 : FALSE GUID: 18405C1B820C4ABB9B30C4948E0D356F 시작시간 : 화요일, 29 5 월, 2007 17:35:56 모드 : FULL 인스턴스 : ora10 최대병렬도 : 1 EXPORT 작업매개변수 : 매개변수이름매개변수값 : CLIENT_COMMAND system/******** dumpfile=full.dmp directory=dump full=y job_name=lucie 상태 : IDLING 처리된바이트 : 51,646,000 완료율 : 99 현재병렬도 : 1 작업오류수 : 0 덤프파일 : C: oracle/backup full.dmp 기록된바이트 : 55,914,496 작업자 1 상태 : 상태 : UNDEFINED SQL>select owner_name,job_name,operation,job_mode,state from dba_datapump_jobs; OWNER_NAME JOB_NAME OPERATION JOB_MODE STATE ---------- ---------- ------------ ----------- ------------ SYSTEM LUCIE EXPORT FULL IDLING ->job 상태를확인할수있다. - 11 -
Export> start_job ->Job 을다시 restar 한다. Export> status 작업 : LUCIE 작업 : EXPORT 모드 : FULL 상태 : COMPLETING 처리된바이트 : 51,646,001 완료율 : 100 현재병렬도 : 1 작업오류수 : 0 덤프파일 : C: oracle/backup full.dmp 기록된바이트 : 64,684,032 작업자 1 상태 : 상태 : WORK WAITING C: oracle> Logfile 확인 지정한 directory 위치에 export log file 을확인한다. 파일의끝부분을보면성공적으로완료됨을확인할수있다..... "SYSTEM"."LUCIE" 작업이 17:18:56 에서사용자요청에의해정지됨 LUCIE 작업이화요일, 29 5 월, 2007 17:35 에서다시열림 -> 작업을정지했다다시시작한것을확인할수있음 "SYSTEM"."LUCIE" 재시작중 : system/******** dumpfile=full.dmp directory=dump full=y job_name=lucie 마스터테이블 "SYSTEM"."LUCIE" 이 ( 가 ) 성공적으로로드됨 / 로드취소됨 ****************************************************************************** SYSTEM.LUCIE 에대해설정된덤프파일 : C: oracle/backup full.dmp "SYSTEM"."LUCIE" 작업이 17:37:12 에서성공적으로완료됨 - 12 -
1.4.2. 특정스키마 DDL 스크립트생성실습 SQL> conn /as sysdba 연결되었습니다. SQL> create directory dump as 'C: oracle/backup'; ->directory 를생성한다. 디렉토리가생성되었습니다. SQL> grant read,write on directory dump to public; -> directory 에권한을부여한다. C: oracle>impdp system/oracle directory=dump dumpfile=full.dmp schemas=scott sqlfile=ddl_scott.sql < 이명령은 dump 로지정된디렉터리에 ddl_scott.sql 로명명된파일을생성하며엑스포트덤프파일내의객체스크립트를생성한다.> Import: Release 10.2.0.1.0 - Production on 화요일, 29 5 월, 2007 19:12:13 Copyright (c) 2003, 2005, Oracle. All rights reserved. 접속대상 : Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the OLAP and Data Mining options 마스터테이블 "SYSTEM"."SYS_SQL_FILE_SCHEMA_01" 이 ( 가 ) 성공적으로로드됨 / 로드취소됨 "SYSTEM"."SYS_SQL_FILE_SCHEMA_01" 시작중 : system/******** directory=dump dumpfile=full.dmp schemas= scott sqlfile=ddl_scott.sql 객체유형 DATABASE_EXPORT/SCHEMA/USER 처리중객체유형 DATABASE_EXPORT/SCHEMA/GRANT/SYSTEM_GRANT 처리중객체유형 DATABASE_EXPORT/SCHEMA/ROLE_GRANT 처리중객체유형 DATABASE_EXPORT/SCHEMA/DEFAULT_ROLE 처리중객체유형 DATABASE_EXPORT/SCHEMA/PROCACT_SCHEMA 처리중객체유형 DATABASE_EXPORT/SCHEMA/TABLE/TABLE 처리중객체유형 DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICS 처리중 "SYSTEM"."SYS_SQL_FILE_SCHEMA_01" 작업이 19:12:22 에서성공적으로완료됨 Logfile 확인 - dump 로지정된 C: oracle/backup 에 ddl_scoot.sql 파일이생성된다. -- CONNECT SYSTEM -- new object type path is: DATABASE_EXPORT/SCHEMA/USER CREATE USER "SCOTT" IDENTIFIED BY VALUES 'F894844C34402B67' DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP"; -- new object type path is: DATABASE_EXPORT/SCHEMA/GRANT/SYSTEM_GRANT GRANT UNLIMITED TABLESPACE TO "SCOTT"; GRANT CREATE SESSION TO "SCOTT"; -- new object type path is: DATABASE_EXPORT/SCHEMA/ROLE_GRANT GRANT "RESOURCE" TO "SCOTT"; -- new object type path is: DATABASE_EXPORT/SCHEMA/DEFAULT_ROLE ALTER USER "SCOTT" DEFAULT ROLE ALL; -- new object type path is: DATABASE_EXPORT/SCHEMA/PROCACT_SCHEMA -- CONNECT SCOTT BEGIN sys.dbms_logrep_imp.instantiate_schema(schema_name=>sys_context('userenv','current_sche MA'), export_db_name=>'ora10', inst_scn=>'283762'); COMMIT; END; / -- new object type path is: DATABASE_EXPORT/SCHEMA/TABLE/TABLE - 13 -
-- CONNECT SYSTEM CREATE TABLE "SCOTT"."EMP" ( "EMPNO" NUMBER(4,0) NOT NULL ENABLE, "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ; CREATE TABLE "SCOTT"."DEPT" ( "DEPTNO" NUMBER(2,0), "DNAME" VARCHAR2(14), "LOC" VARCHAR2(13) ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "USERS" ;... - 14 -
1.4.3. 존재하는 table import 1) content=data_only 포함한경우 C: oracle>impdp system/oracle dumpfile=full.dmp directory= dump content=data_only job_name=data_import logfile=table_log tables=scott.dept Import: Release 10.2.0.1.0 - Production on 화요일, 29 5 월, 2007 19:42:15 Copyright (c) 2003, 2005, Oracle. All rights reserved. 접속대상 : Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the OLAP and Data Mining options 마스터테이블 "SYSTEM"."DATA_IMPORT" 이 ( 가 ) 성공적으로로드됨 / 로드취소됨 "SYSTEM"."DATA_IMPORT" 시작중 : system/******** dumpfile=full.dmp directory= dump content=data_only job_name=data_import logfile=table_log tables=scott.dept 객체유형 DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA 처리중.. "SCOTT"."DEPT" 48.00 MB 2097152 행이임포트됨 "SYSTEM"."DATA_IMPORT" 작업이 19:42:52 에서성공적으로완료됨 2) content=data_only 포함하지않은경우 C: oracle>impdp system/oracle dumpfile=full.dmp directory= dump job_name=data_import logfile=table_log tables=scott.dept Import: Release 10.2.0.1.0 - Production on 화요일, 29 5 월, 2007 19:41:02 Copyright (c) 2003, 2005, Oracle. All rights reserved. 접속대상 : Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the OLAP and Data Mining options 마스터테이블 "SYSTEM"."DATA_IMPORT" 이 ( 가 ) 성공적으로로드됨 / 로드취소됨 "SYSTEM"."DATA_IMPORT" 시작중 : system/******** dumpfile=full.dmp directory= dump job_name=data_impo rt logfile=table_log tables=scott.dept 객체유형 DATABASE_EXPORT/SCHEMA/TABLE/TABLE 처리중 ORA-39151: "SCOTT"."DEPT" 테이블이존재합니다. 건너뛰기 table_exists_action 으로인해모든종속메타데이터및데이터를건너뜁니다. 객체유형 DATABASE_EXPORT/SCHEMA/TABLE/TABLE_DATA 처리중객체유형 DATABASE_EXPORT/SCHEMA/TABLE/STATISTICS/TABLE_STATISTICS 처리중 "SYSTEM"."DATA_IMPORT" 작업이 1 오류와함께 19:41:09 에서완료됨 * 임포트프로세스의기본작업방식은테이블및연관된모든객체를생성하고테이블이있는상태에서오류를만들어낸다. - 15 -
부록 A expdp parameter 키워드설명 ( 기본값 ) ATTACH 기존작업에연결합니다. 예 : ATTACH [= 작업이름 ] CONTENT 로드할데이터를지정합니다. 적합한키 : (ALL), DATA_ONLY 및 METADATA_ONLY. DIRECTORY 덤프, 로그및 sql 파일에사용할디렉토리객체입니다. DUMPFILE 임포트할덤프파일 (expdat.dmp) 목록입니다. 예 : DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp. ENCRYPTION_PASSWORD 암호화된열데이터에액세스하기위한암호키입니다. 이매개변수는네트워크임포트작업에대해적합하지않습니다. ESTIMATE 작업예측을계산합니다. 적합한키워드 : (BLOCKS) 및 STATISTICS 입니다. EXCLUDE 특정객체유형을제외합니다. ( 예 : EXCLUDE=TABLE:EMP) FLASHBACK_SCN 세션스냅샷을다시설정하기위해사용되는 SCN 입니다. FLASHBACK_TIME 지정된시간에가장가까운 SCN 을가져오기위해사용되는시간입니다. FULL 소스에서모든것을임포트합니다. (Y) HELP 도움말메시지를표시합니다. (N) INCLUDE 특정객체유형을포함합니다. ( 예 : INCLUDE=TABLE_DATA) JOB_NAME 생성할임포트작업이름입니다. LOGFILE 로그파일이름 (import.log) 입니다. NETWORK_LINK 소스시스템에대한원격데이터베이스링크이름입니다. NOLOGFILE 로그파일을작성하지않습니다. (N) PARALLEL 현재작업에대한활성작업자수를변경합니다. PARFILE 매개변수파일을지정합니다. QUERY 테이블의부분집합을임포트하기위해사용되는술어절입니다. REMAP_DATAFILE 모든 DDL 문의데이터파일참조를재정의합니다. REMAP_SCHEMA 한스키마의객체를다른스키마에로드합니다. REMAP_TABLESPACE 테이블스페이스객체가다른테이블스페이스에재매핑됩니다. REUSE_DATAFILES 테이블스페이스가존재하는경우초기화됩니다. (N) SCHEMAS 임포트할스키마목록입니다. SKIP_UNUSABLE_INDEXES 사용할수없는인덱스상태로설정된인덱스를건너뜁니다. SQLFILE 모든 SQL DDL 을지정된파일에씁니다. STATUS 작업상태가모니터되는빈도 ( 초 ) 입니다. 기본값 (0) 은사용가능할때새상태를표시합니다. STREAMS_CONFIGURATION 스트림메타데이터의로드활성화 TABLE_EXISTS_ACTION 임포트된객체가존재하는경우수행할작업입니다. 적합한키워드 : (SKIP), APPEND, REPLACE 및 TRUNCATE. TABLES 임포트할테이블목록을식별합니다. TABLESPACES 임포트할테이블스페이스목록을식별합니다 TRANSFORM 해당객체에적용할메타데이터변환입니다. 적합한변환키워드 : SEGMENT_ATTRIBUTES, STORAGE OID 및 PCTSPACE 입니다. TRANSPORT_DATAFILES 전송가능모드로임포트할데이터파일목록입니다. 메타데이터가로드될테이블스페이스목록입니다. TRANSPORT_FULL_CHECK 모든테이블의저장영역세그먼트를확인합니다. (N) TRANSPORT_TABLESPACES NETWORK_LINK 모드임포트작업에서만적합합니다. VERSION 엑스포트할객체의버전입니다. 적합한키워드 : (COMPATIBLE), LATEST 또는임의의적합한데이터베이스버전. NETWORK_LINK 및 SQLFILE 에대해서만적합합니다. 다음명령은대화형모드에서적합합니다. 참고 : 약어도허용됨 명령설명 ( 기본값 ) CONTINUE_CLIENT 로깅모드로돌아옵니다. 유휴상태인경우작업이재시작됩니다. EXIT_CLIENT 덤프, 로그및 sql 파일에사용할디렉토리객체입니다. HELP 대화형명령을요약합니다. - 16 -
KILL_JOB 작업을분리하고삭제합니다. PARALLEL 현재작업에대한활성작업자수를변경합니 PARALLEL=< 작업자수 >. START_JOB 현재작업을시작 / 재개합니다. START_JOB=SKIP_CURRENT 는작업정지시진행중이던작업을건너뛴후해당작업을시작합니다. STATUS 작업상태가모니터되는빈도 ( 초 ) 입니다. 기본값 (0) 은사용가능할때새상태를표시합니다. STATUS[= 간격 ] STOP_JOB 작업실행을순서대로종료하고클라이언트를종료합니다. STOP_JOB=IMMEDIATE 는데이터펌프작업의데이터펌프작업. 부록 B impdp parameter 키워드 설명 ( 기본값 ) ATTACH 기존작업에연결합니다. 예 : ATTACH [= 작업이름 ] CONTENT 로드할데이터를지정합니다. 적합한키 : (ALL), DATA_ONLY 및 METADATA_ONLY. DIRECTORY 덤프, 로그및 sql 파일에사용할디렉토리객체입니다. DUMPFILE 임포트할덤프파일 (expdat.dmp) 목록입니다. 예 : DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp. ENCRYPTION_PASSWORD 암호화된열데이터에액세스하기위한암호키입니다. 이매개변수는네트워크임포트작업에대해적합하지않습니다. ESTIMATE 작업예측을계산합니다. 적합한키워드 : (BLOCKS) 및 STATISTICS 입니다. EXCLUDE 특정객체유형을제외합니다. ( 예 : EXCLUDE=TABLE:EMP) FLASHBACK_SCN 세션스냅샷을다시설정하기위해사용되는 SCN 입니다. FLASHBACK_TIME 지정된시간에가장가까운 SCN 을가져오기위해사용되는시간입니다. FULL 소스에서모든것을임포트합니다. (Y) HELP 도움말메시지를표시합니다. (N) INCLUDE 특정객체유형을포함합니다. ( 예 : INCLUDE=TABLE_DATA) JOB_NAME 생성할임포트작업이름입니다. LOGFILE 로그파일이름 (import.log) 입니다. NETWORK_LINK 소스시스템에대한원격데이터베이스링크이름입니다. NOLOGFILE 로그파일을작성하지않습니다. (N) PARALLEL 현재작업에대한활성작업자수를변경합니다. PARFILE 매개변수파일을지정합니다. QUERY 테이블의부분집합을임포트하기위해사용되는술어절입니다. REMAP_DATAFILE 모든 DDL 문의데이터파일참조를재정의합니다. REMAP_SCHEMA 한스키마의객체를다른스키마에로드합니다. REMAP_TABLESPACE 테이블스페이스객체가다른테이블스페이스에재매핑됩니다. REUSE_DATAFILES 테이블스페이스가존재하는경우초기화됩니다. (N) SCHEMAS 임포트할스키마목록입니다. SKIP_UNUSABLE_INDEXES 사용할수없는인덱스상태로설정된인덱스를건너뜁니다. SQLFILE 모든 SQL DDL 을지정된파일에씁니다. STATUS 작업상태가모니터되는빈도 ( 초 ) 입니다. 기본값 (0) 은사용가능할때새상태를표시합니다. STREAMS_CONFIGURATION 스트림메타데이터의로드활성화 TABLE_EXISTS_ACTION 임포트된객체가존재하는경우수행할작업입니다. 적합한키워드 : (SKIP), APPEND, REPLACE 및 TRUNCATE. TABLES 임포트할테이블목록을식별합니다. TABLESPACES 임포트할테이블스페이스목록을식별합니다 TRANSFORM 해당객체에적용할메타데이터변환입니다. - 17 -
적합한변환키워드 : SEGMENT_ATTRIBUTES, STORAGE OID 및 PCTSPACE 입니다. TRANSPORT_DATAFILES 전송가능모드로임포트할데이터파일목록입니다. TRANSPORT_FULL_CHECK 모든테이블의저장영역세그먼트를확인합니다. (N) TRANSPORT_TABLESPACES 메타데이터가로드될테이블스페이스목록입니다. NETWORK_LINK 모드임포트작업에서만적합합니다. VERSION 엑스포트할객체의버전입니다. 적합한키워드 : (COMPATIBLE), LATEST 또는임의의적합한데이터베이스버전. NETWORK_LINK 및 SQLFILE 에대해서만적합합니다. 다음명령은대화형모드에서적합합니다. 참고 : 약어도허용됨 명령설명 ( 기본값 ) CONTINUE_CLIENT 로깅모드로돌아옵니다. 유휴상태인경우작업이재시작됩니다. EXIT_CLIENT 클라이언트세션을종료하고작업은실행되도록둡니다. HELP 대화형명령을요약합니다. KILL_JOB 작업을분리하고삭제합니다. PARALLEL 현재작업에대한활성작업자수를변경합니다 PARALLEL=< 작업자수 >. START_JOB 현재작업을시작 / 재개합니다. START_JOB=SKIP_CURRENT 는작업정지시진행중이던작업을건너뛴후해당작업을시작합니다. STATUS 작업상태가모니터되는빈도 ( 초 ) 입니다. 기본값 (0) 은사용가능할때새상태를표시합니다. STATUS[= 간격 ] STOP_JOB 작업실행을순서대로종료하고클라이언트를종료합니다. STOP_JOB=IMMEDIATE 는데이터펌프작업의데이터펌프작업. 참조문서 http://www.oracle.com/technology/products/database/utilities/htdocs/data_pump_overview.html - oracle database 10g:new features for administrators student guide - kr.forums.oracle.com - 18 -
2. Pro-Active Tuning Service 2.1. 실제사용자 (End-User) 관점의응답시간튜닝 Pro-active tuning service 는사용자관점의모니터링및분석을통하여실제 End-User 가느끼는응답시간 (Response Time) 을튜닝합니다. APM(Application Performance Management) 툴을이용하여 End-User 의 Request 결과를반환받기까지의모든구간 (Client PC, Internet 구간, FireWall, DNS, Web Server, WAS, DBMS) 을분석하여가장 Delay Time 이많이소요된구간을찾아냅니다. ISP Backb one ISP Client Time Internet Time Firewall Time DNS Time Backend Systems Time 2.2. 최상의성능상태로비즈니스고가용성을유지 Pro-Active Tuning Service 매업무단위프로젝트마다참여하여업무적용 (Open) 前문제요소를분석하여튜닝. 단위업무적용 (Open) 후매 3 개월 ( 데이터량갱신주기 ) 마다튜닝포인트를설정, 성능둔화요소를해결. 전사적으로새롭게추가되는업무단위프로젝트의모든 SQL 쿼리를검토및튜닝. 다양한대용량데이터베이스관리 / 튜닝기법을도입하여최적의 DB 상태를 1 년내내상시유지. 전략적튜닝 Factor 를분석, 투자대비효율이높은 Targeting 기법적용. ( 비중도높은 SQL 을튜닝함 ) - 19 -
2.3. Knowledge Transfer Pro-Active Tuning Service 는고객의 Business Process 를이해하고시스템을분석한후튜닝하는것으로완료되지않습니다. 실제로고객사환경에서튜닝한내용을그대로실무자들에게전수하여내부임직원의역량을제고시킵니다. 또한, Oracle RDBMS 신버젼의 New Features 를교육함으로써, 이용자 ( 관리자및개발자 ) 가스스로개발업무의효율및생산성을향상시킬수있도록지원합니다. 이외에도 DBMS 관리자를위한관리노하우 ( 고급 Trouble-Shooting, 대용량 DB 처리, 병렬처리등 ) 를전수함으로써, 최상의시스템을최고의기술로유지할수있도록지원합니다. UAS (User Adapted Seminar) 진행사례및내용 (Contents) 개발자를위한 SQL 튜닝실무사례세미나 G 쇼핑몰업체튜닝후실제고객사의튜닝사례를개발자들에게전수하여개발자들이성능을고려한 SQL 을작성할수있도록내부역량을제고시킴. Oracle 10g New Features 세미나 S Global 전자기업 : Oracle 10g 버전으로업그레이드하기전, 신버전의새로운기능과주의사항을전파함으로써, 업그레이드후발생할수있는문제점의사전제거와개발자들이새로운기능을이용함으로써, 개발생산성을향상시킴. K 국가기관 DBMS 관리노하우세미나내부관리자 (DBA,SE) 들을대상으로 DBMS 관리자들이흔히겪을수있는상황에대한 Administration Know-How 와고급 Trouble-Shooting 사례를소개함으로써, 관리기술력을향상시킴. 2.4. Tuning 범위확대 Pro-active tuning service 의제공범위는제한된 Database, 제한된 Server 에국한되지않으며, 고객사전체의 Server+DB 를대상으로그범위를확대함으로써고객사전체 Performance 향상에기여합니다. - 20 -
2.5. 기대효과 2.5.1. 재무적관점 기존 Tuning Service 는주로 System Performance 향상에따른업무트레픽감소에초점이맞춰져있었습니다. Pro-actvice 서비스는 Tuning 작업을통한업무처리시간단축뿐만아니라, 업무처리시간단축으로가져올수있는재무적성과를가능하게합니다. 2.5.2. 서비스관점 단기적성능향상에맞추어진기존 Tuning 서비스는계약된 system 및 Database 를서비스대상으로하기때문에전사적인차원의성능향상을기대하기어려웠습니다. Proactive tuning service 는계약기간동안주요비즈니스 Factor 별로 SLA 를정하여 Tuning consulting 을수행함으로써서비스자체의안정성을제고할수있습니다. - 21 -
2.5.3. 사용자관점 Proactive tuning service 는계약종료시점작업한 Tuning 산출물을통한기술전수세미나를진행함으로서고객사의사용자가실무에서바로적용가능한기술을전수함과동시에, 계약기간종료후에도 Proactive tuning service 를유지할수있는방향을제시합니다. 2.5.4. 혁신적관점 - 22 -
- 23 -