레이블이 oracle인 게시물을 표시합니다. 모든 게시물 표시
레이블이 oracle인 게시물을 표시합니다. 모든 게시물 표시

2014년 1월 3일 금요일

EXPDP - SQL PUMP DUMP사용법


#sqlplus / as  sysdba
sql> SELECT * FROM DBA_DIRECTORIES;

sql> CREATE OR REPLACE DIRECTORY DP_DIR AS "경로";
sql> GRANT READ, WRITE ON DIRECTORY DP_DIR TO 사용자;


--DUMP.PAR 작성
SCHEMAS=KCA_RUN
DIRECTORY=DATA_PUMP_DIR
DUMPFILE=kca_run.dmp
LOGFILE=kca_run.log
EXCLUDE=TABLE:"IN ('TZIP_CCW', 'TZIP_CTPV', 'TZIP_EMD', 'TZIP_LNDN', 'TZIP_LNDN_ENTR', 'TZIP_ROAD', 'TZIP_ROAD_ENTR')"

--실행
sql> expdp ID/PW PARFILE=DUMP.PAR

SQL*LOADER 사용법


작업파일.ctl

LOAD DATA
INFILE '/oradata/juso/00.txt'
INFILE '/oradata/juso/01.txt'
INFILE '/oradata/juso/02.txt'
INFILE '/oradata/juso/03.txt'
INFILE '/oradata/juso/04.txt'
INFILE '/oradata/juso/05.txt'
INFILE '/oradata/juso/06.txt'
INFILE '/oradata/juso/07.txt'
INFILE '/oradata/juso/08.txt'
INFILE '/oradata/juso/09.txt'
INFILE '/oradata/juso/10.txt'
INFILE '/oradata/juso/11.txt'
INFILE '/oradata/juso/12.txt'
INFILE '/oradata/juso/13.txt'
INFILE '/oradata/juso/14.txt'
INFILE '/oradata/juso/15.txt'
INFILE '/oradata/juso/16.txt'
APPEND
INTO TABLE TZIP_LNDN_ENTR
#컬럼 Mapping
FIELDS TERMINATED BY '|'
(STTT_DONG_CODE, CTPV_NM, CCW_NM, STTT_EMD_NM, STTT_RI_NM, MNT_TYPE, LNDN_MAIN_NO, LNDN_SUB_NO, ROAD_NM_CODE, ROAD_NM, UDGR_TYPE, BULD_MAIN_NO, BULD_SUB_NO, BULD_NM, DTL_BULD_NM, BULD_MNG_NO, EMD_SRL_NO, ADTV_DONG_CODE, ADTV_DONG_NM, ZPCD, ZPCD_SRL_NO, MASS_TDST_NM, MVNT_RSN_CODE, CHNG_DATE, CHNG_BF_ROAD_NM_ADDR, CCW_BULD_NM, CLBR_HOUSE_TYPE)



SQL>sqlldr ID/PW control="작업파일.ctl"

Oracle Tablespace 변경방법

테이블스페이스를 변경하는 방법을 정리한다.



/* 
 * 1. 테이블의 TABLESPACE변경 방법은 다음과 같다.
 * ALTER TABLE 테이블명 MOVE TABLESPACE 테이블스페이스명;
 *
 */

SELECT 'ALTER TABLE ' || SEGMENT_NAME || ' MOVE TABLESPACE 테이블스페이명;'
FROM USER_SEGMENTS
WHERE SEGMENT_TYPE = 'TABLE';



/* 
 * 2. 두번째 INDEX의 TABLESPACE 변경.
 * ALTER INDEX 인덱스명 REBUILD TABLESPACE 테이블스페이스명;
 *
 */
SELECT 'ALTER INDEX ' || SEGMENT_NAME || ' REBUILD TABLESPACE 테이블스페이명;'
FROM USER_SEGMENTS
WHERE SEGMENT_TYPE = 'INDEX';

/* 
 * 3. LOBINDEX, LOG SEGMENT의 TABLESPACE변경
 * ALTER INDEX 인덱스명 REBUILD TABLESPACE 테이블스페이스명;
 * 테이블의 TABLESPACE를 변경해도 해당계정의 TABLESPACE사용정보를 조회하면 몇가지가 나온다.
 * LOBINDEX, LOG SEGMENT의 테이블스페이스 정보들이다.
 *
 */
SELECT * 
FROM DBA_SEGMENTS
WHERE OWNER = '사용자계정';


ALTER TABLE 테이블명 MOVE LOB ( 컬럼1, 컬럼2 ) STORE AS ( TABLESPACE 테이블스페이스명 );
DBA_SEGMENTS에 SELECT한 결과를 보니 하나의 테이블에 여러개의 LOB을 사용하면 행으로 나온다.

SELECT 'ALTER TABLE ' || TABLE_NAME || ' MOVE LOB (' || 
               SUBSTR (XMLAGG (XMLELEMENT (A, ',' || COLUMN_NAME)).EXTRACT ('//text()'),2) || ')
               STORE AS ( TABLESPACE 테이블스페이스명 );'
FROM DBA_LOBS
WHERE OWNER = '사용자계정'
GROUP BY TABLE_NAME;